@adobe/spectrum-design-data 3.3.0-beta.1 → 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-content-area.json +81 -0
- package/guidelines/app-frame-creating-bluelines.json +58 -0
- package/guidelines/app-frame-header.json +72 -0
- package/guidelines/app-frame-overview.json +50 -44
- package/guidelines/app-frame-side-navigation.json +138 -0
- package/guidelines/attention-hierarchy.json +21 -12
- package/guidelines/background-layers.json +10 -44
- package/guidelines/brand.json +10 -30
- package/guidelines/colors.json +17 -35
- package/guidelines/containers.json +62 -0
- 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/illustrations.json +111 -0
- package/guidelines/introduction.json +2 -2
- package/guidelines/manifest.json +60 -252
- package/guidelines/motion.json +16 -17
- package/guidelines/object-styles.json +102 -0
- package/guidelines/principles.json +2 -2
- package/guidelines/resources.json +15 -21
- package/guidelines/spacing.json +25 -0
- package/guidelines/states.json +10 -15
- package/guidelines/typography-fundamentals.json +142 -0
- 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 -63
- package/guidelines/bi-directionality.json +0 -57
- package/guidelines/border-width.json +0 -42
- package/guidelines/cognitive.json +0 -197
- package/guidelines/component-spacing.json +0 -49
- package/guidelines/contact-us.json +0 -67
- package/guidelines/content-area-browsing-context.json +0 -65
- package/guidelines/creating-bluelines-browsing-context.json +0 -91
- package/guidelines/design-tokens.json +0 -122
- package/guidelines/drop-shadow.json +0 -56
- package/guidelines/grammar-and-mechanics.json +0 -252
- package/guidelines/header-browsing-context.json +0 -37
- package/guidelines/illustration.json +0 -109
- package/guidelines/in-product-word-list.json +0 -29
- package/guidelines/inclusive-design.json +0 -93
- package/guidelines/inclusive-ux-writing.json +0 -30
- package/guidelines/internationalization.json +0 -87
- package/guidelines/layout-and-structure-containers.json +0 -47
- package/guidelines/layout-spacing.json +0 -39
- package/guidelines/object-styles-overview.json +0 -17
- package/guidelines/rounding.json +0 -61
- package/guidelines/side-navigation-browsing-context.json +0 -71
- package/guidelines/spacing-overview.json +0 -45
- package/guidelines/typography-overview.json +0 -39
- package/guidelines/typography-system.json +0 -168
- package/guidelines/visual-language-containers.json +0 -36
- package/guidelines/voice-and-tone.json +0 -47
- 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": "navigation",
|
|
10
10
|
"documentationUrl": "https://spectrum.adobe.com/page/tree-view/"
|
|
11
11
|
},
|
|
12
|
+
"implementations": [
|
|
13
|
+
{
|
|
14
|
+
"platform": "web",
|
|
15
|
+
"componentName": "TreeView",
|
|
16
|
+
"package": "@react-spectrum/s2"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
12
19
|
"documentBlocks": [
|
|
13
20
|
{
|
|
14
21
|
"type": "purpose",
|
|
@@ -16,99 +23,123 @@
|
|
|
16
23
|
},
|
|
17
24
|
{
|
|
18
25
|
"type": "guideline",
|
|
19
|
-
"content": "
|
|
26
|
+
"content": "Tree views display nested, hierarchical content in a collapsible structure. They allow for navigation through multiple levels of grouped information."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"type": "guideline",
|
|
30
|
+
"content": "A tree view offers four sizes: small, medium, large and extra-large. Medium is the default and most common. Use other sizes sparingly to create a visual hierarchy of importance on the page."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"type": "guideline",
|
|
34
|
+
"content": "When placed outside a panel, a tree view uses the detached style with rounded corners. Inside a panel, it spans edge to edge by default and does not include rounded corners."
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"type": "guideline",
|
|
38
|
+
"content": "Tree view items can include a drag icon when needed. The icon serves as a keyboard-navigable indicator for items that support multiple actions. It appears only on hover, active and keyboard focus states."
|
|
20
39
|
},
|
|
21
40
|
{
|
|
22
41
|
"type": "guideline",
|
|
23
|
-
"content": "
|
|
42
|
+
"content": "The type of selection allowed in a collection can be none, single or multiple."
|
|
24
43
|
},
|
|
25
44
|
{
|
|
26
45
|
"type": "guideline",
|
|
27
|
-
"content": "
|
|
46
|
+
"content": "Checkbox With checkboxes, both single-select and multi-select views display boxes on the left of each item. Clicking another item adds it to the selection, and clicking a selected item removes it."
|
|
28
47
|
},
|
|
29
48
|
{
|
|
30
49
|
"type": "guideline",
|
|
31
|
-
"content": "
|
|
50
|
+
"content": "Highlight Use highlight selection when checkboxes add clutter or unnecessary controls. This style shows a highlighted state for selected items, and clicking a new item replaces the previous selection by default."
|
|
32
51
|
},
|
|
33
52
|
{
|
|
34
53
|
"type": "guideline",
|
|
35
|
-
"content": "
|
|
54
|
+
"content": "All tree views have a hover state, regardless of whether actions or selections can be made."
|
|
36
55
|
},
|
|
37
56
|
{
|
|
38
57
|
"type": "guideline",
|
|
39
|
-
"content": "
|
|
58
|
+
"content": "Tree views support both single-select and multi-select modes, using either checkbox or highlight styles. In multi-select mode, selecting an item toggles its selection on or off. In single-select mode, selecting an item replaces the current selection."
|
|
40
59
|
},
|
|
41
60
|
{
|
|
42
61
|
"type": "guideline",
|
|
43
|
-
"content": "
|
|
62
|
+
"content": "Clicking the collapse and expand button will expand or collapse a tree view item that contains child tree view items."
|
|
44
63
|
},
|
|
45
64
|
{
|
|
46
65
|
"type": "guideline",
|
|
47
|
-
"content": "
|
|
66
|
+
"content": "Tree view items can be dragged and dropped to reorder or restructure the hierarchy, including multiple items at once. Dropping items from different hierarchies into a new location flattens them as sibling children. Tree views should also accept external drops, such as files, to create new items."
|
|
48
67
|
},
|
|
49
68
|
{
|
|
50
69
|
"type": "guideline",
|
|
51
|
-
"content": "
|
|
70
|
+
"content": "When a tree view item label is too long for the available horizontal space, it truncates. The full label appears in a tooltip on hover or keyboard focus."
|
|
52
71
|
},
|
|
53
72
|
{
|
|
54
73
|
"type": "guideline",
|
|
55
|
-
"content": "
|
|
74
|
+
"content": "For proper functionality, a parent-level tree view must include a collapse-and-expand button that uses a chevron icon - regardless of its nesting level. This makes the expected behavior clear when users click an item icon."
|
|
56
75
|
},
|
|
57
76
|
{
|
|
58
77
|
"type": "guideline",
|
|
59
|
-
"content": "
|
|
78
|
+
"content": "When displaying hierarchical information from different sources, use a single tree view with separate sections and headings. Do not cross-reference sources to avoid confusing users. Single and multi-selection should work as expected within one tree view component."
|
|
60
79
|
},
|
|
61
80
|
{
|
|
62
81
|
"type": "guideline",
|
|
63
|
-
"content": "
|
|
82
|
+
"content": "The root (topmost) level of the hierarchy does not always need to be shown or displayed as a tree view item. If the root provides no useful context, hide it or replace it with a section header. In cases such as mixed tree views, the root can serve as a “Back” button."
|
|
64
83
|
},
|
|
65
84
|
{
|
|
66
85
|
"type": "guideline",
|
|
67
|
-
"content": "
|
|
86
|
+
"content": "In some cases, users may need to view different hierarchies depending on context. To support this, let users drill into a tree view item to display a different variation of the tree view within the same panel. Use a navigation controller with a “Back” button to let users return to the previous view."
|
|
68
87
|
},
|
|
69
88
|
{
|
|
70
89
|
"type": "guideline",
|
|
71
|
-
"content": "
|
|
90
|
+
"content": "Choose icons that match the object type represented in the tree view. Icons can be unique to specific data types to help clarify meaning for users."
|
|
72
91
|
},
|
|
73
92
|
{
|
|
74
93
|
"type": "guideline",
|
|
75
|
-
"content": "
|
|
94
|
+
"content": "Tree view items can display thumbnails instead of icons when users need a content preview. Use icons as a fallback when an image is unavailable, and size them to match the thumbnail. Thumbnails should scale appropriately to the tree view size. For example, an extra-large tree view should not use small thumbnails; in that case, icons may work better."
|
|
76
95
|
},
|
|
77
96
|
{
|
|
78
97
|
"type": "guideline",
|
|
79
|
-
"content": "
|
|
98
|
+
"content": "One way to manage overflow is to limit how many levels of hierarchy users can create in a tree view. Some products use this approach to reduce the complexity of deeply nested hierarchies. Setting limits helps when a complex hierarchy is unnecessary for the experience."
|
|
80
99
|
},
|
|
81
100
|
{
|
|
82
101
|
"type": "guideline",
|
|
83
|
-
"content": "
|
|
102
|
+
"content": "When a label is too long to fit in the tree view, it truncates with an ellipsis. Hovering over or focusing on the item reveals a tooltip with the full label text."
|
|
84
103
|
},
|
|
85
104
|
{
|
|
86
105
|
"type": "guideline",
|
|
87
|
-
"content": "
|
|
106
|
+
"content": "When a tree view hierarchy may extend beyond the available layout space, use an adjustable layout mechanism such as panels or rails. This lets users modify the layout while preserving visibility of the tree view."
|
|
88
107
|
},
|
|
89
108
|
{
|
|
90
109
|
"type": "guideline",
|
|
91
|
-
"content": "
|
|
110
|
+
"content": "If you have a layout that doesn't allow for users to adjust the width of the container for a tree view, allow them to horizontally scroll in order to see the full depth of the hierarchy."
|
|
92
111
|
},
|
|
93
112
|
{
|
|
94
113
|
"type": "guideline",
|
|
95
|
-
"content": "
|
|
114
|
+
"content": "When tree views are very large, use a progress circle or a “Show more” control to reveal additional parts when contextually relevant. These loading patterns can apply to the entire tree view or to nested items."
|
|
96
115
|
},
|
|
97
116
|
{
|
|
98
117
|
"type": "guideline",
|
|
99
|
-
"content": "
|
|
118
|
+
"content": "If system processes are delaying the display of child tree view items when a parent tree view item is expanded, show a clear indication that the items are in the process of loading."
|
|
100
119
|
},
|
|
101
120
|
{
|
|
102
121
|
"type": "guideline",
|
|
103
|
-
"content": "
|
|
122
|
+
"content": "Users should be able to sort a tree view. Sorting should not affect the hierarchical structure since each layer of the hierarchy is sorted individually."
|
|
104
123
|
},
|
|
105
124
|
{
|
|
106
125
|
"type": "guideline",
|
|
107
|
-
"content": "
|
|
126
|
+
"content": "Users may need to modify a tree view directly. They should be able to create new parent or child items, such as groups or folders, and flatten the hierarchy at the item level, such as ungrouping layers. In some cases, users should be able to edit item labels directly."
|
|
108
127
|
},
|
|
109
128
|
{
|
|
110
129
|
"type": "guideline",
|
|
111
|
-
"content": "
|
|
130
|
+
"content": "Any action for modifying the hierarchy should be offered as an explicit control and, if needed, as a keyboard shortcut — but never as a shortcut alone."
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"type": "guideline",
|
|
134
|
+
"content": "Allow users to enter multiple-selection mode explicitly when keyboard shortcuts such as Shift + click are unavailable or when you need to show a different selection type. Do this by toggling the selection style from highlight to checkbox."
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"type": "guideline",
|
|
138
|
+
"content": "The checkbox selection style is intended for performing bulk actions on tree view items. Use this option when selection corresponds to bulk actions."
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"type": "guideline",
|
|
142
|
+
"content": "When you need to provide selection controls within a hierarchy, use a checkbox component instead of the tree view item’s label. This should not correspond to selecting specific content and works best for cases like categorized filtering."
|
|
112
143
|
}
|
|
113
144
|
],
|
|
114
145
|
"options": {
|
|
@@ -116,29 +147,67 @@
|
|
|
116
147
|
"type": "string",
|
|
117
148
|
"default": "m",
|
|
118
149
|
"values": [
|
|
119
|
-
{
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
{
|
|
150
|
+
{
|
|
151
|
+
"value": "s"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"value": "m"
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"value": "l"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"value": "xl"
|
|
161
|
+
}
|
|
123
162
|
]
|
|
124
163
|
},
|
|
125
|
-
"isDetached": {
|
|
126
|
-
|
|
127
|
-
|
|
164
|
+
"isDetached": {
|
|
165
|
+
"type": "boolean",
|
|
166
|
+
"default": false
|
|
167
|
+
},
|
|
168
|
+
"isEmphasized": {
|
|
169
|
+
"type": "boolean",
|
|
170
|
+
"default": false
|
|
171
|
+
},
|
|
172
|
+
"showDragIcon": {
|
|
173
|
+
"type": "boolean",
|
|
174
|
+
"default": false
|
|
175
|
+
},
|
|
128
176
|
"selectionMode": {
|
|
129
177
|
"type": "string",
|
|
130
178
|
"default": "multiple",
|
|
131
|
-
"values": [
|
|
179
|
+
"values": [
|
|
180
|
+
{
|
|
181
|
+
"value": "single"
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"value": "multiple"
|
|
185
|
+
}
|
|
186
|
+
]
|
|
132
187
|
},
|
|
133
188
|
"selectionStyle": {
|
|
134
189
|
"type": "string",
|
|
135
190
|
"default": "checkbox",
|
|
136
|
-
"values": [
|
|
191
|
+
"values": [
|
|
192
|
+
{
|
|
193
|
+
"value": "checkbox"
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"value": "highlight"
|
|
197
|
+
}
|
|
198
|
+
]
|
|
137
199
|
},
|
|
138
200
|
"selectionBehavior": {
|
|
139
201
|
"type": "string",
|
|
140
202
|
"default": "toggle",
|
|
141
|
-
"values": [
|
|
203
|
+
"values": [
|
|
204
|
+
{
|
|
205
|
+
"value": "toggle"
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"value": "replace"
|
|
209
|
+
}
|
|
210
|
+
]
|
|
142
211
|
}
|
|
143
212
|
},
|
|
144
213
|
"anatomy": [
|
|
@@ -146,30 +215,63 @@
|
|
|
146
215
|
"name": "action-area",
|
|
147
216
|
"description": "Trailing area containing item actions."
|
|
148
217
|
},
|
|
149
|
-
{
|
|
218
|
+
{
|
|
219
|
+
"name": "row"
|
|
220
|
+
},
|
|
150
221
|
{
|
|
151
222
|
"name": "disclosure-indicator",
|
|
152
223
|
"description": "Visual affordance showing a tree view item's expand/collapse state."
|
|
153
224
|
}
|
|
154
225
|
],
|
|
155
226
|
"states": [
|
|
156
|
-
{
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
{
|
|
161
|
-
|
|
162
|
-
|
|
227
|
+
{
|
|
228
|
+
"name": "default",
|
|
229
|
+
"description": "Resting base state."
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"name": "hover",
|
|
233
|
+
"trigger": "interaction"
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"name": "down",
|
|
237
|
+
"trigger": "interaction"
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"name": "keyboard-focus",
|
|
241
|
+
"trigger": "interaction"
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"name": "selected",
|
|
245
|
+
"trigger": "interaction"
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"name": "selected-default",
|
|
249
|
+
"trigger": "interaction"
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
"name": "selected-hover",
|
|
253
|
+
"trigger": "interaction"
|
|
254
|
+
}
|
|
163
255
|
],
|
|
164
|
-
"lifecycle": {
|
|
256
|
+
"lifecycle": {
|
|
257
|
+
"introduced": "1.0.0-draft"
|
|
258
|
+
},
|
|
165
259
|
"accessibility": {
|
|
166
260
|
"role": "tree",
|
|
167
261
|
"intents": ["navigate", "select", "expand"],
|
|
168
262
|
"focusable": true,
|
|
169
263
|
"keyboardIntents": ["navigate-items", "expand", "collapse", "activate"],
|
|
170
264
|
"wcag": [
|
|
171
|
-
{
|
|
172
|
-
|
|
265
|
+
{
|
|
266
|
+
"criterion": "2.1.1",
|
|
267
|
+
"level": "A",
|
|
268
|
+
"title": "Keyboard"
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
"criterion": "4.1.2",
|
|
272
|
+
"level": "A",
|
|
273
|
+
"title": "Name, Role, Value"
|
|
274
|
+
}
|
|
173
275
|
]
|
|
174
276
|
}
|
|
175
277
|
}
|
|
@@ -10,5 +10,12 @@
|
|
|
10
10
|
"documentationUrl": "https://spectrum.adobe.com/page/user-card/"
|
|
11
11
|
},
|
|
12
12
|
"anatomy": [{ "name": "title" }],
|
|
13
|
+
"implementations": [
|
|
14
|
+
{
|
|
15
|
+
"platform": "web",
|
|
16
|
+
"componentName": "UserCard",
|
|
17
|
+
"package": "@react-spectrum/s2"
|
|
18
|
+
}
|
|
19
|
+
],
|
|
13
20
|
"lifecycle": { "introduced": "1.0.0-draft" }
|
|
14
21
|
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://opensource.adobe.com/spectrum-design-data/schemas/v0/guideline.schema.json",
|
|
3
|
+
"$id": "https://opensource.adobe.com/spectrum-design-data/guidelines/app-frame-content-area.json",
|
|
4
|
+
"name": "app-frame-content-area",
|
|
5
|
+
"title": "App frame content area (browsing context)",
|
|
6
|
+
"category": "designing",
|
|
7
|
+
"documentBlocks": [
|
|
8
|
+
{
|
|
9
|
+
"type": "purpose",
|
|
10
|
+
"content": "App frame content area (browsing context)"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"type": "guideline",
|
|
14
|
+
"content": "This layout is suitable when all content is related and unified by the primary purpose of the page. This single section can be subdivided using full-width dividers, or by creating visual groupings of content using proximity and spacing."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"type": "guideline",
|
|
18
|
+
"content": "Dividers are useful to separate content when using spacing alone wouldn’t be clear enough to mark the boundaries of distinct areas. Generally, more complex content with a varying alignment of objects will benefit the most from using a divider."
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"type": "guideline",
|
|
22
|
+
"content": "The top section can also be useful to visually indicate that the content is separate and has additional affordances, such as the ability to be minimized. For example, “welcome” type content might be shown in the top section, and recent files might be shown below."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"type": "guideline",
|
|
26
|
+
"content": "When using horizontal sections, the page should scroll as a single unit. Consider other ways to minimize the top section if needed, such as through an additional control to show and hide content."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"type": "guideline",
|
|
30
|
+
"content": "The top section of a horizontal layout should be reserved for high-attention marketing messages or quick actions, and it should not be scrollable. Put infinite scrolling and longer content in the bottom section."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"type": "guideline",
|
|
34
|
+
"content": "This layout is suitable to separate content that’s not semantically related, and if one of the content areas can be minimized. For example, this might apply for onboarding tutorials, or to include an AI assistant."
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"type": "guideline",
|
|
38
|
+
"content": "This layout is suitable to separate multiple groups of content that aren’t semantically related. For example, this could show several widgets and distinct marketing messages. This layout can also be useful if a user is able to customize the page."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"type": "guideline",
|
|
42
|
+
"content": "Make sure to consider smaller breakpoints and decide how content areas should reflow, hide, or combine. In general, show the most important information at the top, and if possible, then progressively disclose the not-as-important information."
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"type": "guideline",
|
|
46
|
+
"content": "Backgrounds that use gradients are always placed within the app frame intentionally and with a strategic meaning. They should contribute to the visual hierarchy, not distract from it. And, their colors are directly tied to product brand color palettes."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"type": "guideline",
|
|
50
|
+
"content": "For example, on a Home screen, gradient backgrounds might call attention to new AI features in the product. On a Learn screen, gradient backgrounds might call attention to tutorials from new creators. On a Files screen, gradient backgrounds might not be used at all in order to focus attention on asset previews. In any context, consider where you want to draw attention and what you want to highlight for the user, what the user’s intentions might be, and how gradient backgrounds may add or detract from the goals of the page."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"type": "guideline",
|
|
54
|
+
"content": "While there isn’t an objective scale for each style, it can be helpful to think about backgrounds in terms of how much attention they draw, on a scale of low-to-high."
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"type": "guideline",
|
|
58
|
+
"content": "While you may have seen past Spectrum 2 explorations showing gradients as the background in header and navigational areas, they should not be used in that context. This is because gradients that appear in the navigation of every page distract from more important information on the page, clash with other imagery, and might not work for some product segments."
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"type": "guideline",
|
|
62
|
+
"content": "By using gradients in the content areas as backgrounds instead, there’s more flexibility to direct attention to different content and messages, depending on what’s important in the context of that page or workflow."
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"type": "guideline",
|
|
66
|
+
"content": "Gradients are used to draw attention to important content and features. They can be used in the background of content areas. Using gradients in more than one content area results in multiple areas competing for attention. This is distracting from the task-at-hand workflows on the page."
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"type": "guideline",
|
|
70
|
+
"content": "Gradients should always be delivered directly from the Spectrum Brand team and used as-is. Do not modify them."
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"sourceUrl": "https://s2.spectrum.corp.adobe.com/page/app-frame-content-area/",
|
|
74
|
+
"lastUpdated": "2026-02-02",
|
|
75
|
+
"status": "published",
|
|
76
|
+
"tags": ["designing"],
|
|
77
|
+
"related": [
|
|
78
|
+
{ "ref": "s2-app-frame-side-navigation-browsing-context" },
|
|
79
|
+
{ "ref": "s2-app-frame-creating-bluelines-browsing-context" }
|
|
80
|
+
]
|
|
81
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://opensource.adobe.com/spectrum-design-data/schemas/v0/guideline.schema.json",
|
|
3
|
+
"$id": "https://opensource.adobe.com/spectrum-design-data/guidelines/app-frame-creating-bluelines.json",
|
|
4
|
+
"name": "app-frame-creating-bluelines",
|
|
5
|
+
"title": "Creating bluelines (browsing context)",
|
|
6
|
+
"category": "designing",
|
|
7
|
+
"documentBlocks": [
|
|
8
|
+
{ "type": "purpose", "content": "Creating bluelines (browsing context)" },
|
|
9
|
+
{
|
|
10
|
+
"type": "guideline",
|
|
11
|
+
"content": "Accessible names vary depending on the content. Accessible names must be defined for controls that don’t have visible text labels."
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"type": "guideline",
|
|
15
|
+
"content": "Here are some guidelines to keep in mind as you define accessible names in the app frame:"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"type": "guideline",
|
|
19
|
+
"content": "Any non-text element in a digital interface with a text label must have a text alternative. Here’s an example of how you might name landmark regions in an app frame:"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"type": "guideline",
|
|
23
|
+
"content": "Here’s an example of how you might structure heading annotations for this screen:"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"type": "guideline",
|
|
27
|
+
"content": "Keyboard focus order will depend on what controls are available on the page. Here’s an example of how you might define the order in the app frame:"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"type": "guideline",
|
|
31
|
+
"content": "Example of correct usage, support for keyboard focus for size navigation. The side navigation width is focusable and resizable by using the left and right arrow keys."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"type": "guideline",
|
|
35
|
+
"content": "Example of correct usage, inclusion of a Skip to main content button within the app frame header."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"type": "guideline",
|
|
39
|
+
"content": "When properly supported, the F6 key allows keyboard users to navigate through different regions of an application efficiently. Without this support, keyboard-only users have no means to jump to specific areas of the application, resulting in an excessive number of keystrokes to reach their desired goal."
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"type": "guideline",
|
|
43
|
+
"content": "Here are some key quality factors to consider:"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"type": "guideline",
|
|
47
|
+
"content": "For mobile breakpoints, a tray is used to open and close the app frame side navigation. In this example, the keyboard focus order starts at the “Create” button and ends at the close button. Clicking on esc should also close the tray."
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"sourceUrl": "https://s2.spectrum.corp.adobe.com/page/app-frame-creating-bluelines/",
|
|
51
|
+
"lastUpdated": "2026-02-02",
|
|
52
|
+
"status": "published",
|
|
53
|
+
"tags": ["designing"],
|
|
54
|
+
"related": [
|
|
55
|
+
{ "ref": "s2-app-frame-content-area-browsing-context" },
|
|
56
|
+
{ "ref": "brand" }
|
|
57
|
+
]
|
|
58
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://opensource.adobe.com/spectrum-design-data/schemas/v0/guideline.schema.json",
|
|
3
|
+
"$id": "https://opensource.adobe.com/spectrum-design-data/guidelines/app-frame-header.json",
|
|
4
|
+
"name": "app-frame-header",
|
|
5
|
+
"title": "App frame header (browsing context)",
|
|
6
|
+
"category": "designing",
|
|
7
|
+
"documentBlocks": [
|
|
8
|
+
{ "type": "purpose", "content": "App frame header (browsing context)" },
|
|
9
|
+
{
|
|
10
|
+
"type": "guideline",
|
|
11
|
+
"content": "There are several parts of the header that are consistent across all Adobe products:"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"type": "guideline",
|
|
15
|
+
"content": "Shows a hamburger button on the far left of the header. This controls whether the minimized style of the side navigation (partial/full)."
|
|
16
|
+
},
|
|
17
|
+
{ "type": "guideline", "content": "Shows navigation items in the header." },
|
|
18
|
+
{ "type": "guideline", "content": "Shows a search option in the header." },
|
|
19
|
+
{
|
|
20
|
+
"type": "guideline",
|
|
21
|
+
"content": "Defines the style of the search option that's shown."
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"type": "guideline",
|
|
25
|
+
"content": "The “skip to main content” button helps improve keyboard navigation by creating a shortcut to the main content of the page. This button is an accessibility feature to allow skipping to the first navigable HTML item."
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"type": "guideline",
|
|
29
|
+
"content": "Shows an icon to represent the header navigation item."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"type": "guideline",
|
|
33
|
+
"content": "The text that is displayed as the label of the header navigation item."
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"type": "guideline",
|
|
37
|
+
"content": "Presents the header side navigation as selected or not selected."
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"type": "guideline",
|
|
41
|
+
"content": "Changes the header navigation item to the disabled state."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"type": "guideline",
|
|
45
|
+
"content": "Shows a chevron next to the label that indicates an additional menu."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"type": "guideline",
|
|
49
|
+
"content": "The text that is displayed as the label of the tooltip."
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"type": "guideline",
|
|
53
|
+
"content": "As a general rule, only use one call-to-action (CTA) button, aside from any buttons used to log in or log out, as defined in the universal nav. When too many CTAs are shown at once, the messages compete for attention and dilute the ability for a focused attention hierarchy."
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"type": "guideline",
|
|
57
|
+
"content": "If there are multiple actions, consider combining them into a single menu or use other button types. The button should represent the most important CTA across the product; for example, “Share” and “Get desktop app” are common CTAs."
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"type": "guideline",
|
|
61
|
+
"content": "Diagram with notes about the app frame header in the editing context. If there’s a menu represented by a hamburger icon, such as the application menu in Creative Cloud, it should be shown to the left of the product logo for continuity with the browsing context. The product name can be hidden in the editing context in order to provide more room for other actions. The height of the header should be the same as in the browsing context (56 px)."
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"sourceUrl": "https://s2.spectrum.corp.adobe.com/page/app-frame-header/",
|
|
65
|
+
"lastUpdated": "2026-02-02",
|
|
66
|
+
"status": "published",
|
|
67
|
+
"tags": ["designing"],
|
|
68
|
+
"related": [
|
|
69
|
+
{ "ref": "s2-app-frame" },
|
|
70
|
+
{ "ref": "s2-app-frame-side-navigation-browsing-context" }
|
|
71
|
+
]
|
|
72
|
+
}
|