@primer/view-components 0.6.0-rc.dbee1f48 → 0.6.1-rc.1fca6dcf

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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,
@@ -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
  },
@@ -318,17 +328,23 @@
318
328
  "default": "`:block`",
319
329
  "description": "Optional. How to display the user's full name. One of `:block` or `:inline`."
320
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
+ },
321
337
  {
322
338
  "name": "avatar_arguments",
323
339
  "type": "Hash",
324
340
  "default": "`{}`",
325
- "description": "Optional. The arguments accepted by {{#link_to_component}}Primer::Beta::Avatar{{/link_to_component}}."
341
+ "description": "Optional. The arguments accepted by {{#link_to_component}}Primer::Beta::Avatar{{/link_to_component}}"
326
342
  },
327
343
  {
328
344
  "name": "system_arguments",
329
345
  "type": "Hash",
330
346
  "default": "N/A",
331
- "description": "The arguments accepted by {{#link_to_component}}Primer::Alpha::ActionList::Item{{/link_to_component}}."
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."
332
348
  }
333
349
  ]
334
350
  },
@@ -353,6 +369,72 @@
353
369
 
354
370
  ]
355
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
+ },
356
438
  {
357
439
  "name": "post_list_content_block",
358
440
  "description": "Returns the value of attribute post_list_content_block.",
@@ -653,6 +735,7 @@
653
735
  {
654
736
  "fully_qualified_name": "Primer::Alpha::ActionList::Item",
655
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,
656
739
  "is_form_component": false,
657
740
  "is_published": true,
658
741
  "requires_js": false,
@@ -893,6 +976,7 @@
893
976
  {
894
977
  "fully_qualified_name": "Primer::Alpha::ActionList::Heading",
895
978
  "description": "Heading used to describe each sub list within an action list.",
979
+ "accessibility_docs": null,
896
980
  "is_form_component": false,
897
981
  "is_published": true,
898
982
  "requires_js": false,
@@ -963,6 +1047,7 @@
963
1047
  {
964
1048
  "fully_qualified_name": "Primer::Alpha::ActionList::FormWrapper",
965
1049
  "description": "Utility component for wrapping ActionLists or individual ActionList::Items in forms.",
1050
+ "accessibility_docs": null,
966
1051
  "is_form_component": false,
967
1052
  "is_published": true,
968
1053
  "requires_js": false,
@@ -991,6 +1076,7 @@
991
1076
  {
992
1077
  "fully_qualified_name": "Primer::Alpha::ActionList::Divider",
993
1078
  "description": "Separator with optional text rendered above groups or between individual items.",
1079
+ "accessibility_docs": null,
994
1080
  "is_form_component": false,
995
1081
  "is_published": true,
996
1082
  "requires_js": false,
@@ -1032,6 +1118,7 @@
1032
1118
  {
1033
1119
  "fully_qualified_name": "Primer::Alpha::ActionMenu",
1034
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).",
1035
1122
  "is_form_component": false,
1036
1123
  "is_published": true,
1037
1124
  "requires_js": true,
@@ -1567,6 +1654,7 @@
1567
1654
  {
1568
1655
  "fully_qualified_name": "Primer::Alpha::ActionMenu::List",
1569
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,
1570
1658
  "is_form_component": false,
1571
1659
  "is_published": true,
1572
1660
  "requires_js": false,
@@ -1626,7 +1714,7 @@
1626
1714
  "name": "system_arguments",
1627
1715
  "type": "Hash",
1628
1716
  "default": "N/A",
1629
- "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."
1630
1718
  }
1631
1719
  ]
1632
1720
  },
@@ -1674,7 +1762,7 @@
1674
1762
  "name": "system_arguments",
1675
1763
  "type": "Hash",
1676
1764
  "default": "N/A",
1677
- "description": "The same arguments accepted by {{#link_to_component}}Primer::Alpha::ActionList::Item{{/link_to_component}}."
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."
1678
1766
  }
1679
1767
  ]
1680
1768
  }
@@ -1691,6 +1779,7 @@
1691
1779
  {
1692
1780
  "fully_qualified_name": "Primer::Alpha::AutoComplete",
1693
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.",
1694
1783
  "is_form_component": false,
1695
1784
  "is_published": true,
1696
1785
  "requires_js": false,
@@ -1886,6 +1975,7 @@
1886
1975
  {
1887
1976
  "fully_qualified_name": "Primer::Alpha::AutoComplete::Item",
1888
1977
  "description": "Use `AutoCompleteItem` to list results of an auto-completed search.",
1978
+ "accessibility_docs": null,
1889
1979
  "is_form_component": false,
1890
1980
  "is_published": true,
1891
1981
  "requires_js": false,
@@ -1939,6 +2029,7 @@
1939
2029
  {
1940
2030
  "fully_qualified_name": "Primer::Alpha::Banner",
1941
2031
  "description": "Use `Banner` to highlight important information.",
2032
+ "accessibility_docs": null,
1942
2033
  "is_form_component": false,
1943
2034
  "is_published": true,
1944
2035
  "requires_js": true,
@@ -1962,10 +2053,10 @@
1962
2053
  "description": "Whether the component should take up the full width of the screen when rendered inside smaller viewports."
1963
2054
  },
1964
2055
  {
1965
- "name": "dismissible",
1966
- "type": "Boolean",
1967
- "default": "`false`",
1968
- "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`."
1969
2060
  },
1970
2061
  {
1971
2062
  "name": "description",
@@ -1985,12 +2076,6 @@
1985
2076
  "default": "`:default`",
1986
2077
  "description": "One of `:danger`, `:default`, `:success`, or `:warning`."
1987
2078
  },
1988
- {
1989
- "name": "reappear",
1990
- "type": "Boolean",
1991
- "default": "`false`",
1992
- "description": "Whether or not the flash banner should reappear after being dismissed. Only for use in test and preview environments."
1993
- },
1994
2079
  {
1995
2080
  "name": "system_arguments",
1996
2081
  "type": "Hash",
@@ -2090,8 +2175,8 @@
2090
2175
  }
2091
2176
  },
2092
2177
  {
2093
- "preview_path": "primer/alpha/banner/dismissable",
2094
- "name": "dismissable",
2178
+ "preview_path": "primer/alpha/banner/dismissible",
2179
+ "name": "dismissible",
2095
2180
  "snapshot": "true",
2096
2181
  "skip_rules": {
2097
2182
  "wont_fix": [
@@ -2162,6 +2247,7 @@
2162
2247
  {
2163
2248
  "fully_qualified_name": "Primer::Alpha::ButtonMarketing",
2164
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,
2165
2251
  "is_form_component": false,
2166
2252
  "is_published": true,
2167
2253
  "requires_js": false,
@@ -2328,6 +2414,7 @@
2328
2414
  {
2329
2415
  "fully_qualified_name": "Primer::Alpha::CheckBox",
2330
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,
2331
2418
  "is_form_component": true,
2332
2419
  "is_published": false,
2333
2420
  "requires_js": false,
@@ -2564,6 +2651,7 @@
2564
2651
  {
2565
2652
  "fully_qualified_name": "Primer::Alpha::CheckBoxGroup",
2566
2653
  "description": "Check box groups consist of one or more related check boxes.",
2654
+ "accessibility_docs": null,
2567
2655
  "is_form_component": true,
2568
2656
  "is_published": false,
2569
2657
  "requires_js": false,
@@ -2715,6 +2803,7 @@
2715
2803
  {
2716
2804
  "fully_qualified_name": "Primer::Alpha::Dialog",
2717
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.",
2718
2807
  "is_form_component": false,
2719
2808
  "is_published": true,
2720
2809
  "requires_js": false,
@@ -2974,6 +3063,7 @@
2974
3063
  {
2975
3064
  "fully_qualified_name": "Primer::Alpha::Dialog::Header",
2976
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,
2977
3067
  "is_form_component": false,
2978
3068
  "is_published": true,
2979
3069
  "requires_js": false,
@@ -3031,6 +3121,7 @@
3031
3121
  {
3032
3122
  "fully_qualified_name": "Primer::Alpha::Dialog::Footer",
3033
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,
3034
3125
  "is_form_component": false,
3035
3126
  "is_published": true,
3036
3127
  "requires_js": false,
@@ -3070,6 +3161,7 @@
3070
3161
  {
3071
3162
  "fully_qualified_name": "Primer::Alpha::Dialog::Body",
3072
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,
3073
3165
  "is_form_component": false,
3074
3166
  "is_published": true,
3075
3167
  "requires_js": false,
@@ -3105,6 +3197,7 @@
3105
3197
  {
3106
3198
  "fully_qualified_name": "Primer::Alpha::Dropdown",
3107
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,
3108
3201
  "is_form_component": false,
3109
3202
  "is_published": true,
3110
3203
  "requires_js": true,
@@ -3383,6 +3476,7 @@
3383
3476
  {
3384
3477
  "fully_qualified_name": "Primer::Alpha::Dropdown::Menu::Item",
3385
3478
  "description": "Items to be rendered in the `Dropdown` menu.",
3479
+ "accessibility_docs": null,
3386
3480
  "is_form_component": false,
3387
3481
  "is_published": true,
3388
3482
  "requires_js": false,
@@ -3411,6 +3505,7 @@
3411
3505
  {
3412
3506
  "fully_qualified_name": "Primer::Alpha::Dropdown::Menu",
3413
3507
  "description": "This component is part of `Dropdown` and should not be\nused as a standalone component.",
3508
+ "accessibility_docs": null,
3414
3509
  "is_form_component": false,
3415
3510
  "is_published": true,
3416
3511
  "requires_js": false,
@@ -3487,6 +3582,7 @@
3487
3582
  {
3488
3583
  "fully_qualified_name": "Primer::Alpha::FormButton",
3489
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,
3490
3586
  "is_form_component": true,
3491
3587
  "is_published": false,
3492
3588
  "requires_js": false,
@@ -3562,6 +3658,7 @@
3562
3658
  {
3563
3659
  "fully_qualified_name": "Primer::Alpha::FormControl",
3564
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,
3565
3662
  "is_form_component": false,
3566
3663
  "is_published": true,
3567
3664
  "requires_js": false,
@@ -3721,6 +3818,7 @@
3721
3818
  {
3722
3819
  "fully_qualified_name": "Primer::Alpha::HellipButton",
3723
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\")`",
3724
3822
  "is_form_component": false,
3725
3823
  "is_published": true,
3726
3824
  "requires_js": false,
@@ -3791,6 +3889,7 @@
3791
3889
  {
3792
3890
  "fully_qualified_name": "Primer::Alpha::HiddenTextExpander",
3793
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\"`.",
3794
3893
  "is_form_component": false,
3795
3894
  "is_published": true,
3796
3895
  "requires_js": false,
@@ -3861,6 +3960,7 @@
3861
3960
  {
3862
3961
  "fully_qualified_name": "Primer::Alpha::Image",
3863
3962
  "description": "Use `Image` to render images.",
3963
+ "accessibility_docs": "Always provide a meaningful `alt`.",
3864
3964
  "is_form_component": false,
3865
3965
  "is_published": true,
3866
3966
  "requires_js": false,
@@ -3912,6 +4012,7 @@
3912
4012
  {
3913
4013
  "fully_qualified_name": "Primer::Alpha::ImageCrop",
3914
4014
  "description": "A client-side mechanism to crop images.",
4015
+ "accessibility_docs": null,
3915
4016
  "is_form_component": false,
3916
4017
  "is_published": true,
3917
4018
  "requires_js": true,
@@ -4006,6 +4107,7 @@
4006
4107
  {
4007
4108
  "fully_qualified_name": "Primer::Alpha::Layout",
4008
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.",
4009
4111
  "is_form_component": false,
4010
4112
  "is_published": true,
4011
4113
  "requires_js": false,
@@ -4373,6 +4475,7 @@
4373
4475
  {
4374
4476
  "fully_qualified_name": "Primer::Alpha::Layout::Sidebar",
4375
4477
  "description": "The layout's sidebar content.",
4478
+ "accessibility_docs": null,
4376
4479
  "is_form_component": false,
4377
4480
  "is_published": true,
4378
4481
  "requires_js": false,
@@ -4401,6 +4504,7 @@
4401
4504
  {
4402
4505
  "fully_qualified_name": "Primer::Alpha::Layout::Main",
4403
4506
  "description": "The layout's main content.",
4507
+ "accessibility_docs": null,
4404
4508
  "is_form_component": false,
4405
4509
  "is_published": true,
4406
4510
  "requires_js": false,
@@ -4442,6 +4546,7 @@
4442
4546
  {
4443
4547
  "fully_qualified_name": "Primer::Alpha::Menu",
4444
4548
  "description": "Use `Menu` to create vertical lists of navigational links.",
4549
+ "accessibility_docs": null,
4445
4550
  "is_form_component": false,
4446
4551
  "is_published": true,
4447
4552
  "requires_js": false,
@@ -4541,6 +4646,7 @@
4541
4646
  {
4542
4647
  "fully_qualified_name": "Primer::Alpha::MultiInput",
4543
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,
4544
4650
  "is_form_component": true,
4545
4651
  "is_published": false,
4546
4652
  "requires_js": true,
@@ -4740,6 +4846,7 @@
4740
4846
  {
4741
4847
  "fully_qualified_name": "Primer::Alpha::NavList",
4742
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,
4743
4850
  "is_form_component": false,
4744
4851
  "is_published": true,
4745
4852
  "requires_js": true,
@@ -4787,14 +4894,14 @@
4787
4894
  {
4788
4895
  "name": "component_klass",
4789
4896
  "type": "Class",
4790
- "default": "N/A",
4791
- "description": "The component class to use. Defaults to `Primer::Alpha::NavList::Item`."
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}}"
4792
4899
  },
4793
4900
  {
4794
4901
  "name": "system_arguments",
4795
4902
  "type": "Hash",
4796
4903
  "default": "N/A",
4797
- "description": "The arguments accepted by the `component_klass` class."
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."
4798
4905
  }
4799
4906
  ]
4800
4907
  },
@@ -4829,20 +4936,20 @@
4829
4936
  {
4830
4937
  "name": "component_klass",
4831
4938
  "type": "Class",
4832
- "default": "N/A",
4833
- "description": "The component class to use. Defaults to `Primer::Alpha::NavList::Item`."
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}}"
4834
4941
  },
4835
4942
  {
4836
4943
  "name": "avatar_arguments",
4837
4944
  "type": "Hash",
4838
4945
  "default": "`{}`",
4839
- "description": "Optional. The arguments accepted by {{#link_to_component}}Primer::Beta::Avatar{{/link_to_component}}."
4946
+ "description": "Optional. The arguments accepted by {{#link_to_component}}Primer::Beta::Avatar{{/link_to_component}}"
4840
4947
  },
4841
4948
  {
4842
4949
  "name": "system_arguments",
4843
4950
  "type": "Hash",
4844
4951
  "default": "N/A",
4845
- "description": "The arguments accepted by the `component_klass` class."
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."
4846
4953
  }
4847
4954
  ]
4848
4955
  },
@@ -4870,6 +4977,72 @@
4870
4977
  }
4871
4978
  ]
4872
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."
5043
+ }
5044
+ ]
5045
+ },
4873
5046
  {
4874
5047
  "name": "render_outer_list?",
4875
5048
  "description": "Lists that contain top-level items (i.e. items outside of a group) should be wrapped in a <ul>",
@@ -4949,6 +5122,7 @@
4949
5122
  {
4950
5123
  "fully_qualified_name": "Primer::Alpha::NavList::Heading",
4951
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,
4952
5126
  "is_form_component": false,
4953
5127
  "is_published": true,
4954
5128
  "requires_js": false,
@@ -5027,6 +5201,7 @@
5027
5201
  {
5028
5202
  "fully_qualified_name": "Primer::Alpha::NavList::Item",
5029
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,
5030
5205
  "is_form_component": false,
5031
5206
  "is_published": true,
5032
5207
  "requires_js": true,
@@ -5180,6 +5355,7 @@
5180
5355
  {
5181
5356
  "fully_qualified_name": "Primer::Alpha::NavList::Divider",
5182
5357
  "description": "Separator with optional text rendered above groups or between individual items.",
5358
+ "accessibility_docs": null,
5183
5359
  "is_form_component": false,
5184
5360
  "is_published": true,
5185
5361
  "requires_js": false,
@@ -5219,6 +5395,7 @@
5219
5395
  {
5220
5396
  "fully_qualified_name": "Primer::Alpha::NavList::Group",
5221
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,
5222
5399
  "is_form_component": false,
5223
5400
  "is_published": true,
5224
5401
  "requires_js": true,
@@ -5319,6 +5496,7 @@
5319
5496
  {
5320
5497
  "fully_qualified_name": "Primer::Alpha::Navigation::Tab",
5321
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\"",
5322
5500
  "is_form_component": false,
5323
5501
  "is_published": true,
5324
5502
  "requires_js": false,
@@ -5441,6 +5619,7 @@
5441
5619
  {
5442
5620
  "fully_qualified_name": "Primer::Alpha::OcticonSymbols",
5443
5621
  "description": "OcticonSymbols renders a symbol dictionary using a list of {{link_to_octicons}}.",
5622
+ "accessibility_docs": null,
5444
5623
  "is_form_component": false,
5445
5624
  "is_published": true,
5446
5625
  "requires_js": false,
@@ -5474,6 +5653,7 @@
5474
5653
  {
5475
5654
  "fully_qualified_name": "Primer::Alpha::Overlay",
5476
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.",
5477
5657
  "is_form_component": false,
5478
5658
  "is_published": true,
5479
5659
  "requires_js": true,
@@ -5748,6 +5928,7 @@
5748
5928
  {
5749
5929
  "fully_qualified_name": "Primer::Alpha::Overlay::Header",
5750
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,
5751
5932
  "is_form_component": false,
5752
5933
  "is_published": true,
5753
5934
  "requires_js": false,
@@ -5817,6 +5998,7 @@
5817
5998
  {
5818
5999
  "fully_qualified_name": "Primer::Alpha::Overlay::Footer",
5819
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,
5820
6002
  "is_form_component": false,
5821
6003
  "is_published": true,
5822
6004
  "requires_js": false,
@@ -5862,6 +6044,7 @@
5862
6044
  {
5863
6045
  "fully_qualified_name": "Primer::Alpha::Overlay::Body",
5864
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,
5865
6048
  "is_form_component": false,
5866
6049
  "is_published": true,
5867
6050
  "requires_js": false,
@@ -5897,6 +6080,7 @@
5897
6080
  {
5898
6081
  "fully_qualified_name": "Primer::Alpha::RadioButton",
5899
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,
5900
6084
  "is_form_component": true,
5901
6085
  "is_published": false,
5902
6086
  "requires_js": false,
@@ -6109,6 +6293,7 @@
6109
6293
  {
6110
6294
  "fully_qualified_name": "Primer::Alpha::RadioButtonGroup",
6111
6295
  "description": "A group of mutually exclusive radio buttons.",
6296
+ "accessibility_docs": null,
6112
6297
  "is_form_component": true,
6113
6298
  "is_published": false,
6114
6299
  "requires_js": false,
@@ -6260,6 +6445,7 @@
6260
6445
  {
6261
6446
  "fully_qualified_name": "Primer::Alpha::SegmentedControl",
6262
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.",
6263
6449
  "is_form_component": false,
6264
6450
  "is_published": true,
6265
6451
  "requires_js": false,
@@ -6539,6 +6725,7 @@
6539
6725
  {
6540
6726
  "fully_qualified_name": "Primer::Alpha::SegmentedControl::Item",
6541
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,
6542
6729
  "is_form_component": false,
6543
6730
  "is_published": true,
6544
6731
  "requires_js": false,
@@ -6592,6 +6779,7 @@
6592
6779
  {
6593
6780
  "fully_qualified_name": "Primer::Alpha::Select",
6594
6781
  "description": "Select lists are single-line text inputs rendered as `<select>` tags in HTML.",
6782
+ "accessibility_docs": null,
6595
6783
  "is_form_component": true,
6596
6784
  "is_published": false,
6597
6785
  "requires_js": false,
@@ -6871,6 +7059,7 @@
6871
7059
  {
6872
7060
  "fully_qualified_name": "Primer::Alpha::SubmitButton",
6873
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,
6874
7063
  "is_form_component": true,
6875
7064
  "is_published": false,
6876
7065
  "requires_js": false,
@@ -6946,6 +7135,7 @@
6946
7135
  {
6947
7136
  "fully_qualified_name": "Primer::Alpha::TabContainer",
6948
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,
6949
7139
  "is_form_component": false,
6950
7140
  "is_published": true,
6951
7141
  "requires_js": true,
@@ -6979,6 +7169,7 @@
6979
7169
  {
6980
7170
  "fully_qualified_name": "Primer::Alpha::TabNav",
6981
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.",
6982
7173
  "is_form_component": false,
6983
7174
  "is_published": true,
6984
7175
  "requires_js": false,
@@ -7110,6 +7301,7 @@
7110
7301
  {
7111
7302
  "fully_qualified_name": "Primer::Alpha::TabPanels",
7112
7303
  "description": "Use `TabPanels` for tabs with panel navigation.",
7304
+ "accessibility_docs": null,
7113
7305
  "is_form_component": false,
7114
7306
  "is_published": true,
7115
7307
  "requires_js": true,
@@ -7240,6 +7432,7 @@
7240
7432
  {
7241
7433
  "fully_qualified_name": "Primer::Alpha::TextArea",
7242
7434
  "description": "Text areas are multi-line text inputs rendered using the `<textarea>` tag in HTML.",
7435
+ "accessibility_docs": null,
7243
7436
  "is_form_component": true,
7244
7437
  "is_published": false,
7245
7438
  "requires_js": false,
@@ -7484,6 +7677,7 @@
7484
7677
  {
7485
7678
  "fully_qualified_name": "Primer::Alpha::TextField",
7486
7679
  "description": "Text fields are single-line text inputs rendered as `<input type=\"text\">` in HTML.",
7680
+ "accessibility_docs": null,
7487
7681
  "is_form_component": true,
7488
7682
  "is_published": true,
7489
7683
  "requires_js": false,
@@ -7919,6 +8113,7 @@
7919
8113
  {
7920
8114
  "fully_qualified_name": "Primer::Alpha::ToggleSwitch",
7921
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,
7922
8117
  "is_form_component": false,
7923
8118
  "is_published": true,
7924
8119
  "requires_js": true,
@@ -8141,6 +8336,7 @@
8141
8336
  {
8142
8337
  "fully_qualified_name": "Primer::Alpha::Tooltip",
8143
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,
8144
8340
  "is_form_component": false,
8145
8341
  "is_published": true,
8146
8342
  "requires_js": true,
@@ -8327,6 +8523,7 @@
8327
8523
  {
8328
8524
  "fully_qualified_name": "Primer::Alpha::UnderlineNav",
8329
8525
  "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.",
8526
+ "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.",
8330
8527
  "is_form_component": false,
8331
8528
  "is_published": true,
8332
8529
  "requires_js": false,
@@ -8457,6 +8654,7 @@
8457
8654
  {
8458
8655
  "fully_qualified_name": "Primer::Alpha::UnderlinePanels",
8459
8656
  "description": "Use `UnderlinePanels` to style tabs with an associated panel and an underlined selected state.",
8657
+ "accessibility_docs": null,
8460
8658
  "is_form_component": false,
8461
8659
  "is_published": true,
8462
8660
  "requires_js": true,
@@ -8580,6 +8778,7 @@
8580
8778
  {
8581
8779
  "fully_qualified_name": "Primer::Beta::AutoComplete",
8582
8780
  "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.",
8781
+ "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.",
8583
8782
  "is_form_component": false,
8584
8783
  "is_published": true,
8585
8784
  "requires_js": true,
@@ -8968,6 +9167,7 @@
8968
9167
  {
8969
9168
  "fully_qualified_name": "Primer::Beta::AutoComplete::Item",
8970
9169
  "description": "Use `AutoCompleteItem` to list results of an auto-completed search.",
9170
+ "accessibility_docs": null,
8971
9171
  "is_form_component": false,
8972
9172
  "is_published": true,
8973
9173
  "requires_js": false,
@@ -9068,6 +9268,7 @@
9068
9268
  {
9069
9269
  "fully_qualified_name": "Primer::Beta::Avatar",
9070
9270
  "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}}.",
9271
+ "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/)",
9071
9272
  "is_form_component": false,
9072
9273
  "is_published": true,
9073
9274
  "requires_js": false,
@@ -9286,6 +9487,7 @@
9286
9487
  {
9287
9488
  "fully_qualified_name": "Primer::Beta::AvatarStack",
9288
9489
  "description": "Use `AvatarStack` to stack multiple avatars together.",
9490
+ "accessibility_docs": null,
9289
9491
  "is_form_component": false,
9290
9492
  "is_published": true,
9291
9493
  "requires_js": false,
@@ -9470,6 +9672,7 @@
9470
9672
  {
9471
9673
  "fully_qualified_name": "Primer::Beta::BaseButton",
9472
9674
  "description": "Use `BaseButton` to render an unstyled `<button>` tag that can be customized.",
9675
+ "accessibility_docs": null,
9473
9676
  "is_form_component": false,
9474
9677
  "is_published": true,
9475
9678
  "requires_js": false,
@@ -9578,6 +9781,7 @@
9578
9781
  {
9579
9782
  "fully_qualified_name": "Primer::Beta::Blankslate",
9580
9783
  "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.",
9784
+ "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.",
9581
9785
  "is_form_component": false,
9582
9786
  "is_published": true,
9583
9787
  "requires_js": false,
@@ -9861,6 +10065,7 @@
9861
10065
  {
9862
10066
  "fully_qualified_name": "Primer::Beta::BorderBox",
9863
10067
  "description": "`BorderBox` is a Box component with a border.",
10068
+ "accessibility_docs": null,
9864
10069
  "is_form_component": false,
9865
10070
  "is_published": true,
9866
10071
  "requires_js": false,
@@ -10040,6 +10245,7 @@
10040
10245
  {
10041
10246
  "fully_qualified_name": "Primer::Beta::BorderBox::Header",
10042
10247
  "description": "`BorderBox::Header` is used inside `BorderBox` to render its header slot.",
10248
+ "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 %>",
10043
10249
  "is_form_component": false,
10044
10250
  "is_published": true,
10045
10251
  "requires_js": false,
@@ -10092,6 +10298,7 @@
10092
10298
  {
10093
10299
  "fully_qualified_name": "Primer::Beta::Breadcrumbs",
10094
10300
  "description": "Use `Breadcrumbs` to display page hierarchy.\n\n#### Known issues\n\n##### Responsiveness\n\n`Breadcrumbs` is not optimized for responsive designs.",
10301
+ "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).",
10095
10302
  "is_form_component": false,
10096
10303
  "is_published": true,
10097
10304
  "requires_js": false,
@@ -10164,6 +10371,7 @@
10164
10371
  {
10165
10372
  "fully_qualified_name": "Primer::Beta::Breadcrumbs::Item",
10166
10373
  "description": "This component is part of `Primer::Beta::Breadcrumbs` and should not be\nused as a standalone component.",
10374
+ "accessibility_docs": null,
10167
10375
  "is_form_component": false,
10168
10376
  "is_published": true,
10169
10377
  "requires_js": false,
@@ -10231,6 +10439,7 @@
10231
10439
  {
10232
10440
  "fully_qualified_name": "Primer::Beta::Button",
10233
10441
  "description": "Use `Button` for actions (e.g. in forms). Use links for destinations, or moving from one page to another.",
10442
+ "accessibility_docs": null,
10234
10443
  "is_form_component": false,
10235
10444
  "is_published": true,
10236
10445
  "requires_js": false,
@@ -10553,6 +10762,7 @@
10553
10762
  {
10554
10763
  "fully_qualified_name": "Primer::Beta::ButtonGroup",
10555
10764
  "description": "Use `ButtonGroup` to render a series of buttons.",
10765
+ "accessibility_docs": null,
10556
10766
  "is_form_component": false,
10557
10767
  "is_published": true,
10558
10768
  "requires_js": false,
@@ -10673,6 +10883,7 @@
10673
10883
  {
10674
10884
  "fully_qualified_name": "Primer::Beta::ClipboardCopy",
10675
10885
  "description": "Use `ClipboardCopy` to copy element text content or input values to the clipboard.",
10886
+ "accessibility_docs": "Always set an accessible label to help the user interact with the component.",
10676
10887
  "is_form_component": false,
10677
10888
  "is_published": true,
10678
10889
  "requires_js": true,
@@ -10775,6 +10986,7 @@
10775
10986
  {
10776
10987
  "fully_qualified_name": "Primer::Beta::CloseButton",
10777
10988
  "description": "Use `CloseButton` to render an `×` without default button styles.\n\n[0]: https://primer.style/view-components/system-arguments#html-attributes",
10989
+ "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].",
10778
10990
  "is_form_component": false,
10779
10991
  "is_published": true,
10780
10992
  "requires_js": false,
@@ -10845,6 +11057,7 @@
10845
11057
  {
10846
11058
  "fully_qualified_name": "Primer::Beta::Counter",
10847
11059
  "description": "Use `Counter` to add a count to navigational elements and buttons.",
11060
+ "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`.",
10848
11061
  "is_form_component": false,
10849
11062
  "is_published": true,
10850
11063
  "requires_js": false,
@@ -11069,6 +11282,7 @@
11069
11282
  {
11070
11283
  "fully_qualified_name": "Primer::Beta::Details",
11071
11284
  "description": "Use `DetailsComponent` to reveal content after clicking a button.",
11285
+ "accessibility_docs": null,
11072
11286
  "is_form_component": false,
11073
11287
  "is_published": true,
11074
11288
  "requires_js": false,
@@ -11208,6 +11422,7 @@
11208
11422
  {
11209
11423
  "fully_qualified_name": "Primer::Beta::Flash",
11210
11424
  "description": "Use `Flash` to inform users of successful or pending actions.",
11425
+ "accessibility_docs": null,
11211
11426
  "is_form_component": false,
11212
11427
  "is_published": true,
11213
11428
  "requires_js": false,
@@ -11398,6 +11613,7 @@
11398
11613
  {
11399
11614
  "fully_qualified_name": "Primer::Beta::Heading",
11400
11615
  "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.",
11616
+ "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 %>",
11401
11617
  "is_form_component": false,
11402
11618
  "is_published": true,
11403
11619
  "requires_js": false,
@@ -11462,6 +11678,7 @@
11462
11678
  {
11463
11679
  "fully_qualified_name": "Primer::Beta::IconButton",
11464
11680
  "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`.",
11681
+ "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)",
11465
11682
  "is_form_component": false,
11466
11683
  "is_published": true,
11467
11684
  "requires_js": false,
@@ -11612,6 +11829,7 @@
11612
11829
  {
11613
11830
  "fully_qualified_name": "Primer::Beta::Label",
11614
11831
  "description": "Use `Label` to add contextual metadata to a design.",
11832
+ "accessibility_docs": "Use `aria-label` if the `Label` or the context around it don't explain the label.",
11615
11833
  "is_form_component": false,
11616
11834
  "is_published": true,
11617
11835
  "requires_js": false,
@@ -11882,6 +12100,7 @@
11882
12100
  {
11883
12101
  "fully_qualified_name": "Primer::Beta::Link",
11884
12102
  "description": "Use `Link` for navigating from one page to another. `Link` styles anchor tags with default blue styling and hover text-decoration.",
12103
+ "accessibility_docs": null,
11885
12104
  "is_form_component": false,
11886
12105
  "is_published": true,
11887
12106
  "requires_js": true,
@@ -12059,6 +12278,7 @@
12059
12278
  {
12060
12279
  "fully_qualified_name": "Primer::Beta::Markdown",
12061
12280
  "description": "Use `Markdown` to wrap markdown content.",
12281
+ "accessibility_docs": null,
12062
12282
  "is_form_component": false,
12063
12283
  "is_published": true,
12064
12284
  "requires_js": false,
@@ -12098,6 +12318,7 @@
12098
12318
  {
12099
12319
  "fully_qualified_name": "Primer::Beta::Octicon",
12100
12320
  "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.",
12321
+ "accessibility_docs": null,
12101
12322
  "is_form_component": false,
12102
12323
  "is_published": true,
12103
12324
  "requires_js": false,
@@ -12180,6 +12401,7 @@
12180
12401
  {
12181
12402
  "fully_qualified_name": "Primer::Beta::Popover",
12182
12403
  "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.",
12404
+ "accessibility_docs": null,
12183
12405
  "is_form_component": false,
12184
12406
  "is_published": true,
12185
12407
  "requires_js": false,
@@ -12344,6 +12566,7 @@
12344
12566
  {
12345
12567
  "fully_qualified_name": "Primer::Beta::ProgressBar",
12346
12568
  "description": "Use `ProgressBar` to visualize task completion.",
12569
+ "accessibility_docs": null,
12347
12570
  "is_form_component": false,
12348
12571
  "is_published": true,
12349
12572
  "requires_js": false,
@@ -12470,6 +12693,7 @@
12470
12693
  {
12471
12694
  "fully_qualified_name": "Primer::Beta::RelativeTime",
12472
12695
  "description": "Formats a timestamp as a localized string or as relative text that auto-updates in the user's browser.",
12696
+ "accessibility_docs": null,
12473
12697
  "is_form_component": false,
12474
12698
  "is_published": true,
12475
12699
  "requires_js": false,
@@ -12669,6 +12893,7 @@
12669
12893
  {
12670
12894
  "fully_qualified_name": "Primer::Beta::Spinner",
12671
12895
  "description": "Use `Spinner` to let users know that content is being loaded.",
12896
+ "accessibility_docs": null,
12672
12897
  "is_form_component": false,
12673
12898
  "is_published": true,
12674
12899
  "requires_js": false,
@@ -12739,6 +12964,7 @@
12739
12964
  {
12740
12965
  "fully_qualified_name": "Primer::Beta::State",
12741
12966
  "description": "Use `State` for rendering the status of an item.",
12967
+ "accessibility_docs": null,
12742
12968
  "is_form_component": false,
12743
12969
  "is_published": true,
12744
12970
  "requires_js": false,
@@ -12899,6 +13125,7 @@
12899
13125
  {
12900
13126
  "fully_qualified_name": "Primer::Beta::Subhead",
12901
13127
  "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}}.",
13128
+ "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 %>",
12902
13129
  "is_form_component": false,
12903
13130
  "is_published": true,
12904
13131
  "requires_js": false,
@@ -13081,6 +13308,7 @@
13081
13308
  {
13082
13309
  "fully_qualified_name": "Primer::Beta::Text",
13083
13310
  "description": "`Text` is a wrapper component that will apply typography styles to the text inside.",
13311
+ "accessibility_docs": null,
13084
13312
  "is_form_component": false,
13085
13313
  "is_published": true,
13086
13314
  "requires_js": false,
@@ -13145,6 +13373,7 @@
13145
13373
  {
13146
13374
  "fully_qualified_name": "Primer::Beta::TimelineItem",
13147
13375
  "description": "Use `TimelineItem` to display items on a vertical timeline, connected by badge elements.",
13376
+ "accessibility_docs": null,
13148
13377
  "is_form_component": false,
13149
13378
  "is_published": true,
13150
13379
  "requires_js": false,
@@ -13247,6 +13476,7 @@
13247
13476
  {
13248
13477
  "fully_qualified_name": "Primer::Beta::TimelineItem::Badge",
13249
13478
  "description": "This component is part of `Primer::Beta::TimelineItem` and should not be\nused as a standalone component.",
13479
+ "accessibility_docs": null,
13250
13480
  "is_form_component": false,
13251
13481
  "is_published": true,
13252
13482
  "requires_js": false,
@@ -13277,6 +13507,7 @@
13277
13507
  {
13278
13508
  "fully_qualified_name": "Primer::Beta::Truncate",
13279
13509
  "description": "Use `Truncate` to shorten overflowing text with an ellipsis.",
13510
+ "accessibility_docs": null,
13280
13511
  "is_form_component": false,
13281
13512
  "is_published": true,
13282
13513
  "requires_js": false,
@@ -13400,6 +13631,7 @@
13400
13631
  {
13401
13632
  "fully_qualified_name": "Primer::Beta::Truncate::TruncateText",
13402
13633
  "description": "This component is part of `Primer::Beta::Truncate` and should not be\nused as a standalone component.",
13634
+ "accessibility_docs": null,
13403
13635
  "is_form_component": false,
13404
13636
  "is_published": true,
13405
13637
  "requires_js": false,
@@ -13430,6 +13662,7 @@
13430
13662
  {
13431
13663
  "fully_qualified_name": "Primer::BlankslateComponent",
13432
13664
  "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.",
13665
+ "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 %>",
13433
13666
  "is_form_component": false,
13434
13667
  "is_published": true,
13435
13668
  "requires_js": false,
@@ -13564,6 +13797,7 @@
13564
13797
  {
13565
13798
  "fully_qualified_name": "Primer::Box",
13566
13799
  "description": "`Box` is a basic wrapper component for most layout related needs.",
13800
+ "accessibility_docs": null,
13567
13801
  "is_form_component": false,
13568
13802
  "is_published": true,
13569
13803
  "requires_js": false,
@@ -13648,6 +13882,7 @@
13648
13882
  {
13649
13883
  "fully_qualified_name": "Primer::ButtonComponent",
13650
13884
  "description": "Use `Button` for actions (e.g. in forms). Use links for destinations, or moving from one page to another.",
13885
+ "accessibility_docs": null,
13651
13886
  "is_form_component": false,
13652
13887
  "is_published": true,
13653
13888
  "requires_js": true,
@@ -13783,6 +14018,7 @@
13783
14018
  {
13784
14019
  "fully_qualified_name": "Primer::ConditionalWrapper",
13785
14020
  "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.",
14021
+ "accessibility_docs": null,
13786
14022
  "is_form_component": false,
13787
14023
  "is_published": true,
13788
14024
  "requires_js": false,
@@ -13811,6 +14047,7 @@
13811
14047
  {
13812
14048
  "fully_qualified_name": "Primer::Content",
13813
14049
  "description": "Use `Content` as a helper to render content passed to a slot without adding any tags.",
14050
+ "accessibility_docs": null,
13814
14051
  "is_form_component": false,
13815
14052
  "is_published": true,
13816
14053
  "requires_js": false,
@@ -13839,6 +14076,7 @@
13839
14076
  {
13840
14077
  "fully_qualified_name": "Primer::IconButton",
13841
14078
  "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`.",
14079
+ "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)",
13842
14080
  "is_form_component": false,
13843
14081
  "is_published": true,
13844
14082
  "requires_js": true,
@@ -13920,6 +14158,7 @@
13920
14158
  {
13921
14159
  "fully_qualified_name": "Primer::LayoutComponent",
13922
14160
  "description": "Use `Layout` to build a main/sidebar layout.",
14161
+ "accessibility_docs": null,
13923
14162
  "is_form_component": false,
13924
14163
  "is_published": true,
13925
14164
  "requires_js": false,
@@ -13994,6 +14233,7 @@
13994
14233
  {
13995
14234
  "fully_qualified_name": "Primer::Navigation::TabComponent",
13996
14235
  "description": "nodoc",
14236
+ "accessibility_docs": null,
13997
14237
  "is_form_component": false,
13998
14238
  "is_published": true,
13999
14239
  "requires_js": false,
@@ -14110,6 +14350,7 @@
14110
14350
  {
14111
14351
  "fully_qualified_name": "Primer::Tooltip",
14112
14352
  "description": "`Tooltip` is a wrapper component that will apply a tooltip to the provided content.",
14353
+ "accessibility_docs": null,
14113
14354
  "is_form_component": false,
14114
14355
  "is_published": true,
14115
14356
  "requires_js": false,
@@ -14173,6 +14414,7 @@
14173
14414
  {
14174
14415
  "fully_qualified_name": "Primer::Truncate",
14175
14416
  "description": "Use `Truncate` to shorten overflowing text with an ellipsis.",
14417
+ "accessibility_docs": null,
14176
14418
  "is_form_component": false,
14177
14419
  "is_published": true,
14178
14420
  "requires_js": false,
@@ -14231,6 +14473,6 @@
14231
14473
  "component": "BaseComponent",
14232
14474
  "fully_qualified_name": "Primer::BaseComponent",
14233
14475
  "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```",
14234
- "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. |"
14476
+ "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. |"
14235
14477
  }
14236
14478
  ]