@patternfly/context-for-ai 1.2.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 (99) hide show
  1. package/README.md +615 -0
  2. package/codemod/ALL_COMPONENTS_REFERENCE.md +815 -0
  3. package/codemod/ATTRIBUTE_DECISION_LOGIC.md +320 -0
  4. package/codemod/README.md +400 -0
  5. package/codemod/add-semantic-attributes.sh +69 -0
  6. package/codemod/component-attributes-reference.json +129 -0
  7. package/codemod/example-after.tsx +51 -0
  8. package/codemod/example-before.tsx +19 -0
  9. package/codemod/static-inference.js +5015 -0
  10. package/codemod/transform.js +1108 -0
  11. package/dist/components/advanced/index.d.ts +2 -0
  12. package/dist/components/advanced/index.d.ts.map +1 -0
  13. package/dist/components/core/Button.d.ts +14 -0
  14. package/dist/components/core/Button.d.ts.map +1 -0
  15. package/dist/components/core/Link.d.ts +15 -0
  16. package/dist/components/core/Link.d.ts.map +1 -0
  17. package/dist/components/core/StarIcon.d.ts +15 -0
  18. package/dist/components/core/StarIcon.d.ts.map +1 -0
  19. package/dist/components/core/index.d.ts +4 -0
  20. package/dist/components/core/index.d.ts.map +1 -0
  21. package/dist/components/data-display/Card.d.ts +14 -0
  22. package/dist/components/data-display/Card.d.ts.map +1 -0
  23. package/dist/components/data-display/StatusBadge.d.ts +13 -0
  24. package/dist/components/data-display/StatusBadge.d.ts.map +1 -0
  25. package/dist/components/data-display/Tbody.d.ts +12 -0
  26. package/dist/components/data-display/Tbody.d.ts.map +1 -0
  27. package/dist/components/data-display/Td.d.ts +14 -0
  28. package/dist/components/data-display/Td.d.ts.map +1 -0
  29. package/dist/components/data-display/Th.d.ts +14 -0
  30. package/dist/components/data-display/Th.d.ts.map +1 -0
  31. package/dist/components/data-display/Thead.d.ts +12 -0
  32. package/dist/components/data-display/Thead.d.ts.map +1 -0
  33. package/dist/components/data-display/Tr.d.ts +16 -0
  34. package/dist/components/data-display/Tr.d.ts.map +1 -0
  35. package/dist/components/data-display/index.d.ts +8 -0
  36. package/dist/components/data-display/index.d.ts.map +1 -0
  37. package/dist/components/feedback/index.d.ts +2 -0
  38. package/dist/components/feedback/index.d.ts.map +1 -0
  39. package/dist/components/forms/Checkbox.d.ts +16 -0
  40. package/dist/components/forms/Checkbox.d.ts.map +1 -0
  41. package/dist/components/forms/Form.d.ts +12 -0
  42. package/dist/components/forms/Form.d.ts.map +1 -0
  43. package/dist/components/forms/Radio.d.ts +32 -0
  44. package/dist/components/forms/Radio.d.ts.map +1 -0
  45. package/dist/components/forms/Select.d.ts +33 -0
  46. package/dist/components/forms/Select.d.ts.map +1 -0
  47. package/dist/components/forms/Switch.d.ts +31 -0
  48. package/dist/components/forms/Switch.d.ts.map +1 -0
  49. package/dist/components/forms/TextArea.d.ts +29 -0
  50. package/dist/components/forms/TextArea.d.ts.map +1 -0
  51. package/dist/components/forms/TextInput.d.ts +29 -0
  52. package/dist/components/forms/TextInput.d.ts.map +1 -0
  53. package/dist/components/forms/index.d.ts +8 -0
  54. package/dist/components/forms/index.d.ts.map +1 -0
  55. package/dist/components/index.d.ts +9 -0
  56. package/dist/components/index.d.ts.map +1 -0
  57. package/dist/components/layout/Flex.d.ts +16 -0
  58. package/dist/components/layout/Flex.d.ts.map +1 -0
  59. package/dist/components/layout/FlexItem.d.ts +16 -0
  60. package/dist/components/layout/FlexItem.d.ts.map +1 -0
  61. package/dist/components/layout/index.d.ts +3 -0
  62. package/dist/components/layout/index.d.ts.map +1 -0
  63. package/dist/components/navigation/DropdownItem.d.ts +8 -0
  64. package/dist/components/navigation/DropdownItem.d.ts.map +1 -0
  65. package/dist/components/navigation/MenuToggle.d.ts +8 -0
  66. package/dist/components/navigation/MenuToggle.d.ts.map +1 -0
  67. package/dist/components/navigation/index.d.ts +3 -0
  68. package/dist/components/navigation/index.d.ts.map +1 -0
  69. package/dist/components/overlay/Drawer.d.ts +12 -0
  70. package/dist/components/overlay/Drawer.d.ts.map +1 -0
  71. package/dist/components/overlay/Modal.d.ts +16 -0
  72. package/dist/components/overlay/Modal.d.ts.map +1 -0
  73. package/dist/components/overlay/index.d.ts +3 -0
  74. package/dist/components/overlay/index.d.ts.map +1 -0
  75. package/dist/context/SemanticContext.d.ts +28 -0
  76. package/dist/context/SemanticContext.d.ts.map +1 -0
  77. package/dist/hooks/index.d.ts +3 -0
  78. package/dist/hooks/index.d.ts.map +1 -0
  79. package/dist/hooks/useAccessibility.d.ts +13 -0
  80. package/dist/hooks/useAccessibility.d.ts.map +1 -0
  81. package/dist/hooks/useSemanticMetadata.d.ts +9 -0
  82. package/dist/hooks/useSemanticMetadata.d.ts.map +1 -0
  83. package/dist/index.d.ts +574 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.esm.js +1362 -0
  86. package/dist/index.esm.js.map +1 -0
  87. package/dist/index.js +1426 -0
  88. package/dist/index.js.map +1 -0
  89. package/dist/types/index.d.ts +47 -0
  90. package/dist/types/index.d.ts.map +1 -0
  91. package/dist/utils/accessibility.d.ts +16 -0
  92. package/dist/utils/accessibility.d.ts.map +1 -0
  93. package/dist/utils/index.d.ts +4 -0
  94. package/dist/utils/index.d.ts.map +1 -0
  95. package/dist/utils/inference.d.ts +136 -0
  96. package/dist/utils/inference.d.ts.map +1 -0
  97. package/dist/utils/metadata.d.ts +17 -0
  98. package/dist/utils/metadata.d.ts.map +1 -0
  99. package/package.json +104 -0
@@ -0,0 +1,815 @@
1
+ # Complete Component Reference - All Data-* Attributes
2
+
3
+ This file documents all PatternFly components we've implemented and their possible data-* attribute values.
4
+
5
+ **Note:** This is a reference for testing. For implementation details, see `ATTRIBUTE_DECISION_LOGIC.md`.
6
+
7
+ ## Format
8
+
9
+ Each component lists all 7 attributes with their possible values as arrays:
10
+ - Empty array `[]` means the attribute is not applicable or always returns `null`
11
+ - Values can combine (e.g., variants like `"primary-danger"`)
12
+ - Some values are inferred from props or parent context (not listed exhaustively here)
13
+
14
+ ---
15
+
16
+ ## Core Components
17
+
18
+ ### Button
19
+ - **data-role**: `["button"]`
20
+ - **data-purpose**: `["action"]`
21
+ - **data-variant**: `["primary", "secondary", "tertiary", "danger", "warning", "link", "plain", "control"]`
22
+ - **data-context**: `["form", "modal", "toolbar", "table", "card", "page", "masthead", "wizard"]` (inherits from parent)
23
+ - **data-state**: `["disabled", "loading", "active"]`
24
+ - **data-action-type**: `["destructive"]` (if variant="danger"), otherwise `[]`
25
+ - **data-size**: `["sm", "lg"]` (if size prop provided), otherwise `[]`
26
+
27
+ ### Link
28
+ - **data-role**: `["link"]`
29
+ - **data-purpose**: `["action", "navigation"]` (navigation if href prop)
30
+ - **data-variant**: `["default"]`
31
+ - **data-context**: `["form", "modal", "page", "card", "table"]` (inherits from parent)
32
+ - **data-state**: `["disabled"]`
33
+ - **data-action-type**: `["navigation"]` (if href), otherwise `[]`
34
+ - **data-size**: `[]`
35
+
36
+ ### Card
37
+ - **data-role**: `["card", "card-body", "card-header", "card-title"]`
38
+ - **data-purpose**: `["display", "selectable", "clickable", "clickable and selectable"]`
39
+ - **data-variant**: `["selectable", "clickable", "selectable-raised", "flat", "rounded", "full-height", "plain"]`
40
+ - **data-context**: `["page", "table", "form", "modal"]` (inherits from parent)
41
+ - **data-state**: `["selected", "unselected", "disabled"]`
42
+ - **data-action-type**: `[]`
43
+ - **data-size**: `[]`
44
+
45
+ ---
46
+
47
+ ## Form Components
48
+
49
+ ### Form
50
+ - **data-role**: `["form"]`
51
+ - **data-purpose**: `["form-container", "create", "edit", "search", "filter"]` (from action prop or explicit purpose prop)
52
+ - **data-variant**: `["horizontal", "vertical"]`
53
+ - **data-context**: `["page", "modal", "drawer"]` (inherits from parent)
54
+ - **data-state**: `[]`
55
+ - **data-action-type**: `[]`
56
+ - **data-size**: `[]`
57
+
58
+ ### TextInput
59
+ - **data-role**: `["text-input"]`
60
+ - **data-purpose**: `["input"]`
61
+ - **data-variant**: `["default"]`
62
+ - **data-context**: `["form", "authentication"]` (inherits from parent, or "form" if parent is LoginForm)
63
+ - **data-state**: `["disabled", "read-only", "error", "warning", "active"]`
64
+ - **data-action-type**: `[]`
65
+ - **data-size**: `[]`
66
+
67
+ ### TextArea
68
+ - **data-role**: `["text-area"]`
69
+ - **data-purpose**: `["input"]`
70
+ - **data-variant**: `["default"]`
71
+ - **data-context**: `["form", "authentication"]` (inherits from parent)
72
+ - **data-state**: `["disabled", "read-only", "error", "warning", "active"]`
73
+ - **data-action-type**: `[]`
74
+ - **data-size**: `[]`
75
+
76
+ ### TextInputGroup
77
+ - **data-role**: `["text-input-group"]`
78
+ - **data-purpose**: `["input"]`
79
+ - **data-variant**: `["basic", "with-icon", "with-clear-button", "with-label-group"]` (can combine)
80
+ - **data-context**: `["form", "toolbar", "page"]` (inherits from parent or defaults to "form")
81
+ - **data-state**: `["active", "disabled", "error", "warning"]`
82
+ - **data-action-type**: `[]`
83
+ - **data-size**: `[]`
84
+
85
+ ### Select
86
+ - **data-role**: `["select", "select-option", "select-option-group", "select-toggle"]`
87
+ - **data-purpose**: `["option-selection", "toggle-trigger"]`
88
+ - **data-variant**: `["single", "checkbox", "typeahead", "plain"]`
89
+ - **data-context**: `["form", "toolbar", "table", "page"]` (inherits from parent)
90
+ - **data-state**: `["open", "closed", "selected", "disabled"]`
91
+ - **data-action-type**: `[]`
92
+ - **data-size**: `[]`
93
+
94
+ ### Checkbox
95
+ - **data-role**: `["checkbox"]`
96
+ - **data-purpose**: `["input"]`
97
+ - **data-variant**: `["default"]`
98
+ - **data-context**: `["form", "table", "toolbar"]` (inherits from parent)
99
+ - **data-state**: `["checked", "unchecked", "disabled", "indeterminate"]`
100
+ - **data-action-type**: `[]`
101
+ - **data-size**: `[]`
102
+
103
+ ### Radio
104
+ - **data-role**: `["radio"]`
105
+ - **data-purpose**: `["input"]`
106
+ - **data-variant**: `["default"]`
107
+ - **data-context**: `["form", "table"]` (inherits from parent)
108
+ - **data-state**: `["checked", "unchecked", "disabled"]`
109
+ - **data-action-type**: `[]`
110
+ - **data-size**: `[]`
111
+
112
+ ### Switch
113
+ - **data-role**: `["switch"]`
114
+ - **data-purpose**: `["input"]`
115
+ - **data-variant**: `["labeled", "unlabeled", "reversed", "with-checkmark"]`
116
+ - **data-context**: `["form", "table", "page"]` (inherits from parent or defaults to "form")
117
+ - **data-state**: `["checked", "unchecked", "disabled"]`
118
+ - **data-action-type**: `["toggle"]`
119
+ - **data-size**: `[]`
120
+
121
+ ### Slider
122
+ - **data-role**: `["slider"]`
123
+ - **data-purpose**: `["input"]`
124
+ - **data-variant**: `["continuous", "discrete", "with-input", "with-thumb-value", "with-buttons", "with-lock", "with-helper-text"]`
125
+ - **data-context**: `["form", "page"]` (inherits from parent or defaults to "form")
126
+ - **data-state**: `["locked", "disabled", "error", "warning", "active"]`
127
+ - **data-action-type**: `[]`
128
+ - **data-size**: `[]`
129
+
130
+ ### FileUpload / MultipleFileUpload / FileUploadField
131
+ - **data-role**: `["file-upload"]`
132
+ - **data-purpose**: `["file-input"]`
133
+ - **data-variant**: `["single", "multiple", "field"]`
134
+ - **data-context**: `["form", "page"]` (inherits from parent)
135
+ - **data-state**: `["loading", "error", "editable", "non-editable"]`
136
+ - **data-action-type**: `[]`
137
+ - **data-size**: `[]`
138
+
139
+ ### PasswordGenerator
140
+ - **data-role**: `["password-generator"]`
141
+ - **data-purpose**: `["password-generation"]`
142
+ - **data-variant**: `["basic", "with-options", "with-copy"]`
143
+ - **data-context**: `["form", "authentication"]` (inherits from parent)
144
+ - **data-state**: `["generating", "ready"]`
145
+ - **data-action-type**: `[]`
146
+ - **data-size**: `[]`
147
+
148
+ ### PasswordStrength
149
+ - **data-role**: `["password-strength"]`
150
+ - **data-purpose**: `["password-validation"]`
151
+ - **data-variant**: `["basic", "with-requirements", "with-toggle"]`
152
+ - **data-context**: `["form", "authentication"]` (inherits from parent)
153
+ - **data-state**: `["weak", "fair", "good", "strong"]`
154
+ - **data-action-type**: `[]`
155
+ - **data-size**: `[]`
156
+
157
+ ### InputGroup
158
+ - **data-role**: `["input-group"]`
159
+ - **data-purpose**: `["input"]`
160
+ - **data-variant**: `["with-button-left", "with-button-right", "with-buttons-both", "with-icon-before", "with-icon-after", "with-text-prefix", "with-text-suffix", "search"]` (from children analysis)
161
+ - **data-context**: `["form", "toolbar", "page"]` (inherits from parent)
162
+ - **data-state**: `["disabled", "error", "warning", "active"]`
163
+ - **data-action-type**: `[]`
164
+ - **data-size**: `[]`
165
+
166
+ ### LoginForm
167
+ - **data-role**: `["login-form"]`
168
+ - **data-purpose**: `["authentication"]`
169
+ - **data-variant**: `["basic", "show-hide-password", "customized-header-utilities"]` (from children analysis)
170
+ - **data-context**: `["page"]` (defaults to "page")
171
+ - **data-state**: `[]`
172
+ - **data-action-type**: `[]`
173
+ - **data-size**: `[]`
174
+
175
+ ---
176
+
177
+ ## Navigation Components
178
+
179
+ ### Nav / NavList / NavItem / NavGroup / NavExpandable / NavSection
180
+ - **data-role**: `["navigation", "navigation-list", "navigation-item", "navigation-group", "navigation-expandable", "navigation-section"]`
181
+ - **data-purpose**: `["navigation", "grouping"]`
182
+ - **data-variant**: `["vertical", "horizontal", "simple", "grouped", "expandable-2-level", "expandable-3-level", "flyout", "drilldown", "primary", "secondary", "with-icon", "with-title", "scrollable"]`
183
+ - **data-context**: `["masthead", "overlay", "page", "sidebar"]` (horizontal in masthead, vertical in drawer/overlay, vertical in page sidebar)
184
+ - **data-state**: `["active", "disabled", "expanded", "collapsed"]`
185
+ - **data-action-type**: `[]`
186
+ - **data-size**: `[]`
187
+
188
+ ### JumpLinks / JumpLinksItem
189
+ - **data-role**: `["jump-links", "jump-link-item"]`
190
+ - **data-purpose**: `["navigation"]`
191
+ - **data-variant**: `["vertical", "horizontal-links", "expandable"]`
192
+ - **data-context**: `["page"]` (rendered as "in-page" in HTML)
193
+ - **data-state**: `["expanded", "collapsed"]` (container), `["active"]` (item)
194
+ - **data-action-type**: `[]`
195
+ - **data-size**: `[]`
196
+
197
+ ### Tabs / Tab
198
+ - **data-role**: `["tabs", "tab"]`
199
+ - **data-purpose**: `["navigation"]`
200
+ - **data-variant**: `["horizontal", "vertical", "primary", "secondary", "filled", "with-overflow"]` (can combine)
201
+ - **data-context**: `["page", "modal", "component"]` (inherits from parent or defaults to "page")
202
+ - **data-state**: `["selected", "unselected", "disabled"]` (tab items only)
203
+ - **data-action-type**: `["navigation"]`
204
+ - **data-size**: `[]`
205
+
206
+ ### Pagination
207
+ - **data-role**: `["pagination"]`
208
+ - **data-purpose**: `["navigation"]`
209
+ - **data-variant**: `["full", "compact", "indeterminate"]`
210
+ - **data-context**: `["page", "table", "card"]` (inherits from parent or defaults to "page")
211
+ - **data-state**: `[]`
212
+ - **data-action-type**: `[]`
213
+ - **data-size**: `[]`
214
+
215
+ ### Breadcrumb / BreadcrumbItem / BreadcrumbHeading
216
+ - **data-role**: `["breadcrumb", "breadcrumb-item", "breadcrumb-heading"]`
217
+ - **data-purpose**: `["navigation"]`
218
+ - **data-variant**: `["default"]`
219
+ - **data-context**: `["page", "modal"]` (inherits from parent)
220
+ - **data-state**: `[]`
221
+ - **data-action-type**: `[]`
222
+ - **data-size**: `[]`
223
+
224
+ ### SkipToContent
225
+ - **data-role**: `["skip-link"]`
226
+ - **data-purpose**: `["navigation"]`
227
+ - **data-variant**: `["basic"]`
228
+ - **data-context**: `["page"]` (rendered as "in-page" in HTML)
229
+ - **data-state**: `[]`
230
+ - **data-action-type**: `["navigation"]`
231
+ - **data-size**: `[]`
232
+
233
+ ---
234
+
235
+ ## Menu Components
236
+
237
+ ### Menu / MenuList / MenuItem / MenuGroup / MenuSearch / MenuSearchInput
238
+ - **data-role**: `["menu", "menu-list", "menu-item", "menu-group", "menu-search", "menu-search-input"]`
239
+ - **data-purpose**: `["menu", "menu-action", "search", "grouping", "menu-container"]`
240
+ - **data-variant**: `["grid", "list", "with-favorites", "with-search", "plain", "with-kebab-toggle", "single", "checkbox", "typeahead", "split-button", "scrollable", "with-icon", "with-description", "action", "navigation"]` (from children analysis)
241
+ - **data-context**: `["masthead", "form", "page", "overlay"]` (inherits from parent)
242
+ - **data-state**: `["open", "closed", "selected", "checked", "disabled", "favorite"]`
243
+ - **data-action-type**: `[]`
244
+ - **data-size**: `[]`
245
+
246
+ ### Dropdown / DropdownItem
247
+ - **data-role**: `["dropdown", "dropdown-item"]`
248
+ - **data-purpose**: `["menu", "menu-action"]`
249
+ - **data-variant**: `["basic", "split-button", "action-menu", "kebab"]` (from children analysis)
250
+ - **data-context**: `["masthead", "form", "table", "page", "overlay"]` (inherits from parent)
251
+ - **data-state**: `["open", "closed", "disabled"]`
252
+ - **data-action-type**: `[]`
253
+ - **data-size**: `[]`
254
+
255
+ ### Select / SelectOption / SelectOptionGroup / SelectToggle
256
+ - **data-role**: `["select", "select-option", "select-option-group", "select-toggle"]`
257
+ - **data-purpose**: `["option-selection", "toggle-trigger"]`
258
+ - **data-variant**: `["single", "checkbox", "typeahead", "plain"]`
259
+ - **data-context**: `["form", "toolbar", "table", "page"]` (inherits from parent)
260
+ - **data-state**: `["open", "closed", "selected", "disabled"]`
261
+ - **data-action-type**: `[]`
262
+ - **data-size**: `[]`
263
+
264
+ ### OptionsMenu / OptionsMenuToggle
265
+ - **data-role**: `["options-menu", "options-menu-toggle"]`
266
+ - **data-purpose**: `["settings", "toggle-trigger"]`
267
+ - **data-variant**: `["plain", "with-kebab-toggle"]` (from children analysis)
268
+ - **data-context**: `["table", "card", "toolbar", "page"]` (inherits from parent)
269
+ - **data-state**: `["open", "closed"]`
270
+ - **data-action-type**: `[]`
271
+ - **data-size**: `[]`
272
+
273
+ ### ApplicationLauncher / ApplicationLauncherMenu / ApplicationLauncherItem
274
+ - **data-role**: `["application-launcher", "application-launcher-menu", "application-launcher-item"]`
275
+ - **data-purpose**: `["application-switching", "application-selection"]`
276
+ - **data-variant**: `["grid", "list", "with-favorites"]` (from children analysis)
277
+ - **data-context**: `["masthead"]` (typically in masthead)
278
+ - **data-state**: `["open", "closed", "favorite"]`
279
+ - **data-action-type**: `[]`
280
+ - **data-size**: `[]`
281
+
282
+ ### ContextSelector / ContextSelectorMenu / ContextSelectorItem
283
+ - **data-role**: `["context-selector", "context-selector-menu", "context-selector-item"]`
284
+ - **data-purpose**: `["context-selection"]`
285
+ - **data-variant**: `["basic"]` (from children analysis)
286
+ - **data-context**: `["masthead", "page"]` (inherits from parent)
287
+ - **data-state**: `["open", "closed"]`
288
+ - **data-action-type**: `[]`
289
+ - **data-size**: `[]`
290
+
291
+ ### MenuToggle
292
+ - **data-role**: `["menu-toggle"]`
293
+ - **data-purpose**: `["toggle-trigger"]`
294
+ - **data-variant**: `["default"]`
295
+ - **data-context**: `["masthead", "form", "page", "overlay"]` (inherits from parent)
296
+ - **data-state**: `["open", "closed"]`
297
+ - **data-action-type**: `[]`
298
+ - **data-size**: `[]`
299
+
300
+ ### OverflowMenu / OverflowMenuItem
301
+ - **data-role**: `["overflow-menu", "overflow-menu-item"]`
302
+ - **data-purpose**: `["action-group", "action"]`
303
+ - **data-variant**: `["with-kebab-toggle", "responsive"]` (container), `["basic", "with-icon", "with-description"]` (item)
304
+ - **data-context**: `["toolbar", "table", "card", "page"]` (inherits from parent or defaults to "page")
305
+ - **data-state**: `["open", "closed"]`
306
+ - **data-action-type**: `[]`
307
+ - **data-size**: `[]`
308
+
309
+ ---
310
+
311
+ ## Layout Components
312
+
313
+ ### Page / PageSection / PageHeader / PageBody / PageFooter
314
+ - **data-role**: `["page", "page-section", "page-header", "page-body", "page-footer"]`
315
+ - **data-purpose**: `["page-container", "header", "content", "footer"]`
316
+ - **data-variant**: `["basic", "with-vertical-nav", "with-horizontal-nav", "with-breadcrumb", "with-footer"]` (Page), `["basic", "sticky-top", "sticky-bottom", "no-padding"]` (PageSection)
317
+ - **data-context**: `[]` (Page is root), `["page"]` (children get "page" context)
318
+ - **data-state**: `[]`
319
+ - **data-action-type**: `[]`
320
+ - **data-size**: `[]`
321
+
322
+ ### Sidebar / SidebarContent / SidebarPanel
323
+ - **data-role**: `["sidebar", "sidebar-content", "sidebar-panel"]`
324
+ - **data-purpose**: `["layout", "content", "navigation"]`
325
+ - **data-variant**: `["stacked", "side-by-side", "sticky", "responsive"]`
326
+ - **data-context**: `["page"]` (Sidebar), `["sidebar"]` (children inherit "sidebar" context)
327
+ - **data-state**: `[]`
328
+ - **data-action-type**: `[]`
329
+ - **data-size**: `[]`
330
+
331
+ ### Flex / FlexItem
332
+ - **data-role**: `["flex", "flex-item"]`
333
+ - **data-purpose**: `["layout"]`
334
+ - **data-variant**: `["default"]`
335
+ - **data-context**: `["page", "card", "form", "modal"]` (inherits from parent)
336
+ - **data-state**: `[]`
337
+ - **data-action-type**: `[]`
338
+ - **data-size**: `[]`
339
+
340
+ ### Panel / PanelHeader / PanelBody / PanelFooter
341
+ - **data-role**: `["panel", "panel-header", "panel-body", "panel-footer"]`
342
+ - **data-purpose**: `["container", "header", "content", "footer"]`
343
+ - **data-variant**: `["basic", "with-header", "with-footer", "scrollable", "raised"]`
344
+ - **data-context**: `["dropdown", "search", "page"]` (inherits from parent or defaults to "page")
345
+ - **data-state**: `[]`
346
+ - **data-action-type**: `[]`
347
+ - **data-size**: `[]`
348
+
349
+ ---
350
+
351
+ ## Display Components
352
+
353
+ ### List / ListItem
354
+ - **data-role**: `["list", "list-item"]`
355
+ - **data-purpose**: `["display"]`
356
+ - **data-variant**: `["ordered", "unordered", "horizontal", "with-icons", "small-icons", "big-icons"]` (from children analysis)
357
+ - **data-context**: `["page", "card", "form", "modal"]` (inherits from parent)
358
+ - **data-state**: `[]`
359
+ - **data-action-type**: `[]`
360
+ - **data-size**: `[]`
361
+
362
+ ### SimpleList / SimpleListItem / SimpleListTitle
363
+ - **data-role**: `["list", "list-item", "section-title"]`
364
+ - **data-purpose**: `["display", "header"]`
365
+ - **data-variant**: `["basic", "grouped", "with-links"]`
366
+ - **data-context**: `["page", "sidebar", "panel", "form"]` (inherits from parent or defaults to "page")
367
+ - **data-state**: `["selected", "default"]` (SimpleListItem)
368
+ - **data-action-type**: `[]`
369
+ - **data-size**: `[]`
370
+
371
+ ### DataList / DataListItem / DataListCell / DataListCheck / DataListContent / DataListControl / DataListToggle
372
+ - **data-role**: `["data-list", "row", "cell", "checkbox", "content-panel", "control", "toggle"]`
373
+ - **data-purpose**: `["data-display", "selection", "display", "action"]`
374
+ - **data-variant**: `["basic", "compact", "with-actions", "with-icons"]` (from children analysis)
375
+ - **data-context**: `["page", "card", "form"]` (inherits from parent)
376
+ - **data-state**: `["selected", "expanded", "collapsed"]` (DataListItem)
377
+ - **data-action-type**: `[]`
378
+ - **data-size**: `[]`
379
+
380
+ ### DescriptionList / DescriptionListGroup / DescriptionListTerm / DescriptionListItem / DescriptionListDescription
381
+ - **data-role**: `["description-list", "description-group", "description-label", "description-pair", "description-value"]`
382
+ - **data-purpose**: `["data-display", "term-group", "term-label", "term-pair", "term-value"]`
383
+ - **data-variant**: `["vertical", "horizontal", "with-columns"]`
384
+ - **data-context**: `["page", "card", "form"]` (inherits from parent)
385
+ - **data-state**: `["editing"]` (DescriptionListDescription if editable)
386
+ - **data-action-type**: `[]`
387
+ - **data-size**: `[]`
388
+
389
+ ### TreeView / TreeViewItem
390
+ - **data-role**: `["tree-view", "tree-view-item"]`
391
+ - **data-purpose**: `["display", "selection"]`
392
+ - **data-variant**: `["basic", "with-search", "with-checkboxes", "with-badges", "with-icons", "with-actions", "compact"]` (can combine)
393
+ - **data-context**: `["wizard", "drawer", "modal", "page"]` (inherits from parent or defaults to "page")
394
+ - **data-state**: `["selected", "expanded", "collapsed", "disabled"]` (TreeViewItem)
395
+ - **data-action-type**: `["selection"]`
396
+ - **data-size**: `[]`
397
+
398
+ ### Timestamp
399
+ - **data-role**: `["timestamp"]`
400
+ - **data-purpose**: `["display"]`
401
+ - **data-variant**: `["24-hour", "12-hour", "abbreviated-date"]` (can combine)
402
+ - **data-context**: `["table", "card", "page"]` (inherits from parent or defaults to "page")
403
+ - **data-state**: `[]`
404
+ - **data-action-type**: `[]`
405
+ - **data-size**: `[]`
406
+
407
+ ### Title
408
+ - **data-role**: `["title"]`
409
+ - **data-purpose**: `["header"]`
410
+ - **data-variant**: `["h1", "h2", "h3", "h4", "h5", "h6"]` (default: "h1")
411
+ - **data-context**: `["page", "modal", "card", "form"]` (inherits from parent or defaults to "page")
412
+ - **data-state**: `[]`
413
+ - **data-action-type**: `[]`
414
+ - **data-size**: `[]`
415
+
416
+ ### Truncate
417
+ - **data-role**: `["truncate"]`
418
+ - **data-purpose**: `["display"]`
419
+ - **data-variant**: `["front-line", "mid-line", "end-line"]` (default: "end-line")
420
+ - **data-context**: `["table", "card", "page", "alert"]` (inherits from parent or defaults to "page")
421
+ - **data-state**: `[]`
422
+ - **data-action-type**: `[]`
423
+ - **data-size**: `[]`
424
+
425
+ ### CodeBlock
426
+ - **data-role**: `["code-block"]`
427
+ - **data-purpose**: `["display"]`
428
+ - **data-variant**: `["default"]`
429
+ - **data-context**: `["page", "card"]` (inherits from parent)
430
+ - **data-state**: `[]`
431
+ - **data-action-type**: `[]`
432
+ - **data-size**: `[]`
433
+
434
+ ### Content
435
+ - **data-role**: `["content"]`
436
+ - **data-purpose**: `["display"]`
437
+ - **data-variant**: `["default"]`
438
+ - **data-context**: `["page", "card", "form"]` (inherits from parent)
439
+ - **data-state**: `[]`
440
+ - **data-action-type**: `[]`
441
+ - **data-size**: `[]`
442
+
443
+ ---
444
+
445
+ ## Overlay Components
446
+
447
+ ### Modal / ModalHeader / ModalBody / ModalFooter / ModalCloseButton / ModalToggleButton
448
+ - **data-role**: `["modal", "modal-header", "modal-body", "modal-footer", "close-button", "modal-toggle"]`
449
+ - **data-purpose**: `["overlay", "header", "content", "footer", "close-action", "toggle-trigger"]`
450
+ - **data-variant**: `["small", "medium", "large", "full-width", "basic", "with-form", "with-wizard", "confirmation", "information"]`
451
+ - **data-context**: `["overlay"]` (Modal), `["overlay"]` (children inherit)
452
+ - **data-state**: `["open", "closed"]` (Modal)
453
+ - **data-action-type**: `[]`
454
+ - **data-size**: `[]`
455
+
456
+ ### Drawer
457
+ - **data-role**: `["drawer"]`
458
+ - **data-purpose**: `["overlay"]`
459
+ - **data-variant**: `["basic", "with-tooltips", "with-search", "with-actions", "with-tree", "draggable", "draggable-multiple-drop-zones"]` (from children analysis)
460
+ - **data-context**: `["overlay"]` (or inherits from parent if in card/form)
461
+ - **data-state**: `["open", "closed"]`
462
+ - **data-action-type**: `[]`
463
+ - **data-size**: `[]`
464
+
465
+ ### Popover
466
+ - **data-role**: `["popover"]`
467
+ - **data-purpose**: `["guidance"]`
468
+ - **data-variant**: `["default", "hoverable", "closeable", "dismissible", "actionable"]` (can combine)
469
+ - **data-context**: `["form", "table", "page"]` (inherits from parent or defaults to "page")
470
+ - **data-state**: `["open", "closed"]`
471
+ - **data-action-type**: `[]`
472
+ - **data-size**: `[]`
473
+
474
+ ### Tooltip
475
+ - **data-role**: `["tooltip"]`
476
+ - **data-purpose**: `["guidance"]`
477
+ - **data-variant**: `["default"]`
478
+ - **data-context**: `["form", "table", "page", "toolbar"]` (inherits from parent or defaults to "page")
479
+ - **data-state**: `["open", "closed"]`
480
+ - **data-action-type**: `[]`
481
+ - **data-size**: `[]`
482
+
483
+ ---
484
+
485
+ ## Feedback Components
486
+
487
+ ### Alert / AlertGroup / Hint
488
+ - **data-role**: `["alert", "alert-group"]` (Hint uses "alert" role)
489
+ - **data-purpose**: `["notification", "guidance"]` (Hint is "guidance")
490
+ - **data-variant**: `["success", "danger", "warning", "info", "default", "hint"]` (Hint variant)
491
+ - **data-context**: `["page", "form", "modal", "card"]` (inherits from parent)
492
+ - **data-state**: `["expanded", "collapsed"]` (AlertGroup)
493
+ - **data-action-type**: `["actionable"]` (if has action link)
494
+ - **data-size**: `[]`
495
+
496
+ ### Banner
497
+ - **data-role**: `["banner"]`
498
+ - **data-purpose**: `["notification"]`
499
+ - **data-variant**: `["default"]`
500
+ - **data-context**: `["page", "masthead"]` (inherits from parent)
501
+ - **data-state**: `[]`
502
+ - **data-action-type**: `[]`
503
+ - **data-size**: `[]`
504
+
505
+ ### NotificationBadge
506
+ - **data-role**: `["notification-badge"]`
507
+ - **data-purpose**: `["notification-trigger"]`
508
+ - **data-variant**: `["basic", "unread", "attention", "with-count"]`
509
+ - **data-context**: `["masthead"]` (typically in masthead)
510
+ - **data-state**: `["unread", "attention"]`
511
+ - **data-action-type**: `[]`
512
+ - **data-size**: `[]`
513
+
514
+ ### NotificationDrawer / NotificationDrawerHeader / NotificationDrawerBody / NotificationDrawerGroup / NotificationDrawerGroupToggle / NotificationDrawerList / NotificationDrawerListItem
515
+ - **data-role**: `["notification-drawer", "notification-drawer-header", "notification-drawer-body", "notification-group", "notification-group-toggle", "notification-list", "notification-item"]`
516
+ - **data-purpose**: `["notification-history", "header", "content", "grouping", "toggle-trigger", "notification-container", "notification"]`
517
+ - **data-variant**: `["basic", "grouped"]`
518
+ - **data-context**: `["overlay"]` (NotificationDrawer), `["overlay"]` (children inherit)
519
+ - **data-state**: `["open", "closed"]` (NotificationDrawer), `["expanded", "collapsed"]` (NotificationDrawerGroup), `["read", "unread"]` (NotificationDrawerListItem)
520
+ - **data-action-type**: `[]`
521
+ - **data-size**: `[]`
522
+
523
+ ---
524
+
525
+ ## Interactive Components
526
+
527
+ ### Accordion / AccordionItem / AccordionContent / AccordionToggle
528
+ - **data-role**: `["accordion", "accordion-section", "accordion-panel", "accordion-header"]`
529
+ - **data-purpose**: `["collapsible-content"]`
530
+ - **data-variant**: `["default", "bordered"]`
531
+ - **data-context**: `["page", "card", "form"]` (inherits from parent)
532
+ - **data-state**: `["expanded", "collapsed"]` (AccordionItem)
533
+ - **data-action-type**: `[]`
534
+ - **data-size**: `[]`
535
+
536
+ ### ExpandableSection
537
+ - **data-role**: `["expandable-section"]`
538
+ - **data-purpose**: `["collapsible-content"]`
539
+ - **data-variant**: `["disclosure", "truncate", "detached"]`
540
+ - **data-context**: `["page", "card", "form"]` (inherits from parent)
541
+ - **data-state**: `["expanded", "collapsed"]`
542
+ - **data-action-type**: `[]`
543
+ - **data-size**: `[]`
544
+
545
+ ### InlineEdit / InlineEditToggle / InlineEditActionGroup / InlineEditInput
546
+ - **data-role**: `["inline-edit", "edit-trigger", "button-group", "editable-input"]`
547
+ - **data-purpose**: `["editing", "toggle-trigger", "action", "input"]`
548
+ - **data-variant**: `["field-specific", "full-page", "row-editing"]` (InlineEdit - detects if in table row)
549
+ - **data-context**: `["table", "page"]` (InlineEdit - "table" if in table row, otherwise "page")
550
+ - **data-state**: `["read-only", "edit"]` (InlineEdit)
551
+ - **data-action-type**: `[]`
552
+ - **data-size**: `[]`
553
+
554
+ ### ToggleGroup / ToggleItem
555
+ - **data-role**: `["toggle-group", "toggle-item"]`
556
+ - **data-purpose**: `["selection", "filtering"]` (filtering if in toolbar context or has filter props, otherwise selection)
557
+ - **data-variant**: `["single-select", "multi-select"]` (ToggleGroup)
558
+ - **data-context**: `["toolbar", "page", "form"]` (inherits from parent or defaults to "page")
559
+ - **data-state**: `["selected", "unselected", "disabled"]` (ToggleItem)
560
+ - **data-action-type**: `["selection"]` (ToggleGroup)
561
+ - **data-size**: `[]`
562
+
563
+ ---
564
+
565
+ ## Table Components
566
+
567
+ ### Table (Tr / Td / Th / Thead / Tbody)
568
+ - **data-role**: `["table-row", "table-cell", "table-header", "table-head", "table-body"]`
569
+ - **data-purpose**: `["data-display"]`
570
+ - **data-variant**: `["default"]`
571
+ - **data-context**: `["page", "card", "modal"]` (inherits from parent)
572
+ - **data-state**: `["selected"]` (Tr if selectable)
573
+ - **data-action-type**: `[]`
574
+ - **data-size**: `[]`
575
+
576
+ ---
577
+
578
+ ## Action Components
579
+
580
+ ### ActionList / ActionListItem
581
+ - **data-role**: `["action-group", "action-item"]`
582
+ - **data-purpose**: `["action"]`
583
+ - **data-variant**: `["basic", "icons", "links"]` (from children analysis)
584
+ - **data-context**: `["modal", "wizard", "toolbar", "form", "page"]` (inherits from parent)
585
+ - **data-state**: `[]`
586
+ - **data-action-type**: `[]`
587
+ - **data-size**: `[]`
588
+
589
+ ### Toolbar / ToolbarItem / ToolbarItemGroup
590
+ - **data-role**: `["toolbar", "toolbar-item", "toolbar-item-group"]`
591
+ - **data-purpose**: `["action-group", "action", "grouping"]`
592
+ - **data-variant**: `["basic", "custom", "with-toggle-group", "sticky"]` (Toolbar)
593
+ - **data-context**: `["page", "table", "card"]` (Toolbar), `["toolbar"]` (children inherit "toolbar" context)
594
+ - **data-state**: `[]`
595
+ - **data-action-type**: `[]`
596
+ - **data-size**: `[]`
597
+
598
+ ---
599
+
600
+ ## Status Components
601
+
602
+ ### Progress
603
+ - **data-role**: `["progress"]`
604
+ - **data-purpose**: `["status-tracking"]`
605
+ - **data-variant**: `["default", "small", "large"]`
606
+ - **data-context**: `["table", "card", "wizard", "popover", "page"]` (inherits from parent or defaults to "page")
607
+ - **data-state**: `["in-progress", "error", "success"]`
608
+ - **data-action-type**: `["determinate"]`
609
+ - **data-size**: `["small", "large"]`
610
+
611
+ ### ProgressStepper
612
+ - **data-role**: `["progress-stepper"]`
613
+ - **data-purpose**: `["status-tracking"]`
614
+ - **data-variant**: `["basic", "with-descriptions", "vertical", "compact", "with-icons", "with-help-popover"]`
615
+ - **data-context**: `["wizard", "page", "card"]` (inherits from parent or defaults to "page")
616
+ - **data-state**: `["in-progress", "error", "success"]`
617
+ - **data-action-type**: `["determinate"]`
618
+ - **data-size**: `[]`
619
+
620
+ ### Spinner
621
+ - **data-role**: `["spinner"]`
622
+ - **data-purpose**: `["status-tracking"]`
623
+ - **data-variant**: `["medium", "extra-small", "small", "large"]` (default: "medium")
624
+ - **data-context**: `["wizard", "modal", "page", "table"]` (inherits from parent or defaults to "page")
625
+ - **data-state**: `["loading"]`
626
+ - **data-action-type**: `["indeterminate"]`
627
+ - **data-size**: `["extra-small", "small", "medium", "large"]`
628
+
629
+ ---
630
+
631
+ ## Search Components
632
+
633
+ ### SearchInput
634
+ - **data-role**: `["search-input"]`
635
+ - **data-purpose**: `["search"]`
636
+ - **data-variant**: `["basic", "advanced", "with-results", "with-count", "with-navigation"]`
637
+ - **data-context**: `["table", "toolbar", "page"]` (inherits from parent or defaults to "page")
638
+ - **data-state**: `["active", "disabled"]`
639
+ - **data-action-type**: `[]`
640
+ - **data-size**: `[]`
641
+
642
+ ---
643
+
644
+ ## Date/Time Components
645
+
646
+ ### CalendarMonth
647
+ - **data-role**: `["calendar"]`
648
+ - **data-purpose**: `["date-input"]`
649
+ - **data-variant**: `["inline", "popover"]`
650
+ - **data-context**: `["form", "modal", "page"]` (inherits from parent)
651
+ - **data-state**: `["has-selection"]`
652
+ - **data-action-type**: `[]`
653
+ - **data-size**: `[]`
654
+
655
+ ### DatePicker
656
+ - **data-role**: `["date-picker"]`
657
+ - **data-purpose**: `["date-input"]`
658
+ - **data-variant**: `["single", "range", "with-time", "range-with-time"]`
659
+ - **data-context**: `["form", "toolbar", "modal"]` (inherits from parent)
660
+ - **data-state**: `["open", "closed", "invalid"]`
661
+ - **data-action-type**: `[]`
662
+ - **data-size**: `[]`
663
+
664
+ ### TimePicker
665
+ - **data-role**: `["time-picker"]`
666
+ - **data-purpose**: `["time-input"]`
667
+ - **data-variant**: `["12-hour", "24-hour"]`
668
+ - **data-context**: `["form", "toolbar", "modal"]` (inherits from parent)
669
+ - **data-state**: `["open", "closed", "invalid"]`
670
+ - **data-action-type**: `[]`
671
+ - **data-size**: `[]`
672
+
673
+ ---
674
+
675
+ ## Selection Components
676
+
677
+ ### DualListSelector / DualListSelectorPane / DualListSelectorListItem
678
+ - **data-role**: `["dual-list-selector"]` (Pane and ListItem don't get roles - structural)
679
+ - **data-purpose**: `["select-from-options", "selection-pane", "selectable-item"]`
680
+ - **data-variant**: `["basic", "with-tree", "draggable"]` (container), `["available", "chosen", "with-search", "with-actions", "with-sort"]` (Pane), `["folder"]` (ListItem)
681
+ - **data-context**: `["page", "modal", "form"]` (inherits from parent)
682
+ - **data-state**: `["selected", "expanded", "collapsed"]` (ListItem), `["disabled"]` (Pane)
683
+ - **data-action-type**: `[]`
684
+ - **data-size**: `[]`
685
+
686
+ ### DragDropContainer / DragDropSort / Droppable / Draggable
687
+ - **data-role**: `["drag-drop-container", "drag-drop-sort"]` (Droppable and Draggable don't get roles - structural)
688
+ - **data-purpose**: `["drag-drop-management", "sort-management", "drop-target", "drag-source"]`
689
+ - **data-variant**: `[]` (from variant prop if provided, lowercased)
690
+ - **data-context**: `["page", "card", "form"]` (inherits from parent)
691
+ - **data-state**: `["dragging"]` (Draggable), `["disabled"]` (Droppable)
692
+ - **data-action-type**: `[]`
693
+ - **data-size**: `[]`
694
+
695
+ ---
696
+
697
+ ## Label Components
698
+
699
+ ### Label / LabelGroup
700
+ - **data-role**: `["label", "label-group"]`
701
+ - **data-purpose**: `["tag", "filter", "status-indicator", "tag-group"]` (Label: filter if dismissible, status-indicator if has status color, otherwise tag)
702
+ - **data-variant**: `["danger", "warning", "success", "info", "blue", "green", "orange", "red", "purple", "cyan", "gold", "filled", "outline", "with-icon"]` (can combine, e.g., "danger-filled-with-icon")
703
+ - **data-context**: `["filter", "page"]` (Label: "filter" if dismissible/editable, otherwise "page")
704
+ - **data-state**: `["overflow", "editable", "dismissible", "clickable"]`
705
+ - **data-action-type**: `[]`
706
+ - **data-size**: `["compact", "default"]`
707
+
708
+ ---
709
+
710
+ ## Empty State Components
711
+
712
+ ### EmptyState
713
+ - **data-role**: `["empty-state"]`
714
+ - **data-purpose**: `["no-content"]`
715
+ - **data-variant**: `["extra-small", "small", "large", "extra-large", "full", "getting-started", "no-results", "required-configuration", "no-access", "back-end-failure", "success", "creation", "card"]` (size + use case, can combine)
716
+ - **data-context**: `["page", "card", "table", "form"]` (inherits from parent)
717
+ - **data-state**: `[]`
718
+ - **data-action-type**: `[]`
719
+ - **data-size**: `["extra-small", "small", "large", "extra-large", "full"]`
720
+
721
+ ---
722
+
723
+ ## Wizard Components
724
+
725
+ ### Wizard / WizardNav / WizardNavItem / WizardBody / WizardFooter
726
+ - **data-role**: `["wizard", "wizard-nav-item"]` (WizardNav, WizardBody, WizardFooter are structural - skipped)
727
+ - **data-purpose**: `["form-container", "navigation", "content", "action"]`
728
+ - **data-variant**: `["modal", "in-page", "progressive", "with-sub-steps", "with-optional-steps", "with-drawer"]` (can combine, default: "modal")
729
+ - **data-context**: `["overlay", "page"]` (Wizard: "overlay" if modal, "page" if in-page), `["wizard"]` (children inherit "wizard" context)
730
+ - **data-state**: `["visited", "current", "disabled"]` (WizardNavItem)
731
+ - **data-action-type**: `["form"]` (Wizard)
732
+ - **data-size**: `[]`
733
+
734
+ ---
735
+
736
+ ## Masthead Components
737
+
738
+ ### Masthead
739
+ - **data-role**: `["masthead"]`
740
+ - **data-purpose**: `["navigation"]`
741
+ - **data-variant**: `["basic", "with-vertical-nav"]` (from children analysis)
742
+ - **data-context**: `["page"]` (rendered as "in-page" in HTML)
743
+ - **data-state**: `[]`
744
+ - **data-action-type**: `[]`
745
+ - **data-size**: `[]`
746
+
747
+ ### Brand
748
+ - **data-role**: `["logo"]`
749
+ - **data-purpose**: `["navigation", "display"]` (navigation if interactive, display if decorative)
750
+ - **data-variant**: `["default"]`
751
+ - **data-context**: `["masthead", "page"]` (inherits from parent)
752
+ - **data-state**: `[]`
753
+ - **data-action-type**: `[]`
754
+ - **data-size**: `[]`
755
+
756
+ ---
757
+
758
+ ## Icon Components
759
+
760
+ ### Icons (any component ending with "Icon")
761
+ - **data-role**: `["icon"]`
762
+ - **data-purpose**: `["action", "display"]` (action if onClick, display if decorative)
763
+ - **data-variant**: `[icon name extracted from component name]` (e.g., "StarIcon" → "star")
764
+ - **data-context**: `["form", "table", "page", "toolbar", "card"]` (inherits from parent)
765
+ - **data-state**: `["danger", "warning", "success", "info"]` (from color prop)
766
+ - **data-action-type**: `[]`
767
+ - **data-size**: `["sm", "md", "lg", "xl", "2xl", "3xl"]`
768
+
769
+ ---
770
+
771
+ ## Utility Components
772
+
773
+ ### Divider
774
+ - **data-role**: `["divider"]`
775
+ - **data-purpose**: `["separator"]`
776
+ - **data-variant**: `["horizontal", "vertical"]`
777
+ - **data-context**: `["page", "card", "form"]` (inherits from parent)
778
+ - **data-state**: `[]`
779
+ - **data-action-type**: `[]`
780
+ - **data-size**: `[]`
781
+
782
+ ### ClipboardCopy
783
+ - **data-role**: `["clipboard-copy"]`
784
+ - **data-purpose**: `["action"]`
785
+ - **data-variant**: `["default"]`
786
+ - **data-context**: `["page", "card", "form"]` (inherits from parent)
787
+ - **data-state**: `[]`
788
+ - **data-action-type**: `[]`
789
+ - **data-size**: `[]`
790
+
791
+ ### Avatar
792
+ - **data-role**: `["avatar"]`
793
+ - **data-purpose**: `["display"]`
794
+ - **data-variant**: `["default"]`
795
+ - **data-context**: `["page", "card", "masthead"]` (inherits from parent)
796
+ - **data-state**: `[]`
797
+ - **data-action-type**: `[]`
798
+ - **data-size**: `[]`
799
+
800
+ ---
801
+
802
+ ## Notes
803
+
804
+ 1. **Structural Children**: Some components have structural children that are skipped (don't get attributes). These are listed in `transform.js` in the `structuralChildren` array.
805
+
806
+ 2. **Context Inheritance**: Many components inherit context from their parent. See `ATTRIBUTE_DECISION_LOGIC.md` for details.
807
+
808
+ 3. **Children Analysis**: Some components analyze their children to infer variants (InputGroup, List, LoginForm, DualListSelector, Masthead, Menu/Dropdown/Select).
809
+
810
+ 4. **Variant Combinations**: Variants can combine (e.g., `"primary-danger"` for a primary button that's also danger). The codemod joins them with hyphens.
811
+
812
+ 5. **Empty Arrays**: Empty arrays `[]` mean the attribute is not applicable or always returns `null` for that component.
813
+
814
+ 6. **Dynamic Values**: Some values are inferred from props or parent context and aren't listed exhaustively here. See `ATTRIBUTE_DECISION_LOGIC.md` for how these are determined.
815
+