@adobe/spectrum-design-data 3.3.0-beta.0 → 3.3.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/components/accordion.json +15 -54
  2. package/components/action-bar.json +9 -23
  3. package/components/action-button.json +39 -79
  4. package/components/action-group.json +18 -129
  5. package/components/alert-banner.json +8 -27
  6. package/components/alert-dialog.json +34 -48
  7. package/components/avatar-group.json +9 -28
  8. package/components/avatar.json +29 -92
  9. package/components/badge.json +56 -150
  10. package/components/breadcrumbs.json +26 -100
  11. package/components/button-group.json +19 -50
  12. package/components/button.json +61 -92
  13. package/components/calendar.json +8 -67
  14. package/components/cards.json +31 -46
  15. package/components/checkbox-group.json +16 -78
  16. package/components/checkbox.json +27 -90
  17. package/components/close-button.json +20 -62
  18. package/components/coach-indicator.json +14 -44
  19. package/components/coach-mark.json +8 -26
  20. package/components/color-area.json +20 -93
  21. package/components/color-handle.json +25 -38
  22. package/components/color-loupe.json +2 -6
  23. package/components/color-slider.json +26 -122
  24. package/components/color-wheel.json +17 -84
  25. package/components/combo-box.json +50 -182
  26. package/components/contextual-help.json +80 -119
  27. package/components/date-picker.json +24 -120
  28. package/components/divider.json +12 -25
  29. package/components/drop-zone.json +18 -30
  30. package/components/field-label.json +21 -62
  31. package/components/help-text.json +16 -53
  32. package/components/illustrated-message.json +21 -72
  33. package/components/in-line-alert.json +13 -53
  34. package/components/link.json +24 -56
  35. package/components/list-view.json +15 -73
  36. package/components/menu.json +45 -174
  37. package/components/meter.json +24 -65
  38. package/components/number-field.json +34 -168
  39. package/components/picker.json +42 -181
  40. package/components/popover.json +37 -113
  41. package/components/progress-bar.json +23 -95
  42. package/components/progress-circle.json +12 -42
  43. package/components/radio-button.json +14 -67
  44. package/components/radio-group.json +28 -125
  45. package/components/rating.json +9 -38
  46. package/components/search-field.json +34 -119
  47. package/components/segmented-control.json +21 -63
  48. package/components/select-box.json +29 -96
  49. package/components/side-navigation.json +28 -69
  50. package/components/slider.json +39 -148
  51. package/components/standard-dialog.json +16 -88
  52. package/components/status-light.json +41 -123
  53. package/components/steplist.json +5 -24
  54. package/components/swatch-group.json +19 -55
  55. package/components/swatch.json +24 -79
  56. package/components/switch.json +31 -72
  57. package/components/table.json +26 -73
  58. package/components/tabs.json +22 -39
  59. package/components/tag-field.json +14 -60
  60. package/components/tag-group.json +16 -49
  61. package/components/tag.json +21 -71
  62. package/components/takeover-dialog.json +10 -61
  63. package/components/text-area.json +49 -198
  64. package/components/text-field.json +42 -163
  65. package/components/thumbnail.json +22 -63
  66. package/components/toast.json +29 -50
  67. package/components/tooltip.json +27 -74
  68. package/components/tree-view.json +45 -140
  69. package/guidelines/introduction.json +2 -2
  70. package/guidelines/manifest.json +2 -74
  71. package/guidelines/principles.json +2 -2
  72. package/package.json +1 -1
  73. package/guidelines/app-frame-content-area.json +0 -81
  74. package/guidelines/app-frame-creating-bluelines.json +0 -58
  75. package/guidelines/app-frame-header.json +0 -72
  76. package/guidelines/app-frame-side-navigation.json +0 -138
  77. package/guidelines/containers.json +0 -62
  78. package/guidelines/illustrations.json +0 -111
  79. package/guidelines/object-styles.json +0 -102
  80. package/guidelines/spacing.json +0 -25
  81. package/guidelines/typography-fundamentals.json +0 -142
@@ -16,171 +16,132 @@
16
16
  },
17
17
  {
18
18
  "type": "guideline",
19
- "content": "Contextual help displays additional information about the state of a nearby component or an entire view. It explains high-level concepts and can link to more detailed guidance."
19
+ "content": "Keyboard focus.\n\nA button can be navigated using a keyboard. The keyboard focus state takes the button’s visual hover state and adds a blue ring to the button in focus."
20
20
  },
21
21
  {
22
22
  "type": "guideline",
23
- "content": "To make sure that a popover will stay within certain boundaries (e.g., a browser window) it’s possible to define a container, and a container padding value, to respect."
23
+ "content": "Tooltip when the label is hidden.\n\nWhen the button label is hidden, a tooltip is shown on hover that displays the label text and, if appropriate, a keyboard shortcut."
24
24
  },
25
25
  {
26
26
  "type": "guideline",
27
- "content": "The cross offset is the placement offset on the cross axis (x-axis for top and bottom, y-axis for left and right)."
27
+ "content": "Flexible width.\n\nThe width of a button automatically adjusts to fit the label text. The padding on each side of the button is equal to half its height."
28
28
  },
29
29
  {
30
30
  "type": "guideline",
31
- "content": "A contextual help can have up to one link."
31
+ "content": "Minimum width.\n\nButtons have a minimum width of 2.25× the height of the button. This ensures that small buttons retain an identifiable shape."
32
32
  },
33
33
  {
34
34
  "type": "guideline",
35
- "content": "The offset is the distance between the action button and the popover edge. There is a default value but this can also be adjusted depending on the context."
35
+ "content": "Text overflow.\n\nWhen the button text is too long for the horizontal space available, it wraps to form another line."
36
36
  },
37
37
  {
38
38
  "type": "guideline",
39
- "content": "Indicates whether contents are informative or provides helpful guidance."
39
+ "content": "Cursor style.\n\nButtons use the default arrow cursor for all states, including hover and down. The only exception occurs on the web; if the button is using the href property it will display the pointer cursor instead."
40
40
  },
41
41
  {
42
42
  "type": "guideline",
43
- "content": "Contextual help can be used to explain why a component is disabled and how to enable it. Don’t make disabled components interactive (with focus states or hovering) as a way to display contextual information."
43
+ "content": "Delay before pending state.\n\nSome progress can be very quick. In order to avoid showing a progress circle for a fraction of a second, which results in an unpleasant flickering, there is a delay of 1 second before the pending state appears. During this delay, the button continues to visually respond to interactive events (e.g., hover), but additional clicks do not result in repeated submissions."
44
44
  },
45
45
  {
46
46
  "type": "guideline",
47
- "content": "There are two size options for the action button in contextual help: extra-small and small. Regardless of size, the action button should be quiet and display only an icon."
47
+ "content": "Tooltip vs. contextual help.\n\nA tooltip shows in-line information about the element that a user is hovering or focusing on. Contextual help describes a larger experience, such as something that's associated with that element in a broader sense. Use contextual help to communicate information about an entire view, rather than a specific element of the experience (e.g., in high-level section headers). Tooltips are meant for a few words or a short sentence, such as showing the label for an icon-only button. Contextual help offers more space to give more information, or to describe where a user can find further help."
48
+ },
49
+ {
50
+ "type": "guideline",
51
+ "content": "Help text vs. contextual help.\n\nHelp text is readily visible, in-line information about a specific UI element. The information in the contextual help component is about an entire experience or view, is hidden within a popover, and only appears once a user interacts with the icon-only action button. Use help text for critical information that a user needs to know to complete a task. Don't hide essential information in contextual help; it's intended to supplement the experience with minimal disruption."
52
+ },
53
+ {
54
+ "type": "guideline",
55
+ "content": "More information about disabled components.\n\nContextual help can be used to explain why a component is disabled and how to enable it. Don't make disabled components interactive (with focus states or hovering) as a way to display contextual information."
56
+ },
57
+ {
58
+ "type": "guideline",
59
+ "content": "Action button component size.\n\nThere are two size options for the action button in contextual help: extra-small and small. Regardless of size, the action button should be quiet and display only an icon."
60
+ },
61
+ {
62
+ "type": "guideline",
63
+ "content": "Informative vs. helpful content.\n\nThe content within the contextual help's popover reflects the icon it's associated with: either the info icon or the help icon. Use the info icon for informative content: specific, brief, and contextual guidance. This is best for supplemental or nice-to-know information, in-line with a label or a component (if there is no label). The content should be instructive in tone. Use the help icon for helpful content: more detailed, in-depth guidance about a task, UI element, tool, or keyboard shortcuts. This may include an image, video, or link and should be helpful in tone."
64
+ },
65
+ {
66
+ "type": "guideline",
67
+ "content": "Use proper formatting.\n\nFor this component, don't add a period to the end of the title. A question mark is acceptable, depending on the context. For the description, add a period to the end of the sentence, even if it's only a single sentence. If using a standalone link, do not add punctuation to the end of the link text."
68
+ },
69
+ {
70
+ "type": "guideline",
71
+ "content": "When to use a standalone link.\n\nIf using a standalone link, make sure that the landing experience is intuitive, helpful, and naturally builds upon the information being introduced in the component. For example, don't link to an external sales website unless the information there is directly related to a user being able to do something within the product. A generic \"Learn more\" can be acceptable, but it's more helpful to include another word or two in the link text that gives more context about the landing experience."
72
+ },
73
+ {
74
+ "type": "guideline",
75
+ "content": "RTL.\n\nFor RTL (right-to-left) languages, the layout of the button is mirrored. The icon is placed on the right side of the text."
76
+ },
77
+ {
78
+ "type": "guideline",
79
+ "content": "Keyboard interactions.\n\nKey Interaction TabMoves focus onto or off of the button.Space or EnterExecutes the button action. The focus remains on the button except if the button opens or closes the current container. In this case, the focus moves to the target or back to the caller."
80
+ },
81
+ {
82
+ "type": "guideline",
83
+ "content": "Cursor guidelines.\n\nCursor Usage PointerUse the pointer cursor for all interactive components."
84
+ },
85
+ {
86
+ "type": "guideline",
87
+ "content": "WCAG 2.2 compliance.\n\nAny criterion not mention in the below table are not applicable to this component or are resolved with underlying requirements, engineering, and styles of the entire system. 1. Perceivable Requirement Criterion Level Compliance Non-text content 1.1.1 ANon‑text elements—such as icons used in buttons—must provide a text alternative that communicates the button’s purpose. All buttons, especially icon‑only buttons, need an accessible name (for example, via a title, aria‑label, or associated text) so screen readers can announce their function.Info and relationships, Identify purpose 1.3.1, 1.3.6 A, AAAButtons should be understandable by assistive technologies like screen readers. This means using the proper semantic HTML or ARIA role of buttons should be utilized.Use of color 1.4.1 AColor is never used as the sole way to convey meaning in buttons. While negative buttons do use red to reinforce their purpose, every button also includes a clear text label that communicates the action it performs.Text contrast minimums 1.4.3 AALarge text has a contrast ratio of at least 3:1, and small text has a contrast ratio of at least 4.5:1. Incidental text such as disabled, hidden, or decorative text has no contrast requirement.Resize text 1.4.4 AAButtons should be built in such a way that they can be resized without assistive technology up to 200%.Visual presentation 1.4.8 AAAThe width of text blocks is no more than 80 characters (40 for CJK languages), and text is never justified.Non-text contrast 1.4.11 AAThe visual presentation of icons and various states have a contrast ratio of at least 3:1.Text spacing 1.4.12 AALine height of text is at least 1.5x the font size. 2. Operable Requirement Criterion Level Compliance Keyboard 2.1.1, 2.1.3 A, AAAAll functionality of the component is operable through a keyboard without specific timing for keystrokes.Keyboard traps 2.1.2 AFocus can be moved away from the component using only a keyboard.Seizures and physical reactions 2.3.1, 2.3.2, 2.3.3 A, AAA, AAAThere is no flashing content or unnecessary motion or animation in this component.Focus order 2.4.3 ANavigation sequences receive focus in an order that preserves meaning and operability.Focus visible 2.4.7 AAKeyboard states use an indicator that is visible with at least 3:1 contrast."
48
88
  }
49
89
  ],
50
90
  "options": {
51
91
  "icon": {
52
92
  "type": "string",
53
93
  "default": "info",
54
- "values": [
55
- {
56
- "value": "info"
57
- },
58
- {
59
- "value": "help"
60
- }
61
- ]
94
+ "values": [{ "value": "info" }, { "value": "help" }]
62
95
  },
63
96
  "popoverPlacement": {
64
97
  "type": "string",
65
98
  "default": "bottom start",
66
99
  "values": [
67
- {
68
- "value": "top"
69
- },
70
- {
71
- "value": "top left"
72
- },
73
- {
74
- "value": "top right"
75
- },
76
- {
77
- "value": "top start"
78
- },
79
- {
80
- "value": "top end"
81
- },
82
- {
83
- "value": "bottom"
84
- },
85
- {
86
- "value": "bottom left"
87
- },
88
- {
89
- "value": "bottom right"
90
- },
91
- {
92
- "value": "bottom start"
93
- },
94
- {
95
- "value": "bottom end"
96
- },
97
- {
98
- "value": "left"
99
- },
100
- {
101
- "value": "left top"
102
- },
103
- {
104
- "value": "left bottom"
105
- },
106
- {
107
- "value": "start"
108
- },
109
- {
110
- "value": "start top"
111
- },
112
- {
113
- "value": "start bottom"
114
- },
115
- {
116
- "value": "right"
117
- },
118
- {
119
- "value": "right top"
120
- },
121
- {
122
- "value": "right bottom"
123
- },
124
- {
125
- "value": "end"
126
- },
127
- {
128
- "value": "end top"
129
- },
130
- {
131
- "value": "end bottom"
132
- }
100
+ { "value": "top" },
101
+ { "value": "top left" },
102
+ { "value": "top right" },
103
+ { "value": "top start" },
104
+ { "value": "top end" },
105
+ { "value": "bottom" },
106
+ { "value": "bottom left" },
107
+ { "value": "bottom right" },
108
+ { "value": "bottom start" },
109
+ { "value": "bottom end" },
110
+ { "value": "left" },
111
+ { "value": "left top" },
112
+ { "value": "left bottom" },
113
+ { "value": "start" },
114
+ { "value": "start top" },
115
+ { "value": "start bottom" },
116
+ { "value": "right" },
117
+ { "value": "right top" },
118
+ { "value": "right bottom" },
119
+ { "value": "end" },
120
+ { "value": "end top" },
121
+ { "value": "end bottom" }
133
122
  ]
134
123
  },
135
- "popoverOffset": {
136
- "type": "number",
137
- "default": 8
138
- },
124
+ "popoverOffset": { "type": "number", "default": 8 },
139
125
  "href": {
140
126
  "type": "string",
141
127
  "description": "Optional URL within contextual help content like a 'Learn more' link."
142
128
  },
143
- "popoverCrossOffset": {
144
- "type": "number",
145
- "default": 0
146
- },
147
- "containerPadding": {
148
- "type": "number",
149
- "default": 8
150
- }
129
+ "popoverCrossOffset": { "type": "number", "default": 0 },
130
+ "containerPadding": { "type": "number", "default": 8 }
151
131
  },
152
132
  "states": [
153
- {
154
- "name": "down",
155
- "trigger": "interaction"
156
- },
157
- {
158
- "name": "open",
159
- "trigger": "prop"
160
- },
161
- {
162
- "name": "keyboard-focus",
163
- "trigger": "interaction"
164
- }
133
+ { "name": "down", "trigger": "interaction" },
134
+ { "name": "open", "trigger": "prop" },
135
+ { "name": "keyboard-focus", "trigger": "interaction" }
165
136
  ],
166
- "lifecycle": {
167
- "introduced": "1.0.0-draft"
168
- },
137
+ "lifecycle": { "introduced": "1.0.0-draft" },
169
138
  "accessibility": {
170
139
  "intents": ["trigger"],
171
140
  "focusable": true,
172
141
  "keyboardIntents": ["activate"],
173
142
  "wcag": [
174
- {
175
- "criterion": "2.1.1",
176
- "level": "A",
177
- "title": "Keyboard"
178
- },
179
- {
180
- "criterion": "4.1.2",
181
- "level": "A",
182
- "title": "Name, Role, Value"
183
- }
143
+ { "criterion": "2.1.1", "level": "A", "title": "Keyboard" },
144
+ { "criterion": "4.1.2", "level": "A", "title": "Name, Role, Value" }
184
145
  ]
185
146
  }
186
147
  }
@@ -16,91 +16,39 @@
16
16
  },
17
17
  {
18
18
  "type": "guideline",
19
- "content": "Date pickers allow selection of a single date or a date range. They include a calendar within a popover, with optional manual entry. Date range variants support selecting a start and end date in one field."
19
+ "content": "Displaying the popover calendar.\n\nThe calendar popover is displayed or hidden when the user selects the in-field button (the calendar icon)."
20
20
  },
21
21
  {
22
22
  "type": "guideline",
23
- "content": "Calendar popover displays a grid of days spanning one, two, or three months, enabling users to select a single date or a range."
23
+ "content": "Range selection.\n\nIf a user selects a day preceding the first selection, that earlier day becomes the start of the range. For example: First selection: Jan 3. This is the start of the range. Second selection: Jan 1. This is the new start of the range. The range is now Jan 1–3 in the calendar popover and date field. A third selection resets the range. For example: Third selection: Jan 4. This is the start of a new range. Current state: Jan 4 (no end of range). The calendar popover displays Jan 4 as the start of the range but with no defined end. The date field remains populated by the user's last complete input (Jan 1-3) until they indicate the end of their new range."
24
24
  },
25
25
  {
26
26
  "type": "guideline",
27
- "content": "Date field allows users to enter and edit date values. Users can edit each part of a date value, such as the day, month, and year, by interacting with individual segments. A date field includes a label, segments for each value of the date, and an in-field button to allow the user to open the calendar popover."
27
+ "content": "Individual segments for date field.\n\nDate pickers display placeholder values in individual segments by default. This is to makes it easier for users to focus and edit specific values like the day, month, or year without re-entering the entire date. This approach reduces input errors, improves accessibility, and supports faster, more precise interactions. It also adapts well to different regional formats, enhancing clarity across locales."
28
28
  },
29
29
  {
30
30
  "type": "guideline",
31
- "content": "The range of days the user has selected (a start date and an end date)."
31
+ "content": "Single date or date range.\n\nDate pickers can be used to select a single date or a date range (a start date and an end date)."
32
32
  },
33
33
  {
34
34
  "type": "guideline",
35
- "content": "The selected date allows a user to see which date they have selected within the calendar popover."
35
+ "content": "Date range selection.\n\nWhen a date picker is formatted to allow a range, it displays a placeholder by default. When the user first interacts with the date field, the first value of the placeholder is in focus. This is to allow the user to edit the individual segments. When the user opens the popover without interacting, it displays the current day along with the month and year based on their locale. However, the date field will continue to show the placeholder until the user either completes the range in the field or within the calendar popover. If the user inputs a date range within the date field that spans more than the maximum of three months that the calendar popover allows, the calendar popover will only show the first three consecutive months within that range."
36
36
  },
37
37
  {
38
38
  "type": "guideline",
39
- "content": "A single date picker only displays a single date within the date field as well as a single month within the calendar popover."
39
+ "content": "Granularity.\n\nThe date field can also capture time values with precision down to the second, and may include time zone information. The calendar popover can also include time-specific fields, allowing users to specify start and end times."
40
40
  },
41
41
  {
42
42
  "type": "guideline",
43
- "content": "A double date picker displays a date range within the date field as well as two consecutive months within the calendar popover."
43
+ "content": "Required or optional.\n\nDate pickers can be marked as optional or required, depending on the situation. For required date pickers, there are two styling options: a \"(required)\" label or an asterisk. If you use an asterisk, be sure to include help text to explain what the asterisk means. Optional date pickers are either denoted with text added to the end of the label — \"(optional)\" — or have no indication at all. The asterisk used in this component is an icon that has specific spacing from the label text — not part of the label text itself."
44
44
  },
45
45
  {
46
46
  "type": "guideline",
47
- "content": "A triple date picker displays a date range within the date field as well as three consecutive months within the calendar popover."
47
+ "content": "Read-only states vs. disabled states.\n\nA read-only state of date picker means that the user cannot interact with the field, and they can only read what the field is displaying. Therefore, the in-field button is not clickable. In the disabled state, the read-only state of date picker allows the user to focus on a value—even though they cannot change the value. A disabled date picker means that the user cannot interact with the field, but not for the same reasons as a read-only scenario. For example, a date picker may be temporarily disabled because the user needs to complete a dependent task (such as filling out another field) somewhere within their experience. A disabled date picker does not allow for the ability to focus on a value, or to change its value."
48
48
  },
49
49
  {
50
50
  "type": "guideline",
51
- "content": "The calendar popover is displayed or hidden when the user selects the in-field button (the calendar icon)."
52
- },
53
- {
54
- "type": "guideline",
55
- "content": "If a user selects a day preceding the first selection, that earlier day becomes the start of the range. For example:"
56
- },
57
- {
58
- "type": "guideline",
59
- "content": "A third selection resets the range. For example:"
60
- },
61
- {
62
- "type": "guideline",
63
- "content": "Date pickers display placeholder values in individual segments by default. This is to makes it easier for users to focus and edit specific values like the day, month, or year without re-entering the entire date."
64
- },
65
- {
66
- "type": "guideline",
67
- "content": "This approach reduces input errors, improves accessibility, and supports faster, more precise interactions. It also adapts well to different regional formats, enhancing clarity across locales."
68
- },
69
- {
70
- "type": "guideline",
71
- "content": "Date pickers can be used to select a single date or a date range (a start date and an end date)."
72
- },
73
- {
74
- "type": "guideline",
75
- "content": "When a date picker is formatted to allow a range, it displays a placeholder by default. When the user first interacts with the date field, the first value of the placeholder is in focus. This is to allow the user to edit the individual segments. When the user opens the popover without interacting, it displays the current day along with the month and year based on their locale. However, the date field will continue to show the placeholder until the user either completes the range in the field or within the calendar popover."
76
- },
77
- {
78
- "type": "guideline",
79
- "content": "If the user inputs a date range within the date field that spans more than the maximum of three months that the calendar popover allows, the calendar popover will only show the first three consecutive months within that range."
80
- },
81
- {
82
- "type": "guideline",
83
- "content": "The date field can also capture time values with precision down to the second, and may include time zone information. The calendar popover can also include time-specific fields, allowing users to specify start and end times."
84
- },
85
- {
86
- "type": "guideline",
87
- "content": "Date pickers can be marked as optional or required, depending on the situation. For required date pickers, there are two styling options: a “(required)” label or an asterisk. If you use an asterisk, be sure to include help text to explain what the asterisk means. Optional date pickers are either denoted with text added to the end of the label — “(optional)” — or have no indication at all."
88
- },
89
- {
90
- "type": "guideline",
91
- "content": "The asterisk used in this component is an icon that has specific spacing from the label text — not part of the label text itself."
92
- },
93
- {
94
- "type": "guideline",
95
- "content": "A read-only state of date picker means that the user cannot interact with the field, and they can only read what the field is displaying. Therefore, the in-field button is not clickable. In the disabled state, the read-only state of date picker allows the user to focus on a value—even though they cannot change the value."
96
- },
97
- {
98
- "type": "guideline",
99
- "content": "A disabled date picker means that the user cannot interact with the field, but not for the same reasons as a read-only scenario. For example, a date picker may be temporarily disabled because the user needs to complete a dependent task (such as filling out another field) somewhere within their experience. A disabled date picker does not allow for the ability to focus on a value, or to change its value."
100
- },
101
- {
102
- "type": "guideline",
103
- "content": "A date picker can be marked as having an error to show that a value needs to be entered in order to move forward, or that an entered value is invalid. In this scenario, displaying error text beneath the date field can aid the user in understanding how to resolve it. Error text within the calendar popover may also be helpful to aid the user in understanding what the error is signaling."
51
+ "content": "Error.\n\nA date picker can be marked as having an error to show that a value needs to be entered in order to move forward, or that an entered value is invalid. In this scenario, displaying error text beneath the date field can aid the user in understanding how to resolve it. Error text within the calendar popover may also be helpful to aid the user in understanding what the error is signaling."
104
52
  }
105
53
  ],
106
54
  "options": {
@@ -109,15 +57,9 @@
109
57
  "default": "single",
110
58
  "description": "Controls the number of months displayed in the calendar popover.",
111
59
  "values": [
112
- {
113
- "value": "single"
114
- },
115
- {
116
- "value": "double"
117
- },
118
- {
119
- "value": "triple"
120
- }
60
+ { "value": "single" },
61
+ { "value": "double" },
62
+ { "value": "triple" }
121
63
  ]
122
64
  },
123
65
  "selectedDate": {
@@ -128,14 +70,8 @@
128
70
  "type": "object",
129
71
  "description": "The currently selected date range, used when selectionMode is range.",
130
72
  "properties": {
131
- "start": {
132
- "type": "string",
133
- "description": "Range start date."
134
- },
135
- "end": {
136
- "type": "string",
137
- "description": "Range end date."
138
- }
73
+ "start": { "type": "string", "description": "Range start date." },
74
+ "end": { "type": "string", "description": "Range end date." }
139
75
  }
140
76
  },
141
77
  "dateField": {
@@ -151,22 +87,10 @@
151
87
  "enum": ["top", "side"],
152
88
  "default": "top"
153
89
  },
154
- "hideLabel": {
155
- "type": "boolean",
156
- "default": false
157
- },
158
- "isDisabled": {
159
- "type": "boolean",
160
- "default": false
161
- },
162
- "isReadOnly": {
163
- "type": "boolean",
164
- "default": false
165
- },
166
- "isRequired": {
167
- "type": "boolean",
168
- "default": false
169
- },
90
+ "hideLabel": { "type": "boolean", "default": false },
91
+ "isDisabled": { "type": "boolean", "default": false },
92
+ "isReadOnly": { "type": "boolean", "default": false },
93
+ "isRequired": { "type": "boolean", "default": false },
170
94
  "isError": {
171
95
  "type": "boolean",
172
96
  "default": false,
@@ -191,10 +115,7 @@
191
115
  "type": "object",
192
116
  "description": "Configuration for the calendar popover.",
193
117
  "properties": {
194
- "isDisabled": {
195
- "type": "boolean",
196
- "default": false
197
- },
118
+ "isDisabled": { "type": "boolean", "default": false },
198
119
  "minValue": {
199
120
  "type": "string",
200
121
  "description": "The minimum allowed date that a user may select."
@@ -259,14 +180,9 @@
259
180
  }
260
181
  }
261
182
  },
262
- "lifecycle": {
263
- "introduced": "1.0.0-draft"
264
- },
183
+ "lifecycle": { "introduced": "1.0.0-draft" },
265
184
  "tokenBindings": [
266
- {
267
- "token": "strikethrough-day-thickness",
268
- "context": "Strikethrough day "
269
- },
185
+ { "token": "strikethrough-day-thickness", "context": "Strikethrough day " },
270
186
  {
271
187
  "token": "date-picker-text-to-in-field-button",
272
188
  "context": "Spacing (value to in-field button)"
@@ -277,21 +193,9 @@
277
193
  "focusable": true,
278
194
  "keyboardIntents": ["navigate-items", "activate"],
279
195
  "wcag": [
280
- {
281
- "criterion": "1.3.1",
282
- "level": "A",
283
- "title": "Info and Relationships"
284
- },
285
- {
286
- "criterion": "2.1.1",
287
- "level": "A",
288
- "title": "Keyboard"
289
- },
290
- {
291
- "criterion": "4.1.2",
292
- "level": "A",
293
- "title": "Name, Role, Value"
294
- }
196
+ { "criterion": "1.3.1", "level": "A", "title": "Info and Relationships" },
197
+ { "criterion": "2.1.1", "level": "A", "title": "Keyboard" },
198
+ { "criterion": "4.1.2", "level": "A", "title": "Name, Role, Value" }
295
199
  ]
296
200
  }
297
201
  }
@@ -22,41 +22,28 @@
22
22
  "type": "do-dont",
23
23
  "content": "Don't overuse dividers",
24
24
  "dont": "Dividers lose their value when overused. Use them sparingly to avoid creating unnecessary noise."
25
+ },
26
+ {
27
+ "type": "guideline",
28
+ "content": "Cursor guidelines.\n\nCursor Usage Default (Arrow)Use the default cursor for non-interactive elements like the divider."
29
+ },
30
+ {
31
+ "type": "guideline",
32
+ "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. 2. Operable Requirement Criterion Level Compliance Seizures and physical reactions 2.3.1, 2.3.2, 2.3.3 A, AAA, AAAThere is no flashing content or unnecessary motion or animation in this component."
25
33
  }
26
34
  ],
27
35
  "options": {
28
36
  "size": {
29
37
  "type": "string",
30
38
  "default": "s",
31
- "values": [
32
- {
33
- "value": "s"
34
- },
35
- {
36
- "value": "m"
37
- },
38
- {
39
- "value": "l"
40
- }
41
- ]
39
+ "values": [{ "value": "s" }, { "value": "m" }, { "value": "l" }]
42
40
  },
43
41
  "orientation": {
44
42
  "type": "string",
45
43
  "default": "horizontal",
46
- "values": [
47
- {
48
- "value": "horizontal"
49
- },
50
- {
51
- "value": "vertical"
52
- }
53
- ]
44
+ "values": [{ "value": "horizontal" }, { "value": "vertical" }]
54
45
  }
55
46
  },
56
- "lifecycle": {
57
- "introduced": "1.0.0-draft"
58
- },
59
- "accessibility": {
60
- "focusable": false
61
- }
47
+ "lifecycle": { "introduced": "1.0.0-draft" },
48
+ "accessibility": { "focusable": false }
62
49
  }
@@ -16,27 +16,35 @@
16
16
  },
17
17
  {
18
18
  "type": "guideline",
19
- "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."
19
+ "content": "Dragging file type over drop zone area.\n\nWhen a user drags a file over the drop zone ( onDragOver ), the border and background styling update to reflect an active state. This visual cue helps users understand that the drop zone is ready to accept the file, reducing uncertainty."
20
20
  },
21
21
  {
22
22
  "type": "guideline",
23
- "content": "A button is an optional element to prompt the user to take action."
23
+ "content": "Dropping file type within drop zone area.\n\nWhen a user drops a file into the designated drop zone ( onDrop ), the zone should respond with clear visual feedback—this is typically achieved through displaying a button over the drop zone area informing the user that they may replace their content type. This feedback indicates that the user successfully dropped their file type into the zone and is permitted to replace it."
24
24
  },
25
25
  {
26
26
  "type": "guideline",
27
- "content": "Drop zones come in three different sizes: small, medium, and large. The medium size is the default and most frequently used option."
27
+ "content": "Leaving drop zone area.\n\nWhen a user drags a file outside the designated drop zone ( onDragLeave ), any visual indicators—such as borders or background styling should revert to their default state."
28
28
  },
29
29
  {
30
30
  "type": "guideline",
31
- "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."
31
+ "content": "Clearly communicate accepted file types.\n\nIndicate to users the accepted file types to let users know what they can upload before interacting. This can be done through helper text or placeholder content."
32
32
  },
33
33
  {
34
34
  "type": "guideline",
35
- "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."
35
+ "content": "Provide immediate visual feedback.\n\nWhen a file is dragged over or dropped into the zone, provide the user with visual feedback such as highlighting the border or changing the background, to confirm the interaction is recognized."
36
36
  },
37
37
  {
38
38
  "type": "guideline",
39
- "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."
39
+ "content": "Allow the user to replace file types.\n\nVisual styling that indicates a user can replace file types within a dropzone should clearly communicate interactivity and the potential for change without disrupting the overall layout. This is typically achieved through subtle but intuitive cues such as displaying a button over the drop zone area informing the user that they may replace their content type."
40
+ },
41
+ {
42
+ "type": "guideline",
43
+ "content": "Writing the title.\n\nUse the content pattern of \"Drag and drop your {item}\" for the drop zone's title. The \"drag and drop\" phrasing communicates why the UI is appearing in the way that it is, and guides a user for what they need to do in the interaction. Don't use punctuation at the end of the title."
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."
40
48
  }
41
49
  ],
42
50
  "options": {
@@ -50,17 +58,7 @@
50
58
  "size": {
51
59
  "type": "string",
52
60
  "default": "m",
53
- "values": [
54
- {
55
- "value": "s"
56
- },
57
- {
58
- "value": "m"
59
- },
60
- {
61
- "value": "l"
62
- }
63
- ]
61
+ "values": [{ "value": "s" }, { "value": "m" }, { "value": "l" }]
64
62
  },
65
63
  "actionLabel": {
66
64
  "type": "string",
@@ -79,24 +77,14 @@
79
77
  "description": "Callback function called when a file is dragged out of the drop zone."
80
78
  }
81
79
  },
82
- "lifecycle": {
83
- "introduced": "1.0.0-draft"
84
- },
80
+ "lifecycle": { "introduced": "1.0.0-draft" },
85
81
  "accessibility": {
86
82
  "intents": ["input"],
87
83
  "focusable": true,
88
84
  "keyboardIntents": ["activate"],
89
85
  "wcag": [
90
- {
91
- "criterion": "2.1.1",
92
- "level": "A",
93
- "title": "Keyboard"
94
- },
95
- {
96
- "criterion": "4.1.2",
97
- "level": "A",
98
- "title": "Name, Role, Value"
99
- }
86
+ { "criterion": "2.1.1", "level": "A", "title": "Keyboard" },
87
+ { "criterion": "4.1.2", "level": "A", "title": "Name, Role, Value" }
100
88
  ]
101
89
  }
102
90
  }