@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.
Files changed (136) hide show
  1. package/components/accordion.json +67 -15
  2. package/components/action-bar.json +30 -9
  3. package/components/action-button.json +92 -39
  4. package/components/action-group.json +137 -18
  5. package/components/alert-banner.json +27 -8
  6. package/components/alert-dialog.json +55 -34
  7. package/components/avatar-group.json +35 -9
  8. package/components/avatar.json +105 -29
  9. package/components/badge.json +163 -56
  10. package/components/breadcrumbs.json +107 -26
  11. package/components/button-group.json +63 -19
  12. package/components/button.json +105 -61
  13. package/components/calendar.json +74 -8
  14. package/components/card.json +13 -0
  15. package/components/cards.json +46 -31
  16. package/components/checkbox-group.json +85 -16
  17. package/components/checkbox.json +97 -27
  18. package/components/close-button.json +75 -20
  19. package/components/coach-indicator.json +44 -14
  20. package/components/coach-mark.json +26 -8
  21. package/components/color-area.json +100 -20
  22. package/components/color-handle.json +46 -25
  23. package/components/color-loupe.json +14 -2
  24. package/components/color-slider.json +129 -26
  25. package/components/color-wheel.json +91 -17
  26. package/components/combo-box.json +189 -50
  27. package/components/contextual-help.json +126 -80
  28. package/components/date-field.json +7 -0
  29. package/components/date-picker.json +127 -24
  30. package/components/divider.json +38 -12
  31. package/components/drop-zone.json +37 -18
  32. package/components/field-label.json +62 -21
  33. package/components/heading.json +7 -0
  34. package/components/help-text.json +53 -16
  35. package/components/illustrated-message.json +85 -21
  36. package/components/in-line-alert.json +53 -13
  37. package/components/link.json +63 -24
  38. package/components/list-view.json +80 -15
  39. package/components/menu.json +181 -45
  40. package/components/meter.json +78 -24
  41. package/components/number-field.json +175 -34
  42. package/components/picker.json +188 -42
  43. package/components/popover.json +126 -37
  44. package/components/progress-bar.json +108 -23
  45. package/components/progress-circle.json +55 -12
  46. package/components/radio-button.json +67 -14
  47. package/components/radio-group.json +132 -28
  48. package/components/rating.json +38 -9
  49. package/components/search-field.json +126 -34
  50. package/components/segmented-control.json +70 -21
  51. package/components/select-box.json +103 -29
  52. package/components/side-navigation.json +69 -28
  53. package/components/slider.json +155 -39
  54. package/components/standard-dialog.json +88 -16
  55. package/components/status-light.json +136 -41
  56. package/components/steplist.json +24 -5
  57. package/components/swatch-group.json +55 -19
  58. package/components/swatch.json +79 -24
  59. package/components/switch.json +79 -31
  60. package/components/table.json +73 -26
  61. package/components/tabs.json +52 -22
  62. package/components/tag-field.json +60 -14
  63. package/components/tag-group.json +56 -16
  64. package/components/tag.json +78 -21
  65. package/components/takeover-dialog.json +61 -10
  66. package/components/text-area.json +205 -49
  67. package/components/text-field.json +170 -42
  68. package/components/thumbnail.json +63 -22
  69. package/components/time-field.json +7 -0
  70. package/components/toast.json +50 -29
  71. package/components/tooltip.json +87 -27
  72. package/components/tree-view.json +147 -45
  73. package/components/user-card.json +7 -0
  74. package/guidelines/app-frame-overview.json +44 -46
  75. package/guidelines/attention-hierarchy.json +22 -13
  76. package/guidelines/background-layers.json +10 -80
  77. package/guidelines/brand.json +12 -32
  78. package/guidelines/colors.json +17 -47
  79. package/guidelines/developer-overview.json +9 -25
  80. package/guidelines/faqs.json +9 -96
  81. package/guidelines/fonts.json +14 -29
  82. package/guidelines/grays.json +44 -17
  83. package/guidelines/icon-fundamentals.json +18 -7
  84. package/guidelines/manifest.json +15 -367
  85. package/guidelines/motion.json +16 -17
  86. package/guidelines/principles.json +8 -7
  87. package/guidelines/resources.json +15 -21
  88. package/guidelines/states.json +11 -16
  89. package/guidelines/using-icons.json +44 -33
  90. package/package.json +2 -2
  91. package/registry/platform-implementations.json +30 -0
  92. package/guidelines/ai-resource-guide.json +0 -50
  93. package/guidelines/applying-the-type-system.json +0 -67
  94. package/guidelines/bi-directionality.json +0 -57
  95. package/guidelines/border-width.json +0 -58
  96. package/guidelines/cognitive.json +0 -197
  97. package/guidelines/component-spacing.json +0 -61
  98. package/guidelines/contact-us.json +0 -67
  99. package/guidelines/content-area-browsing-context.json +0 -65
  100. package/guidelines/content-design-grammar-and-mechanics.json +0 -241
  101. package/guidelines/content-design-voice-and-tone.json +0 -37
  102. package/guidelines/content-grammar-and-mechanics.json +0 -252
  103. package/guidelines/content-language-and-inclusivity-writing-about-people.json +0 -103
  104. package/guidelines/content-language-and-inclusivity-writing-with-visuals.json +0 -70
  105. package/guidelines/content-voice-and-tone.json +0 -47
  106. package/guidelines/creating-bluelines-browsing-context.json +0 -91
  107. package/guidelines/design-tokens.json +0 -158
  108. package/guidelines/drop-shadow.json +0 -68
  109. package/guidelines/grammar-and-mechanics.json +0 -252
  110. package/guidelines/header-browsing-context.json +0 -40
  111. package/guidelines/illustration.json +0 -105
  112. package/guidelines/in-product-word-list.json +0 -29
  113. package/guidelines/inclusive-design.json +0 -101
  114. package/guidelines/inclusive-ux-writing.json +0 -30
  115. package/guidelines/internationalization.json +0 -87
  116. package/guidelines/language-and-inclusivity-writing-about-people.json +0 -85
  117. package/guidelines/language-and-inclusivity-writing-with-visuals.json +0 -61
  118. package/guidelines/layout-and-structure-containers.json +0 -47
  119. package/guidelines/layout-and-structure-spacing-overview.json +0 -66
  120. package/guidelines/layout-spacing.json +0 -39
  121. package/guidelines/object-styles-overview.json +0 -17
  122. package/guidelines/rounding.json +0 -73
  123. package/guidelines/side-navigation-browsing-context.json +0 -74
  124. package/guidelines/spacing-overview.json +0 -45
  125. package/guidelines/support.json +0 -113
  126. package/guidelines/typography-overview.json +0 -43
  127. package/guidelines/typography-system.json +0 -208
  128. package/guidelines/visual-language-containers.json +0 -36
  129. package/guidelines/voice-and-tone.json +0 -47
  130. package/guidelines/whats-new.json +0 -32
  131. package/guidelines/writing-about-people.json +0 -103
  132. package/guidelines/writing-for-errors.json +0 -120
  133. package/guidelines/writing-for-onboarding.json +0 -119
  134. package/guidelines/writing-for-readability.json +0 -54
  135. package/guidelines/writing-with-visuals.json +0 -70
  136. package/registry/platform-extensions/web-components-states.json +0 -58
@@ -9,6 +9,19 @@
9
9
  "category": "status",
10
10
  "documentationUrl": "https://spectrum.adobe.com/page/badge/"
11
11
  },
12
+ "implementations": [
13
+ {
14
+ "platform": "web",
15
+ "componentName": "Badge",
16
+ "package": "@react-spectrum/s2"
17
+ },
18
+ {
19
+ "platform": "web",
20
+ "componentName": "Badge",
21
+ "importPath": "@adobe/spectrum-wc/components/badge",
22
+ "notes": "Spectrum 2 web component custom element: swc-badge."
23
+ }
24
+ ],
12
25
  "documentBlocks": [
13
26
  {
14
27
  "type": "purpose",
@@ -16,46 +29,59 @@
16
29
  },
17
30
  {
18
31
  "type": "guideline",
19
- "content": "Non‑interactive by default.\n\nBadges are display elements, not actions. They should not behave like buttons or links. If an action is required, use a more appropriate component (e.g., Button, Action button)."
32
+ "content": "Badges come in four different sizes: small, medium, large, and extra-large. The small size is the default and most frequently used option. Use the other sizes sparingly to create a hierarchy of importance on a page."
33
+ },
34
+ {
35
+ "type": "guideline",
36
+ "content": "Badges can be placed as floating in a container, or they can be fixed to any edge of a container. They lose their default corner rounding on the fixed edge."
20
37
  },
21
38
  {
22
39
  "type": "guideline",
23
- "content": "Text overflow.\n\nWhen a badge's label is too long for the available horizontal space, it wraps to form another line."
40
+ "content": "A Badge’s style determines its visual emphasis. Badges come in three different styles: bold, subtle, and outline."
24
41
  },
25
42
  {
26
- "type": "do-dont",
27
- "content": "Avoid using a blue badge",
28
- "dont": "Blue badges are easily confused with Spectrum's blue accent buttons. Only use blue badges when absolutely necessary."
43
+ "type": "guideline",
44
+ "content": "When badges have a semantic meaning, they use semantic colors. Use these variants for the following statuses:"
29
45
  },
30
46
  {
31
47
  "type": "guideline",
32
- "content": "Only use a yellow badge for discounts.\n\nThe yellow badge is reserved to communicate \"best deal\" or \"discount\" situations only. Do not use the yellow badge for other situations."
48
+ "content": "When badges are for color-coded categories, they use non-semantic colors. Non-semantic variants are ideally used for when there are 8 categories or less."
33
49
  },
34
50
  {
35
- "type": "do-dont",
36
- "content": "Don't display multiple badges",
37
- "dont": "Badges are meant to offer quick context about what category, status, or meaning an item is associated with. If your design requires multiple badges, consider using regular text metadata and reserve a single badge for only the most important status, category, or meaning instead."
51
+ "type": "guideline",
52
+ "content": "A badge can have an optional icon. If no label is used, a badge becomes icon-only and it must include an icon. An icon-only badge is best for very small spaces, and it should always include a tooltip on hover to provide more context for the icon's meaning."
38
53
  },
39
54
  {
40
- "type": "do-dont",
41
- "content": "Avoid using icon-only badges",
42
- "dont": "It's best to use a text label on a badge whenever possible because communicating with an icon alone may be unclear or subjective. Reserve icon-only badges for responsive cases, such as for cards in a panel that don't have space for a full badge. In related contexts, pair the icon with a label to help teach a user what the icon means. Icon-only badges should always include a tooltip on hover to show their associated label."
55
+ "type": "guideline",
56
+ "content": "Badges should always have a label for accessibility and clear comprehension. When the label is not defined, a badge becomes icon-only."
43
57
  },
44
58
  {
45
59
  "type": "guideline",
46
- "content": "Badge placement varies widely depending on the use case. In cards, place the badge on the left side of the footer, if possible. If there is no footer or if that space is filled, affix the badge to the right edge of the preview. If there is no preview, affix the badge to the top right corner of the card."
60
+ "content": "Badges are display elements, not actions. They should not behave like buttons or links. If an action is required, use a more appropriate component (e.g., Button, Action button)."
47
61
  },
48
62
  {
49
63
  "type": "guideline",
50
- "content": "RTL.\n\nFor RTL (right-to-left) languages, the layout of the badge is mirrored. The icon (if present) is right-aligned with text on the right."
64
+ "content": "When a badge's label is too long for the available horizontal space, it wraps to form another line. If there is no room for a second line of text, the badge should truncate and include a tooltip to expose the full text upon hover."
51
65
  },
52
66
  {
53
67
  "type": "guideline",
54
- "content": "Cursor guidelines.\n\nCursor Usage Default (Arrow)Use the default cursor for non-interactive components like the badge."
68
+ "content": "Blue badges are easily confused with Spectrum's blue accent buttons. Only use blue badges when absolutely necessary."
55
69
  },
56
70
  {
57
71
  "type": "guideline",
58
- "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 badges—must provide a text alternative that communicates the badge’s purpose. All controls, especially icon‑only controls, 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, AAABadges should be understandable by assistive technologies like screen readers. This means using the proper semantic HTML or ARIA role should be utilized.Use of color 1.4.1 AColor is never used as the sole way to convey meaning in buttons. Badges use color to reinforce their meaning, but every badge also includes a clear text label that communicates purpose.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.Non-text contrast 1.4.11 AAThe visual presentation of icons 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 when wrapped. 2. Operable Requirement Criterion Level Compliance Seizures and physical feactions 2.3.1, 2.3.2, 2.3.3 A, AAA, AAAThere is no flashing content or unnecessary motion or animation in this component."
72
+ "content": "The yellow badge is reserved to communicate \"best deal\" or \"discount\" situations only. Do not use the yellow badge for other situations."
73
+ },
74
+ {
75
+ "type": "guideline",
76
+ "content": "Badges are meant to offer quick context about what category, status, or meaning an item is associated with. If your design requires multiple badges, consider using regular text metadata and reserve a single badge for only the most important status, category, or meaning instead."
77
+ },
78
+ {
79
+ "type": "guideline",
80
+ "content": "It's best to use a text label on a badge whenever possible because communicating with an icon alone may be unclear or subjective. Reserve icon-only badges for responsive cases, such as for cards in a panel that don't have space for a full badge. In related contexts, pair the icon with a label to help teach a user what the icon means. Icon-only badges should always include a tooltip on hover to show their associated label."
81
+ },
82
+ {
83
+ "type": "guideline",
84
+ "content": "Badge placement varies widely depending on the use case. In cards, place the badge on the left side of the footer, if possible. If there is no footer or if that space is filled, affix the badge to the right edge of the preview. If there is no preview, affix the badge to the top right corner of the card."
59
85
  }
60
86
  ],
61
87
  "options": {
@@ -69,65 +95,146 @@
69
95
  "variant": {
70
96
  "type": "string",
71
97
  "values": [
72
- { "value": "neutral" },
73
- { "value": "info" },
74
- { "value": "positive" },
75
- { "value": "negative" },
76
- { "value": "indigo" },
77
- { "value": "yellow" },
78
- { "value": "magenta" },
79
- { "value": "fuchsia" },
80
- { "value": "purple" },
81
- { "value": "seafoam" },
82
- { "value": "accent" },
83
- { "value": "notice" },
84
- { "value": "gray" },
85
- { "value": "red" },
86
- { "value": "orange" },
87
- { "value": "chartreuse" },
88
- { "value": "celery" },
89
- { "value": "green" },
90
- { "value": "cyan" },
91
- { "value": "blue" },
92
- { "value": "pink" },
93
- { "value": "turquoise" },
94
- { "value": "brown" },
95
- { "value": "cinnamon" },
96
- { "value": "silver" }
98
+ {
99
+ "value": "neutral"
100
+ },
101
+ {
102
+ "value": "info"
103
+ },
104
+ {
105
+ "value": "positive"
106
+ },
107
+ {
108
+ "value": "negative"
109
+ },
110
+ {
111
+ "value": "indigo"
112
+ },
113
+ {
114
+ "value": "yellow"
115
+ },
116
+ {
117
+ "value": "magenta"
118
+ },
119
+ {
120
+ "value": "fuchsia"
121
+ },
122
+ {
123
+ "value": "purple"
124
+ },
125
+ {
126
+ "value": "seafoam"
127
+ },
128
+ {
129
+ "value": "accent"
130
+ },
131
+ {
132
+ "value": "notice"
133
+ },
134
+ {
135
+ "value": "gray"
136
+ },
137
+ {
138
+ "value": "red"
139
+ },
140
+ {
141
+ "value": "orange"
142
+ },
143
+ {
144
+ "value": "chartreuse"
145
+ },
146
+ {
147
+ "value": "celery"
148
+ },
149
+ {
150
+ "value": "green"
151
+ },
152
+ {
153
+ "value": "cyan"
154
+ },
155
+ {
156
+ "value": "blue"
157
+ },
158
+ {
159
+ "value": "pink"
160
+ },
161
+ {
162
+ "value": "turquoise"
163
+ },
164
+ {
165
+ "value": "brown"
166
+ },
167
+ {
168
+ "value": "cinnamon"
169
+ },
170
+ {
171
+ "value": "silver"
172
+ }
97
173
  ]
98
174
  },
99
175
  "style": {
100
176
  "type": "string",
101
177
  "values": [
102
- { "value": "bold" },
103
- { "value": "subtle" },
104
- { "value": "outline" }
178
+ {
179
+ "value": "bold"
180
+ },
181
+ {
182
+ "value": "subtle"
183
+ },
184
+ {
185
+ "value": "outline"
186
+ }
105
187
  ]
106
188
  },
107
189
  "fixed": {
108
190
  "type": "string",
109
191
  "default": "none",
110
192
  "values": [
111
- { "value": "none" },
112
- { "value": "top" },
113
- { "value": "right" },
114
- { "value": "bottom" },
115
- { "value": "left" }
193
+ {
194
+ "value": "none"
195
+ },
196
+ {
197
+ "value": "top"
198
+ },
199
+ {
200
+ "value": "right"
201
+ },
202
+ {
203
+ "value": "bottom"
204
+ },
205
+ {
206
+ "value": "left"
207
+ }
116
208
  ]
117
209
  },
118
- "isDisabled": { "type": "boolean", "default": false },
210
+ "isDisabled": {
211
+ "type": "boolean",
212
+ "default": false
213
+ },
119
214
  "size": {
120
215
  "type": "string",
121
216
  "pattern": "^(x?s|m|x{0,3}l)$",
122
217
  "default": "s",
123
218
  "values": [
124
- { "value": "s" },
125
- { "value": "m" },
126
- { "value": "l" },
127
- { "value": "xl" }
219
+ {
220
+ "value": "s"
221
+ },
222
+ {
223
+ "value": "m"
224
+ },
225
+ {
226
+ "value": "l"
227
+ },
228
+ {
229
+ "value": "xl"
230
+ }
128
231
  ]
129
232
  }
130
233
  },
131
- "lifecycle": { "introduced": "1.0.0-draft" },
132
- "accessibility": { "focusable": false }
234
+ "lifecycle": {
235
+ "introduced": "1.0.0-draft"
236
+ },
237
+ "accessibility": {
238
+ "focusable": false
239
+ }
133
240
  }
@@ -9,6 +9,13 @@
9
9
  "category": "navigation",
10
10
  "documentationUrl": "https://spectrum.adobe.com/page/breadcrumbs/"
11
11
  },
12
+ "implementations": [
13
+ {
14
+ "platform": "web",
15
+ "componentName": "Breadcrumbs",
16
+ "package": "@react-spectrum/s2"
17
+ }
18
+ ],
12
19
  "documentBlocks": [
13
20
  {
14
21
  "type": "purpose",
@@ -16,44 +23,71 @@
16
23
  },
17
24
  {
18
25
  "type": "guideline",
19
- "content": "Overflow.\n\nBreadcrumbs truncate when there is not enough room to display all levels of the breadcrumb list, or as a way of managing relevance of the visible breadcrumb items in a deeply nested hierarchy. The truncation of breadcrumb items begins when either there is not enough room to display all items, or if there are 5 or more breadcrumbs to display. The truncation menu displays all options within a breadcrumb. Items are listed with the hierarchy ordered from top (root) to bottom and include the currently selected item."
26
+ "content": "When set to true, the breadcrumb item is displayed as an icon only."
27
+ },
28
+ {
29
+ "type": "guideline",
30
+ "content": "Separators visually divide breadcrumb items and convey hierarchy."
31
+ },
32
+ {
33
+ "type": "guideline",
34
+ "content": "Breadcrumbs can include multiple items, but too many levels can overwhelm users. Limit the hierarchy to four items (including the root, if shown) to provide clear context while keeping truncated options accessible."
35
+ },
36
+ {
37
+ "type": "guideline",
38
+ "content": "Breadcrumbs come in two sizes: medium, and large. The medium size is the default and most frequently used option."
39
+ },
40
+ {
41
+ "type": "guideline",
42
+ "content": "The multiline variation places emphasis on the selected breadcrumb item as a page title, helping a user to more clearly identify their current location."
43
+ },
44
+ {
45
+ "type": "guideline",
46
+ "content": "Breadcrumbs truncate when there is not enough room to display all levels of the breadcrumb list, or as a way of managing relevance of the visible breadcrumb items in a deeply nested hierarchy. The truncation of breadcrumb items begins when either there is not enough room to display all items, or if there are 5 or more breadcrumbs to display."
47
+ },
48
+ {
49
+ "type": "guideline",
50
+ "content": "The truncation menu displays all options within a breadcrumb. Items are listed with the hierarchy ordered from top (root) to bottom and include the currently selected item."
51
+ },
52
+ {
53
+ "type": "guideline",
54
+ "content": "Breadcrumbs need a consistent hierarchical structure because they create a path for discovery and context for a user’s current location."
20
55
  },
21
56
  {
22
57
  "type": "guideline",
23
- "content": "Use breadcrumbs to show hierarchy.\n\nBreadcrumbs need a consistent hierarchical structure because they create a path for discovery and context for a user’s current location."
58
+ "content": "Breadcrumbs should be a form of navigating a linear hierarchy. They should not be used for any other interactions, such as displaying filters."
24
59
  },
25
60
  {
26
61
  "type": "guideline",
27
- "content": "Use breadcrumbs for hierarchical navigation.\n\nBreadcrumbs should be a form of navigating a linear hierarchy. They should not be used for any other interactions, such as displaying filters."
62
+ "content": "The truncation menu should display all available options within the hierarchy where a user is located — not as indented. Doing this provides context for the directionality of how the menu is being displayed. Adding indentation to the menu items does not add value to understanding the hierarchy, and it can actually decrease the readability of the menu options."
28
63
  },
29
64
  {
30
- "type": "do-dont",
31
- "content": "Don't indent menu items",
32
- "dont": "The truncation menu should display all available options within the hierarchy where a user is located — not as indented. Doing this provides context for the directionality of how the menu is being displayed. Adding indentation to the menu items does not add value to understanding the hierarchy, and it can actually decrease the readability of the menu options."
65
+ "type": "guideline",
66
+ "content": "When list items are truncated into a menu but the label text is still too large for the horizontal space, truncate the text with an ellipsis. By default, truncation should occur at the end of the title. If your users need to see the end of truncated titles, truncating the middle of the title is acceptable."
33
67
  },
34
68
  {
35
69
  "type": "guideline",
36
- "content": "Don’t wrap breadcrumb list items.\n\nWhen list items are truncated into a menu but the label text is still too large for the horizontal space, truncate the text with an ellipsis. By default, truncation should occur at the end of the title. If your users need to see the end of truncated titles, truncating the middle of the title is acceptable."
70
+ "content": "When the breadcrumb title is truncated, a tooltip should display the full title when the user hovers, keyboard focuses, or single-taps on mobile."
37
71
  },
38
72
  {
39
73
  "type": "guideline",
40
- "content": "Tooltips.\n\nWhen the breadcrumb title is truncated, a tooltip should display the full title when the user hovers, keyboard focuses, or single-taps on mobile."
74
+ "content": "Prioritize using the truncation menu when breadcrumb labels are long. Never truncate more than one breadcrumb label. If the current location has a long label, all items can be truncated into the menu."
41
75
  },
42
76
  {
43
77
  "type": "guideline",
44
- "content": "Truncation and overflow.\n\nPrioritize using the truncation menu when breadcrumb labels are long. Never truncate more than one breadcrumb label. If the current location has a long label, all items can be truncated into the menu. Truncation should be avoided by way of the breadcrumbs overflow behavior, although in some cases the final breadcrumb title may truncate with an ellipsis."
78
+ "content": "Truncation should be avoided by way of the breadcrumbs overflow behavior, although in some cases the final breadcrumb title may truncate with an ellipsis."
45
79
  },
46
80
  {
47
81
  "type": "guideline",
48
- "content": "Don’t show too many breadcrumbs at once.\n\nBe mindful of your user’s cognitive load and truncate breadcrumbs appropriately. Displaying too many levels can be overwhelming. By displaying only 4 items in the hierarchy (including the root item, if you are displaying it), users will quickly understand context while still having easy access to any truncated options. Truncation of breadcrumb items begins when either there is not enough room to display all items, or if there are 5 or more breadcrumbs to display."
82
+ "content": "Be mindful of your user’s cognitive load and truncate breadcrumbs appropriately. Displaying too many levels can be overwhelming. By displaying only 4 items in the hierarchy (including the root item, if you are displaying it), users will quickly understand context while still having easy access to any truncated options. Truncation of breadcrumb items begins when either there is not enough room to display all items, or if there are 5 or more breadcrumbs to display."
49
83
  },
50
84
  {
51
85
  "type": "guideline",
52
- "content": "Icons in breadcrumbs.\n\nDon't use icons within the labels for breadcrumbs. Since breadcrumb labels are horizontally distributed, icons disrupt the rhythm and readability of the list."
86
+ "content": "Don't use icons within the labels for breadcrumbs. Since breadcrumb labels are horizontally distributed, icons disrupt the rhythm and readability of the list."
53
87
  },
54
88
  {
55
89
  "type": "guideline",
56
- "content": "Don’t modify breadcrumbs for lateral navigation.\n\nBreadcrumbs are a way for traveling up a hierarchical navigation and should not be mixed with controls intended for lateral or non-hierarchical navigation."
90
+ "content": "Breadcrumbs are a way for traveling up a hierarchical navigation and should not be mixed with controls intended for lateral or non-hierarchical navigation."
57
91
  }
58
92
  ],
59
93
  "options": {
@@ -66,7 +100,14 @@
66
100
  "type": "string",
67
101
  "default": "m",
68
102
  "description": "Controls the overall size of the breadcrumb component.",
69
- "values": [{ "value": "m" }, { "value": "l" }]
103
+ "values": [
104
+ {
105
+ "value": "m"
106
+ },
107
+ {
108
+ "value": "l"
109
+ }
110
+ ]
70
111
  },
71
112
  "items": {
72
113
  "type": "array",
@@ -87,7 +128,10 @@
87
128
  "description": "Indicates if the breadcrumb item represents the current page.",
88
129
  "default": false
89
130
  },
90
- "isDisabled": { "type": "boolean", "default": false }
131
+ "isDisabled": {
132
+ "type": "boolean",
133
+ "default": false
134
+ }
91
135
  },
92
136
  "required": ["label"]
93
137
  }
@@ -96,7 +140,14 @@
96
140
  "type": "string",
97
141
  "default": "chevron",
98
142
  "description": "The separator icon used between breadcrumb items.",
99
- "values": [{ "value": "chevron" }, { "value": "none" }]
143
+ "values": [
144
+ {
145
+ "value": "chevron"
146
+ },
147
+ {
148
+ "value": "none"
149
+ }
150
+ ]
100
151
  },
101
152
  "isTruncated": {
102
153
  "type": "boolean",
@@ -107,10 +158,18 @@
107
158
  "type": "string",
108
159
  "description": "Overrides the size of the breadcrumb items when isMultiline is true.",
109
160
  "values": [
110
- { "value": "s" },
111
- { "value": "m" },
112
- { "value": "l" },
113
- { "value": "xl" }
161
+ {
162
+ "value": "s"
163
+ },
164
+ {
165
+ "value": "m"
166
+ },
167
+ {
168
+ "value": "l"
169
+ },
170
+ {
171
+ "value": "xl"
172
+ }
114
173
  ]
115
174
  }
116
175
  },
@@ -121,19 +180,41 @@
121
180
  }
122
181
  ],
123
182
  "states": [
124
- { "name": "hover", "trigger": "interaction" },
125
- { "name": "down", "trigger": "interaction" },
126
- { "name": "keyboard-focus", "trigger": "interaction" },
127
- { "name": "drag-and-drop", "trigger": "prop" }
183
+ {
184
+ "name": "hover",
185
+ "trigger": "interaction"
186
+ },
187
+ {
188
+ "name": "down",
189
+ "trigger": "interaction"
190
+ },
191
+ {
192
+ "name": "keyboard-focus",
193
+ "trigger": "interaction"
194
+ },
195
+ {
196
+ "name": "drag-and-drop",
197
+ "trigger": "prop"
198
+ }
128
199
  ],
129
- "lifecycle": { "introduced": "1.0.0-draft" },
200
+ "lifecycle": {
201
+ "introduced": "1.0.0-draft"
202
+ },
130
203
  "accessibility": {
131
204
  "intents": ["navigate"],
132
205
  "focusable": true,
133
206
  "keyboardIntents": ["navigate-items", "activate"],
134
207
  "wcag": [
135
- { "criterion": "2.1.1", "level": "A", "title": "Keyboard" },
136
- { "criterion": "4.1.2", "level": "A", "title": "Name, Role, Value" }
208
+ {
209
+ "criterion": "2.1.1",
210
+ "level": "A",
211
+ "title": "Keyboard"
212
+ },
213
+ {
214
+ "criterion": "4.1.2",
215
+ "level": "A",
216
+ "title": "Name, Role, Value"
217
+ }
137
218
  ]
138
219
  }
139
220
  }