@adobe/spectrum-design-data 3.7.1 → 3.8.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 (109) hide show
  1. package/changelog/accordion.json +359 -0
  2. package/changelog/action-bar.json +110 -0
  3. package/changelog/action-button.json +362 -0
  4. package/changelog/action-group.json +72 -0
  5. package/changelog/alert-banner.json +65 -0
  6. package/changelog/alert-dialog.json +88 -0
  7. package/changelog/avatar-group.json +93 -0
  8. package/changelog/avatar.json +99 -0
  9. package/changelog/badge.json +595 -0
  10. package/changelog/bar-panel.json +7 -0
  11. package/changelog/body.json +7 -0
  12. package/changelog/bottom-navigation-android.json +7 -0
  13. package/changelog/breadcrumbs.json +145 -0
  14. package/changelog/button-group.json +66 -0
  15. package/changelog/button.json +504 -0
  16. package/changelog/calendar.json +62 -0
  17. package/changelog/card-horizontal.json +7 -0
  18. package/changelog/card.json +24 -0
  19. package/changelog/cards.json +137 -0
  20. package/changelog/checkbox-group.json +48 -0
  21. package/changelog/checkbox.json +210 -0
  22. package/changelog/close-button.json +125 -0
  23. package/changelog/coach-indicator.json +77 -0
  24. package/changelog/coach-mark.json +44 -0
  25. package/changelog/code.json +7 -0
  26. package/changelog/collection-card.json +7 -0
  27. package/changelog/color-area.json +67 -0
  28. package/changelog/color-control.json +7 -0
  29. package/changelog/color-handle.json +80 -0
  30. package/changelog/color-loupe.json +77 -0
  31. package/changelog/color-slider.json +89 -0
  32. package/changelog/color-wheel.json +68 -0
  33. package/changelog/combo-box.json +277 -0
  34. package/changelog/contextual-help.json +74 -0
  35. package/changelog/date-field.json +24 -0
  36. package/changelog/date-picker.json +175 -0
  37. package/changelog/detail.json +7 -0
  38. package/changelog/divider.json +82 -0
  39. package/changelog/double-calendar.json +7 -0
  40. package/changelog/drop-zone.json +155 -0
  41. package/changelog/field-label.json +118 -0
  42. package/changelog/field.json +7 -0
  43. package/changelog/floating-action-button.json +7 -0
  44. package/changelog/form-item.json +7 -0
  45. package/changelog/heading.json +24 -0
  46. package/changelog/help-text.json +100 -0
  47. package/changelog/illustrated-message.json +79 -0
  48. package/changelog/in-field-button.json +7 -0
  49. package/changelog/in-field-progress-button.json +7 -0
  50. package/changelog/in-field-progress-circle.json +48 -0
  51. package/changelog/in-line-alert.json +66 -0
  52. package/changelog/link.json +123 -0
  53. package/changelog/list-view.json +184 -0
  54. package/changelog/menu.json +254 -0
  55. package/changelog/meter.json +89 -0
  56. package/changelog/number-field.json +232 -0
  57. package/changelog/opacity-checkerboard.json +7 -0
  58. package/changelog/picker.json +241 -0
  59. package/changelog/popover.json +86 -0
  60. package/changelog/progress-bar.json +94 -0
  61. package/changelog/progress-circle.json +62 -0
  62. package/changelog/radio-button.json +180 -0
  63. package/changelog/radio-group.json +61 -0
  64. package/changelog/rating.json +64 -0
  65. package/changelog/scroll-zoom-bar.json +7 -0
  66. package/changelog/search-field.json +188 -0
  67. package/changelog/segmented-control.json +139 -0
  68. package/changelog/segmented-text-field.json +7 -0
  69. package/changelog/select-box.json +106 -0
  70. package/changelog/side-navigation.json +171 -0
  71. package/changelog/single-calendar.json +7 -0
  72. package/changelog/slider.json +144 -0
  73. package/changelog/stack-item.json +25 -0
  74. package/changelog/standard-dialog.json +58 -0
  75. package/changelog/standard-panel.json +7 -0
  76. package/changelog/status-light.json +108 -0
  77. package/changelog/steplist.json +66 -0
  78. package/changelog/swatch-group.json +62 -0
  79. package/changelog/swatch.json +99 -0
  80. package/changelog/switch.json +164 -0
  81. package/changelog/tab-bar-ios.json +25 -0
  82. package/changelog/table.json +140 -0
  83. package/changelog/tabs.json +118 -0
  84. package/changelog/tag-field.json +91 -0
  85. package/changelog/tag-group.json +66 -0
  86. package/changelog/tag.json +217 -0
  87. package/changelog/takeover-dialog.json +67 -0
  88. package/changelog/text-area.json +240 -0
  89. package/changelog/text-field.json +222 -0
  90. package/changelog/thumbnail.json +49 -0
  91. package/changelog/time-field.json +24 -0
  92. package/changelog/title.json +24 -0
  93. package/changelog/toast.json +110 -0
  94. package/changelog/tooltip.json +115 -0
  95. package/changelog/tray.json +7 -0
  96. package/changelog/tree-view.json +202 -0
  97. package/changelog/triple-calendar.json +7 -0
  98. package/changelog/user-card.json +24 -0
  99. package/components/accordion.json +37 -0
  100. package/components/action-button.json +44 -0
  101. package/components/badge.json +18 -2
  102. package/components/button.json +47 -1
  103. package/components/checkbox.json +42 -0
  104. package/components/radio-button.json +43 -3
  105. package/components/switch.json +36 -1
  106. package/package.json +4 -2
  107. package/registry/anatomy-terms.json +13 -8
  108. package/registry/token-terminology.json +1 -1
  109. package/tokens/layout.tokens.json +3 -2
@@ -0,0 +1,202 @@
1
+ {
2
+ "$schema": "https://opensource.adobe.com/spectrum-design-data/schemas/v0/component-changelog.schema.json",
3
+ "specVersion": "1.0.0-draft",
4
+ "component": "tree-view",
5
+ "baseline": {"release":"2.1.0","version":"1.0.0","commit":"4033f09de6696d4f61d1da89d42129a941dbd806"},
6
+ "releases": [
7
+ {
8
+ "release": "2.2.0",
9
+ "version": "1.0.1",
10
+ "bump": "patch",
11
+ "date": "2026-08-24",
12
+ "commit": "efa7a6bab4219eab3fa6cc1cbb991f09461bcc80",
13
+ "commits": [
14
+ {
15
+ "commit": "0b2d328b9dbfe7adf3cb762853faa15a4ba92dd0",
16
+ "date": "2026-08-17",
17
+ "source": {"type":"pr","repo":"adobe/spectrum-design-data","number":1333,"title":"fix(design-data): remove SPEC-027 dangling tokenBindings superseded by CTR","url":"https://github.com/adobe/spectrum-design-data/pull/1333"},
18
+ "entries": [
19
+ {"id":"0b2d328b-0","kind":"component","change":"updated","class":"api","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/tokenBindings","name":"tokenBindings","fields":[{"path":"tokenBindings","before":[{"token":"tree-view-edge-to-drag-handle","context":"Spacing (edge to drag handle, drag handle)"},{"token":"tree-view-drag-handle-to-checkbox","context":"Spacing (drag handle to checkbox, drag handle + checkbox)"}]}]}
20
+ ]
21
+ }
22
+ ]
23
+ },
24
+ {
25
+ "release": "2.7.0",
26
+ "version": "1.0.2",
27
+ "bump": "patch",
28
+ "date": "2026-09-03",
29
+ "commit": "5e22a7a18cd1a4f2a5957cba9cafa66bef73ed63",
30
+ "commits": [
31
+ {
32
+ "commit": "5e22a7a18cd1a4f2a5957cba9cafa66bef73ed63",
33
+ "date": "2026-09-03",
34
+ "source": {"type":"pr","repo":"adobe/spectrum-design-data","number":1394,"title":"fix(design-data): re-point CTR refs off deprecated tokens, add guard rail","url":"https://github.com/adobe/spectrum-design-data/pull/1394"},
35
+ "entries": [
36
+ {"id":"5e22a7a1-0","kind":"relationship","change":"updated","class":"visual","bump":"patch","indirect":false,"contexts":["Spacing (edge to checkbox, checkbox)"],"scope":{"property":"space-between","options":null},"record":"space-between#Spacing (edge to checkbox, checkbox)","name":"space-between","fields":[{"path":"$ref","before":"2e3817ed-206b-45e5-b55c-6116e9731cd8","after":"2147f873-8f42-4821-9654-9db2b1adc2f9"}]},
37
+ {"id":"5e22a7a1-1","kind":"relationship","change":"updated","class":"visual","bump":"patch","indirect":false,"contexts":["Spacing (edge to checkbox, checkbox)"],"scope":{"property":"space-between","options":null},"record":"space-between#Spacing (edge to checkbox, checkbox)","name":"space-between","fields":[{"path":"$ref","before":"fba49c63-444e-42fc-b27c-7ce43b8419a7","after":"2147f873-8f42-4821-9654-9db2b1adc2f9"}]},
38
+ {"id":"5e22a7a1-2","kind":"relationship","change":"updated","class":"visual","bump":"patch","indirect":false,"contexts":["Spacing (context area to label)"],"scope":{"property":"space-between","options":null},"record":"space-between#Spacing (context area to label)","name":"space-between","fields":[{"path":"$ref","before":"1d601d0a-d6d0-4711-9fb9-71898c2bcc9a","after":"9898011f-a47c-4d5d-a74e-70b5f8d0b91c"}]},
39
+ {"id":"5e22a7a1-3","kind":"relationship","change":"updated","class":"visual","bump":"patch","indirect":false,"contexts":["Spacing (context area to label)"],"scope":{"property":"space-between","options":null},"record":"space-between#Spacing (context area to label)","name":"space-between","fields":[{"path":"$ref","before":"09d55113-8d94-429f-b0c8-ffabe8ccba27","after":"9898011f-a47c-4d5d-a74e-70b5f8d0b91c"}]},
40
+ {"id":"5e22a7a1-4","kind":"relationship","change":"updated","class":"visual","bump":"patch","indirect":false,"contexts":["Spacing (label to edge)"],"scope":{"property":"component-edge-to-text-100","options":null},"record":"component-edge-to-text-100#Spacing (label to edge)","name":"component-edge-to-text-100","fields":[{"path":"$ref","before":"0c0d6d38-6734-4312-9be5-dd48dd571841","after":"52a75511-eb1b-4de2-a1bb-959365d8dc1a"}]},
41
+ {"id":"5e22a7a1-5","kind":"relationship","change":"updated","class":"visual","bump":"patch","indirect":false,"contexts":["Spacing (label to edge)"],"scope":{"property":"component-edge-to-text-100","options":null},"record":"component-edge-to-text-100#Spacing (label to edge)","name":"component-edge-to-text-100","fields":[{"path":"$ref","before":"0b3ecfcf-8fb9-4faf-ab7f-ff4baf733df5","after":"52a75511-eb1b-4de2-a1bb-959365d8dc1a"}]},
42
+ {"id":"5e22a7a1-6","kind":"relationship","change":"updated","class":"visual","bump":"patch","indirect":false,"contexts":["Spacing (label to action area)"],"scope":{"property":"space-between","options":null},"record":"space-between#Spacing (label to action area)","name":"space-between","fields":[{"path":"$ref","before":"e5e3b415-97a9-436d-b46d-9bf48d7a2104","after":"3cd1e483-969b-492c-8d44-d29348c981a5"}]},
43
+ {"id":"5e22a7a1-7","kind":"relationship","change":"updated","class":"visual","bump":"patch","indirect":false,"contexts":["Spacing (label to action area)"],"scope":{"property":"space-between","options":null},"record":"space-between#Spacing (label to action area)","name":"space-between","fields":[{"path":"$ref","before":"096032da-c0b4-4086-82e9-ab80c2b3d90b","after":"3cd1e483-969b-492c-8d44-d29348c981a5"}]},
44
+ {"id":"5e22a7a1-8","kind":"relationship","change":"updated","class":"visual","bump":"patch","indirect":false,"contexts":["Spacing (edge to action area, action button 1 + action button 2)"],"scope":{"property":"space-between","options":null},"record":"space-between#Spacing (edge to action area, action button 1 + action button 2)","name":"space-between","fields":[{"path":"$ref","before":"91c6c1db-1f68-43b3-80ba-aa3c7ebecaec","after":"2147f873-8f42-4821-9654-9db2b1adc2f9"}]},
45
+ {"id":"5e22a7a1-9","kind":"relationship","change":"updated","class":"visual","bump":"patch","indirect":false,"contexts":["Spacing (edge to action area, action button 1 + action button 2)"],"scope":{"property":"space-between","options":null},"record":"space-between#Spacing (edge to action area, action button 1 + action button 2)","name":"space-between","fields":[{"path":"$ref","before":"66d490aa-b658-474d-99cf-f18d15cb4098","after":"2147f873-8f42-4821-9654-9db2b1adc2f9"}]},
46
+ {"id":"5e22a7a1-10","kind":"relationship","change":"updated","class":"visual","bump":"patch","indirect":false,"contexts":["Spacing (indentation)"],"scope":{"property":"level-increment","options":null},"record":"level-increment#Spacing (indentation)","name":"level-increment","fields":[{"path":"$ref","before":"cf7044fe-e79d-44e4-8ae0-c9c23ac5b9ac","after":"9af302c3-7cf8-4b03-b6d1-4af5e641d67f"}]},
47
+ {"id":"5e22a7a1-11","kind":"relationship","change":"updated","class":"visual","bump":"patch","indirect":false,"contexts":["Spacing (indentation)"],"scope":{"property":"level-increment","options":null},"record":"level-increment#Spacing (indentation)","name":"level-increment","fields":[{"path":"$ref","before":"038d525f-357a-4441-934e-093d7342eba8","after":"9af302c3-7cf8-4b03-b6d1-4af5e641d67f"}]},
48
+ {"id":"5e22a7a1-12","kind":"relationship","change":"updated","class":"visual","bump":"patch","indirect":false,"contexts":["Focus (drag handle)"],"scope":{"property":"gap","options":null},"record":"gap#Focus (drag handle)","name":"gap","fields":[{"path":"$ref","before":"693651ef-71c7-4096-91a5-1c84cb861021","after":"fb035d45-e63b-4cd4-b220-675a52e99399"}]},
49
+ {"id":"5e22a7a1-13","kind":"relationship","change":"updated","class":"visual","bump":"patch","indirect":false,"contexts":["Spacing (vertically, between tree view item and tree view header)"],"scope":{"property":"space-between","options":null},"record":"space-between#Spacing (vertically, between tree view item and tree view header)","name":"space-between","fields":[{"path":"$ref","before":"ebf7358c-b691-45d7-a1c4-c346e75e800e","after":"b7e1af59-753e-4059-8f46-8d862f631ad8"}]},
50
+ {"id":"5e22a7a1-14","kind":"relationship","change":"updated","class":"visual","bump":"patch","indirect":false,"contexts":["Spacing (vertically, between tree view item and tree view header)"],"scope":{"property":"space-between","options":null},"record":"space-between#Spacing (vertically, between tree view item and tree view header)","name":"space-between","fields":[{"path":"$ref","before":"a06c6929-1acc-4084-a8ee-3d4ad5a0064e","after":"b7e1af59-753e-4059-8f46-8d862f631ad8"}]}
51
+ ]
52
+ }
53
+ ]
54
+ },
55
+ {
56
+ "release": "3.0.0",
57
+ "version": "1.0.3",
58
+ "bump": "patch",
59
+ "date": "2026-09-08",
60
+ "commit": "569b7abcb96ebeaa549c1c1a1cb44975b30bff59",
61
+ "commits": [
62
+ {
63
+ "commit": "6005339a0678226eee3e827fd5bbfa793f5bccc7",
64
+ "date": "2026-09-08",
65
+ "source": {"type":"pr","repo":"adobe/spectrum-design-data","number":1428,"title":"feat(tokens)!: add conceptId as canonical concept-level UUID, retire set_uuid","url":"https://github.com/adobe/spectrum-design-data/pull/1428"},
66
+ "entries": [],
67
+ "metadata": {"count":40,"fields":["conceptId","set_uuid"]}
68
+ }
69
+ ]
70
+ },
71
+ {
72
+ "release": "3.2.3",
73
+ "version": "1.0.4",
74
+ "bump": "patch",
75
+ "date": "2026-09-14",
76
+ "commit": "d88be4e0204abb31d9f02ce680acd0fe478057a7",
77
+ "commits": [
78
+ {
79
+ "commit": "d88be4e0204abb31d9f02ce680acd0fe478057a7",
80
+ "date": "2026-09-14",
81
+ "source": {"type":"pr","repo":"adobe/spectrum-design-data","number":1452,"title":"fix(tokens): stack-item selected-down background gray-300 → gray-200","url":"https://github.com/adobe/spectrum-design-data/pull/1452"},
82
+ "entries": [
83
+ {"id":"d88be4e0-0","kind":"token","change":"updated","class":"visual","bump":"patch","indirect":false,"contexts":["Background (selected, checkbox)"],"scope":{"property":"color","options":{"state":["selected","down"],"object":"background"}},"record":"1ad58d16-66da-44ae-829e-9ee1ff56a857","name":"color[object=background,state=?]","fields":[{"path":"$ref","before":"dac01571-b26a-4aef-ace7-d0e34e917570","after":"8a182a6b-149b-41a6-b608-fc247bcc298f"}]}
84
+ ]
85
+ }
86
+ ]
87
+ },
88
+ {
89
+ "release": "3.3.0",
90
+ "version": "1.0.5",
91
+ "bump": "patch",
92
+ "date": "2026-09-30",
93
+ "commit": "51ac62471300dc7514bb716907bf81d94aad4777",
94
+ "commits": [
95
+ {
96
+ "commit": "b9888b8ce9a0e4ec5b607e088942999629d5d43d",
97
+ "date": "2026-09-28",
98
+ "source": {"type":"pr","repo":"adobe/spectrum-design-data","number":1513,"title":"feat(data): add S2 implementation metadata","url":"https://github.com/adobe/spectrum-design-data/pull/1513"},
99
+ "entries": [],
100
+ "metadata": {"count":1,"fields":["implementation added"]}
101
+ }
102
+ ]
103
+ },
104
+ {
105
+ "release": "3.4.0",
106
+ "version": "1.0.6",
107
+ "bump": "patch",
108
+ "date": "2026-10-01",
109
+ "commit": "b07a196c22db3f99c93307e6240f196b72535d13",
110
+ "commits": [
111
+ {
112
+ "commit": "ec3376fa833f2c31dd0b2340590134b2747b00c4",
113
+ "date": "2026-10-01",
114
+ "source": {"type":"pr","repo":"adobe/spectrum-design-data","number":1524,"title":"feat(design-data): promote public Spectrum Hub guidance to main","url":"https://github.com/adobe/spectrum-design-data/pull/1524"},
115
+ "entries": [
116
+ {"id":"ec3376fa-0","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/0","name":"guideline: Collapse and expand.\n\nClicking the collapse and ","fields":[{"path":"content","before":"Tree views display nested, hierarchical content in a collapsible structure. They allow for navigation through multiple levels of grouped information.","after":"Collapse and expand.\n\nClicking the collapse and expand button will expand or collapse a tree view item that contains child tree view items."}]},
117
+ {"id":"ec3376fa-1","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/1","name":"guideline: Drag and drop.\n\nTree view items can be dragged a","fields":[{"path":"content","before":"A tree view offers four sizes: small, medium, large and extra-large. Medium is the default and most common. Use other sizes sparingly to create a visual hierarchy of importance on the page.","after":"Drag and drop.\n\nTree view items can be dragged and dropped to reorder or restructure the hierarchy, including multiple items at once. Dropping items from different hierarchies into a new location flattens them as sibling children. Tree views should also accept external drops, such as files, to create new items. Drag icon focus: When this option is enabled, the drag icon receives keyboard focus to support keyboard-based drag-and-drop."}]},
118
+ {"id":"ec3376fa-2","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/2","name":"guideline: Text overflow.\n\nWhen a tree view item label is t","fields":[{"path":"content","before":"When placed outside a panel, a tree view uses the detached style with rounded corners. Inside a panel, it spans edge to edge by default and does not include rounded corners.","after":"Text overflow.\n\nWhen a tree view item label is too long for the available horizontal space, it truncates. The full label appears in a tooltip on hover or keyboard focus."}]},
119
+ {"id":"ec3376fa-3","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/3","name":"guideline: Always display the collapse and expand button.\n\n","fields":[{"path":"content","before":"Tree view items can include a drag icon when needed. The icon serves as a keyboard-navigable indicator for items that support multiple actions. It appears only on hover, active and keyboard focus states.","after":"Always display the collapse and expand button.\n\nFor proper functionality, a parent-level tree view must include a collapse-and-expand button that uses a chevron icon - regardless of its nesting level. This makes the expected behavior clear when users click an item icon."}]},
120
+ {"id":"ec3376fa-4","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/4","name":"guideline: Using multiple sources in one tree view.\n\nWhen d","fields":[{"path":"content","before":"The type of selection allowed in a collection can be none, single or multiple.","after":"Using multiple sources in one tree view.\n\nWhen displaying hierarchical information from different sources, use a single tree view with separate sections and headings. Do not cross-reference sources to avoid confusing users. Single and multi-selection should work as expected within one tree view component."}]},
121
+ {"id":"ec3376fa-5","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/5","name":"guideline: Customize the root item display.\n\nThe root (topm","fields":[{"path":"content","before":"Checkbox With checkboxes, both single-select and multi-select views display boxes on the left of each item. Clicking another item adds it to the selection, and clicking a selected item removes it.","after":"Customize the root item display.\n\nThe root (topmost) level of the hierarchy does not always need to be shown or displayed as a tree view item. If the root provides no useful context, hide it or replace it with a section header. In cases such as mixed tree views, the root can serve as a \"Back\" button."}]},
122
+ {"id":"ec3376fa-6","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/6","name":"guideline: Drill-in tree views.\n\nIn some cases, users may n","fields":[{"path":"content","before":"Highlight Use highlight selection when checkboxes add clutter or unnecessary controls. This style shows a highlighted state for selected items, and clicking a new item replaces the previous selection by default.","after":"Drill-in tree views.\n\nIn some cases, users may need to view different hierarchies depending on context. To support this, let users drill into a tree view item to display a different variation of the tree view within the same panel. Use a navigation controller with a \"Back\" button to let users return to the previous view."}]},
123
+ {"id":"ec3376fa-7","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/7","name":"guideline: Iconography.\n\nChoose icons that match the object","fields":[{"path":"content","before":"All tree views have a hover state, regardless of whether actions or selections can be made.","after":"Iconography.\n\nChoose icons that match the object type represented in the tree view. Icons can be unique to specific data types to help clarify meaning for users."}]},
124
+ {"id":"ec3376fa-8","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/8","name":"guideline: Using thumbnails.\n\nTree view items can display t","fields":[{"path":"content","before":"Tree views support both single-select and multi-select modes, using either checkbox or highlight styles. In multi-select mode, selecting an item toggles its selection on or off. In single-select mode, selecting an item replaces the current selection.","after":"Using thumbnails.\n\nTree view items can display thumbnails instead of icons when users need a content preview. Use icons as a fallback when an image is unavailable, and size them to match the thumbnail. Thumbnails should scale appropriately to the tree view size. For example, an extra-large tree view should not use small thumbnails; in that case, icons may work better. Multiple thumbnails may be displayed in line with a tree view item (for example, layer masks). Each thumbnail should be individually selectable and support standard tree view behaviors, including drag-and-drop. Do not use more than three thumbnails per item."}]},
125
+ {"id":"ec3376fa-9","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/9","name":"guideline: Restrict hierarchy depth.\n\nOne way to manage ove","fields":[{"path":"content","before":"Clicking the collapse and expand button will expand or collapse a tree view item that contains child tree view items.","after":"Restrict hierarchy depth.\n\nOne way to manage overflow is to limit how many levels of hierarchy users can create in a tree view. Some products use this approach to reduce the complexity of deeply nested hierarchies. Setting limits helps when a complex hierarchy is unnecessary for the experience."}]},
126
+ {"id":"ec3376fa-10","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/10","name":"guideline: Show truncated labels in tooltip.\n\nWhen a label ","fields":[{"path":"content","before":"Tree view items can be dragged and dropped to reorder or restructure the hierarchy, including multiple items at once. Dropping items from different hierarchies into a new location flattens them as sibling children. Tree views should also accept external drops, such as files, to create new items.","after":"Show truncated labels in tooltip.\n\nWhen a label is too long to fit in the tree view, it truncates with an ellipsis. Hovering over or focusing on the item reveals a tooltip with the full label text."}]},
127
+ {"id":"ec3376fa-11","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/11","name":"guideline: Use an adjustable layout.\n\nWhen a tree view hier","fields":[{"path":"content","before":"When a tree view item label is too long for the available horizontal space, it truncates. The full label appears in a tooltip on hover or keyboard focus.","after":"Use an adjustable layout.\n\nWhen a tree view hierarchy may extend beyond the available layout space, use an adjustable layout mechanism such as panels or rails. This lets users modify the layout while preserving visibility of the tree view."}]},
128
+ {"id":"ec3376fa-12","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/12","name":"guideline: Horizontal scrolling.\n\nIf you have a layout that","fields":[{"path":"content","before":"For proper functionality, a parent-level tree view must include a collapse-and-expand button that uses a chevron icon - regardless of its nesting level. This makes the expected behavior clear when users click an item icon.","after":"Horizontal scrolling.\n\nIf you have a layout that doesn't allow for users to adjust the width of the container for a tree view, allow them to horizontally scroll in order to see the full depth of the hierarchy."}]},
129
+ {"id":"ec3376fa-13","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/13","name":"guideline: Large tree views.\n\nWhen tree views are very larg","fields":[{"path":"content","before":"When displaying hierarchical information from different sources, use a single tree view with separate sections and headings. Do not cross-reference sources to avoid confusing users. Single and multi-selection should work as expected within one tree view component.","after":"Large tree views.\n\nWhen tree views are very large, use a progress circle or a \"Show more\" control to reveal additional parts when contextually relevant. These loading patterns can apply to the entire tree view or to nested items."}]},
130
+ {"id":"ec3376fa-14","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/14","name":"guideline: Loading tree view items.\n\nIf system processes ar","fields":[{"path":"content","before":"The root (topmost) level of the hierarchy does not always need to be shown or displayed as a tree view item. If the root provides no useful context, hide it or replace it with a section header. In cases such as mixed tree views, the root can serve as a “Back” button.","after":"Loading tree view items.\n\nIf system processes are delaying the display of child tree view items when a parent tree view item is expanded, show a clear indication that the items are in the process of loading."}]},
131
+ {"id":"ec3376fa-15","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/15","name":"guideline: Sorting.\n\nUsers should be able to sort a tree vi","fields":[{"path":"content","before":"In some cases, users may need to view different hierarchies depending on context. To support this, let users drill into a tree view item to display a different variation of the tree view within the same panel. Use a navigation controller with a “Back” button to let users return to the previous view.","after":"Sorting.\n\nUsers should be able to sort a tree view. Sorting should not affect the hierarchical structure since each layer of the hierarchy is sorted individually."}]},
132
+ {"id":"ec3376fa-16","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/16","name":"guideline: Modifying the tree view.\n\nUsers may need to modi","fields":[{"path":"content","before":"Choose icons that match the object type represented in the tree view. Icons can be unique to specific data types to help clarify meaning for users.","after":"Modifying the tree view.\n\nUsers may need to modify a tree view directly. They should be able to create new parent or child items, such as groups or folders, and flatten the hierarchy at the item level, such as ungrouping layers. In some cases, users should be able to edit item labels directly. Any action for modifying the hierarchy should be offered as an explicit control and, if needed, as a keyboard shortcut — but never as a shortcut alone."}]},
133
+ {"id":"ec3376fa-17","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/17","name":"guideline: Entering into multiple selection mode.\n\nAllow us","fields":[{"path":"content","before":"Tree view items can display thumbnails instead of icons when users need a content preview. Use icons as a fallback when an image is unavailable, and size them to match the thumbnail. Thumbnails should scale appropriately to the tree view size. For example, an extra-large tree view should not use small thumbnails; in that case, icons may work better.","after":"Entering into multiple selection mode.\n\nAllow users to enter multiple-selection mode explicitly when keyboard shortcuts such as Shift + click are unavailable or when you need to show a different selection type. Do this by toggling the selection style from highlight to checkbox."}]},
134
+ {"id":"ec3376fa-18","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/18","name":"guideline: Use checkbox selection for modifying a tree view","fields":[{"path":"content","before":"One way to manage overflow is to limit how many levels of hierarchy users can create in a tree view. Some products use this approach to reduce the complexity of deeply nested hierarchies. Setting limits helps when a complex hierarchy is unnecessary for the experience.","after":"Use checkbox selection for modifying a tree view.\n\nThe checkbox selection style is intended for performing bulk actions on tree view items. Use this option when selection corresponds to bulk actions."}]},
135
+ {"id":"ec3376fa-19","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/19","name":"guideline: Use a checkbox component when selection doesn't ","fields":[{"path":"content","before":"When a label is too long to fit in the tree view, it truncates with an ellipsis. Hovering over or focusing on the item reveals a tooltip with the full label text.","after":"Use a checkbox component when selection doesn't affect tree view items.\n\nWhen you need to provide selection controls within a hierarchy, use a checkbox component instead of the tree view item's label. This should not correspond to selecting specific content and works best for cases like categorized filtering."}]},
136
+ {"id":"ec3376fa-20","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/20","name":"guideline: RTL.\n\nFor RTL (right-to-left) languages, the ent","fields":[{"path":"content","before":"When a tree view hierarchy may extend beyond the available layout space, use an adjustable layout mechanism such as panels or rails. This lets users modify the layout while preserving visibility of the tree view.","after":"RTL.\n\nFor RTL (right-to-left) languages, the entire tree view is mirrored horizontally, including the direction of the collapse and expand button. Workflow icons follow iconography internationalization guidelines."}]},
137
+ {"id":"ec3376fa-21","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/21","name":"guideline: Keyboard interactions.\n\nKey Interaction Tab Move","fields":[{"path":"content","before":"If you have a layout that doesn't allow for users to adjust the width of the container for a tree view, allow them to horizontally scroll in order to see the full depth of the hierarchy.","after":"Keyboard interactions.\n\nKey Interaction Tab Moves focus to the tree view, placing the first tree view item in focus. Shift + Tab Moves focus out of the tree view to the previous focusable element. Down Arrow Moves focus to the tree view item below or to the next thumbnail of a tree view item. Up Arrow Moves focus to the tree view item above or to the previous thumbnail of a tree view item. Enter or Space Selects the currently focused tree view item. If focus is on a child of the tree view item, subsequent action is based on the child component’s keyboard interactions. For the drag icon, this places the user in drag-and-drop mode. Right Arrow (Left Arrow in RTL) Expands the currently focused tree view item. If the tree view item is already expanded, or if the tree view item is not expandable, focus is moved in a left-to-right direction along child components. If focus is on the rightmost child of the tree view item, focus does not move. Left Arrow (Right Arrow in RTL) Collapses the currently focused tree view item. If focus is on a child of the tree view item, focus is moved in a right-to-left direction along child components. If focus is on the leftmost child of the tree view item, focus is placed back on the parent tree view item. Home Moves focus to the first item in the tree view without opening or closing a level. End Moves focus to the last item in the tree view that is focusable without opening a level. Cmd + [ (optional) Moves the currently selected item up in the view order. Cmd + ] (optional) Moves the currently selected item down in the view order. Cmd + Z (optional) Undoes the action most recently taken, such as after the user drags and drops, reorders, or performs an action on a tree view item. Cmd + G (optional) Groups the selected tree view item(s) into a new parent tree view item. Shift + Cmd + G (optional) Ungroups or removes the selected parent tree view item, placing its children at the same level of hierarchy as the removed items. Printable characters Typeahead: moves focus to next node matching typed text. * (optional) Expands all sibling nodes at the same level."}]},
138
+ {"id":"ec3376fa-22","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/22","name":"guideline: Cursor guidelines.\n\nCursor Description Default (","fields":[{"path":"content","before":"When tree views are very large, use a progress circle or a “Show more” control to reveal additional parts when contextually relevant. These loading patterns can apply to the entire tree view or to nested items.","after":"Cursor guidelines.\n\nCursor Description Default (Arrow) Use the default arrow cursor for non-interactive headers and disabled text. Pointer Use the pointer cursor for all interactive pieces of the tree view component. Grab hand Use the grab hand on the drag handle when tree view objects can be moved. Grab fist Use the grab fist cursor when actively dragging tree items."}]},
139
+ {"id":"ec3376fa-23","kind":"document-block","change":"updated","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/23","name":"guideline: WCAG 2.2 compliance.\n\nAny criterion not mention ","fields":[{"path":"content","before":"If system processes are delaying the display of child tree view items when a parent tree view item is expanded, show a clear indication that the items are in the process of loading.","after":"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 A Non-text elements, such as icons used in tree view items, must provide a text alternative that communicates the item's purpose. All tree items, especially icon-only items, 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, AAA Tree views should be understandable by assistive technologies like screen readers. This means using the proper semantic HTML or ARIA role should be utilized, including parent/child relationships, expanded/collapsed states, and selection states. Use of color 1.4.1 A Color is not used as a means to convey information or distinguish elements. Contrast 1.4.3 AA The visual presentation of text has a contrast ratio of at least 4.5:1. Visual presentation 1.4.8 AAA The 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 AA The visual presentation of icons and component states have a contrast ratio of at least 3:1. Text spacing 1.4.12 AA Line 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, AAA All functionality of the component is operable through a keyboard without specific timing for keystrokes. Keyboard traps 2.1.2 A Focus 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, AAA There is no flashing content or unnecessary motion or animation in this component. Focus order 2.4.3 A Navigation sequences receive focus in an order that preserves meaning and operability. Focus visible 2.4.7 AA Keyboard states use an indicator that is visible with at least 3:1 contrast."}]},
140
+ {"id":"ec3376fa-24","kind":"document-block","change":"removed","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/24","name":"guideline: Users should be able to sort a tree view. Sortin","fields":[],"before":{"type":"guideline","content":"Users should be able to sort a tree view. Sorting should not affect the hierarchical structure since each layer of the hierarchy is sorted individually."}},
141
+ {"id":"ec3376fa-25","kind":"document-block","change":"removed","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/25","name":"guideline: Users may need to modify a tree view directly. T","fields":[],"before":{"type":"guideline","content":"Users may need to modify a tree view directly. They should be able to create new parent or child items, such as groups or folders, and flatten the hierarchy at the item level, such as ungrouping layers. In some cases, users should be able to edit item labels directly."}},
142
+ {"id":"ec3376fa-26","kind":"document-block","change":"removed","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/26","name":"guideline: Any action for modifying the hierarchy should be","fields":[],"before":{"type":"guideline","content":"Any action for modifying the hierarchy should be offered as an explicit control and, if needed, as a keyboard shortcut — but never as a shortcut alone."}},
143
+ {"id":"ec3376fa-27","kind":"document-block","change":"removed","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/27","name":"guideline: Allow users to enter multiple-selection mode exp","fields":[],"before":{"type":"guideline","content":"Allow users to enter multiple-selection mode explicitly when keyboard shortcuts such as Shift + click are unavailable or when you need to show a different selection type. Do this by toggling the selection style from highlight to checkbox."}},
144
+ {"id":"ec3376fa-28","kind":"document-block","change":"removed","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/28","name":"guideline: The checkbox selection style is intended for per","fields":[],"before":{"type":"guideline","content":"The checkbox selection style is intended for performing bulk actions on tree view items. Use this option when selection corresponds to bulk actions."}},
145
+ {"id":"ec3376fa-29","kind":"document-block","change":"removed","class":"documentation","bump":"patch","indirect":false,"contexts":[],"record":"tree-view/documentBlocks/29","name":"guideline: When you need to provide selection controls with","fields":[],"before":{"type":"guideline","content":"When you need to provide selection controls within a hierarchy, use a checkbox component instead of the tree view item’s label. This should not correspond to selecting specific content and works best for cases like categorized filtering."}}
146
+ ]
147
+ }
148
+ ]
149
+ },
150
+ {
151
+ "release": "3.6.0",
152
+ "version": "1.0.7",
153
+ "bump": "patch",
154
+ "date": "2026-10-16",
155
+ "commit": "15f371e50e2ce95a624a93152e408e1bbe8844dc",
156
+ "commits": [
157
+ {
158
+ "commit": "54ee322dc2fa9c6556549597a74610c290638664",
159
+ "date": "2026-10-15",
160
+ "source": {"type":"pr","repo":"adobe/spectrum-design-data","number":1544,"title":"fix(design-data): pin structure-prefixed legacy keys and add regression test","url":"https://github.com/adobe/spectrum-design-data/pull/1544"},
161
+ "entries": [
162
+ {"id":"54ee322d-0","kind":"token","change":"renamed","class":"api","bump":"patch","indirect":false,"contexts":["Spacing (vertically, between tree view item and tree view header)"],"record":"b7e1af59-753e-4059-8f46-8d862f631ad8","name":"gap[legacyKey=list-gap-regular,structure=list,weight=regular]","fields":[{"path":"name.legacyKey","after":"list-gap-regular"}]}
163
+ ]
164
+ }
165
+ ]
166
+ },
167
+ {
168
+ "release": "3.7.1",
169
+ "version": "1.0.8",
170
+ "bump": "patch",
171
+ "date": "2026-10-31",
172
+ "commit": "6c59c1ffc26ee80e11b1354c8e97d1479023af30",
173
+ "commits": [
174
+ {
175
+ "commit": "a60aeea243b2ac4e812d46bbd9f7140c9f62f398",
176
+ "date": "2026-10-31",
177
+ "source": {"type":"pr","repo":"adobe/spectrum-design-data","number":1572,"title":"fix(design-data): point the second duplicate relationship at the mobile token","url":"https://github.com/adobe/spectrum-design-data/pull/1572"},
178
+ "entries": [
179
+ {"id":"a60aeea2-0","kind":"relationship","change":"updated","class":"visual","bump":"patch","indirect":false,"contexts":["Spacing (label to edge)"],"scope":{"property":"component-edge-to-text-100","options":null},"record":"component-edge-to-text-100#Spacing (label to edge)","name":"component-edge-to-text-100","fields":[{"path":"$ref","before":"52a75511-eb1b-4de2-a1bb-959365d8dc1a","after":"71731484-e759-4a5f-89ed-9fe04ac19aed"}]}
180
+ ]
181
+ }
182
+ ]
183
+ },
184
+ {
185
+ "release": "3.8.0",
186
+ "version": "1.0.9",
187
+ "bump": "patch",
188
+ "date": "2026-11-03",
189
+ "commit": "7b38617df24442d22724fb890cef69aa198b9e3a",
190
+ "commits": [
191
+ {
192
+ "commit": "9b4ad35c29fb00193e5847625699afb04fa0c560",
193
+ "date": "2026-10-31",
194
+ "source": {"type":"pr","repo":"adobe/spectrum-design-data","number":1582,"title":"feat: component visual recipes, renderer, explorer site and platform-aware rendering","url":"https://github.com/adobe/spectrum-design-data/pull/1582"},
195
+ "entries": [
196
+ {"id":"9b4ad35c-0","kind":"token","change":"renamed","class":"api","bump":"patch","indirect":false,"contexts":["Focus (drag handle)"],"record":"fb035d45-e63b-4cd4-b220-675a52e99399","name":"gap[anatomy=focus-indicator,legacyKey=focus-ring-gap]","fields":[{"path":"name.anatomy","before":"focus-ring","after":"focus-indicator"},{"path":"name.legacyKey","after":"focus-ring-gap"}]}
197
+ ]
198
+ }
199
+ ]
200
+ }
201
+ ]
202
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "$schema": "https://opensource.adobe.com/spectrum-design-data/schemas/v0/component-changelog.schema.json",
3
+ "specVersion": "1.0.0-draft",
4
+ "component": "triple-calendar",
5
+ "baseline": {"release":"2.1.0","version":"1.0.0","commit":"4033f09de6696d4f61d1da89d42129a941dbd806"},
6
+ "releases": []
7
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "$schema": "https://opensource.adobe.com/spectrum-design-data/schemas/v0/component-changelog.schema.json",
3
+ "specVersion": "1.0.0-draft",
4
+ "component": "user-card",
5
+ "baseline": {"release":"2.1.0","version":"1.0.0","commit":"4033f09de6696d4f61d1da89d42129a941dbd806"},
6
+ "releases": [
7
+ {
8
+ "release": "3.3.0",
9
+ "version": "1.0.1",
10
+ "bump": "patch",
11
+ "date": "2026-09-30",
12
+ "commit": "51ac62471300dc7514bb716907bf81d94aad4777",
13
+ "commits": [
14
+ {
15
+ "commit": "b9888b8ce9a0e4ec5b607e088942999629d5d43d",
16
+ "date": "2026-09-28",
17
+ "source": {"type":"pr","repo":"adobe/spectrum-design-data","number":1513,"title":"feat(data): add S2 implementation metadata","url":"https://github.com/adobe/spectrum-design-data/pull/1513"},
18
+ "entries": [],
19
+ "metadata": {"count":1,"fields":["implementation added"]}
20
+ }
21
+ ]
22
+ }
23
+ ]
24
+ }
@@ -62,6 +62,11 @@
62
62
  },
63
63
  "isQuiet": { "type": "boolean", "default": false },
64
64
  "isDisabled": { "type": "boolean", "default": false },
65
+ "isOpen": {
66
+ "type": "boolean",
67
+ "default": false,
68
+ "description": "Whether the rendered accordion item is expanded. Drives the chevron direction and the content area. Per-item expansion in a data-driven accordion is items[].isExpanded."
69
+ },
65
70
  "density": {
66
71
  "type": "string",
67
72
  "default": "regular",
@@ -110,6 +115,38 @@
110
115
  "description": "If true, multiple accordion items can be expanded at the same time."
111
116
  }
112
117
  },
118
+ "anatomy": [
119
+ {
120
+ "name": "item",
121
+ "description": "One accordion item: a header, the content area while open, and the divider below.",
122
+ "required": true,
123
+ "contains": ["header", "content", "divider"]
124
+ },
125
+ {
126
+ "name": "header",
127
+ "description": "Row holding the disclosure icon and the title. It is the interactive heading.",
128
+ "required": true,
129
+ "contains": ["disclosure-icon", "title"]
130
+ },
131
+ {
132
+ "name": "disclosure-icon",
133
+ "description": "Chevron at the start of the header. It points to the end while the item is closed and down while it is open.",
134
+ "required": true
135
+ },
136
+ {
137
+ "name": "title",
138
+ "description": "Text label of the item. It wraps when it exceeds the available width.",
139
+ "required": true
140
+ },
141
+ {
142
+ "name": "content",
143
+ "description": "Area below the header holding the item's content. Shown only while the item is open (isOpen)."
144
+ },
145
+ {
146
+ "name": "divider",
147
+ "description": "One-pixel line below the item. Absent when the accordion is quiet (isQuiet)."
148
+ }
149
+ ],
113
150
  "states": [
114
151
  { "name": "hover", "trigger": "interaction" },
115
152
  { "name": "down", "trigger": "interaction" },
@@ -94,6 +94,7 @@
94
94
  { "value": "xl" }
95
95
  ]
96
96
  },
97
+ "isPending": { "type": "boolean", "default": false },
97
98
  "isQuiet": { "type": "boolean", "default": false },
98
99
  "isSelected": { "type": "boolean", "default": false },
99
100
  "isEmphasized": { "type": "boolean", "default": false },
@@ -108,6 +109,49 @@
108
109
  "hasHoldIcon": { "type": "boolean", "default": false },
109
110
  "isDisabled": { "type": "boolean", "default": false }
110
111
  },
112
+ "constraints": [
113
+ {
114
+ "when": { "hideLabel": true },
115
+ "require": { "icon": { "present": true } },
116
+ "severity": "error",
117
+ "description": "Icon must be present if the label is not defined."
118
+ },
119
+ {
120
+ "when": { "isEmphasized": true },
121
+ "require": { "isSelected": [true] },
122
+ "severity": "advisory",
123
+ "description": "Emphasis only changes the selected appearance.",
124
+ "source": "react-spectrum S2 ActionButton.tsx"
125
+ }
126
+ ],
127
+ "anatomy": [
128
+ {
129
+ "name": "container",
130
+ "description": "Rounded background that holds the icon, progress circle, label, and hold icon.",
131
+ "required": true,
132
+ "contains": ["icon", "progress", "label", "hold-icon"]
133
+ },
134
+ { "name": "icon", "description": "Workflow icon shown before the label." },
135
+ {
136
+ "name": "progress",
137
+ "description": "Progress indicator shown in place of the icon and label while an action is pending."
138
+ },
139
+ { "name": "label", "description": "Text label." },
140
+ {
141
+ "name": "hold-icon",
142
+ "description": "Corner triangle that signals a popover menu opens on hold."
143
+ },
144
+ {
145
+ "name": "focus-indicator",
146
+ "description": "Outline drawn outside the container for keyboard focus.",
147
+ "presentIn": ["keyboard-focus"]
148
+ }
149
+ ],
150
+ "anatomyReview": {
151
+ "status": "reviewed",
152
+ "reviewedIn": "1.0.0-draft",
153
+ "notes": "focus-indicator is state-only; progress kept (styled by action-button, option-driven); hold-icon kept (registry term, own style)."
154
+ },
111
155
  "states": [
112
156
  { "name": "hover", "trigger": "interaction" },
113
157
  { "name": "down", "trigger": "interaction" },
@@ -81,9 +81,10 @@
81
81
  },
82
82
  "variant": {
83
83
  "type": "string",
84
+ "default": "neutral",
84
85
  "values": [
85
86
  { "value": "neutral" },
86
- { "value": "info" },
87
+ { "value": "informative" },
87
88
  { "value": "positive" },
88
89
  { "value": "negative" },
89
90
  { "value": "indigo" },
@@ -111,6 +112,7 @@
111
112
  },
112
113
  "style": {
113
114
  "type": "string",
115
+ "default": "bold",
114
116
  "values": [
115
117
  { "value": "bold" },
116
118
  { "value": "subtle" },
@@ -128,7 +130,6 @@
128
130
  { "value": "left" }
129
131
  ]
130
132
  },
131
- "isDisabled": { "type": "boolean", "default": false },
132
133
  "size": {
133
134
  "type": "string",
134
135
  "pattern": "^(x?s|m|x{0,3}l)$",
@@ -141,6 +142,21 @@
141
142
  ]
142
143
  }
143
144
  },
145
+ "anatomy": [
146
+ {
147
+ "name": "container",
148
+ "description": "Rounded background that holds the icon and label.",
149
+ "required": true,
150
+ "contains": ["icon", "label"]
151
+ },
152
+ { "name": "icon", "description": "Optional leading icon." },
153
+ { "name": "label", "description": "Badge text." }
154
+ ],
155
+ "anatomyReview": {
156
+ "status": "reviewed",
157
+ "reviewedIn": "1.0.0-draft",
158
+ "notes": "No part changes. Badge is not focusable, so no focus-indicator; icon and label are optional (icon-only badge)."
159
+ },
144
160
  "lifecycle": { "introduced": "1.0.0-draft" },
145
161
  "accessibility": { "focusable": false }
146
162
  }
@@ -158,6 +158,28 @@
158
158
  "values": [{ "value": "white" }, { "value": "black" }]
159
159
  }
160
160
  },
161
+ "constraints": [
162
+ {
163
+ "when": { "style": "outline" },
164
+ "require": { "variant": ["primary", "secondary"] },
165
+ "severity": "error",
166
+ "description": "Outline style is only defined for primary and secondary.",
167
+ "source": "react-spectrum S2 Button.tsx"
168
+ },
169
+ {
170
+ "when": { "staticColor": ["white", "black"] },
171
+ "require": { "variant": ["primary", "secondary"] },
172
+ "severity": "advisory",
173
+ "description": "Static color only restyles primary and secondary; accent and negative render unchanged.",
174
+ "source": "react-spectrum S2 Button.tsx"
175
+ },
176
+ {
177
+ "when": { "isLabelHidden": true },
178
+ "require": { "icon": { "present": true } },
179
+ "severity": "error",
180
+ "description": "An icon-only button needs an icon."
181
+ }
182
+ ],
161
183
  "slots": [
162
184
  {
163
185
  "name": "default",
@@ -167,11 +189,35 @@
167
189
  { "name": "icon", "description": "Icon placed at the start of the button." }
168
190
  ],
169
191
  "anatomy": [
192
+ {
193
+ "name": "container",
194
+ "description": "Pill-shaped background that holds the icon and label.",
195
+ "required": true,
196
+ "contains": ["icon", "progress", "label"]
197
+ },
170
198
  { "name": "icon", "description": "Leading icon." },
171
- { "name": "label", "description": "Button text.", "required": true }
199
+ {
200
+ "name": "progress",
201
+ "description": "Progress indicator shown in place of the icon and label while an action is pending."
202
+ },
203
+ {
204
+ "name": "label",
205
+ "description": "Button text. Hidden when the label is hidden or the button is pending."
206
+ },
207
+ {
208
+ "name": "focus-indicator",
209
+ "description": "Outline drawn outside the container for keyboard focus.",
210
+ "presentIn": ["focus"]
211
+ }
172
212
  ],
213
+ "anatomyReview": {
214
+ "status": "reviewed",
215
+ "reviewedIn": "1.0.0-draft",
216
+ "notes": "label is optional (isLabelHidden); focus-indicator is state-only; progress kept (styled by button, option-driven)."
217
+ },
173
218
  "states": [
174
219
  { "name": "hover", "trigger": "interaction", "precedence": 50 },
220
+ { "name": "down", "trigger": "interaction", "precedence": 55 },
175
221
  {
176
222
  "name": "focus",
177
223
  "trigger": "interaction",
@@ -95,6 +95,48 @@
95
95
  "isDisabled": { "type": "boolean", "default": false },
96
96
  "isError": { "type": "boolean", "default": false }
97
97
  },
98
+ "constraints": [
99
+ {
100
+ "when": { "isIndeterminate": true },
101
+ "require": { "isSelected": [false] },
102
+ "severity": "advisory",
103
+ "description": "An indeterminate checkbox overrides selection; isSelected has no visual effect.",
104
+ "source": "react-spectrum S2 Checkbox.tsx"
105
+ }
106
+ ],
107
+ "anatomy": [
108
+ {
109
+ "name": "container",
110
+ "description": "Row that holds the box and the label.",
111
+ "required": true,
112
+ "contains": ["box", "label"]
113
+ },
114
+ {
115
+ "name": "box",
116
+ "description": "Rounded square. Its border is drawn while the checkbox is unselected; it is filled when selected or indeterminate. Holds the checkmark and dash.",
117
+ "required": true,
118
+ "contains": ["checkmark", "dash"]
119
+ },
120
+ {
121
+ "name": "checkmark",
122
+ "description": "Mark drawn inside the box while the checkbox is selected."
123
+ },
124
+ {
125
+ "name": "dash",
126
+ "description": "Mark drawn inside the box while the checkbox is indeterminate; it replaces the checkmark."
127
+ },
128
+ { "name": "label", "description": "Text label." },
129
+ {
130
+ "name": "focus-indicator",
131
+ "description": "Outline drawn outside the box for keyboard focus.",
132
+ "presentIn": ["keyboard-focus"]
133
+ }
134
+ ],
135
+ "anatomyReview": {
136
+ "status": "reviewed",
137
+ "reviewedIn": "1.0.0-draft",
138
+ "notes": "control removed (a grouping with no style of its own); its size moved to box, which now holds the marks. focus-indicator is state-only."
139
+ },
98
140
  "states": [
99
141
  { "name": "hover", "trigger": "interaction" },
100
142
  { "name": "down", "trigger": "interaction" },