primer_view_components 0.5.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (169) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +90 -0
  3. data/app/assets/javascripts/app/components/primer/alpha/action_menu/action_menu_element.d.ts +3 -2
  4. data/app/assets/javascripts/app/components/primer/alpha/x_banner.d.ts +3 -1
  5. data/app/assets/javascripts/primer_view_components.js +1 -1
  6. data/app/assets/javascripts/primer_view_components.js.map +1 -1
  7. data/app/assets/styles/primer_view_components.css +1 -1
  8. data/app/assets/styles/primer_view_components.css.map +1 -1
  9. data/app/components/primer/alpha/action_bar.rb +0 -8
  10. data/app/components/primer/alpha/action_list/item.rb +17 -6
  11. data/app/components/primer/alpha/action_list.css +1 -1
  12. data/app/components/primer/alpha/action_list.css.json +2 -0
  13. data/app/components/primer/alpha/action_list.css.map +1 -1
  14. data/app/components/primer/alpha/action_list.pcss +4 -2
  15. data/app/components/primer/alpha/action_list.rb +61 -6
  16. data/app/components/primer/alpha/action_menu/action_menu_element.d.ts +3 -2
  17. data/app/components/primer/alpha/action_menu/action_menu_element.js +17 -3
  18. data/app/components/primer/alpha/action_menu/action_menu_element.ts +20 -6
  19. data/app/components/primer/alpha/action_menu/list.rb +63 -34
  20. data/app/components/primer/alpha/action_menu.rb +12 -269
  21. data/app/components/primer/alpha/auto_complete/item.rb +0 -12
  22. data/app/components/primer/alpha/auto_complete.css +1 -1
  23. data/app/components/primer/alpha/auto_complete.css.map +1 -1
  24. data/app/components/primer/alpha/auto_complete.rb +0 -47
  25. data/app/components/primer/alpha/banner.css +1 -1
  26. data/app/components/primer/alpha/banner.css.map +1 -1
  27. data/app/components/primer/alpha/banner.html.erb +1 -1
  28. data/app/components/primer/alpha/banner.rb +12 -39
  29. data/app/components/primer/alpha/button_marketing.rb +0 -12
  30. data/app/components/primer/alpha/dialog.css +1 -1
  31. data/app/components/primer/alpha/dialog.css.map +1 -1
  32. data/app/components/primer/alpha/dialog.pcss +1 -1
  33. data/app/components/primer/alpha/dialog.rb +2 -18
  34. data/app/components/primer/alpha/dropdown.css +1 -1
  35. data/app/components/primer/alpha/dropdown.css.map +1 -1
  36. data/app/components/primer/alpha/dropdown.rb +0 -105
  37. data/app/components/primer/alpha/form_control.rb +0 -11
  38. data/app/components/primer/alpha/hellip_button.rb +0 -9
  39. data/app/components/primer/alpha/hidden_text_expander.rb +0 -9
  40. data/app/components/primer/alpha/image.rb +0 -16
  41. data/app/components/primer/alpha/image_crop.rb +0 -11
  42. data/app/components/primer/alpha/layout.css +1 -1
  43. data/app/components/primer/alpha/layout.css.map +1 -1
  44. data/app/components/primer/alpha/layout.pcss +1 -1
  45. data/app/components/primer/alpha/layout.rb +0 -118
  46. data/app/components/primer/alpha/menu.css +1 -1
  47. data/app/components/primer/alpha/menu.css.map +1 -1
  48. data/app/components/primer/alpha/menu.rb +0 -19
  49. data/app/components/primer/alpha/multi_input.rb +0 -33
  50. data/app/components/primer/alpha/nav_list/group.rb +12 -3
  51. data/app/components/primer/alpha/nav_list.rb +79 -84
  52. data/app/components/primer/alpha/navigation/tab.rb +0 -35
  53. data/app/components/primer/alpha/octicon_symbols.rb +0 -6
  54. data/app/components/primer/alpha/overlay.rb +0 -14
  55. data/app/components/primer/alpha/segmented_control.css +1 -1
  56. data/app/components/primer/alpha/segmented_control.css.map +1 -1
  57. data/app/components/primer/alpha/segmented_control.rb +0 -61
  58. data/app/components/primer/alpha/tab_container.rb +0 -18
  59. data/app/components/primer/alpha/tab_nav.css +1 -1
  60. data/app/components/primer/alpha/tab_nav.css.map +1 -1
  61. data/app/components/primer/alpha/tab_nav.rb +0 -63
  62. data/app/components/primer/alpha/tab_panels.rb +0 -16
  63. data/app/components/primer/alpha/text_field.css +1 -1
  64. data/app/components/primer/alpha/text_field.css.map +1 -1
  65. data/app/components/primer/alpha/text_field.rb +0 -68
  66. data/app/components/primer/alpha/toggle_switch.css +1 -1
  67. data/app/components/primer/alpha/toggle_switch.css.map +1 -1
  68. data/app/components/primer/alpha/toggle_switch.rb +0 -18
  69. data/app/components/primer/alpha/tool_tip.js +3 -3
  70. data/app/components/primer/alpha/tool_tip.ts +3 -3
  71. data/app/components/primer/alpha/tooltip.rb +1 -69
  72. data/app/components/primer/alpha/underline_nav.css +1 -1
  73. data/app/components/primer/alpha/underline_nav.css.map +1 -1
  74. data/app/components/primer/alpha/underline_nav.rb +0 -61
  75. data/app/components/primer/alpha/underline_panels.rb +0 -19
  76. data/app/components/primer/alpha/x_banner.d.ts +3 -1
  77. data/app/components/primer/alpha/x_banner.js +24 -10
  78. data/app/components/primer/alpha/x_banner.ts +14 -12
  79. data/app/components/primer/base_component.rb +1 -1
  80. data/app/components/primer/beta/auto_complete/item.rb +0 -8
  81. data/app/components/primer/beta/auto_complete.rb +0 -56
  82. data/app/components/primer/beta/avatar.css +1 -1
  83. data/app/components/primer/beta/avatar.css.map +1 -1
  84. data/app/components/primer/beta/avatar.rb +1 -19
  85. data/app/components/primer/beta/avatar_stack.css +1 -1
  86. data/app/components/primer/beta/avatar_stack.css.map +1 -1
  87. data/app/components/primer/beta/avatar_stack.rb +0 -21
  88. data/app/components/primer/beta/base_button.rb +0 -4
  89. data/app/components/primer/beta/blankslate.css +1 -1
  90. data/app/components/primer/beta/blankslate.css.map +1 -1
  91. data/app/components/primer/beta/blankslate.rb +0 -104
  92. data/app/components/primer/beta/border_box/header.rb +4 -11
  93. data/app/components/primer/beta/border_box.css +1 -1
  94. data/app/components/primer/beta/border_box.css.map +1 -1
  95. data/app/components/primer/beta/border_box.html.erb +2 -2
  96. data/app/components/primer/beta/border_box.rb +11 -55
  97. data/app/components/primer/beta/breadcrumbs.rb +0 -7
  98. data/app/components/primer/beta/button.css +1 -1
  99. data/app/components/primer/beta/button.css.map +1 -1
  100. data/app/components/primer/beta/button.pcss +3 -3
  101. data/app/components/primer/beta/button.rb +2 -43
  102. data/app/components/primer/beta/button_group.css +1 -1
  103. data/app/components/primer/beta/button_group.css.map +1 -1
  104. data/app/components/primer/beta/button_group.rb +0 -16
  105. data/app/components/primer/beta/clipboard_copy.rb +0 -12
  106. data/app/components/primer/beta/close_button.rb +0 -3
  107. data/app/components/primer/beta/counter.rb +0 -8
  108. data/app/components/primer/beta/details.rb +0 -11
  109. data/app/components/primer/beta/flash.css +1 -1
  110. data/app/components/primer/beta/flash.css.map +1 -1
  111. data/app/components/primer/beta/flash.rb +1 -23
  112. data/app/components/primer/beta/heading.rb +0 -8
  113. data/app/components/primer/beta/icon_button.rb +0 -21
  114. data/app/components/primer/beta/label.css +1 -1
  115. data/app/components/primer/beta/label.css.map +1 -1
  116. data/app/components/primer/beta/label.rb +0 -20
  117. data/app/components/primer/beta/link.rb +0 -22
  118. data/app/components/primer/beta/markdown.rb +1 -262
  119. data/app/components/primer/beta/octicon.rb +0 -10
  120. data/app/components/primer/beta/popover.css +1 -1
  121. data/app/components/primer/beta/popover.css.map +1 -1
  122. data/app/components/primer/beta/popover.rb +0 -43
  123. data/app/components/primer/beta/progress_bar.rb +1 -22
  124. data/app/components/primer/beta/relative_time.rb +0 -9
  125. data/app/components/primer/beta/spinner.rb +2 -10
  126. data/app/components/primer/beta/state.rb +0 -13
  127. data/app/components/primer/beta/subhead.rb +0 -55
  128. data/app/components/primer/beta/text.rb +0 -4
  129. data/app/components/primer/beta/timeline_item.css +1 -1
  130. data/app/components/primer/beta/timeline_item.css.map +1 -1
  131. data/app/components/primer/beta/timeline_item.rb +0 -9
  132. data/app/components/primer/beta/truncate.rb +0 -50
  133. data/app/components/primer/blankslate_component.rb +0 -76
  134. data/app/components/primer/box.rb +0 -6
  135. data/app/components/primer/button_component.rb +0 -49
  136. data/app/components/primer/conditional_wrapper.rb +2 -17
  137. data/app/components/primer/icon_button.rb +0 -30
  138. data/app/components/primer/layout_component.rb +0 -12
  139. data/app/components/primer/tooltip.rb +0 -27
  140. data/app/components/primer/truncate.rb +0 -19
  141. data/app/forms/submit_button_form.rb +1 -1
  142. data/lib/primer/accessibility.rb +1 -1
  143. data/lib/primer/classify/utilities.yml +2 -0
  144. data/lib/primer/deprecations.yml +3 -3
  145. data/lib/primer/forms/button.rb +0 -5
  146. data/lib/primer/forms/dsl/input.rb +3 -0
  147. data/lib/primer/static/generate_info_arch.rb +1 -0
  148. data/lib/primer/view_components/linters/details_menu_migration.rb +1 -1
  149. data/lib/primer/view_components/linters/migrations/truncate_component.rb +45 -0
  150. data/lib/primer/view_components/linters/tooltipped_migration.rb +1 -1
  151. data/lib/primer/view_components/linters.rb +1 -0
  152. data/lib/primer/view_components/version.rb +2 -2
  153. data/lib/primer/yard/lookbook_pages_backend.rb +31 -0
  154. data/lib/primer/yard.rb +8 -9
  155. data/lib/tasks/custom_utilities.yml +2 -0
  156. data/previews/primer/alpha/action_list_preview.rb +89 -17
  157. data/previews/primer/alpha/action_menu_preview.rb +79 -37
  158. data/previews/primer/alpha/banner_preview/with_action_button.html.erb +1 -1
  159. data/previews/primer/alpha/banner_preview/with_action_content.html.erb +1 -1
  160. data/previews/primer/alpha/banner_preview.rb +11 -14
  161. data/previews/primer/alpha/nav_list_preview.rb +17 -0
  162. data/previews/primer/alpha/tooltip_preview/with_multiple_on_a_page.html.erb +3 -3
  163. data/previews/primer/alpha/tooltip_preview.rb +11 -23
  164. data/static/arguments.json +18 -13
  165. data/static/constants.json +6 -0
  166. data/static/info_arch.json +493 -36
  167. data/static/previews.json +15 -15
  168. metadata +3 -3
  169. data/lib/primer/yard/legacy_gatsby_backend.rb +0 -233
@@ -2,6 +2,7 @@
2
2
  {
3
3
  "fully_qualified_name": "Primer::Alpha::ActionBar",
4
4
  "description": "Add a general description of component here\nAdd additional usage considerations or best practices that may aid the user to use the component correctly.",
5
+ "accessibility_docs": null,
5
6
  "is_form_component": false,
6
7
  "is_published": true,
7
8
  "requires_js": false,
@@ -127,6 +128,7 @@
127
128
  {
128
129
  "fully_qualified_name": "Primer::Alpha::ActionBar::Item",
129
130
  "description": "ActionBar::Item is an internal component that wraps the items in a div with the `ActionBar-item` class.",
131
+ "accessibility_docs": null,
130
132
  "is_form_component": false,
131
133
  "is_published": true,
132
134
  "requires_js": false,
@@ -155,6 +157,7 @@
155
157
  {
156
158
  "fully_qualified_name": "Primer::Alpha::ActionBar::Divider",
157
159
  "description": "ActionBar::Item is an internal component that wraps the items in a div with the `ActionBar-item` class.",
160
+ "accessibility_docs": null,
158
161
  "is_form_component": false,
159
162
  "is_published": true,
160
163
  "requires_js": false,
@@ -185,6 +188,7 @@
185
188
  {
186
189
  "fully_qualified_name": "Primer::Alpha::ActionList",
187
190
  "description": "An ActionList is a styled list of links. It acts as the base component for many\nother menu-type components, including `ActionMenu` and `SelectPanel`, as well as\nthe navigational component `NavList`.\n\nEach item in an action list can be augmented by specifying corresponding leading\nand/or trailing visuals.",
191
+ "accessibility_docs": null,
188
192
  "is_form_component": false,
189
193
  "is_published": true,
190
194
  "requires_js": true,
@@ -259,7 +263,7 @@
259
263
  },
260
264
  {
261
265
  "name": "items",
262
- "description": "Items. Items can be individual items or dividers. See the documentation for `#with_item` and `#with_divider` respectively for more information.",
266
+ "description": "Items. Items can be individual items, avatar items, or dividers. See the documentation for `#with_item`, `#with_divider`, and `#with_avatar_item` respectively for more information.",
263
267
  "parameters": [
264
268
 
265
269
  ]
@@ -270,11 +274,17 @@
270
274
  "name": "with_item",
271
275
  "description": "Adds an item to the list.",
272
276
  "parameters": [
277
+ {
278
+ "name": "component_klass",
279
+ "type": "Class",
280
+ "default": "N/A",
281
+ "description": "The class to use instead of the default {{#link_to_component}}Primer::Alpha::ActionList::Item{{/link_to_component}}"
282
+ },
273
283
  {
274
284
  "name": "system_arguments",
275
285
  "type": "Hash",
276
286
  "default": "N/A",
277
- "description": "The arguments accepted by {{#link_to_component}}Primer::Alpha::ActionList::Item{{/link_to_component}}."
287
+ "description": "These arguments are forwarded to {{#link_to_component}}Primer::Alpha::ActionList::Item{{/link_to_component}}, or whatever class is passed as the `component_klass` argument."
278
288
  }
279
289
  ]
280
290
  },
@@ -290,6 +300,54 @@
290
300
  }
291
301
  ]
292
302
  },
303
+ {
304
+ "name": "with_avatar_item",
305
+ "description": "Adds an avatar item to the list. Avatar items are a convenient way to accessibly add an item with a leading avatar image.",
306
+ "parameters": [
307
+ {
308
+ "name": "src",
309
+ "type": "String",
310
+ "default": "N/A",
311
+ "description": "The source url of the avatar image."
312
+ },
313
+ {
314
+ "name": "username",
315
+ "type": "String",
316
+ "default": "N/A",
317
+ "description": "The username associated with the avatar."
318
+ },
319
+ {
320
+ "name": "full_name",
321
+ "type": "String",
322
+ "default": "`nil`",
323
+ "description": "Optional. The user's full name."
324
+ },
325
+ {
326
+ "name": "full_name_scheme",
327
+ "type": "Symbol",
328
+ "default": "`:block`",
329
+ "description": "Optional. How to display the user's full name. One of `:block` or `:inline`."
330
+ },
331
+ {
332
+ "name": "component_klass",
333
+ "type": "Class",
334
+ "default": "`ActionList::Item`",
335
+ "description": "The class to use instead of the default {{#link_to_component}}Primer::Alpha::ActionList::Item{{/link_to_component}}"
336
+ },
337
+ {
338
+ "name": "avatar_arguments",
339
+ "type": "Hash",
340
+ "default": "`{}`",
341
+ "description": "Optional. The arguments accepted by {{#link_to_component}}Primer::Beta::Avatar{{/link_to_component}}"
342
+ },
343
+ {
344
+ "name": "system_arguments",
345
+ "type": "Hash",
346
+ "default": "N/A",
347
+ "description": "These arguments are forwarded to {{#link_to_component}}Primer::Alpha::ActionList::Item{{/link_to_component}}, or whatever class is passed as the `component_klass` argument."
348
+ }
349
+ ]
350
+ },
293
351
  {
294
352
  "name": "id",
295
353
  "description": "Returns the value of attribute id.",
@@ -311,6 +369,72 @@
311
369
 
312
370
  ]
313
371
  },
372
+ {
373
+ "name": "build_item",
374
+ "description": "Builds a new item but does not add it to the list. Use this method\ninstead of the `#with_item` slot if you need to render an item outside\nthe context of a list, eg. if rendering additional items to append to\nan existing list, perhaps via a separate HTTP request.",
375
+ "parameters": [
376
+ {
377
+ "name": "component_klass",
378
+ "type": "Class",
379
+ "default": "`ActionList::Item`",
380
+ "description": "The class to use instead of the default {{#link_to_component}}Primer::Alpha::ActionList::Item{{/link_to_component}}"
381
+ },
382
+ {
383
+ "name": "system_arguments",
384
+ "type": "Hash",
385
+ "default": "N/A",
386
+ "description": "These arguments are forwarded to {{#link_to_component}}Primer::Alpha::ActionList::Item{{/link_to_component}}, or whatever class is passed as the `component_klass` argument."
387
+ }
388
+ ]
389
+ },
390
+ {
391
+ "name": "build_avatar_item",
392
+ "description": "Builds a new avatar item but does not add it to the list. Avatar items\nare a convenient way to accessibly add an item with a leading avatar\nimage. Use this method instead of the `#with_avatar_item` slot if you\nneed to render an avatar item outside the context of a list, eg. if\nrendering additional items to append to an existing list, perhaps via\na separate HTTP request.",
393
+ "parameters": [
394
+ {
395
+ "name": "src",
396
+ "type": "String",
397
+ "default": "N/A",
398
+ "description": "The source url of the avatar image."
399
+ },
400
+ {
401
+ "name": "username",
402
+ "type": "String",
403
+ "default": "N/A",
404
+ "description": "The username associated with the avatar."
405
+ },
406
+ {
407
+ "name": "full_name",
408
+ "type": "String",
409
+ "default": "`nil`",
410
+ "description": "Optional. The user's full name."
411
+ },
412
+ {
413
+ "name": "full_name_scheme",
414
+ "type": "Symbol",
415
+ "default": "`:block`",
416
+ "description": "Optional. How to display the user's full name. One of `:block` or `:inline`."
417
+ },
418
+ {
419
+ "name": "component_klass",
420
+ "type": "Class",
421
+ "default": "`ActionList::Item`",
422
+ "description": "The class to use instead of the default {{#link_to_component}}Primer::Alpha::ActionList::Item{{/link_to_component}}"
423
+ },
424
+ {
425
+ "name": "avatar_arguments",
426
+ "type": "Hash",
427
+ "default": "`{}`",
428
+ "description": "Optional. The arguments accepted by {{#link_to_component}}Primer::Beta::Avatar{{/link_to_component}}"
429
+ },
430
+ {
431
+ "name": "system_arguments",
432
+ "type": "Hash",
433
+ "default": "N/A",
434
+ "description": "These arguments are forwarded to {{#link_to_component}}Primer::Alpha::ActionList::Item{{/link_to_component}}, or whatever class is passed as the `component_klass` argument."
435
+ }
436
+ ]
437
+ },
314
438
  {
315
439
  "name": "post_list_content_block",
316
440
  "description": "Returns the value of attribute post_list_content_block.",
@@ -411,6 +535,19 @@
411
535
  ]
412
536
  }
413
537
  },
538
+ {
539
+ "preview_path": "primer/alpha/action_list/avatar_item",
540
+ "name": "avatar_item",
541
+ "snapshot": "false",
542
+ "skip_rules": {
543
+ "wont_fix": [
544
+ "region"
545
+ ],
546
+ "will_fix": [
547
+ "color-contrast"
548
+ ]
549
+ }
550
+ },
414
551
  {
415
552
  "preview_path": "primer/alpha/action_list/item_default",
416
553
  "name": "item_default",
@@ -598,6 +735,7 @@
598
735
  {
599
736
  "fully_qualified_name": "Primer::Alpha::ActionList::Item",
600
737
  "description": "An individual `ActionList` item. Items can optionally include leading and/or trailing visuals,\nsuch as icons, avatars, and counters.",
738
+ "accessibility_docs": null,
601
739
  "is_form_component": false,
602
740
  "is_published": true,
603
741
  "requires_js": false,
@@ -690,7 +828,7 @@
690
828
  "name": "description_scheme",
691
829
  "type": "Symbol",
692
830
  "default": "`:block`",
693
- "description": "Display description inline with label, or block on the next line."
831
+ "description": "Display description inline with label, or block on the next line. One of `:block` or `:inline`."
694
832
  },
695
833
  {
696
834
  "name": "active",
@@ -727,7 +865,7 @@
727
865
  },
728
866
  {
729
867
  "name": "leading_visual",
730
- "description": "An icon, avatar, SVG, or custom content that will render to the left of the label.\n\nTo render an icon, call the `with_leading_visual_icon` method, which accepts the arguments accepted by {{#link_to_component}}Primer::Beta::Octicon{{/link_to_component}}.\n\nTo render an avatar, call the `with_leading_visual_avatar` method, which accepts the arguments accepted by {{#link_to_component}}Primer::Beta::Avatar{{/link_to_component}}.\n\nTo render an SVG, call the `with_leading_visual_svg` method.\n\nTo render custom content, call the `with_leading_visual_content` method and pass a block that returns a string.",
868
+ "description": "An icon, avatar, SVG, or custom content that will render to the left of the label.\n\nTo render an icon, call the `with_leading_visual_icon` method, which accepts the arguments accepted by {{#link_to_component}}Primer::Beta::Octicon{{/link_to_component}}.\n\nTo render an SVG, call the `with_leading_visual_svg` method.\n\nTo render custom content, call the `with_leading_visual_content` method and pass a block that returns a string.",
731
869
  "parameters": [
732
870
 
733
871
  ]
@@ -838,6 +976,7 @@
838
976
  {
839
977
  "fully_qualified_name": "Primer::Alpha::ActionList::Heading",
840
978
  "description": "Heading used to describe each sub list within an action list.",
979
+ "accessibility_docs": null,
841
980
  "is_form_component": false,
842
981
  "is_published": true,
843
982
  "requires_js": false,
@@ -908,6 +1047,7 @@
908
1047
  {
909
1048
  "fully_qualified_name": "Primer::Alpha::ActionList::FormWrapper",
910
1049
  "description": "Utility component for wrapping ActionLists or individual ActionList::Items in forms.",
1050
+ "accessibility_docs": null,
911
1051
  "is_form_component": false,
912
1052
  "is_published": true,
913
1053
  "requires_js": false,
@@ -936,6 +1076,7 @@
936
1076
  {
937
1077
  "fully_qualified_name": "Primer::Alpha::ActionList::Divider",
938
1078
  "description": "Separator with optional text rendered above groups or between individual items.",
1079
+ "accessibility_docs": null,
939
1080
  "is_form_component": false,
940
1081
  "is_published": true,
941
1082
  "requires_js": false,
@@ -977,6 +1118,7 @@
977
1118
  {
978
1119
  "fully_qualified_name": "Primer::Alpha::ActionMenu",
979
1120
  "description": "ActionMenu is used for actions, navigation, to display secondary options, or single/multi select lists. They appear when users interact with buttons, actions, or other controls.\n\nThe only allowed elements for the `Item` components are: `:a`, `:button`, and `:clipboard-copy`. The default is `:button`.",
1121
+ "accessibility_docs": "The action for the menu item needs to be on the element with `role=\"menuitem\"`. Semantics are removed for everything nested inside of it. When a menu item is selected, the menu will close immediately.\n\nAdditional information around the keyboard functionality and implementation can be found on the [WAI-ARIA Authoring Practices](https://www.w3.org/TR/wai-aria-practices-1.2/#menu).",
980
1122
  "is_form_component": false,
981
1123
  "is_published": true,
982
1124
  "requires_js": true,
@@ -1137,6 +1279,48 @@
1137
1279
  "description": "The arguments accepted by {{#link_to_component}}Primer::Alpha::ActionList{{/link_to_component}}'s `divider` slot."
1138
1280
  }
1139
1281
  ]
1282
+ },
1283
+ {
1284
+ "name": "with_avatar_item",
1285
+ "description": "Adds an avatar item to the list. Avatar items are a convenient way to accessibly add an item with a leading avatar image.",
1286
+ "parameters": [
1287
+ {
1288
+ "name": "src",
1289
+ "type": "String",
1290
+ "default": "N/A",
1291
+ "description": "The source url of the avatar image."
1292
+ },
1293
+ {
1294
+ "name": "username",
1295
+ "type": "String",
1296
+ "default": "N/A",
1297
+ "description": "The username associated with the avatar."
1298
+ },
1299
+ {
1300
+ "name": "full_name",
1301
+ "type": "String",
1302
+ "default": "N/A",
1303
+ "description": "Optional. The user's full name."
1304
+ },
1305
+ {
1306
+ "name": "full_name_scheme",
1307
+ "type": "Symbol",
1308
+ "default": "N/A",
1309
+ "description": "Optional. How to display the user's full name."
1310
+ },
1311
+ {
1312
+ "name": "avatar_arguments",
1313
+ "type": "Hash",
1314
+ "default": "N/A",
1315
+ "description": "Optional. The arguments accepted by {{#link_to_component}}Primer::Beta::Avatar{{/link_to_component}}."
1316
+ },
1317
+ {
1318
+ "name": "system_arguments",
1319
+ "type": "Hash",
1320
+ "default": "N/A",
1321
+ "description": "The arguments accepted by {{#link_to_component}}Primer::Alpha::ActionList::Item{{/link_to_component}}."
1322
+ }
1323
+ ]
1140
1324
  }
1141
1325
  ],
1142
1326
  "previews": [
@@ -1470,6 +1654,7 @@
1470
1654
  {
1471
1655
  "fully_qualified_name": "Primer::Alpha::ActionMenu::List",
1472
1656
  "description": "This component is part of {{#link_to_component}}Primer::Alpha::ActionMenu{{/link_to_component}} and should not be\nused as a standalone component.",
1657
+ "accessibility_docs": null,
1473
1658
  "is_form_component": false,
1474
1659
  "is_published": true,
1475
1660
  "requires_js": false,
@@ -1508,7 +1693,7 @@
1508
1693
  },
1509
1694
  {
1510
1695
  "name": "items",
1511
- "description": "Items. Items can be individual items or dividers. See the documentation for `#with_item` and `#with_divider` respectively for more information.",
1696
+ "description": "Items. Items can be individual items, avatar items, or dividers. See the documentation for `#with_item`, `#with_divider`, and `#with_avatar_item` respectively for more information.",
1512
1697
  "parameters": [
1513
1698
 
1514
1699
  ]
@@ -1529,7 +1714,55 @@
1529
1714
  "name": "system_arguments",
1530
1715
  "type": "Hash",
1531
1716
  "default": "N/A",
1532
- "description": "The same arguments accepted by {{#link_to_component}}Primer::Alpha::ActionList::Item{{/link_to_component}}."
1717
+ "description": "These arguments are forwarded to {{#link_to_component}}Primer::Alpha::ActionList::Item{{/link_to_component}}, or whatever class is passed as the `component_klass` argument."
1718
+ }
1719
+ ]
1720
+ },
1721
+ {
1722
+ "name": "with_avatar_item",
1723
+ "description": "Adds an avatar item to the list. Avatar items are a convenient way to accessibly add an item with a leading avatar image.",
1724
+ "parameters": [
1725
+ {
1726
+ "name": "src",
1727
+ "type": "String",
1728
+ "default": "N/A",
1729
+ "description": "The source url of the avatar image."
1730
+ },
1731
+ {
1732
+ "name": "username",
1733
+ "type": "String",
1734
+ "default": "N/A",
1735
+ "description": "The username associated with the avatar."
1736
+ },
1737
+ {
1738
+ "name": "full_name",
1739
+ "type": "String",
1740
+ "default": "`nil`",
1741
+ "description": "Optional. The user's full name."
1742
+ },
1743
+ {
1744
+ "name": "full_name_scheme",
1745
+ "type": "Symbol",
1746
+ "default": "`:block`",
1747
+ "description": "Optional. How to display the user's full name. One of `:block` or `:inline`."
1748
+ },
1749
+ {
1750
+ "name": "data",
1751
+ "type": "Hash",
1752
+ "default": "`{}`",
1753
+ "description": "When the menu is used as a form input (see the {{#link_to_component}}Primer::Alpha::ActionMenu{{/link_to_component}} docs), the label is submitted to the server by default. However, if the `data: { value: }` or `\"data-value\":` attribute is provided, it will be sent to the server instead."
1754
+ },
1755
+ {
1756
+ "name": "avatar_arguments",
1757
+ "type": "Hash",
1758
+ "default": "`{}`",
1759
+ "description": "Optional. The arguments accepted by {{#link_to_component}}Primer::Beta::Avatar{{/link_to_component}}."
1760
+ },
1761
+ {
1762
+ "name": "system_arguments",
1763
+ "type": "Hash",
1764
+ "default": "N/A",
1765
+ "description": "These arguments are forwarded to {{#link_to_component}}Primer::Alpha::ActionList::Item{{/link_to_component}}, or whatever class is passed as the `component_klass` argument."
1533
1766
  }
1534
1767
  ]
1535
1768
  }
@@ -1546,6 +1779,7 @@
1546
1779
  {
1547
1780
  "fully_qualified_name": "Primer::Alpha::AutoComplete",
1548
1781
  "description": "Use `AutoComplete` to provide a user with a list of selectable suggestions that appear when they type into the\ninput field. This list is populated by server search results.",
1782
+ "accessibility_docs": "Always set an accessible label to help the user interact with the component.\n\n* `label_text` is required and visible by default.\n* If you must use a non-visible label, set `is_label_visible` to `false`.\nHowever, please note that a visible label should almost always\nbe used unless there is compelling reason not to. A placeholder is not a label.",
1549
1783
  "is_form_component": false,
1550
1784
  "is_published": true,
1551
1785
  "requires_js": false,
@@ -1741,6 +1975,7 @@
1741
1975
  {
1742
1976
  "fully_qualified_name": "Primer::Alpha::AutoComplete::Item",
1743
1977
  "description": "Use `AutoCompleteItem` to list results of an auto-completed search.",
1978
+ "accessibility_docs": null,
1744
1979
  "is_form_component": false,
1745
1980
  "is_published": true,
1746
1981
  "requires_js": false,
@@ -1794,6 +2029,7 @@
1794
2029
  {
1795
2030
  "fully_qualified_name": "Primer::Alpha::Banner",
1796
2031
  "description": "Use `Banner` to highlight important information.",
2032
+ "accessibility_docs": null,
1797
2033
  "is_form_component": false,
1798
2034
  "is_published": true,
1799
2035
  "requires_js": true,
@@ -1817,10 +2053,10 @@
1817
2053
  "description": "Whether the component should take up the full width of the screen when rendered inside smaller viewports."
1818
2054
  },
1819
2055
  {
1820
- "name": "dismissible",
1821
- "type": "Boolean",
1822
- "default": "`false`",
1823
- "description": "Whether the component can be dismissed with an \"x\" button."
2056
+ "name": "dismiss_scheme",
2057
+ "type": "Symbol",
2058
+ "default": "`:none`",
2059
+ "description": "Whether the component can be dismissed with an \"x\" button. One of `:hide`, `:none`, or `:remove`."
1824
2060
  },
1825
2061
  {
1826
2062
  "name": "description",
@@ -1840,12 +2076,6 @@
1840
2076
  "default": "`:default`",
1841
2077
  "description": "One of `:danger`, `:default`, `:success`, or `:warning`."
1842
2078
  },
1843
- {
1844
- "name": "reappear",
1845
- "type": "Boolean",
1846
- "default": "`false`",
1847
- "description": "Whether or not the flash banner should reappear after being dismissed. Only for use in test and preview environments."
1848
- },
1849
2079
  {
1850
2080
  "name": "system_arguments",
1851
2081
  "type": "Hash",
@@ -1945,8 +2175,8 @@
1945
2175
  }
1946
2176
  },
1947
2177
  {
1948
- "preview_path": "primer/alpha/banner/dismissable",
1949
- "name": "dismissable",
2178
+ "preview_path": "primer/alpha/banner/dismissible",
2179
+ "name": "dismissible",
1950
2180
  "snapshot": "true",
1951
2181
  "skip_rules": {
1952
2182
  "wont_fix": [
@@ -2017,6 +2247,7 @@
2017
2247
  {
2018
2248
  "fully_qualified_name": "Primer::Alpha::ButtonMarketing",
2019
2249
  "description": "Use `ButtonMarketing` for actions (e.g. in forms). Use links for destinations, or moving from one page to another.",
2250
+ "accessibility_docs": null,
2020
2251
  "is_form_component": false,
2021
2252
  "is_published": true,
2022
2253
  "requires_js": false,
@@ -2183,6 +2414,7 @@
2183
2414
  {
2184
2415
  "fully_qualified_name": "Primer::Alpha::CheckBox",
2185
2416
  "description": "Check boxes are true/false inputs rendered as `<input type=\"checkbox\">` in HTML.\n\n## Schemes\n\nCheck boxes can submit values to the server using one of two schemes, either `:array`\nor `:boolean` (the default). Check boxes with a scheme of `:boolean` function like normal\nHTML check boxes. If they are checked, a value of \"1\" is sent to the server; if they are\nunchecked, a value of \"0\" is sent to the server. The checked and unchecked values can be\ncustomized via the `:value` and `:unchecked_value` arguments respectively.\n\nWhereas `:boolean` check boxes must have unique names, `:array` check boxes all have the\nsame name. On form submission, Rails will aggregate the values of the check boxes with the\nsame name and provide them to the controller as an array. If `:scheme:` is `:array`, the\n`:value` argument must also be provided. The `:unchecked_value` argument is ignored. If a\ncheck box is checked on submit, its corresponding value will appear in the array. If it is\nnot checked, its value will not appear in the array.\n\n## Caption templates\n\nCaption templates for `:array`-type check boxes work a little differently than they do for\nother input types. Because the name must be the same for all check boxes that make up an\narray, caption template file names are comprised of both the name _and_ the value of each\ncheck box. For example, a check box with the name `foo` and value `bar` must have a caption\ntemplate named `foo_bar_caption.html.erb`.\n\n## Nested Forms\n\nCheck boxes can have \"nested\" forms that are rendered below the caption. A common use-case\nis a form that is hidden until the check box is checked. Nested forms are indented slightly\nto align with the label and caption.\n\nDefine a nested form via the `#nested_form` method, which is expected to return an instance\nof a Primer form (see the usage section below).\n\nAny fields defined in the nested form are submitted along with the parent form's fields.\n\n**NOTE**: Check boxes do not automatically show or hide nested forms. If such behavior is\ndesired, it must be done by hand.",
2417
+ "accessibility_docs": null,
2186
2418
  "is_form_component": true,
2187
2419
  "is_published": false,
2188
2420
  "requires_js": false,
@@ -2419,6 +2651,7 @@
2419
2651
  {
2420
2652
  "fully_qualified_name": "Primer::Alpha::CheckBoxGroup",
2421
2653
  "description": "Check box groups consist of one or more related check boxes.",
2654
+ "accessibility_docs": null,
2422
2655
  "is_form_component": true,
2423
2656
  "is_published": false,
2424
2657
  "requires_js": false,
@@ -2570,6 +2803,7 @@
2570
2803
  {
2571
2804
  "fully_qualified_name": "Primer::Alpha::Dialog",
2572
2805
  "description": "A `Dialog` is used to remove the user from the main application flow,\nto confirm actions, ask for disambiguation or to present small forms.",
2806
+ "accessibility_docs": "- **Dialog Accessible Name**: A dialog should have an accessible name,\nso screen readers are aware of the purpose of the dialog when it opens.\nGive an accessible name setting `:title`. The accessible name will be\nused as the main heading inside the dialog.\n- **Dialog unique id**: A dialog should be unique. Give a unique id\nsetting `:dialog_id`. If no `:dialog_id` is given, a default randomize\nhex id is generated.\n\nThe combination of both `:title` and `:dialog_id` establishes an\n`aria-labelledby` relationship between the title and the unique id of\nthe dialog.",
2573
2807
  "is_form_component": false,
2574
2808
  "is_published": true,
2575
2809
  "requires_js": false,
@@ -2829,6 +3063,7 @@
2829
3063
  {
2830
3064
  "fully_qualified_name": "Primer::Alpha::Dialog::Header",
2831
3065
  "description": "A `Dialog::Header` is a compositional component, used to render the\nHeader of a dialog. See {{#link_to_component}}Primer::Alpha::Dialog{{/link_to_component}}.",
3066
+ "accessibility_docs": null,
2832
3067
  "is_form_component": false,
2833
3068
  "is_published": true,
2834
3069
  "requires_js": false,
@@ -2886,6 +3121,7 @@
2886
3121
  {
2887
3122
  "fully_qualified_name": "Primer::Alpha::Dialog::Footer",
2888
3123
  "description": "A `Dialog::Footer` is a compositional component, used to render the\nFooter of a dialog. See {{#link_to_component}}Primer::Alpha::Dialog{{/link_to_component}}.",
3124
+ "accessibility_docs": null,
2889
3125
  "is_form_component": false,
2890
3126
  "is_published": true,
2891
3127
  "requires_js": false,
@@ -2925,6 +3161,7 @@
2925
3161
  {
2926
3162
  "fully_qualified_name": "Primer::Alpha::Dialog::Body",
2927
3163
  "description": "A `Dialog::Body` is a compositional component, used to render the\nBody of a dialog. See {{#link_to_component}}Primer::Alpha::Dialog{{/link_to_component}}.",
3164
+ "accessibility_docs": null,
2928
3165
  "is_form_component": false,
2929
3166
  "is_published": true,
2930
3167
  "requires_js": false,
@@ -2960,6 +3197,7 @@
2960
3197
  {
2961
3198
  "fully_qualified_name": "Primer::Alpha::Dropdown",
2962
3199
  "description": "`Dropdown` is a lightweight context menu for housing navigation and actions.\nThey're great for instances where you don't need the full power (and code) of the SelectMenu.",
3200
+ "accessibility_docs": null,
2963
3201
  "is_form_component": false,
2964
3202
  "is_published": true,
2965
3203
  "requires_js": true,
@@ -3238,6 +3476,7 @@
3238
3476
  {
3239
3477
  "fully_qualified_name": "Primer::Alpha::Dropdown::Menu::Item",
3240
3478
  "description": "Items to be rendered in the `Dropdown` menu.",
3479
+ "accessibility_docs": null,
3241
3480
  "is_form_component": false,
3242
3481
  "is_published": true,
3243
3482
  "requires_js": false,
@@ -3266,6 +3505,7 @@
3266
3505
  {
3267
3506
  "fully_qualified_name": "Primer::Alpha::Dropdown::Menu",
3268
3507
  "description": "This component is part of `Dropdown` and should not be\nused as a standalone component.",
3508
+ "accessibility_docs": null,
3269
3509
  "is_form_component": false,
3270
3510
  "is_published": true,
3271
3511
  "requires_js": false,
@@ -3342,6 +3582,7 @@
3342
3582
  {
3343
3583
  "fully_qualified_name": "Primer::Alpha::FormButton",
3344
3584
  "description": "A button input rendered using the HTML `<button type=\"button\">` tag.\n\nThis component wraps the Primer button component and supports the same slots and arguments.",
3585
+ "accessibility_docs": null,
3345
3586
  "is_form_component": true,
3346
3587
  "is_published": false,
3347
3588
  "requires_js": false,
@@ -3417,6 +3658,7 @@
3417
3658
  {
3418
3659
  "fully_qualified_name": "Primer::Alpha::FormControl",
3419
3660
  "description": "Wraps an input (or arbitrary content) with a label above and a caption and validation message beneath.\nNOTE: This `FormControl` component is designed for wrapping inputs that aren't supported by the Primer\nforms framework.",
3661
+ "accessibility_docs": null,
3420
3662
  "is_form_component": false,
3421
3663
  "is_published": true,
3422
3664
  "requires_js": false,
@@ -3576,6 +3818,7 @@
3576
3818
  {
3577
3819
  "fully_qualified_name": "Primer::Alpha::HellipButton",
3578
3820
  "description": "Use `HellipButton` to render a button with a hellip. Often used for hidden text expanders.",
3821
+ "accessibility_docs": "Always set an accessible label to help the user interact with the component.\n\n* This button is displaying a hellip as its content (The three dots character). Therefore a label is needed for screen readers.\n* Set the attribute `aria-label` on the system arguments. E.g. `Primer::Alpha::HellipButton.new(\"aria-label\": \"Expand next part\")`",
3579
3822
  "is_form_component": false,
3580
3823
  "is_published": true,
3581
3824
  "requires_js": false,
@@ -3646,6 +3889,7 @@
3646
3889
  {
3647
3890
  "fully_qualified_name": "Primer::Alpha::HiddenTextExpander",
3648
3891
  "description": "Use `HiddenTextExpander` to indicate and toggle hidden text.",
3892
+ "accessibility_docs": "`HiddenTextExpander` requires an `aria-label`, which will provide assistive technologies with an accessible label.\nThe `aria-label` should describe the action to be invoked by the `HiddenTextExpander`. For instance,\nif your `HiddenTextExpander` expands a list of 5 comments, the `aria-label` should be\n`\"Expand 5 more comments\"` instead of `\"More\"`.",
3649
3893
  "is_form_component": false,
3650
3894
  "is_published": true,
3651
3895
  "requires_js": false,
@@ -3716,6 +3960,7 @@
3716
3960
  {
3717
3961
  "fully_qualified_name": "Primer::Alpha::Image",
3718
3962
  "description": "Use `Image` to render images.",
3963
+ "accessibility_docs": "Always provide a meaningful `alt`.",
3719
3964
  "is_form_component": false,
3720
3965
  "is_published": true,
3721
3966
  "requires_js": false,
@@ -3767,6 +4012,7 @@
3767
4012
  {
3768
4013
  "fully_qualified_name": "Primer::Alpha::ImageCrop",
3769
4014
  "description": "A client-side mechanism to crop images.",
4015
+ "accessibility_docs": null,
3770
4016
  "is_form_component": false,
3771
4017
  "is_published": true,
3772
4018
  "requires_js": true,
@@ -3861,6 +4107,7 @@
3861
4107
  {
3862
4108
  "fully_qualified_name": "Primer::Alpha::Layout",
3863
4109
  "description": "`Layout` provides foundational patterns for responsive pages.\n`Layout` can be used for simple two-column pages, or it can be nested to provide flexible 3-column experiences.\n On smaller screens, `Layout` uses vertically stacked rows to display content.\n\n`Layout` flows as both column, when there's enough horizontal space to render both `Main` and `Sidebar`side-by-side (on a desktop of tablet device, per instance);\nor it flows as a row, when `Main` and `Sidebar` are stacked vertically (e.g. on a mobile device).\n`Layout` should always work in any screen size.",
4110
+ "accessibility_docs": "Keyboard navigation follows the markup order. Decide carefully how the focus order should be be by deciding whether\n`main` or `sidebar` comes first in code. The code order won’t affect the visual position.",
3864
4111
  "is_form_component": false,
3865
4112
  "is_published": true,
3866
4113
  "requires_js": false,
@@ -4228,6 +4475,7 @@
4228
4475
  {
4229
4476
  "fully_qualified_name": "Primer::Alpha::Layout::Sidebar",
4230
4477
  "description": "The layout's sidebar content.",
4478
+ "accessibility_docs": null,
4231
4479
  "is_form_component": false,
4232
4480
  "is_published": true,
4233
4481
  "requires_js": false,
@@ -4256,6 +4504,7 @@
4256
4504
  {
4257
4505
  "fully_qualified_name": "Primer::Alpha::Layout::Main",
4258
4506
  "description": "The layout's main content.",
4507
+ "accessibility_docs": null,
4259
4508
  "is_form_component": false,
4260
4509
  "is_published": true,
4261
4510
  "requires_js": false,
@@ -4297,6 +4546,7 @@
4297
4546
  {
4298
4547
  "fully_qualified_name": "Primer::Alpha::Menu",
4299
4548
  "description": "Use `Menu` to create vertical lists of navigational links.",
4549
+ "accessibility_docs": null,
4300
4550
  "is_form_component": false,
4301
4551
  "is_published": true,
4302
4552
  "requires_js": false,
@@ -4396,6 +4646,7 @@
4396
4646
  {
4397
4647
  "fully_qualified_name": "Primer::Alpha::MultiInput",
4398
4648
  "description": "Multi inputs are comprised of multiple constituent fields, only one of which is visible\nat a given time. They are designed for situations where constituent inputs are shown or\nhidden based on the value of another field. For example, consider an address form. If\nthe user chooses the USA as the country, the region input should show a list of states\nand US territories; if the user instead chooses Canada, the region input should show a\nlist of Canadian provinces, etc.\n\nUnlike everywhere else in Primer forms, constituent inputs are not directly passed a\n`name` attribute. Instead, developers pass a `name` attribute to the multi input itself.\nThe multi input then automatically assigns each constituent input the same name. This is\ndone so that the multi input looks like a single field from the server's point of view.\nUsing the address form example from earlier, this means only one value - either a US state\nor a Canadian provice - will be submitted to the server under the `region` key.\n\nActually, that's not quite true. Constituent inputs _are_ given a `name`, but it's added to\nthe input as the `data-name` attribute as a way to identify constituent inputs, and will not\nbe sent to the server.",
4649
+ "accessibility_docs": null,
4399
4650
  "is_form_component": true,
4400
4651
  "is_published": false,
4401
4652
  "requires_js": true,
@@ -4595,6 +4846,7 @@
4595
4846
  {
4596
4847
  "fully_qualified_name": "Primer::Alpha::NavList",
4597
4848
  "description": "`NavList` provides a simple way to render side navigation, i.e. navigation\nthat appears to the left or right side of some main content. Each group in a\nnav list is a list of links.\n\nNav list groups can contain sub items. Rather than navigating to a URL, groups\nwith sub items expand and collapse on click. To indicate this functionality, the\ngroup will automatically render with a trailing chevron icon that changes direction\nwhen the group expands and collapses.\n\nNav list items appear visually active when selected. Each nav item must have one\nor more ID values that determine which item will appear selected. Use the\n`selected_item_id` argument to select the appropriate item.",
4849
+ "accessibility_docs": null,
4598
4850
  "is_form_component": false,
4599
4851
  "is_published": true,
4600
4852
  "requires_js": true,
@@ -4635,6 +4887,72 @@
4635
4887
  }
4636
4888
  ],
4637
4889
  "methods": [
4890
+ {
4891
+ "name": "with_item",
4892
+ "description": "Adds an item to the list.",
4893
+ "parameters": [
4894
+ {
4895
+ "name": "component_klass",
4896
+ "type": "Class",
4897
+ "default": "`Primer::Alpha::NavList::Item`",
4898
+ "description": "The class to use instead of the default {{#link_to_component}}Primer::Alpha::NavList::Item{{/link_to_component}}"
4899
+ },
4900
+ {
4901
+ "name": "system_arguments",
4902
+ "type": "Hash",
4903
+ "default": "N/A",
4904
+ "description": "These arguments are forwarded to {{#link_to_component}}Primer::Alpha::NavList::Item{{/link_to_component}}, or whatever class is passed as the `component_klass` argument."
4905
+ }
4906
+ ]
4907
+ },
4908
+ {
4909
+ "name": "with_avatar_item",
4910
+ "description": "Adds an avatar item to the list. Avatar items are a convenient way to accessibly add an item with a leading avatar image.",
4911
+ "parameters": [
4912
+ {
4913
+ "name": "src",
4914
+ "type": "String",
4915
+ "default": "N/A",
4916
+ "description": "The source url of the avatar image."
4917
+ },
4918
+ {
4919
+ "name": "username",
4920
+ "type": "String",
4921
+ "default": "N/A",
4922
+ "description": "The username associated with the avatar."
4923
+ },
4924
+ {
4925
+ "name": "full_name",
4926
+ "type": "String",
4927
+ "default": "`nil`",
4928
+ "description": "Optional. The user's full name."
4929
+ },
4930
+ {
4931
+ "name": "full_name_scheme",
4932
+ "type": "Symbol",
4933
+ "default": "`:block`",
4934
+ "description": "Optional. How to display the user's full name. One of `:block` or `:inline`."
4935
+ },
4936
+ {
4937
+ "name": "component_klass",
4938
+ "type": "Class",
4939
+ "default": "`Primer::Alpha::NavList::Item`",
4940
+ "description": "The class to use instead of the default {{#link_to_component}}Primer::Alpha::NavList::Item{{/link_to_component}}"
4941
+ },
4942
+ {
4943
+ "name": "avatar_arguments",
4944
+ "type": "Hash",
4945
+ "default": "`{}`",
4946
+ "description": "Optional. The arguments accepted by {{#link_to_component}}Primer::Beta::Avatar{{/link_to_component}}"
4947
+ },
4948
+ {
4949
+ "name": "system_arguments",
4950
+ "type": "Hash",
4951
+ "default": "N/A",
4952
+ "description": "These arguments are forwarded to {{#link_to_component}}Primer::Alpha::NavList::Item{{/link_to_component}}, or whatever class is passed as the `component_klass` argument."
4953
+ }
4954
+ ]
4955
+ },
4638
4956
  {
4639
4957
  "name": "with_group",
4640
4958
  "description": "Adds a group to the list. A group is a list of links and a (required) heading.",
@@ -4655,7 +4973,73 @@
4655
4973
  "name": "system_arguments",
4656
4974
  "type": "Hash",
4657
4975
  "default": "N/A",
4658
- "description": "The arguments accepted by {{#link_to_component}}Primer::Alpha::ActionList::Divider{{/link_to_component}}."
4976
+ "description": "The arguments accepted by {{#link_to_component}}Primer::Alpha::NavList::Divider{{/link_to_component}}."
4977
+ }
4978
+ ]
4979
+ },
4980
+ {
4981
+ "name": "build_item",
4982
+ "description": "Builds a new item but does not add it to the list. Use this method\ninstead of the `#with_item` slot if you need to render an item outside\nthe context of a list, eg. if rendering additional items to append to\nan existing list, perhaps via a separate HTTP request.",
4983
+ "parameters": [
4984
+ {
4985
+ "name": "component_klass",
4986
+ "type": "Class",
4987
+ "default": "`Primer::Alpha::NavList::Item`",
4988
+ "description": "The class to use instead of the default {{#link_to_component}}Primer::Alpha::NavList::Item{{/link_to_component}}"
4989
+ },
4990
+ {
4991
+ "name": "system_arguments",
4992
+ "type": "Hash",
4993
+ "default": "N/A",
4994
+ "description": "These arguments are forwarded to {{#link_to_component}}Primer::Alpha::NavList::Item{{/link_to_component}}, or whatever class is passed as the `component_klass` argument."
4995
+ }
4996
+ ]
4997
+ },
4998
+ {
4999
+ "name": "build_avatar_item",
5000
+ "description": "Builds a new avatar item but does not add it to the list. Avatar items\nare a convenient way to accessibly add an item with a leading avatar\nimage. Use this method instead of the `#with_avatar_item` slot if you\nneed to render an avatar item outside the context of a list, eg. if\nrendering additional items to append to an existing list, perhaps via\na separate HTTP request.",
5001
+ "parameters": [
5002
+ {
5003
+ "name": "src",
5004
+ "type": "String",
5005
+ "default": "N/A",
5006
+ "description": "The source url of the avatar image."
5007
+ },
5008
+ {
5009
+ "name": "username",
5010
+ "type": "String",
5011
+ "default": "N/A",
5012
+ "description": "The username associated with the avatar."
5013
+ },
5014
+ {
5015
+ "name": "full_name",
5016
+ "type": "String",
5017
+ "default": "`nil`",
5018
+ "description": "Optional. The user's full name."
5019
+ },
5020
+ {
5021
+ "name": "full_name_scheme",
5022
+ "type": "Symbol",
5023
+ "default": "`:block`",
5024
+ "description": "Optional. How to display the user's full name. One of `:block` or `:inline`."
5025
+ },
5026
+ {
5027
+ "name": "component_klass",
5028
+ "type": "Class",
5029
+ "default": "`Primer::Alpha::NavList::Item`",
5030
+ "description": "The class to use instead of the default {{#link_to_component}}Primer::Alpha::NavList::Item{{/link_to_component}}"
5031
+ },
5032
+ {
5033
+ "name": "avatar_arguments",
5034
+ "type": "Hash",
5035
+ "default": "`{}`",
5036
+ "description": "Optional. The arguments accepted by {{#link_to_component}}Primer::Beta::Avatar{{/link_to_component}}"
5037
+ },
5038
+ {
5039
+ "name": "system_arguments",
5040
+ "type": "Hash",
5041
+ "default": "N/A",
5042
+ "description": "These arguments are forwarded to {{#link_to_component}}Primer::Alpha::NavList::Item{{/link_to_component}}, or whatever class is passed as the `component_klass` argument."
4659
5043
  }
4660
5044
  ]
4661
5045
  },
@@ -4738,6 +5122,7 @@
4738
5122
  {
4739
5123
  "fully_qualified_name": "Primer::Alpha::NavList::Heading",
4740
5124
  "description": "The heading placed above a `NavList`'s items.\n\nSee {{#link_to_component}}Primer::Alpha::NavList{{/link_to_component}} for usage examples.",
5125
+ "accessibility_docs": null,
4741
5126
  "is_form_component": false,
4742
5127
  "is_published": true,
4743
5128
  "requires_js": false,
@@ -4816,6 +5201,7 @@
4816
5201
  {
4817
5202
  "fully_qualified_name": "Primer::Alpha::NavList::Item",
4818
5203
  "description": "Items are rendered as styled links. They can optionally include leading and/or trailing visuals,\nsuch as icons, avatars, and counters. Items are selected by ID. IDs can be specified via the\n`selected_item_ids` argument, which accepts a list of valid IDs for the item. Items can also\nthemselves contain sub items. Sub items are rendered collapsed by default.",
5204
+ "accessibility_docs": null,
4819
5205
  "is_form_component": false,
4820
5206
  "is_published": true,
4821
5207
  "requires_js": true,
@@ -4879,7 +5265,7 @@
4879
5265
  },
4880
5266
  {
4881
5267
  "name": "leading_visual",
4882
- "description": "An icon, avatar, SVG, or custom content that will render to the left of the label.\n\nTo render an icon, call the `with_leading_visual_icon` method, which accepts the arguments accepted by {{#link_to_component}}Primer::Beta::Octicon{{/link_to_component}}.\n\nTo render an avatar, call the `with_leading_visual_avatar` method, which accepts the arguments accepted by {{#link_to_component}}Primer::Beta::Avatar{{/link_to_component}}.\n\nTo render an SVG, call the `with_leading_visual_svg` method.\n\nTo render custom content, call the `with_leading_visual_content` method and pass a block that returns a string.",
5268
+ "description": "An icon, avatar, SVG, or custom content that will render to the left of the label.\n\nTo render an icon, call the `with_leading_visual_icon` method, which accepts the arguments accepted by {{#link_to_component}}Primer::Beta::Octicon{{/link_to_component}}.\n\nTo render an SVG, call the `with_leading_visual_svg` method.\n\nTo render custom content, call the `with_leading_visual_content` method and pass a block that returns a string.",
4883
5269
  "parameters": [
4884
5270
 
4885
5271
  ]
@@ -4969,6 +5355,7 @@
4969
5355
  {
4970
5356
  "fully_qualified_name": "Primer::Alpha::NavList::Divider",
4971
5357
  "description": "Separator with optional text rendered above groups or between individual items.",
5358
+ "accessibility_docs": null,
4972
5359
  "is_form_component": false,
4973
5360
  "is_published": true,
4974
5361
  "requires_js": false,
@@ -5008,6 +5395,7 @@
5008
5395
  {
5009
5396
  "fully_qualified_name": "Primer::Alpha::NavList::Group",
5010
5397
  "description": "A logical grouping of navigation links with an optional heading.\n\nSee {{#link_to_component}}Primer::Alpha::NavList{{/link_to_component}} for usage examples.",
5398
+ "accessibility_docs": null,
5011
5399
  "is_form_component": false,
5012
5400
  "is_published": true,
5013
5401
  "requires_js": true,
@@ -5108,6 +5496,7 @@
5108
5496
  {
5109
5497
  "fully_qualified_name": "Primer::Alpha::Navigation::Tab",
5110
5498
  "description": "This component is part of navigation components such as `Primer::Alpha::TabNav`\nand `Primer::Alpha::UnderlineNav` and should not be used by itself.",
5499
+ "accessibility_docs": "`Tab` renders the selected anchor tab with `aria-current=\"page\"` by default.\n When the selected tab does not correspond to the current page, such as in a nested inner tab, make sure to use aria-current=\"true\"",
5111
5500
  "is_form_component": false,
5112
5501
  "is_published": true,
5113
5502
  "requires_js": false,
@@ -5230,6 +5619,7 @@
5230
5619
  {
5231
5620
  "fully_qualified_name": "Primer::Alpha::OcticonSymbols",
5232
5621
  "description": "OcticonSymbols renders a symbol dictionary using a list of {{link_to_octicons}}.",
5622
+ "accessibility_docs": null,
5233
5623
  "is_form_component": false,
5234
5624
  "is_published": true,
5235
5625
  "requires_js": false,
@@ -5263,6 +5653,7 @@
5263
5653
  {
5264
5654
  "fully_qualified_name": "Primer::Alpha::Overlay",
5265
5655
  "description": "Overlay components codify design patterns related to floating surfaces such\nas dialogs and menus. They are private components intended to be used by\nspecialized components, and mostly contain presentational logic and\nbehavior.",
5656
+ "accessibility_docs": "- **Overlay Accessible Name**: An overlay should have an accessible name,\nso screen readers are aware of the purpose of the Overlay when it opens.\nGive an accessible name setting `:title`. The accessible name will be\nused as the main heading inside the Overlay.\n- **Overlay unique id**: A Overlay should be unique. Give a unique id\nsetting `:id`. If no `:id` is given, a default randomize hex id is\ngenerated.\n\nThe combination of both `:title` and `:id` establishes an\n`aria-labelledby` relationship between the title and the unique id\nof the Overlay.",
5266
5657
  "is_form_component": false,
5267
5658
  "is_published": true,
5268
5659
  "requires_js": true,
@@ -5537,6 +5928,7 @@
5537
5928
  {
5538
5929
  "fully_qualified_name": "Primer::Alpha::Overlay::Header",
5539
5930
  "description": "A `Overlay::Header` is a compositional component, used to render the\nHeader of an overlay. See {{#link_to_component}}Primer::Alpha::Overlay{{/link_to_component}}.",
5931
+ "accessibility_docs": null,
5540
5932
  "is_form_component": false,
5541
5933
  "is_published": true,
5542
5934
  "requires_js": false,
@@ -5606,6 +5998,7 @@
5606
5998
  {
5607
5999
  "fully_qualified_name": "Primer::Alpha::Overlay::Footer",
5608
6000
  "description": "A `Overlay::Footer` is a compositional component, used to render the\nFooter of an overlay. See {{#link_to_component}}Primer::Alpha::Overlay{{/link_to_component}}.",
6001
+ "accessibility_docs": null,
5609
6002
  "is_form_component": false,
5610
6003
  "is_published": true,
5611
6004
  "requires_js": false,
@@ -5651,6 +6044,7 @@
5651
6044
  {
5652
6045
  "fully_qualified_name": "Primer::Alpha::Overlay::Body",
5653
6046
  "description": "A `Overlay::Body` is a compositional component, used to render the\nBody of an overlay. See {{#link_to_component}}Primer::Alpha::Overlay{{/link_to_component}}.",
6047
+ "accessibility_docs": null,
5654
6048
  "is_form_component": false,
5655
6049
  "is_published": true,
5656
6050
  "requires_js": false,
@@ -5686,6 +6080,7 @@
5686
6080
  {
5687
6081
  "fully_qualified_name": "Primer::Alpha::RadioButton",
5688
6082
  "description": "Radio buttons represent one of a set of options and are rendered as `<input type=\"radio\">` in HTML.\n**NOTE**: You probably want to use the {{#link_to_component}}Primer::Alpha::RadioButtonGroup{{/link_to_component}}\ncomponent instead, as it allows rendering a group of options.",
6083
+ "accessibility_docs": null,
5689
6084
  "is_form_component": true,
5690
6085
  "is_published": false,
5691
6086
  "requires_js": false,
@@ -5898,6 +6293,7 @@
5898
6293
  {
5899
6294
  "fully_qualified_name": "Primer::Alpha::RadioButtonGroup",
5900
6295
  "description": "A group of mutually exclusive radio buttons.",
6296
+ "accessibility_docs": null,
5901
6297
  "is_form_component": true,
5902
6298
  "is_published": false,
5903
6299
  "requires_js": false,
@@ -6049,6 +6445,7 @@
6049
6445
  {
6050
6446
  "fully_qualified_name": "Primer::Alpha::SegmentedControl",
6051
6447
  "description": "Use a segmented control to let users select an option from a short list and immediately apply the selection",
6448
+ "accessibility_docs": "A `SegmentedControl` should not be used in a form as a replacement for something like a radio group or select.\nSee the [Accessibility section](https://primer.style/design/components/segmented-control#accessibility) of the SegmentedControl interface guidelines for more details.",
6052
6449
  "is_form_component": false,
6053
6450
  "is_published": true,
6054
6451
  "requires_js": false,
@@ -6328,6 +6725,7 @@
6328
6725
  {
6329
6726
  "fully_qualified_name": "Primer::Alpha::SegmentedControl::Item",
6330
6727
  "description": "SegmentedControl::Item is a private component that is only used by SegmentedControl\nIt wraps the Button and IconButton components to provide the correct styles",
6728
+ "accessibility_docs": null,
6331
6729
  "is_form_component": false,
6332
6730
  "is_published": true,
6333
6731
  "requires_js": false,
@@ -6381,6 +6779,7 @@
6381
6779
  {
6382
6780
  "fully_qualified_name": "Primer::Alpha::Select",
6383
6781
  "description": "Select lists are single-line text inputs rendered as `<select>` tags in HTML.",
6782
+ "accessibility_docs": null,
6384
6783
  "is_form_component": true,
6385
6784
  "is_published": false,
6386
6785
  "requires_js": false,
@@ -6660,6 +7059,7 @@
6660
7059
  {
6661
7060
  "fully_qualified_name": "Primer::Alpha::SubmitButton",
6662
7061
  "description": "A submit button input rendered using the HTML `<button type=\"submit\">` tag.\n\nThis component wraps the Primer button component and supports the same slots and arguments.",
7062
+ "accessibility_docs": null,
6663
7063
  "is_form_component": true,
6664
7064
  "is_published": false,
6665
7065
  "requires_js": false,
@@ -6735,6 +7135,7 @@
6735
7135
  {
6736
7136
  "fully_qualified_name": "Primer::Alpha::TabContainer",
6737
7137
  "description": "Use `TabContainer` to create tabbed content with keyboard support. This component does not add any styles.\nIt only provides the tab functionality. If you want styled Tabs you can look at {{#link_to_component}}Primer::Alpha::TabNav{{/link_to_component}}.\n\nThis component requires javascript.",
7138
+ "accessibility_docs": null,
6738
7139
  "is_form_component": false,
6739
7140
  "is_published": true,
6740
7141
  "requires_js": true,
@@ -6768,6 +7169,7 @@
6768
7169
  {
6769
7170
  "fully_qualified_name": "Primer::Alpha::TabNav",
6770
7171
  "description": "Use `TabNav` to style navigation with a tab-based selected state, typically used for navigation placed at the top of the page.\nFor panel navigation, use {{#link_to_component}}Primer::Alpha::TabPanels{{/link_to_component}} instead.",
7172
+ "accessibility_docs": "- By default, `TabNav` renders links within a `<nav>` element. `<nav>` has an\n implicit landmark role of `navigation` which should be reserved for main links.\n For all other set of links, set tag to `:div`.\n- See <%= link_to_component(Primer::Alpha::Navigation::Tab) %> for additional\n accessibility considerations.",
6771
7173
  "is_form_component": false,
6772
7174
  "is_published": true,
6773
7175
  "requires_js": false,
@@ -6899,6 +7301,7 @@
6899
7301
  {
6900
7302
  "fully_qualified_name": "Primer::Alpha::TabPanels",
6901
7303
  "description": "Use `TabPanels` for tabs with panel navigation.",
7304
+ "accessibility_docs": null,
6902
7305
  "is_form_component": false,
6903
7306
  "is_published": true,
6904
7307
  "requires_js": true,
@@ -7029,6 +7432,7 @@
7029
7432
  {
7030
7433
  "fully_qualified_name": "Primer::Alpha::TextArea",
7031
7434
  "description": "Text areas are multi-line text inputs rendered using the `<textarea>` tag in HTML.",
7435
+ "accessibility_docs": null,
7032
7436
  "is_form_component": true,
7033
7437
  "is_published": false,
7034
7438
  "requires_js": false,
@@ -7273,6 +7677,7 @@
7273
7677
  {
7274
7678
  "fully_qualified_name": "Primer::Alpha::TextField",
7275
7679
  "description": "Text fields are single-line text inputs rendered as `<input type=\"text\">` in HTML.",
7680
+ "accessibility_docs": null,
7276
7681
  "is_form_component": true,
7277
7682
  "is_published": true,
7278
7683
  "requires_js": false,
@@ -7708,6 +8113,7 @@
7708
8113
  {
7709
8114
  "fully_qualified_name": "Primer::Alpha::ToggleSwitch",
7710
8115
  "description": "The ToggleSwitch component is a button that toggles between two boolean states. It is meant to be used for\nsettings that should cause an immediate update. If configured with a \"src\" attribute, the component will\nmake a POST request containing data of the form \"value: 0 | 1\".",
8116
+ "accessibility_docs": null,
7711
8117
  "is_form_component": false,
7712
8118
  "is_published": true,
7713
8119
  "requires_js": true,
@@ -7930,6 +8336,7 @@
7930
8336
  {
7931
8337
  "fully_qualified_name": "Primer::Alpha::Tooltip",
7932
8338
  "description": "`Tooltip` only appears on mouse hover or keyboard focus and contain a label or description text. Use tooltips sparingly and as a last resort.\nUse tooltips as a last resort. Please consider [Tooltips alternatives](https://primer.style/design/accessibility/tooltip-alternatives).\n\nWhen using a tooltip, follow the provided guidelines to avoid accessibility issues:\n- Tooltips should contain only **non-essential text**. Tooltips can easily be missed and are not accessible on touch devices so never use tooltips to convey critical information.\n- `Tooltip` should be rendered through the API of {{#link_to_component}}Primer::ButtonComponent{{/link_to_component}}, {{#link_to_component}}Primer::Beta::Link{{/link_to_component}}, or {{#link_to_component}}Primer::IconButton{{/link_to_component}}. Avoid using `Tooltip` a standalone component unless absolutely necessary (and **only** on interactive elements).\n- Tooltip text must be brief and concise even when used to display a description.\n- Tooltips can only hold string content.\n- Tooltips are not allowed on `disabled` elements because such elements are not keyboard-accessible. If you must set a tooltip on a disabled element, use `aria-disabled=\"true\"` instead and programmatically disable the element.\n- **Never set tooltips on static, non-interactive elements** like `span` or `div`. Tooltips should only be used on interactive elements like buttons or links to avoid excluding keyboard-only\nand screen reader users. Use of tooltips through {{#link_to_component}}Primer::Beta::Button{{/link_to_component}}, {{#link_to_component}}Primer::Beta::Link{{/link_to_component}}, or {{#link_to_component}}Primer::Beta::IconButton{{/link_to_component}} will guarantee this.\n- If you must use `Tooltip` as a standalone component, place it immediately after the trigger element in the DOM. This allows screen reader users to navigate to the tooltip and copy its contents if desired.\n content.\n\nSemantically, a tooltip will either act an accessible name or an accessible description for the element that it is associated with resulting in either a\n`aria-labelledby` or an `aria-describedby` association. The `type` drastically changes semantics and screen reader behavior so follow these guidelines carefully:\n- When there is already a visible label text on the trigger element, the tooltip is likely intended be supplementary, so set `type: :description`.\nThe majority of tooltips will fall under this category.\n- When there is no visible text on the trigger element and the tooltip content is appropriate as a label for the element, set `type: :label`.\n`label` type is usually only appropriate for an icon-only control.",
8339
+ "accessibility_docs": null,
7933
8340
  "is_form_component": false,
7934
8341
  "is_published": true,
7935
8342
  "requires_js": true,
@@ -8004,19 +8411,6 @@
8004
8411
  ]
8005
8412
  }
8006
8413
  },
8007
- {
8008
- "preview_path": "primer/alpha/tooltip/label_tooltip_on_button_with_existing_labelledby",
8009
- "name": "label_tooltip_on_button_with_existing_labelledby",
8010
- "snapshot": "false",
8011
- "skip_rules": {
8012
- "wont_fix": [
8013
- "region"
8014
- ],
8015
- "will_fix": [
8016
- "color-contrast"
8017
- ]
8018
- }
8019
- },
8020
8414
  {
8021
8415
  "preview_path": "primer/alpha/tooltip/description_tooltip_on_button_with_existing_describedby",
8022
8416
  "name": "description_tooltip_on_button_with_existing_describedby",
@@ -8116,6 +8510,7 @@
8116
8510
  {
8117
8511
  "fully_qualified_name": "Primer::Alpha::UnderlineNav",
8118
8512
  "description": "Use `UnderlineNav` to style navigation links with a minimal\nunderlined selected state, typically placed at the top\nof the page.\n\nFor panel navigation, use {{#link_to_component}}Primer::Alpha::UnderlinePanels{{/link_to_component}} instead.",
8513
+ "accessibility_docs": "- By default, `UnderlineNav` renders links within a `<nav>` element. `<nav>` has an\n implicit landmark role of `navigation` which should be reserved for main links.\n For all other set of links, set tag to `:div`.\n- See <%= link_to_component(Primer::Alpha::Navigation::Tab) %> for additional\n accessibility considerations.",
8119
8514
  "is_form_component": false,
8120
8515
  "is_published": true,
8121
8516
  "requires_js": false,
@@ -8246,6 +8641,7 @@
8246
8641
  {
8247
8642
  "fully_qualified_name": "Primer::Alpha::UnderlinePanels",
8248
8643
  "description": "Use `UnderlinePanels` to style tabs with an associated panel and an underlined selected state.",
8644
+ "accessibility_docs": null,
8249
8645
  "is_form_component": false,
8250
8646
  "is_published": true,
8251
8647
  "requires_js": true,
@@ -8369,6 +8765,7 @@
8369
8765
  {
8370
8766
  "fully_qualified_name": "Primer::Beta::AutoComplete",
8371
8767
  "description": "Use `AutoComplete` to provide a user with a list of selectable suggestions that appear when they type into the\ninput field. This list is populated by server search results.",
8768
+ "accessibility_docs": "Always set an accessible label to help the user interact with the component.\n\n* `label_text` is required and visible by default.\n* If you must hide the label, set `visually_hide_label` to `true`.\nHowever, please note that a visible label should almost always\nbe used unless there is compelling reason not to. A placeholder is not a label.",
8372
8769
  "is_form_component": false,
8373
8770
  "is_published": true,
8374
8771
  "requires_js": true,
@@ -8757,6 +9154,7 @@
8757
9154
  {
8758
9155
  "fully_qualified_name": "Primer::Beta::AutoComplete::Item",
8759
9156
  "description": "Use `AutoCompleteItem` to list results of an auto-completed search.",
9157
+ "accessibility_docs": null,
8760
9158
  "is_form_component": false,
8761
9159
  "is_published": true,
8762
9160
  "requires_js": false,
@@ -8857,6 +9255,7 @@
8857
9255
  {
8858
9256
  "fully_qualified_name": "Primer::Beta::Avatar",
8859
9257
  "description": "`Avatar` can be used to represent users and organizations on GitHub.\n\n- Use the default circle avatar for users, and the square shape\nfor organizations or any other non-human avatars.\n- By default, `Avatar` will render a static `<img>`. To have `Avatar` function as a link, set the `href` which will wrap the `<img>` in a `<a>`.\n- Set `size` to update the height and width of the `Avatar` in pixels.\n- To stack multiple avatars together, use {{#link_to_component}}Primer::Beta::AvatarStack{{/link_to_component}}.",
9258
+ "accessibility_docs": "Images should have text alternatives that describe the information or function represented.\nIf the avatar functions as a link, provide alt text that helps convey the function. For instance,\nif `Avatar` is a link to a user profile, the alt attribute should be `@kittenuser profile`\nrather than `@kittenuser`.\n[Learn more about best image practices (WAI Images)](https://www.w3.org/WAI/tutorials/images/)",
8860
9259
  "is_form_component": false,
8861
9260
  "is_published": true,
8862
9261
  "requires_js": false,
@@ -8876,7 +9275,7 @@
8876
9275
  {
8877
9276
  "name": "alt",
8878
9277
  "type": "String",
8879
- "default": "N/A",
9278
+ "default": "`nil`",
8880
9279
  "description": "Passed through to alt on img tag."
8881
9280
  },
8882
9281
  {
@@ -9075,6 +9474,7 @@
9075
9474
  {
9076
9475
  "fully_qualified_name": "Primer::Beta::AvatarStack",
9077
9476
  "description": "Use `AvatarStack` to stack multiple avatars together.",
9477
+ "accessibility_docs": null,
9078
9478
  "is_form_component": false,
9079
9479
  "is_published": true,
9080
9480
  "requires_js": false,
@@ -9259,6 +9659,7 @@
9259
9659
  {
9260
9660
  "fully_qualified_name": "Primer::Beta::BaseButton",
9261
9661
  "description": "Use `BaseButton` to render an unstyled `<button>` tag that can be customized.",
9662
+ "accessibility_docs": null,
9262
9663
  "is_form_component": false,
9263
9664
  "is_published": true,
9264
9665
  "requires_js": false,
@@ -9367,6 +9768,7 @@
9367
9768
  {
9368
9769
  "fully_qualified_name": "Primer::Beta::Blankslate",
9369
9770
  "description": "Use `Blankslate` when there is a lack of content within a page or section. Use as placeholder to tell users why something isn't there.",
9771
+ "accessibility_docs": "- The blankslate uses a semantic heading that must be set at the appropriate level based on the hierarchy of the page.\n- All blankslate visuals have been programmed as decorative images, using `aria-hidden=”true”` and `img alt=””`, which will hide the visual from screen reader users.\n- The blankslate supports a primary and secondary action. Both actions have been built as semantic links with primary and secondary styling.\n- `secondary_action` text should be meaningful out of context and clearly describe the destination. Avoid using vague text like, \"Learn more\" or \"Click here\".\n- The blankslate can leverage the spinner component, which will communicate to screen reader users that the content is still loading.",
9370
9772
  "is_form_component": false,
9371
9773
  "is_published": true,
9372
9774
  "requires_js": false,
@@ -9650,6 +10052,7 @@
9650
10052
  {
9651
10053
  "fully_qualified_name": "Primer::Beta::BorderBox",
9652
10054
  "description": "`BorderBox` is a Box component with a border.",
10055
+ "accessibility_docs": null,
9653
10056
  "is_form_component": false,
9654
10057
  "is_published": true,
9655
10058
  "requires_js": false,
@@ -9829,6 +10232,7 @@
9829
10232
  {
9830
10233
  "fully_qualified_name": "Primer::Beta::BorderBox::Header",
9831
10234
  "description": "`BorderBox::Header` is used inside `BorderBox` to render its header slot.",
10235
+ "accessibility_docs": "When using `header.with_title`, set `tag` to one of `h1`, `h2`, `h3`, etc. based on what is appropriate for the page context. <%= link_to_heading_practices %>",
9832
10236
  "is_form_component": false,
9833
10237
  "is_published": true,
9834
10238
  "requires_js": false,
@@ -9867,7 +10271,13 @@
9867
10271
  }
9868
10272
  ],
9869
10273
  "methods": [
10274
+ {
10275
+ "name": "id",
10276
+ "description": "Returns the value of attribute id.",
10277
+ "parameters": [
9870
10278
 
10279
+ ]
10280
+ }
9871
10281
  ],
9872
10282
  "previews": [
9873
10283
 
@@ -9881,6 +10291,7 @@
9881
10291
  {
9882
10292
  "fully_qualified_name": "Primer::Beta::Breadcrumbs",
9883
10293
  "description": "Use `Breadcrumbs` to display page hierarchy.\n\n#### Known issues\n\n##### Responsiveness\n\n`Breadcrumbs` is not optimized for responsive designs.",
10294
+ "accessibility_docs": "`Breadcrumbs` renders a list of links within a `nav` element and has an implicit landmark role of `navigation`.\nBy default, the component labels the `nav` element with \"Breadcrumbs\" which helps distinguish the type of navigation.\nAdditionally, the component will always render the last link, which should represent the current page, with an `aria-current=\"page\"` attribute.\n\nFor more information on the breadcrumbs pattern implemented by this component, see [WAI-ARIA 1.1 Breadcrumb](https://www.w3.org/TR/wai-aria-practices-1.1/#breadcrumb).",
9884
10295
  "is_form_component": false,
9885
10296
  "is_published": true,
9886
10297
  "requires_js": false,
@@ -9953,6 +10364,7 @@
9953
10364
  {
9954
10365
  "fully_qualified_name": "Primer::Beta::Breadcrumbs::Item",
9955
10366
  "description": "This component is part of `Primer::Beta::Breadcrumbs` and should not be\nused as a standalone component.",
10367
+ "accessibility_docs": null,
9956
10368
  "is_form_component": false,
9957
10369
  "is_published": true,
9958
10370
  "requires_js": false,
@@ -10020,6 +10432,7 @@
10020
10432
  {
10021
10433
  "fully_qualified_name": "Primer::Beta::Button",
10022
10434
  "description": "Use `Button` for actions (e.g. in forms). Use links for destinations, or moving from one page to another.",
10435
+ "accessibility_docs": null,
10023
10436
  "is_form_component": false,
10024
10437
  "is_published": true,
10025
10438
  "requires_js": false,
@@ -10342,6 +10755,7 @@
10342
10755
  {
10343
10756
  "fully_qualified_name": "Primer::Beta::ButtonGroup",
10344
10757
  "description": "Use `ButtonGroup` to render a series of buttons.",
10758
+ "accessibility_docs": null,
10345
10759
  "is_form_component": false,
10346
10760
  "is_published": true,
10347
10761
  "requires_js": false,
@@ -10462,6 +10876,7 @@
10462
10876
  {
10463
10877
  "fully_qualified_name": "Primer::Beta::ClipboardCopy",
10464
10878
  "description": "Use `ClipboardCopy` to copy element text content or input values to the clipboard.",
10879
+ "accessibility_docs": "Always set an accessible label to help the user interact with the component.",
10465
10880
  "is_form_component": false,
10466
10881
  "is_published": true,
10467
10882
  "requires_js": true,
@@ -10564,6 +10979,7 @@
10564
10979
  {
10565
10980
  "fully_qualified_name": "Primer::Beta::CloseButton",
10566
10981
  "description": "Use `CloseButton` to render an `×` without default button styles.\n\n[0]: https://primer.style/view-components/system-arguments#html-attributes",
10982
+ "accessibility_docs": "`CloseButton` has a default `aria-label` of \"Close\" to provides assistive technologies with an accessible label.\nYou may choose to override this label with something more descriptive via [system_arguments][0].",
10567
10983
  "is_form_component": false,
10568
10984
  "is_published": true,
10569
10985
  "requires_js": false,
@@ -10634,6 +11050,7 @@
10634
11050
  {
10635
11051
  "fully_qualified_name": "Primer::Beta::Counter",
10636
11052
  "description": "Use `Counter` to add a count to navigational elements and buttons.",
11053
+ "accessibility_docs": "Always use `Counter` with adjacent text that provides supplementary information regarding what the count is for. For instance, `Counter`\nshould be accompanied with text such as `issues` or `pull requests`.",
10637
11054
  "is_form_component": false,
10638
11055
  "is_published": true,
10639
11056
  "requires_js": false,
@@ -10858,6 +11275,7 @@
10858
11275
  {
10859
11276
  "fully_qualified_name": "Primer::Beta::Details",
10860
11277
  "description": "Use `DetailsComponent` to reveal content after clicking a button.",
11278
+ "accessibility_docs": null,
10861
11279
  "is_form_component": false,
10862
11280
  "is_published": true,
10863
11281
  "requires_js": false,
@@ -10997,6 +11415,7 @@
10997
11415
  {
10998
11416
  "fully_qualified_name": "Primer::Beta::Flash",
10999
11417
  "description": "Use `Flash` to inform users of successful or pending actions.",
11418
+ "accessibility_docs": null,
11000
11419
  "is_form_component": false,
11001
11420
  "is_published": true,
11002
11421
  "requires_js": false,
@@ -11187,6 +11606,7 @@
11187
11606
  {
11188
11607
  "fully_qualified_name": "Primer::Beta::Heading",
11189
11608
  "description": "`Heading` should be used to communicate page organization and hierarchy.\n\n- Set tag to one of `:h1`, `:h2`, `:h3`, `:h4`, `:h5`, `:h6` based on what is appropriate for the page context.\n- Use `Heading` as the title of a section or sub section.\n- Do not use `Heading` for styling alone. For simply styling text, consider using {{#link_to_component}}Primer::Beta::Text{{/link_to_component}} with relevant {{link_to_typography_docs}}\n such as `font_size` and `font_weight`.\n- Do not jump heading levels. For instance, do not follow a `<h1>` with an `<h3>`. Heading levels should increase by one in ascending order.",
11609
+ "accessibility_docs": "While sighted users rely on visual cues such as font size changes to determine what the heading is, assistive technology users rely on programatic cues that can be read out.\nWhen text on a page is visually implied to be a heading, ensure that it is coded as a heading. Additionally, visually implied heading level and coded heading level should be\nconsistent. [See WCAG success criteria: 1.3.1: Info and Relationships](https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html)\n\nHeadings allow assistive technology users to quickly navigate around a page. Navigation to text that is not meant to be a heading can be a confusing experience.\n<%= link_to_heading_practices %>",
11190
11610
  "is_form_component": false,
11191
11611
  "is_published": true,
11192
11612
  "requires_js": false,
@@ -11251,6 +11671,7 @@
11251
11671
  {
11252
11672
  "fully_qualified_name": "Primer::Beta::IconButton",
11253
11673
  "description": "Use `IconButton` to render Icon-only buttons without the default button styles.\n\n`IconButton` will always render with a tooltip unless the tag is `:summary`.",
11674
+ "accessibility_docs": "`IconButton` requires an `aria-label`, which will provide assistive technologies with an accessible label.\nThe `aria-label` should describe the action to be invoked rather than the icon itself. For instance,\nif your `IconButton` renders a magnifying glass icon and invokes a search action, the `aria-label` should be\n`\"Search\"` instead of `\"Magnifying glass\"`.\nEither `aria-label` or `aria-description` will be used for the `Tooltip` text, depending on which one is present.\nEither `aria-label` or `aria-description` will be used for the `Tooltip` text, depending on which one is present.\n[Learn more about best functional image practices (WAI Images)](https://www.w3.org/WAI/tutorials/images/functional)",
11254
11675
  "is_form_component": false,
11255
11676
  "is_published": true,
11256
11677
  "requires_js": false,
@@ -11401,6 +11822,7 @@
11401
11822
  {
11402
11823
  "fully_qualified_name": "Primer::Beta::Label",
11403
11824
  "description": "Use `Label` to add contextual metadata to a design.",
11825
+ "accessibility_docs": "Use `aria-label` if the `Label` or the context around it don't explain the label.",
11404
11826
  "is_form_component": false,
11405
11827
  "is_published": true,
11406
11828
  "requires_js": false,
@@ -11671,6 +12093,7 @@
11671
12093
  {
11672
12094
  "fully_qualified_name": "Primer::Beta::Link",
11673
12095
  "description": "Use `Link` for navigating from one page to another. `Link` styles anchor tags with default blue styling and hover text-decoration.",
12096
+ "accessibility_docs": null,
11674
12097
  "is_form_component": false,
11675
12098
  "is_published": true,
11676
12099
  "requires_js": true,
@@ -11848,6 +12271,7 @@
11848
12271
  {
11849
12272
  "fully_qualified_name": "Primer::Beta::Markdown",
11850
12273
  "description": "Use `Markdown` to wrap markdown content.",
12274
+ "accessibility_docs": null,
11851
12275
  "is_form_component": false,
11852
12276
  "is_published": true,
11853
12277
  "requires_js": false,
@@ -11887,6 +12311,7 @@
11887
12311
  {
11888
12312
  "fully_qualified_name": "Primer::Beta::Octicon",
11889
12313
  "description": "`Octicon` renders an {{link_to_octicons}} with {{link_to_system_arguments_docs}}.\n`Octicon` can also be rendered with the `primer_octicon` helper, which accepts the same arguments.",
12314
+ "accessibility_docs": null,
11890
12315
  "is_form_component": false,
11891
12316
  "is_published": true,
11892
12317
  "requires_js": false,
@@ -11969,6 +12394,7 @@
11969
12394
  {
11970
12395
  "fully_qualified_name": "Primer::Beta::Popover",
11971
12396
  "description": "Use `Popover` to bring attention to specific user interface elements, typically to suggest an action or to guide users through a new experience.\n\nBy default, the popover renders with absolute positioning, meaning it should usually be wrapped in an element with a relative position in order to be positioned properly. To render the popover with relative positioning, use the relative property.",
12397
+ "accessibility_docs": null,
11972
12398
  "is_form_component": false,
11973
12399
  "is_published": true,
11974
12400
  "requires_js": false,
@@ -12133,6 +12559,7 @@
12133
12559
  {
12134
12560
  "fully_qualified_name": "Primer::Beta::ProgressBar",
12135
12561
  "description": "Use `ProgressBar` to visualize task completion.",
12562
+ "accessibility_docs": null,
12136
12563
  "is_form_component": false,
12137
12564
  "is_published": true,
12138
12565
  "requires_js": false,
@@ -12259,6 +12686,7 @@
12259
12686
  {
12260
12687
  "fully_qualified_name": "Primer::Beta::RelativeTime",
12261
12688
  "description": "Formats a timestamp as a localized string or as relative text that auto-updates in the user's browser.",
12689
+ "accessibility_docs": null,
12262
12690
  "is_form_component": false,
12263
12691
  "is_published": true,
12264
12692
  "requires_js": false,
@@ -12458,6 +12886,7 @@
12458
12886
  {
12459
12887
  "fully_qualified_name": "Primer::Beta::Spinner",
12460
12888
  "description": "Use `Spinner` to let users know that content is being loaded.",
12889
+ "accessibility_docs": null,
12461
12890
  "is_form_component": false,
12462
12891
  "is_published": true,
12463
12892
  "requires_js": false,
@@ -12528,6 +12957,7 @@
12528
12957
  {
12529
12958
  "fully_qualified_name": "Primer::Beta::State",
12530
12959
  "description": "Use `State` for rendering the status of an item.",
12960
+ "accessibility_docs": null,
12531
12961
  "is_form_component": false,
12532
12962
  "is_published": true,
12533
12963
  "requires_js": false,
@@ -12688,6 +13118,7 @@
12688
13118
  {
12689
13119
  "fully_qualified_name": "Primer::Beta::Subhead",
12690
13120
  "description": "Use `Subhead` as the start of a section. The `:heading` slot will render an `<h2>` font-sized text.\n\n- Optionally set the `:description` slot to render a short description and the `:actions` slot for a related action.\n- Use a succinct, one-line description for the `:description` slot. For longer descriptions, omit the description slot and render a paragraph below the `Subhead`.\n- Use the actions slot to render a related action to the right of the heading. Use {{#link_to_component}}Primer::ButtonComponent{{/link_to_component}} or {{#link_to_component}}Primer::Beta::Link{{/link_to_component}}.",
13121
+ "accessibility_docs": "The `:heading` slot defaults to rendering a `<div>`. Update the tag to a heading element with the appropriate level to improve page navigation for assistive technologies.\n<%= link_to_heading_practices %>",
12691
13122
  "is_form_component": false,
12692
13123
  "is_published": true,
12693
13124
  "requires_js": false,
@@ -12870,6 +13301,7 @@
12870
13301
  {
12871
13302
  "fully_qualified_name": "Primer::Beta::Text",
12872
13303
  "description": "`Text` is a wrapper component that will apply typography styles to the text inside.",
13304
+ "accessibility_docs": null,
12873
13305
  "is_form_component": false,
12874
13306
  "is_published": true,
12875
13307
  "requires_js": false,
@@ -12934,6 +13366,7 @@
12934
13366
  {
12935
13367
  "fully_qualified_name": "Primer::Beta::TimelineItem",
12936
13368
  "description": "Use `TimelineItem` to display items on a vertical timeline, connected by badge elements.",
13369
+ "accessibility_docs": null,
12937
13370
  "is_form_component": false,
12938
13371
  "is_published": true,
12939
13372
  "requires_js": false,
@@ -13036,6 +13469,7 @@
13036
13469
  {
13037
13470
  "fully_qualified_name": "Primer::Beta::TimelineItem::Badge",
13038
13471
  "description": "This component is part of `Primer::Beta::TimelineItem` and should not be\nused as a standalone component.",
13472
+ "accessibility_docs": null,
13039
13473
  "is_form_component": false,
13040
13474
  "is_published": true,
13041
13475
  "requires_js": false,
@@ -13066,6 +13500,7 @@
13066
13500
  {
13067
13501
  "fully_qualified_name": "Primer::Beta::Truncate",
13068
13502
  "description": "Use `Truncate` to shorten overflowing text with an ellipsis.",
13503
+ "accessibility_docs": null,
13069
13504
  "is_form_component": false,
13070
13505
  "is_published": true,
13071
13506
  "requires_js": false,
@@ -13189,6 +13624,7 @@
13189
13624
  {
13190
13625
  "fully_qualified_name": "Primer::Beta::Truncate::TruncateText",
13191
13626
  "description": "This component is part of `Primer::Beta::Truncate` and should not be\nused as a standalone component.",
13627
+ "accessibility_docs": null,
13192
13628
  "is_form_component": false,
13193
13629
  "is_published": true,
13194
13630
  "requires_js": false,
@@ -13219,6 +13655,7 @@
13219
13655
  {
13220
13656
  "fully_qualified_name": "Primer::BlankslateComponent",
13221
13657
  "description": "Use `Blankslate` when there is a lack of content within a page or section. Use as placeholder to tell users why something isn't there.",
13658
+ "accessibility_docs": "`Blankslate` renders an `<h3>` element for the title by default. Update the heading level based on what is appropriate for your page hierarchy by setting `title_tag`.\n<%= link_to_heading_practices %>",
13222
13659
  "is_form_component": false,
13223
13660
  "is_published": true,
13224
13661
  "requires_js": false,
@@ -13353,6 +13790,7 @@
13353
13790
  {
13354
13791
  "fully_qualified_name": "Primer::Box",
13355
13792
  "description": "`Box` is a basic wrapper component for most layout related needs.",
13793
+ "accessibility_docs": null,
13356
13794
  "is_form_component": false,
13357
13795
  "is_published": true,
13358
13796
  "requires_js": false,
@@ -13437,6 +13875,7 @@
13437
13875
  {
13438
13876
  "fully_qualified_name": "Primer::ButtonComponent",
13439
13877
  "description": "Use `Button` for actions (e.g. in forms). Use links for destinations, or moving from one page to another.",
13878
+ "accessibility_docs": null,
13440
13879
  "is_form_component": false,
13441
13880
  "is_published": true,
13442
13881
  "requires_js": true,
@@ -13572,6 +14011,7 @@
13572
14011
  {
13573
14012
  "fully_qualified_name": "Primer::ConditionalWrapper",
13574
14013
  "description": "Conditionally renders a `Primer::BaseComponent` around the given content. If the given condition\nis true, a `Primer::BaseComponent` will render around the content. If the condition is false, only\nthe content is rendered.",
14014
+ "accessibility_docs": null,
13575
14015
  "is_form_component": false,
13576
14016
  "is_published": true,
13577
14017
  "requires_js": false,
@@ -13582,7 +14022,18 @@
13582
14022
  "source": "https://github.com/primer/view_components/tree/main/app/components/primer/conditional_wrapper.rb",
13583
14023
  "lookbook": "https://primer.style/view-components/lookbook/inspect/primer/conditional_wrapper/default/",
13584
14024
  "parameters": [
13585
-
14025
+ {
14026
+ "name": "condition",
14027
+ "type": "Boolean",
14028
+ "default": "N/A",
14029
+ "description": "Whether or not to wrap the content in a `Primer::BaseComponent`."
14030
+ },
14031
+ {
14032
+ "name": "base_component_arguments",
14033
+ "type": "Hash",
14034
+ "default": "N/A",
14035
+ "description": "The arguments to pass to `Primer::BaseComponent`."
14036
+ }
13586
14037
  ],
13587
14038
  "slots": [
13588
14039
 
@@ -13600,6 +14051,7 @@
13600
14051
  {
13601
14052
  "fully_qualified_name": "Primer::Content",
13602
14053
  "description": "Use `Content` as a helper to render content passed to a slot without adding any tags.",
14054
+ "accessibility_docs": null,
13603
14055
  "is_form_component": false,
13604
14056
  "is_published": true,
13605
14057
  "requires_js": false,
@@ -13628,6 +14080,7 @@
13628
14080
  {
13629
14081
  "fully_qualified_name": "Primer::IconButton",
13630
14082
  "description": "Use `IconButton` to render Icon-only buttons without the default button styles.\n\n`IconButton` will always render with a tooltip unless the tag is `:summary`.",
14083
+ "accessibility_docs": "`IconButton` requires an `aria-label`, which will provide assistive technologies with an accessible label.\nThe `aria-label` should describe the action to be invoked rather than the icon itself. For instance,\nif your `IconButton` renders a magnifying glass icon and invokes a search action, the `aria-label` should be\n`\"Search\"` instead of `\"Magnifying glass\"`.\nEither `aria-label` or `aria-description` will be used for the `Tooltip` text, depending on which one is present.\n[Learn more about best functional image practices (WAI Images)](https://www.w3.org/WAI/tutorials/images/functional)",
13631
14084
  "is_form_component": false,
13632
14085
  "is_published": true,
13633
14086
  "requires_js": true,
@@ -13709,6 +14162,7 @@
13709
14162
  {
13710
14163
  "fully_qualified_name": "Primer::LayoutComponent",
13711
14164
  "description": "Use `Layout` to build a main/sidebar layout.",
14165
+ "accessibility_docs": null,
13712
14166
  "is_form_component": false,
13713
14167
  "is_published": true,
13714
14168
  "requires_js": false,
@@ -13783,6 +14237,7 @@
13783
14237
  {
13784
14238
  "fully_qualified_name": "Primer::Navigation::TabComponent",
13785
14239
  "description": "nodoc",
14240
+ "accessibility_docs": null,
13786
14241
  "is_form_component": false,
13787
14242
  "is_published": true,
13788
14243
  "requires_js": false,
@@ -13899,6 +14354,7 @@
13899
14354
  {
13900
14355
  "fully_qualified_name": "Primer::Tooltip",
13901
14356
  "description": "`Tooltip` is a wrapper component that will apply a tooltip to the provided content.",
14357
+ "accessibility_docs": null,
13902
14358
  "is_form_component": false,
13903
14359
  "is_published": true,
13904
14360
  "requires_js": false,
@@ -13962,6 +14418,7 @@
13962
14418
  {
13963
14419
  "fully_qualified_name": "Primer::Truncate",
13964
14420
  "description": "Use `Truncate` to shorten overflowing text with an ellipsis.",
14421
+ "accessibility_docs": null,
13965
14422
  "is_form_component": false,
13966
14423
  "is_published": true,
13967
14424
  "requires_js": false,
@@ -14020,6 +14477,6 @@
14020
14477
  "component": "BaseComponent",
14021
14478
  "fully_qualified_name": "Primer::BaseComponent",
14022
14479
  "description_md": "All Primer ViewComponents accept a standard set of options called system arguments, mimicking the [styled-system API](https://styled-system.com/table) used by [Primer React](https://primer.style/components/system-props).\n\nUnder the hood, system arguments are [mapped](https://github.com/primer/view_components/blob/main/lib/primer/classify.rb) to Primer CSS classes, with any remaining options passed to Rails' [`content_tag`](https://api.rubyonrails.org/classes/ActionView/Helpers/TagHelper.html#method-i-content_tag).\n\n## Responsive values\n\nTo apply different values across responsive breakpoints, pass an array with up to five values in the order `[default, small, medium, large, xlarge]`. To skip a breakpoint, pass `nil`.\n\nFor example:\n\n```erb\n<%= render Primer::Beta::Heading.new(mt: [0, nil, nil, 4, 2]) do %>\n Hello world\n<% end %>\n```\n\nRenders:\n\n```html\n<h1 class=\"mt-0 mt-lg-4 mt-xl-2\">Hello world</h1>\n```",
14023
- "args_md": "## HTML attributes\n\nSystem arguments include most HTML attributes. For example:\n\n| Name | Type | Description |\n| :- | :- | :- |\n| `aria` | `Hash` | Aria attributes: `aria: { label: \"foo\" }` renders `aria-label='foo'`. |\n| `data` | `Hash` | Data attributes: `data: { foo: :bar }` renders `data-foo='bar'`. |\n| `height` | `Integer` | Height. |\n| `hidden` | `Boolean` | Whether to assign the `hidden` attribute. |\n| `style` | `String` | Inline styles. |\n| `title` | `String` | The `title` attribute. |\n| `width` | `Integer` | Width. |\n\n## Animation\n\n| Name | Type | Description |\n| :- | :- | :- |\n| `animation` | Symbol | One of `:fade_down`, `:fade_in`, `:fade_out`, `:fade_up`, `:grow_x`, `:hover_grow`, `:pulse`, `:pulse_in`, `:rotate`, `:scale_in`, or `:shrink_x`. |\n\n## Border\n\n| Name | Type | Description |\n| :- | :- | :- |\n| `border_bottom` | Integer | Set to `0` to remove the bottom border. |\n| `border_left` | Integer | Set to `0` to remove the left border. |\n| `border_radius` | Integer | One of `0`, `1`, `2`, or `3`. |\n| `border_right` | Integer | Set to `0` to remove the right border. |\n| `border_top` | Integer | Set to `0` to remove the top border. |\n| `border` | Symbol | One of `:bottom`, `:left`, `:right`, `:top`, `:x`, `:y`, or `true`. |\n| `box_shadow` | Boolean, Symbol | Box shadow. One of `:extra_large`, `:large`, `:medium`, `:none`, or `true`. |\n\n## Color\n\n| Name | Type | Description |\n| :- | :- | :- |\n| `bg` | Symbol | Background color. One of `:accent`, `:accent_emphasis`, `:attention`, `:attention_emphasis`, `:closed`, `:closed_emphasis`, `:danger`, `:danger_emphasis`, `:default`, `:done`, `:done_emphasis`, `:emphasis`, `:inset`, `:open`, `:open_emphasis`, `:overlay`, `:severe`, `:severe_emphasis`, `:sponsors`, `:sponsors_emphasis`, `:subtle`, `:success`, `:success_emphasis`, or `:transparent`. |\n| `border_color` | Symbol | Border color. One of `:accent`, `:accent_emphasis`, `:attention`, `:attention_emphasis`, `:closed`, `:closed_emphasis`, `:danger`, `:danger_emphasis`, `:default`, `:done`, `:done_emphasis`, `:muted`, `:open`, `:open_emphasis`, `:severe`, `:severe_emphasis`, `:sponsors`, `:sponsors_emphasis`, `:subtle`, `:success`, or `:success_emphasis`. |\n| `color` | Symbol | Text color. One of `:accent`, `:attention`, `:closed`, `:danger`, `:default`, `:done`, `:inherit`, `:muted`, `:on_emphasis`, `:open`, `:severe`, `:sponsors`, `:subtle`, or `:success`. |\n\n## Flex\n\n| Name | Type | Description |\n| :- | :- | :- |\n| `align_items` | Symbol | One of `:baseline`, `:center`, `:flex_end`, `:flex_start`, or `:stretch`. |\n| `align_self` | Symbol | One of `:auto`, `:baseline`, `:center`, `:end`, `:start`, or `:stretch`. |\n| `direction` | Symbol | One of `:column`, `:column_reverse`, `:row`, or `:row_reverse`. |\n| `flex` | Integer, Symbol | One of `1` or `:auto`. |\n| `flex_grow` | Integer | To enable, set to `0`. |\n| `flex_shrink` | Integer | To enable, set to `0`. |\n| `flex_wrap` | Symbol | One of `:nowrap`, `:reverse`, or `:wrap`. |\n| `justify_content` | Symbol | One of `:center`, `:flex_end`, `:flex_start`, `:space_around`, or `:space_between`. |\n\n## Grid\n\n| Name | Type | Description |\n| :- | :- | :- |\n| `clearfix` | Boolean | Whether to assign the `clearfix` class. |\n| `col` | Integer | Number of columns. One of `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, or `12`. |\n| `container` | Symbol | Size of the container. One of `:lg`, `:md`, `:sm`, or `:xl`. |\n\n## Layout\n\n| Name | Type | Description |\n| :- | :- | :- |\n| `display` | Symbol | One of `:block`, `:flex`, `:inline`, `:inline_block`, `:inline_flex`, `:none`, `:table`, or `:table_cell`. |\n| `w` | Symbol | One of `:auto`, `:fit`, or `:full`. |\n| `h` | Symbol | One of `:fit` or `:full`. |\n| `hide` | Symbol | Hide the element at a specific breakpoint. One of `:lg`, `:md`, `:sm`, `:whenNarrow`, `:whenRegular`, `:whenWide`, or `:xl`. |\n| `visibility` | Symbol | Visibility. One of `:hidden` or `:visible`. |\n| `vertical_align` | Symbol | One of `:baseline`, `:bottom`, `:middle`, `:text_bottom`, `:text_top`, or `:top`. |\n\n## Position\n\n| Name | Type | Description |\n| :- | :- | :- |\n| `bottom` | Boolean | If `false`, sets `bottom: 0`. |\n| `float` | Symbol | One of `:left`, `:none`, or `:right`. |\n| `left` | Boolean | If `false`, sets `left: 0`. |\n| `position` | Symbol | One of `:absolute`, `:fixed`, `:relative`, `:static`, or `:sticky`. |\n| `right` | Boolean | If `false`, sets `right: 0`. |\n| `top` | Boolean | If `false`, sets `top: 0`. |\n\n## Spacing\n\n| Name | Type | Description |\n| :- | :- | :- |\n| `m` | Integer | Margin. One of `0`, `1`, `2`, `3`, `4`, `5`, `6`, or `:auto`. |\n| `mb` | Integer | Margin bottom. One of `-12`, `-11`, `-10`, `-9`, `-8`, `-7`, `-6`, `-5`, `-4`, `-3`, `-2`, `-1`, `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, or `:auto`. |\n| `ml` | Integer | Margin left. One of `-6`, `-5`, `-4`, `-3`, `-2`, `-1`, `0`, `1`, `2`, `3`, `4`, `5`, `6`, or `:auto`. |\n| `mr` | Integer | Margin right. One of `-6`, `-5`, `-4`, `-3`, `-2`, `-1`, `0`, `1`, `2`, `3`, `4`, `5`, `6`, or `:auto`. |\n| `mt` | Integer | Margin top. One of `-12`, `-11`, `-10`, `-9`, `-8`, `-7`, `-6`, `-5`, `-4`, `-3`, `-2`, `-1`, `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, or `:auto`. |\n| `mx` | Integer | Horizontal margins. One of `0`, `1`, `2`, `3`, `4`, `5`, `6`, or `:auto`. |\n| `my` | Integer | Vertical margins. One of `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, or `12`. |\n| `p` | Integer | Padding. One of `0`, `1`, `2`, `3`, `4`, `5`, `6`, or `:responsive`. |\n| `pb` | Integer | Padding bottom. One of `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, or `12`. |\n| `pl` | Integer | Padding left. One of `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, or `12`. |\n| `pr` | Integer | Padding right. One of `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, or `12`. |\n| `pt` | Integer | Padding left. One of `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, or `12`. |\n| `px` | Integer | Horizontal padding. One of `0`, `1`, `2`, `3`, `4`, `5`, or `6`. |\n| `py` | Integer | Vertical padding. One of `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, or `12`. |\n\n## Typography\n\n| Name | Type | Description |\n| :- | :- | :- |\n| `font_family` | Symbol | Font family. One of `:mono`. |\n| `font_size` | String, Integer, Symbol | One of `0`, `1`, `2`, `3`, `4`, `5`, `6`, `00`, `:normal`, or `:small`. |\n| `font_style` | Symbol | Font style. One of `:italic`. |\n| `font_weight` | Symbol | Font weight. One of `:bold`, `:emphasized`, `:light`, or `:normal`. |\n| `text_align` | Symbol | Text alignment. One of `:center`, `:left`, or `:right`. |\n| `text_transform` | Symbol | Text transformation. One of `:uppercase`. |\n| `underline` | Boolean | Whether text should be underlined. |\n| `word_break` | Symbol | Whether to break words on line breaks. One of `:break_all` or `:break_word`. |\n\n## Other\n\n| Name | Type | Description |\n| :- | :- | :- |\n| classes | String | CSS class name value to be concatenated with generated Primer CSS classes. |\n| test_selector | String | Adds `data-test-selector='given value'` in non-Production environments for testing purposes. |"
14480
+ "args_md": "## HTML attributes\n\nSystem arguments include most HTML attributes. For example:\n\n| Name | Type | Description |\n| :- | :- | :- |\n| `aria` | `Hash` | Aria attributes: `aria: { label: \"foo\" }` renders `aria-label='foo'`. |\n| `data` | `Hash` | Data attributes: `data: { foo: :bar }` renders `data-foo='bar'`. |\n| `height` | `Integer` | Height. |\n| `hidden` | `Boolean` | Whether to assign the `hidden` attribute. |\n| `style` | `String` | Inline styles. |\n| `title` | `String` | The `title` attribute. |\n| `width` | `Integer` | Width. |\n\n## Animation\n\n| Name | Type | Description |\n| :- | :- | :- |\n| `animation` | Symbol | One of `:fade_down`, `:fade_in`, `:fade_out`, `:fade_up`, `:grow_x`, `:hover_grow`, `:pulse`, `:pulse_in`, `:rotate`, `:scale_in`, or `:shrink_x`. |\n\n## Border\n\n| Name | Type | Description |\n| :- | :- | :- |\n| `border_bottom` | Integer | Set to `0` to remove the bottom border. |\n| `border_left` | Integer | Set to `0` to remove the left border. |\n| `border_radius` | Integer | One of `0`, `1`, `2`, or `3`. |\n| `border_right` | Integer | Set to `0` to remove the right border. |\n| `border_top` | Integer | Set to `0` to remove the top border. |\n| `border` | Symbol | One of `:bottom`, `:left`, `:right`, `:top`, `:x`, `:y`, or `true`. |\n| `box_shadow` | Boolean, Symbol | Box shadow. One of `:extra_large`, `:large`, `:medium`, `:none`, or `true`. |\n\n## Color\n\n| Name | Type | Description |\n| :- | :- | :- |\n| `bg` | Symbol | Background color. One of `:accent`, `:accent_emphasis`, `:attention`, `:attention_emphasis`, `:closed`, `:closed_emphasis`, `:danger`, `:danger_emphasis`, `:default`, `:done`, `:done_emphasis`, `:emphasis`, `:inset`, `:open`, `:open_emphasis`, `:overlay`, `:severe`, `:severe_emphasis`, `:sponsors`, `:sponsors_emphasis`, `:subtle`, `:success`, `:success_emphasis`, or `:transparent`. |\n| `border_color` | Symbol | Border color. One of `:accent`, `:accent_emphasis`, `:attention`, `:attention_emphasis`, `:closed`, `:closed_emphasis`, `:danger`, `:danger_emphasis`, `:default`, `:done`, `:done_emphasis`, `:muted`, `:open`, `:open_emphasis`, `:severe`, `:severe_emphasis`, `:sponsors`, `:sponsors_emphasis`, `:subtle`, `:success`, or `:success_emphasis`. |\n| `color` | Symbol | Text color. One of `:accent`, `:attention`, `:closed`, `:danger`, `:default`, `:done`, `:inherit`, `:muted`, `:on_emphasis`, `:open`, `:severe`, `:sponsors`, `:subtle`, or `:success`. |\n\n## Flex\n\n| Name | Type | Description |\n| :- | :- | :- |\n| `align_items` | Symbol | One of `:baseline`, `:center`, `:flex_end`, `:flex_start`, or `:stretch`. |\n| `align_self` | Symbol | One of `:auto`, `:baseline`, `:center`, `:end`, `:start`, or `:stretch`. |\n| `direction` | Symbol | One of `:column`, `:column_reverse`, `:row`, or `:row_reverse`. |\n| `flex` | Integer, Symbol | One of `1` or `:auto`. |\n| `flex_grow` | Integer | To enable, set to `0`. |\n| `flex_shrink` | Integer | To enable, set to `0`. |\n| `flex_wrap` | Symbol | One of `:nowrap`, `:reverse`, or `:wrap`. |\n| `justify_content` | Symbol | One of `:center`, `:flex_end`, `:flex_start`, `:space_around`, or `:space_between`. |\n\n## Grid\n\n| Name | Type | Description |\n| :- | :- | :- |\n| `clearfix` | Boolean | Whether to assign the `clearfix` class. |\n| `col` | Integer | Number of columns. One of `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, or `12`. |\n| `container` | Symbol | Size of the container. One of `:lg`, `:md`, `:sm`, or `:xl`. |\n\n## Layout\n\n| Name | Type | Description |\n| :- | :- | :- |\n| `display` | Symbol | One of `:block`, `:flex`, `:inline`, `:inline_block`, `:inline_flex`, `:none`, `:table`, or `:table_cell`. |\n| `w` | Symbol | One of `:auto`, `:fit`, or `:full`. |\n| `h` | Symbol | One of `:fit` or `:full`. |\n| `hide` | Symbol | Hide the element at a specific breakpoint. One of `:lg`, `:md`, `:sm`, `:whenNarrow`, `:whenRegular`, `:whenWide`, or `:xl`. |\n| `visibility` | Symbol | Visibility. One of `:hidden` or `:visible`. |\n| `vertical_align` | Symbol | One of `:baseline`, `:bottom`, `:middle`, `:text_bottom`, `:text_top`, or `:top`. |\n\n## Position\n\n| Name | Type | Description |\n| :- | :- | :- |\n| `bottom` | Boolean | If `false`, sets `bottom: 0`. |\n| `float` | Symbol | One of `:left`, `:none`, or `:right`. |\n| `left` | Boolean | If `false`, sets `left: 0`. |\n| `position` | Symbol | One of `:absolute`, `:fixed`, `:relative`, `:static`, or `:sticky`. |\n| `right` | Boolean | If `false`, sets `right: 0`. |\n| `top` | Boolean | If `false`, sets `top: 0`. |\n\n## Spacing\n\n| Name | Type | Description |\n| :- | :- | :- |\n| `m` | Integer | Margin. One of `0`, `1`, `2`, `3`, `4`, `5`, `6`, or `:auto`. |\n| `mb` | Integer | Margin bottom. One of `-12`, `-11`, `-10`, `-9`, `-8`, `-7`, `-6`, `-5`, `-4`, `-3`, `-2`, `-1`, `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, or `:auto`. |\n| `ml` | Integer | Margin left. One of `-6`, `-5`, `-4`, `-3`, `-2`, `-1`, `0`, `1`, `2`, `3`, `4`, `5`, `6`, or `:auto`. |\n| `mr` | Integer | Margin right. One of `-6`, `-5`, `-4`, `-3`, `-2`, `-1`, `0`, `1`, `2`, `3`, `4`, `5`, `6`, or `:auto`. |\n| `mt` | Integer | Margin top. One of `-12`, `-11`, `-10`, `-9`, `-8`, `-7`, `-6`, `-5`, `-4`, `-3`, `-2`, `-1`, `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, or `:auto`. |\n| `mx` | Integer | Horizontal margins. One of `0`, `1`, `2`, `3`, `4`, `5`, `6`, or `:auto`. |\n| `my` | Integer | Vertical margins. One of `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, or `12`. |\n| `p` | Integer | Padding. One of `0`, `1`, `2`, `3`, `4`, `5`, `6`, or `:responsive`. |\n| `pb` | Integer | Padding bottom. One of `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, or `12`. |\n| `pl` | Integer | Padding left. One of `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, or `12`. |\n| `pr` | Integer | Padding right. One of `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, or `12`. |\n| `pt` | Integer | Padding left. One of `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, or `12`. |\n| `px` | Integer | Horizontal padding. One of `0`, `1`, `2`, `3`, `4`, `5`, or `6`. |\n| `py` | Integer | Vertical padding. One of `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, or `12`. |\n\n## Typography\n\n| Name | Type | Description |\n| :- | :- | :- |\n| `font_family` | Symbol | Font family. One of `:mono`. |\n| `font_size` | String, Integer, Symbol | One of `0`, `1`, `2`, `3`, `4`, `5`, `6`, `00`, `:normal`, or `:small`. |\n| `font_style` | Symbol | Font style. One of `:italic`. |\n| `font_weight` | Symbol | Font weight. One of `:bold`, `:emphasized`, `:light`, or `:normal`. |\n| `text_align` | Symbol | Text alignment. One of `:center`, `:left`, or `:right`. |\n| `text_transform` | Symbol | Text transformation. One of `:capitalize` or `:uppercase`. |\n| `underline` | Boolean | Whether text should be underlined. |\n| `word_break` | Symbol | Whether to break words on line breaks. One of `:break_all` or `:break_word`. |\n\n## Other\n\n| Name | Type | Description |\n| :- | :- | :- |\n| classes | String | CSS class name value to be concatenated with generated Primer CSS classes. |\n| test_selector | String | Adds `data-test-selector='given value'` in non-Production environments for testing purposes. |"
14024
14481
  }
14025
14482
  ]