@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": "actions",
10
10
  "documentationUrl": "https://spectrum.adobe.com/page/close-button/"
11
11
  },
12
+ "implementations": [
13
+ {
14
+ "platform": "web",
15
+ "componentName": "CloseButton",
16
+ "package": "@react-spectrum/s2"
17
+ },
18
+ {
19
+ "platform": "web",
20
+ "componentName": "CloseButton",
21
+ "importPath": "@adobe/spectrum-wc/components/close-button",
22
+ "notes": "Spectrum 2 web component custom element: swc-close-button."
23
+ }
24
+ ],
12
25
  "documentBlocks": [
13
26
  {
14
27
  "type": "purpose",
@@ -16,24 +29,27 @@
16
29
  },
17
30
  {
18
31
  "type": "guideline",
19
- "content": "Keyboard focus.\n\nA close button can be navigated using a keyboard. The keyboard focus state takes the close button's visual hover state and adds a ring to the button in focus."
32
+ "content": "A close button in a disabled state shows that an action exists, but is not available in that circumstance. This state can be used to maintain layout continuity and to communicate that an action may become available later."
20
33
  },
21
34
  {
22
- "type": "do-dont",
23
- "content": "Don't use close buttons for delete actions",
24
- "dont": "A close button is only for dismissing or closing its parent component, not for taking a destructive action (like deleting a file). Use an action button instead."
35
+ "type": "guideline",
36
+ "content": "Use this option when a close button needs to be placed on top of a color background or visual. Static color close buttons are available in black or white, regardless of color theme."
25
37
  },
26
38
  {
27
39
  "type": "guideline",
28
- "content": "Keyboard interactions.\n\nKey Interaction TabMoves focus onto or off of the close button.Space or EnterExecutes the button (closes or dismisses the parent component). Focus moves to the target or back to the caller."
40
+ "content": "Use static black on light color or image backgrounds, and static white on dark color or image backgrounds, regardless of color theme. Make sure that the background and the close button color meet the minimum color contrast ratio."
29
41
  },
30
42
  {
31
43
  "type": "guideline",
32
- "content": "Cursor guidelines.\n\nCursor Description PointerUse the pointer cursor for all interactive components in every state."
44
+ "content": "The icon inside of the close button comes in two options: regular and large. These scale up and down for each close button size. This is a cross UI icon, not a workflow icon or the letter “x.”"
33
45
  },
34
46
  {
35
47
  "type": "guideline",
36
- "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—including the close icon—must provide a text alternative that communicates the control’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, AAAClose buttons should be understandable by assistive technologies like screen readers. This means the proper semantic HTML or ARIA role of buttons should be utilized.Non-text contrast 1.4.11 AAThe visual presentation of icons and various states have a contrast ratio of at least 3:1. 2. Operable RequirementCriterionLevel 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
+ "content": "Close buttons come in four different sizes: small, medium, large, and extra-large. The medium size is the default and most frequently used option. Use the other sizes sparingly; they should be used to create a hierarchy of importance within the page."
49
+ },
50
+ {
51
+ "type": "guideline",
52
+ "content": "A close button can be navigated using a keyboard. The keyboard focus state takes the close button’s visual hover state and adds a ring to the button in focus."
37
53
  }
38
54
  ],
39
55
  "options": {
@@ -41,34 +57,73 @@
41
57
  "type": "string",
42
58
  "default": "m",
43
59
  "values": [
44
- { "value": "s" },
45
- { "value": "m" },
46
- { "value": "l" },
47
- { "value": "xl" }
60
+ {
61
+ "value": "s"
62
+ },
63
+ {
64
+ "value": "m"
65
+ },
66
+ {
67
+ "value": "l"
68
+ },
69
+ {
70
+ "value": "xl"
71
+ }
48
72
  ]
49
73
  },
50
- "iconSize": { "type": "string" },
74
+ "iconSize": {
75
+ "type": "string"
76
+ },
51
77
  "staticColor": {
52
78
  "type": "string",
53
79
  "description": "Static color must not be set for the default version of this component.",
54
- "values": [{ "value": "white" }, { "value": "black" }]
80
+ "values": [
81
+ {
82
+ "value": "white"
83
+ },
84
+ {
85
+ "value": "black"
86
+ }
87
+ ]
55
88
  },
56
- "isDisabled": { "type": "boolean", "default": false }
89
+ "isDisabled": {
90
+ "type": "boolean",
91
+ "default": false
92
+ }
57
93
  },
58
94
  "states": [
59
- { "name": "hover", "trigger": "interaction" },
60
- { "name": "down", "trigger": "interaction" },
61
- { "name": "keyboard-focus", "trigger": "interaction" }
95
+ {
96
+ "name": "hover",
97
+ "trigger": "interaction"
98
+ },
99
+ {
100
+ "name": "down",
101
+ "trigger": "interaction"
102
+ },
103
+ {
104
+ "name": "keyboard-focus",
105
+ "trigger": "interaction"
106
+ }
62
107
  ],
63
- "lifecycle": { "introduced": "1.0.0-draft" },
108
+ "lifecycle": {
109
+ "introduced": "1.0.0-draft"
110
+ },
64
111
  "accessibility": {
65
112
  "role": "button",
66
113
  "intents": ["dismiss"],
67
114
  "focusable": true,
68
115
  "keyboardIntents": ["activate"],
69
116
  "wcag": [
70
- { "criterion": "2.1.1", "level": "A", "title": "Keyboard" },
71
- { "criterion": "4.1.2", "level": "A", "title": "Name, Role, Value" }
117
+ {
118
+ "criterion": "2.1.1",
119
+ "level": "A",
120
+ "title": "Keyboard"
121
+ },
122
+ {
123
+ "criterion": "4.1.2",
124
+ "level": "A",
125
+ "title": "Name, Role, Value"
126
+ }
72
127
  ]
73
128
  }
74
129
  }
@@ -55,25 +55,55 @@
55
55
  "cornerRounding": {
56
56
  "type": "string",
57
57
  "values": [
58
- { "value": "none" },
59
- { "value": "corner-radius-75" },
60
- { "value": "corner-radius-100" },
61
- { "value": "corner-radius-200" },
62
- { "value": "corner-radius-300" },
63
- { "value": "corner-radius-400" },
64
- { "value": "corner-radius-500" },
65
- { "value": "corner-radius-600" },
66
- { "value": "corner-radius-700" },
67
- { "value": "corner-radius-800" },
68
- { "value": "full" }
58
+ {
59
+ "value": "none"
60
+ },
61
+ {
62
+ "value": "corner-radius-75"
63
+ },
64
+ {
65
+ "value": "corner-radius-100"
66
+ },
67
+ {
68
+ "value": "corner-radius-200"
69
+ },
70
+ {
71
+ "value": "corner-radius-300"
72
+ },
73
+ {
74
+ "value": "corner-radius-400"
75
+ },
76
+ {
77
+ "value": "corner-radius-500"
78
+ },
79
+ {
80
+ "value": "corner-radius-600"
81
+ },
82
+ {
83
+ "value": "corner-radius-700"
84
+ },
85
+ {
86
+ "value": "corner-radius-800"
87
+ },
88
+ {
89
+ "value": "full"
90
+ }
69
91
  ]
70
92
  },
71
93
  "staticColor": {
72
94
  "type": "string",
73
95
  "description": "If not set to white, the coach indicator uses the default color.",
74
- "values": [{ "value": "white" }]
96
+ "values": [
97
+ {
98
+ "value": "white"
99
+ }
100
+ ]
75
101
  }
76
102
  },
77
- "lifecycle": { "introduced": "1.0.0-draft" },
78
- "accessibility": { "focusable": false }
103
+ "lifecycle": {
104
+ "introduced": "1.0.0-draft"
105
+ },
106
+ "accessibility": {
107
+ "focusable": false
108
+ }
79
109
  }
@@ -76,8 +76,12 @@
76
76
  }
77
77
  ],
78
78
  "options": {
79
- "title": { "type": "string" },
80
- "description": { "type": "string" },
79
+ "title": {
80
+ "type": "string"
81
+ },
82
+ "description": {
83
+ "type": "string"
84
+ },
81
85
  "hideImage": {
82
86
  "type": "boolean",
83
87
  "default": false,
@@ -116,18 +120,32 @@
116
120
  "name": "pagination-text",
117
121
  "description": "Text indicating step position (e.g. '2 of 5')."
118
122
  },
119
- { "name": "body" },
120
- { "name": "media" },
121
- { "name": "pagination" },
122
- { "name": "title" }
123
+ {
124
+ "name": "body"
125
+ },
126
+ {
127
+ "name": "media"
128
+ },
129
+ {
130
+ "name": "pagination"
131
+ },
132
+ {
133
+ "name": "title"
134
+ }
123
135
  ],
124
- "lifecycle": { "introduced": "1.0.0-draft" },
136
+ "lifecycle": {
137
+ "introduced": "1.0.0-draft"
138
+ },
125
139
  "accessibility": {
126
140
  "intents": ["dismiss"],
127
141
  "focusable": true,
128
142
  "keyboardIntents": ["dismiss"],
129
143
  "wcag": [
130
- { "criterion": "4.1.2", "level": "A", "title": "Name, Role, Value" }
144
+ {
145
+ "criterion": "4.1.2",
146
+ "level": "A",
147
+ "title": "Name, Role, Value"
148
+ }
131
149
  ]
132
150
  }
133
151
  }
@@ -9,6 +9,13 @@
9
9
  "category": "inputs",
10
10
  "documentationUrl": "https://spectrum.adobe.com/page/color-area/"
11
11
  },
12
+ "implementations": [
13
+ {
14
+ "platform": "web",
15
+ "componentName": "ColorArea",
16
+ "package": "@react-spectrum/s2"
17
+ }
18
+ ],
12
19
  "documentBlocks": [
13
20
  {
14
21
  "type": "purpose",
@@ -16,23 +23,47 @@
16
23
  },
17
24
  {
18
25
  "type": "guideline",
19
- "content": "Keyboard focus.\n\nA color area can be navigated using a keyboard. The keyboard focus state enlarges the handle to become twice as large."
26
+ "content": "A color area enables visual selection of two color properties at once. It's often paired with a color slider or color wheel."
27
+ },
28
+ {
29
+ "type": "guideline",
30
+ "content": "A color area in a disabled state shows that an input exists, but is not available in that circumstance. This can be used to maintain layout continuity and communicate that the area may become available later."
31
+ },
32
+ {
33
+ "type": "guideline",
34
+ "content": "A color area’s height and width can be customized appropriately for its context."
35
+ },
36
+ {
37
+ "type": "guideline",
38
+ "content": "The step refers to the increment by which these values increase or decrease. A step value of 1 (default) allows a user to only select whole numbers within the min and max range."
39
+ },
40
+ {
41
+ "type": "guideline",
42
+ "content": "The x and y values are the numbers selected within the color area’s horizontal and vertical axes, respectively."
20
43
  },
21
44
  {
22
45
  "type": "guideline",
23
- "content": "Handle behavior.\n\nThe color area's handle can slide all the way over the edge of the area. It always displays the selected color inside the handle and never gets cut off by the border or any container."
46
+ "content": "The x/y min and max values also can be customized appropriately for what the color area is being used for. By default, the min value starts at 0 and max value is set to 100."
24
47
  },
25
48
  {
26
49
  "type": "guideline",
27
- "content": "Minimum width and height.\n\nMinimum sizing ensures that the component remains clear, usable, and visually consistent, even in flexible or responsive layouts."
50
+ "content": "A color area can be navigated using a keyboard. The keyboard focus state enlarges the handle to become twice as large."
28
51
  },
29
52
  {
30
53
  "type": "guideline",
31
- "content": "Display color selection.\n\nWhen using color areas, it's important to clearly display the color selection in real time. This can be in a color swatch, directly on the canvas, or both."
54
+ "content": "The color area’s handle can slide all the way over the edge of the area. It always displays the selected color inside the handle and never gets cut off by the border or any container."
32
55
  },
33
56
  {
34
57
  "type": "guideline",
35
- "content": "Color loupe on down/touch states.\n\nThe color loupe component can be used above the handle to show the selected color that would otherwise be covered by a mouse, stylus, or finger on the down/touch state. This can be customized to appear only on finger-input, or always appear regardless of input type."
58
+ "content": "Minimum sizing ensures that the component remains clear, usable, and visually consistent, even in flexible or responsive layouts."
59
+ },
60
+ {
61
+ "type": "guideline",
62
+ "content": "When using color areas, it’s important to clearly display the color selection in real time. This can be in a color swatch, directly on the canvas, or both."
63
+ },
64
+ {
65
+ "type": "guideline",
66
+ "content": "The color loupe component can be used above the handle to show the selected color that would otherwise be covered by a mouse, stylus, or finger on the down/touch state. This can be customized to appear only on finger-input, or always appear regardless of input type."
36
67
  }
37
68
  ],
38
69
  "options": {
@@ -44,34 +75,83 @@
44
75
  "type": "number",
45
76
  "description": "Number (from x-minValue to x-maxValue)"
46
77
  },
47
- "x-minValue": { "type": "number", "default": 0 },
48
- "x-maxValue": { "type": "number", "default": 100 },
78
+ "x-minValue": {
79
+ "type": "number",
80
+ "default": 0
81
+ },
82
+ "x-maxValue": {
83
+ "type": "number",
84
+ "default": 100
85
+ },
49
86
  "y-value": {
50
87
  "type": "number",
51
88
  "description": "Number (from y-minValue to y-maxValue)"
52
89
  },
53
- "y-minValue": { "type": "number", "default": 0 },
54
- "y-maxValue": { "type": "number", "default": 100 },
55
- "step": { "type": "number", "default": 1 },
56
- "width": { "type": "number", "default": 192, "description": "units: px" },
57
- "height": { "type": "number", "default": 192, "description": "units: px" },
58
- "isDisabled": { "type": "boolean", "default": false }
90
+ "y-minValue": {
91
+ "type": "number",
92
+ "default": 0
93
+ },
94
+ "y-maxValue": {
95
+ "type": "number",
96
+ "default": 100
97
+ },
98
+ "step": {
99
+ "type": "number",
100
+ "default": 1
101
+ },
102
+ "width": {
103
+ "type": "number",
104
+ "default": 192,
105
+ "description": "units: px"
106
+ },
107
+ "height": {
108
+ "type": "number",
109
+ "default": 192,
110
+ "description": "units: px"
111
+ },
112
+ "isDisabled": {
113
+ "type": "boolean",
114
+ "default": false
115
+ }
59
116
  },
60
117
  "states": [
61
- { "name": "hover", "trigger": "interaction" },
62
- { "name": "down", "trigger": "interaction" },
63
- { "name": "keyboard-focus", "trigger": "interaction" }
118
+ {
119
+ "name": "hover",
120
+ "trigger": "interaction"
121
+ },
122
+ {
123
+ "name": "down",
124
+ "trigger": "interaction"
125
+ },
126
+ {
127
+ "name": "keyboard-focus",
128
+ "trigger": "interaction"
129
+ }
64
130
  ],
65
- "lifecycle": { "introduced": "1.0.0-draft" },
131
+ "lifecycle": {
132
+ "introduced": "1.0.0-draft"
133
+ },
66
134
  "accessibility": {
67
135
  "role": "slider",
68
136
  "intents": ["choose"],
69
137
  "focusable": true,
70
138
  "keyboardIntents": ["increment", "decrement"],
71
139
  "wcag": [
72
- { "criterion": "1.3.1", "level": "A", "title": "Info and Relationships" },
73
- { "criterion": "2.1.1", "level": "A", "title": "Keyboard" },
74
- { "criterion": "4.1.2", "level": "A", "title": "Name, Role, Value" }
140
+ {
141
+ "criterion": "1.3.1",
142
+ "level": "A",
143
+ "title": "Info and Relationships"
144
+ },
145
+ {
146
+ "criterion": "2.1.1",
147
+ "level": "A",
148
+ "title": "Keyboard"
149
+ },
150
+ {
151
+ "criterion": "4.1.2",
152
+ "level": "A",
153
+ "title": "Name, Role, Value"
154
+ }
75
155
  ]
76
156
  }
77
157
  }
@@ -9,10 +9,18 @@
9
9
  "category": "inputs",
10
10
  "documentationUrl": "https://spectrum.adobe.com/page/color-handle/"
11
11
  },
12
+ "implementations": [
13
+ {
14
+ "platform": "web",
15
+ "componentName": "ColorHandle",
16
+ "importPath": "@adobe/spectrum-wc/components/color-handle",
17
+ "notes": "Spectrum 2 web component custom element: swc-color-handle."
18
+ }
19
+ ],
12
20
  "documentBlocks": [
13
21
  {
14
22
  "type": "purpose",
15
- "content": "Color handles allow users to select and adjust colors in a color picker."
23
+ "content": "Color handles select or adjust a color value along a track or wheel. The outer border is not included in the handle's size."
16
24
  },
17
25
  {
18
26
  "type": "guideline",
@@ -20,23 +28,11 @@
20
28
  },
21
29
  {
22
30
  "type": "guideline",
23
- "content": "Transparent colors.\n\nWhen using transparent colors, the handle and loupe display an opacity checkerboard background to clearly show the level of transparency."
24
- },
25
- {
26
- "type": "guideline",
27
- "content": "Color loupe.\n\nThe loupe is a floating element positioned above the handle. It provides a preview that reflects the color currently sampled by its parent color component and disappears when the interaction ends."
28
- },
29
- {
30
- "type": "guideline",
31
- "content": "Keyboard focus.\n\nThe keyboard focus state enlarges the handle to become twice as large. The loupe is a visual-only element and should not receive focus since it does not provide interactive functionality."
31
+ "content": "Transparent colors.\n\nWhen using transparent colors, the handle displays an opacity checkerboard background to clearly show the level of transparency."
32
32
  },
33
33
  {
34
34
  "type": "guideline",
35
- "content": "Display combined values.\n\nColor selection usually happens using a variety of input methods (color area, color slider, color wheel). The color loupe should display the final output color: the combined values from multiple color inputs. The number of input methods is determined by the color space (or \"mode\"), for example: 2 controls: HSL using color wheel (hue) and color area (saturation and lightness) 3 controls: RGB using unique color sliders for Red, Green, and Blue 4 controls: RGBa using unique color sliders for Red, Green, Blue, and Alpha"
36
- },
37
- {
38
- "type": "guideline",
39
- "content": "Color loupe on down/touch state.\n\nThe color loupe component can be used above the handle to show the selected color that would otherwise be covered by a cursor, stylus, or finger on the down/touch state. This can be customized to appear only on finger-input, or always appear regardless of input type."
35
+ "content": "Keyboard focus.\n\nThe keyboard focus state enlarges the handle to become twice as large."
40
36
  }
41
37
  ],
42
38
  "options": {
@@ -45,22 +41,47 @@
45
41
  "default": "hue",
46
42
  "description": "Which channel of the color this handle controls. Use 'alpha' for opacity.",
47
43
  "values": [
48
- { "value": "hue" },
49
- { "value": "saturation" },
50
- { "value": "lightness" },
51
- { "value": "red" },
52
- { "value": "green" },
53
- { "value": "blue" },
54
- { "value": "alpha" }
44
+ {
45
+ "value": "hue"
46
+ },
47
+ {
48
+ "value": "saturation"
49
+ },
50
+ {
51
+ "value": "lightness"
52
+ },
53
+ {
54
+ "value": "red"
55
+ },
56
+ {
57
+ "value": "green"
58
+ },
59
+ {
60
+ "value": "blue"
61
+ },
62
+ {
63
+ "value": "alpha"
64
+ }
55
65
  ]
56
66
  },
57
- "isDisabled": { "type": "boolean", "default": false }
67
+ "isDisabled": {
68
+ "type": "boolean",
69
+ "default": false
70
+ }
71
+ },
72
+ "lifecycle": {
73
+ "introduced": "1.0.0-draft"
58
74
  },
59
- "lifecycle": { "introduced": "1.0.0-draft" },
60
75
  "accessibility": {
61
76
  "intents": ["choose"],
62
77
  "focusable": true,
63
78
  "keyboardIntents": ["increment", "decrement"],
64
- "wcag": [{ "criterion": "2.1.1", "level": "A", "title": "Keyboard" }]
79
+ "wcag": [
80
+ {
81
+ "criterion": "2.1.1",
82
+ "level": "A",
83
+ "title": "Keyboard"
84
+ }
85
+ ]
65
86
  }
66
87
  }
@@ -9,6 +9,14 @@
9
9
  "category": "feedback",
10
10
  "documentationUrl": "https://spectrum.adobe.com/page/color-loupe/"
11
11
  },
12
+ "implementations": [
13
+ {
14
+ "platform": "web",
15
+ "componentName": "ColorLoupe",
16
+ "importPath": "@adobe/spectrum-wc/components/color-loupe",
17
+ "notes": "Spectrum 2 web component custom element: swc-color-loupe."
18
+ }
19
+ ],
12
20
  "documentBlocks": [
13
21
  {
14
22
  "type": "purpose",
@@ -40,6 +48,10 @@
40
48
  "$ref": "https://opensource.adobe.com/spectrum-design-data/schemas/types/hex-color.json"
41
49
  }
42
50
  },
43
- "lifecycle": { "introduced": "1.0.0-draft" },
44
- "accessibility": { "focusable": false }
51
+ "lifecycle": {
52
+ "introduced": "1.0.0-draft"
53
+ },
54
+ "accessibility": {
55
+ "focusable": false
56
+ }
45
57
  }