primer_view_components 0.11.0 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +50 -0
  3. data/app/assets/javascripts/app/components/primer/alpha/tool_tip.d.ts +1 -0
  4. data/app/assets/javascripts/primer_view_components.js +1 -1
  5. data/app/assets/javascripts/primer_view_components.js.map +1 -1
  6. data/app/assets/styles/primer_view_components.css +1 -1
  7. data/app/assets/styles/primer_view_components.css.map +1 -1
  8. data/app/components/primer/alpha/action_bar_element.js +8 -3
  9. data/app/components/primer/alpha/action_bar_element.ts +8 -1
  10. data/app/components/primer/alpha/action_list/form_wrapper.html.erb +4 -2
  11. data/app/components/primer/alpha/action_list/form_wrapper.rb +20 -9
  12. data/app/components/primer/alpha/action_menu/action_menu_element.js +1 -10
  13. data/app/components/primer/alpha/action_menu/action_menu_element.ts +0 -11
  14. data/app/components/primer/alpha/action_menu.rb +120 -3
  15. data/app/components/primer/alpha/modal_dialog.js +10 -13
  16. data/app/components/primer/alpha/modal_dialog.ts +10 -13
  17. data/app/components/primer/alpha/segmented_control/item.html.erb +1 -8
  18. data/app/components/primer/alpha/segmented_control/item.rb +38 -4
  19. data/app/components/primer/alpha/segmented_control.css +1 -1
  20. data/app/components/primer/alpha/segmented_control.css.json +14 -13
  21. data/app/components/primer/alpha/segmented_control.css.map +1 -1
  22. data/app/components/primer/alpha/segmented_control.pcss +75 -66
  23. data/app/components/primer/alpha/segmented_control.rb +10 -0
  24. data/app/components/primer/alpha/text_field.css +1 -1
  25. data/app/components/primer/alpha/tool_tip.d.ts +1 -0
  26. data/app/components/primer/alpha/tool_tip.js +26 -93
  27. data/app/components/primer/alpha/tool_tip.ts +25 -91
  28. data/app/components/primer/beta/base_button.rb +4 -0
  29. data/app/components/primer/beta/button.css +1 -1
  30. data/app/components/primer/beta/button.css.map +1 -1
  31. data/app/components/primer/beta/button.pcss +6 -2
  32. data/lib/primer/accessibility.rb +3 -1
  33. data/lib/primer/static/generate_info_arch.rb +86 -5
  34. data/lib/primer/view_components/version.rb +1 -1
  35. data/previews/primer/alpha/action_menu_preview/single_select_form_items.html.erb +31 -0
  36. data/previews/primer/alpha/action_menu_preview/with_actions.html.erb +1 -1
  37. data/previews/primer/alpha/action_menu_preview.rb +8 -2
  38. data/previews/primer/alpha/check_box_preview.rb +1 -0
  39. data/previews/primer/alpha/dialog_preview/autofocus_element.html.erb +8 -0
  40. data/previews/primer/alpha/dialog_preview.rb +5 -0
  41. data/previews/primer/alpha/radio_button_preview.rb +1 -0
  42. data/previews/primer/alpha/segmented_control_preview.rb +35 -0
  43. data/previews/primer/alpha/tooltip_preview/tooltip_with_dialog_moving_focus_to_input.html.erb +23 -0
  44. data/previews/primer/alpha/tooltip_preview.rb +6 -1
  45. data/previews/primer/beta/button_group_preview.rb +6 -6
  46. data/previews/primer/beta/button_preview.rb +20 -2
  47. data/previews/primer/beta/icon_button_preview.rb +3 -0
  48. data/static/arguments.json +6 -0
  49. data/static/classes.json +12 -0
  50. data/static/constants.json +12 -1
  51. data/static/info_arch.json +125 -160
  52. data/static/previews.json +91 -172
  53. metadata +5 -310
@@ -0,0 +1,23 @@
1
+ <%= render(Primer::Alpha::Dialog.new(id: "my-dialog", title: "Confirm focus")) do |d| %>
2
+ <%= render(Primer::Alpha::Dialog::Body.new()) do %>
3
+ Are you sure you want to focus the input?
4
+ <% end %>
5
+ <%= render(Primer::Alpha::Dialog::Footer.new()) do %>
6
+ <%= render(Primer::Beta::Button.new(id: "yes-button", data: { "close-dialog-id": "my-dialog" })) { "Yes" } %>
7
+ <%= render(Primer::Beta::Button.new(scheme: :primary, data: { "close-dialog-id": "my-dialog" })) { "Yes but in green" } %>
8
+ <% end %>
9
+ <% d.with_show_button do |b| %>
10
+ Focus input
11
+ <% b.with_tooltip(text: "This is a tooltip in an Overlay") %>
12
+ <% end %>
13
+ <% end %>
14
+ <label>
15
+ An input
16
+ <input type="text" id="input">
17
+ </label>
18
+ <script>
19
+ document.querySelector('#my-dialog').addEventListener('cancel', function () {
20
+ console.log('!!')
21
+ setTimeout(() => document.querySelector('#input').focus(), 0);
22
+ });
23
+ </script>
@@ -78,11 +78,16 @@ module Primer
78
78
  # @!endgroup
79
79
 
80
80
  # @label Tooltip inside Primer::Alpha::Overlay
81
- def tooltip_inside_primer_overlay(direction: :s, tooltip_text: "You can press a button")
81
+ def tooltip_inside_primer_overlay
82
82
  render_with_template(
83
83
  locals: {}
84
84
  )
85
85
  end
86
+
87
+ # @label Tooltip with button moving focus to input
88
+ def tooltip_with_dialog_moving_focus_to_input
89
+ render_with_template(locals: {})
90
+ end
86
91
  end
87
92
  end
88
93
  end
@@ -55,16 +55,16 @@ module Primer
55
55
  # @snapshot
56
56
  def all_tags
57
57
  render(Primer::Beta::ButtonGroup.new) do |component|
58
- component.with_button(id: "button-1", tag: :button) do |component|
59
- component.with_tooltip(text: "Button Tooltip")
58
+ component.with_button(id: "button-1", tag: :button) do |button|
59
+ button.with_tooltip(text: "Button Tooltip")
60
60
  "Button 1"
61
61
  end
62
- component.with_button(id: "button-2", tag: :a) do |component|
63
- component.with_tooltip(text: "Button Tooltip")
62
+ component.with_button(id: "button-2", tag: :a) do |button|
63
+ button.with_tooltip(text: "Button Tooltip")
64
64
  "Button 2"
65
65
  end
66
- component.with_button(id: "button-3", tag: :summary) do |component|
67
- component.with_tooltip(text: "Button Tooltip")
66
+ component.with_button(id: "button-3", tag: :summary) do |button|
67
+ button.with_tooltip(text: "Button Tooltip")
68
68
  "Button 3"
69
69
  end
70
70
  end
@@ -18,6 +18,7 @@ module Primer
18
18
  # @param size select [small, medium, large]
19
19
  # @param block toggle
20
20
  # @param disabled toggle
21
+ # @param inactive toggle
21
22
  # @param align_content select [center, start]
22
23
  # @param tag select [a, summary, button]
23
24
  def playground(
@@ -27,7 +28,8 @@ module Primer
27
28
  id: "button-preview",
28
29
  align_content: :center,
29
30
  tag: :button,
30
- disabled: false
31
+ disabled: false,
32
+ inactive: false
31
33
  )
32
34
  render(Primer::Beta::Button.new(
33
35
  scheme: scheme,
@@ -36,7 +38,8 @@ module Primer
36
38
  id: id,
37
39
  align_content: align_content,
38
40
  tag: tag,
39
- disabled: disabled
41
+ disabled: disabled,
42
+ inactive: inactive
40
43
  )) do |_c|
41
44
  "Button"
42
45
  end
@@ -341,6 +344,21 @@ module Primer
341
344
  align_content: align_content
342
345
  })
343
346
  end
347
+
348
+ # @label Inactive
349
+ # @param inactive toggle
350
+ # @snapshot
351
+ def inactive(
352
+ id: "button-preview",
353
+ inactive: true
354
+ )
355
+ render(Primer::Beta::Button.new(
356
+ id: id,
357
+ inactive: inactive
358
+ )) do |_c|
359
+ "Button"
360
+ end
361
+ end
344
362
  end
345
363
  end
346
364
  end
@@ -9,6 +9,7 @@ module Primer
9
9
  # @param size select [small, medium, large]
10
10
  # @param aria_label text
11
11
  # @param disabled toggle
12
+ # @param inactive toggle
12
13
  # @param tag select [a, summary, button]
13
14
  # @param icon [Symbol] octicon
14
15
  # @param show_tooltip toggle
@@ -18,6 +19,7 @@ module Primer
18
19
  id: "button-preview",
19
20
  tag: :button,
20
21
  disabled: false,
22
+ inactive: false,
21
23
  icon: :plus,
22
24
  aria_label: "Button",
23
25
  show_tooltip: true
@@ -28,6 +30,7 @@ module Primer
28
30
  id: id,
29
31
  tag: tag,
30
32
  disabled: disabled,
33
+ inactive: inactive,
31
34
  icon: icon,
32
35
  "aria-label": aria_label,
33
36
  show_tooltip: show_tooltip
@@ -3128,6 +3128,12 @@
3128
3128
  "default": "`false`",
3129
3129
  "description": "Whether or not the button is disabled. If true, this option forces `tag:` to `:button`."
3130
3130
  },
3131
+ {
3132
+ "name": "inactive",
3133
+ "type": "Boolean",
3134
+ "default": "`false`",
3135
+ "description": "Whether the button looks visually disabled, but can still accept all the same interactions as an enabled button."
3136
+ },
3131
3137
  {
3132
3138
  "name": "system_arguments",
3133
3139
  "type": "Hash",
data/static/classes.json CHANGED
@@ -477,6 +477,18 @@
477
477
  "SegmentedControl--fullWidth": [
478
478
  "Primer::Alpha::SegmentedControl"
479
479
  ],
480
+ "SegmentedControl--iconOnly": [
481
+ "Primer::Alpha::SegmentedControl"
482
+ ],
483
+ "SegmentedControl--large": [
484
+ "Primer::Alpha::SegmentedControl"
485
+ ],
486
+ "SegmentedControl--medium": [
487
+ "Primer::Alpha::SegmentedControl"
488
+ ],
489
+ "SegmentedControl--small": [
490
+ "Primer::Alpha::SegmentedControl"
491
+ ],
480
492
  "SegmentedControl-item": [
481
493
  "Primer::Alpha::SegmentedControl"
482
494
  ],
@@ -544,9 +544,20 @@
544
544
  "Primer::Alpha::RadioButtonGroup": {
545
545
  },
546
546
  "Primer::Alpha::SegmentedControl": {
547
+ "DEFAULT_SIZE": "medium",
547
548
  "FULL_WIDTH_DEFAULT": false,
548
549
  "HIDE_LABELS_DEFAULT": false,
549
- "Item": "Primer::Alpha::SegmentedControl::Item"
550
+ "Item": "Primer::Alpha::SegmentedControl::Item",
551
+ "SIZE_MAPPINGS": {
552
+ "small": "SegmentedControl--small",
553
+ "medium": "SegmentedControl--medium",
554
+ "large": "SegmentedControl--large"
555
+ },
556
+ "SIZE_OPTIONS": [
557
+ "small",
558
+ "medium",
559
+ "large"
560
+ ]
550
561
  },
551
562
  "Primer::Alpha::SegmentedControl::Item": {
552
563
  },
@@ -1128,8 +1128,8 @@
1128
1128
  },
1129
1129
  {
1130
1130
  "fully_qualified_name": "Primer::Alpha::ActionMenu",
1131
- "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`.",
1132
- "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).",
1131
+ "description": "ActionMenu is used for actions, navigation, to display secondary options, or single/multi select lists. They appear when\nusers 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`.\n\n### Select variants\n\nWhile `ActionMenu`s default to a list of buttons that can link to other pages, copy text to the clipboard, etc, they also support\n`single` and `multiple` select variants. The single select variant allows a single item to be \"selected\" (i.e. marked \"active\")\nwhen clicked, which will cause a check mark to appear to the left of the item text. When the `multiple` select variant is chosen,\nmultiple items may be selected and check marks will appear next to each selected item.\n\nUse the `select_variant:` option to control which variant the `ActionMenu` uses. For more information, see the documentation on\nsupported arguments below.\n\n### Dynamic labels\n\nWhen using the `single` select variant, an optional label indicating the selected item can be displayed inside the menu button.\nDynamic labels can also be prefixed with custom text.\n\nPass `dynamic_label: true` to enable dynamic label behavior, and pass `dynamic_label_prefix: \"<string>\"` to set a custom prefix.\nFor more information, see the documentation on supported arguments below.\n\n### `ActionMenu`s as form inputs\n\nWhen using either the `single` or `multiple` select variants, `ActionMenu`s can be used as form inputs. They behave very\nsimilarly to how HTML `<select>` boxes behave, and play nicely with Rails' built-in form mechanisms. Pass arguments via the\n`form_arguments:` argument, including the Rails form builder object and the name of the field:\n\n```erb\n<% form_with(url: update_merge_strategy_path) do |f| %>\n <%= render(Primer::Alpha::ActionMenu.new(form_arguments: { builder: f, name: \"merge_strategy\" })) do |menu| %>\n <% menu.with_item(label: \"Fast forward\", data: { value: \"fast_forward\" }) %>\n <% menu.with_item(label: \"Recursive\", data: { value: \"recursive\" }) %>\n <% menu.with_item(label: \"Ours\", data: { value: \"ours\" }) %>\n <% menu.with_item(label: \"Theirs\", data: { value: \"theirs\" }) %>\n <% end %>\n<% end %>\n```\n\nThe value of the `data: { value: ... }` argument is sent to the server on submit, keyed using the name provided above\n(eg. `\"merge_strategy\"`). If no value is provided for an item, the value of that item is the item's label. Here's the\ncorresponding `MergeStrategyController` that might be written to handle the form above:\n\n```ruby\nclass MergeStrategyController < ApplicationController\n def update\n puts \"You chose #{merge_strategy_params[:merge_strategy]}\"\n end\n\n private\n\n def merge_strategy_params\n params.permit(:merge_strategy)\n end\nend\n```\n\n### `ActionMenu` items that submit forms\n\nWhereas `ActionMenu` items normally permit navigation via `<a>` tags which make HTTP `get` requests, `ActionMenu` items\nalso permit navigation via `POST` requests. To enable this behavior, include the `href:` argument as normal, but also pass\nthe `form_arguments:` argument to the appropriate item:\n\n```erb\n<%= render(Primer::Alpha::ActionMenu.new) do |menu| %>\n <% menu.with_item(\n label: \"Repository\",\n href: update_repo_grouping_path,\n form_arguments: {\n method: :post,\n name: \"group_by\",\n value: \"repository\"\n }\n ) %>\n<% end %>\n```\n\nMake sure to specify `method: :post`, as the default is `:get`. When clicked, the list item will submit a POST request to\nthe URL passed in the `href:` argument, including a parameter named `\"group_by\"` with a value of `\"repository\"`. If no value\nis given, the name, eg. `\"group_by\"`, will be used as the value.\n\nIt is possible to include multiple fields on submit. Instead of passing the `name:` and `value:` arguments, pass an array via\nthe `inputs:` argument:\n\n```erb\n<%= render(Primer::Alpha::ActionMenu.new) do |menu| %>\n <% menu.with_show_button { \"Group By\" } %>\n <% menu.with_item(\n label: \"Repository\",\n href: update_repo_grouping_path,\n form_arguments: {\n method: :post,\n inputs: [{\n name: \"group_by\",\n value: \"repository\"\n }, {\n name: \"some_other_field\",\n value: \"some value\",\n }],\n }\n ) %>\n<% end %>\n```\n\n### Form arguments\n\nThe following table summarizes the arguments allowed in the `form_arguments:` hash mentioned above.\n\n|Name |Type |Default|Description|\n|:----------------|:-------------|:------|:----------|\n|`method` |`Symbol` |`:get` |The HTTP request method to use to submit the form. One of `:get`, `:post`, `:patch`, `:put`, `:delete`, or `:head`|\n|`name` |`String` |`nil` |The name of the field that will be sent to the server on submit.|\n|`value` |`String` |`nil` |The value of the field that will be sent to the server on submit.|\n|`input_arguments`|`Hash` |`{}` |Additional key/value pairs to emit as HTML attributes on the `<input type=\"hidden\">` element.|\n|`inputs` |`Array<Hash>` |`[]` |An array of hashes representing HTML `<input type=\"hidden\">` elements. Must contain at least `name:` and `value:` keys. If additional key/value pairs are provided, they are emitted as HTML attributes on the `<input>` element. This argument supercedes the `name:`, `value:`, and `:input_arguments` arguments listed above.|\n\nThe elements of the `inputs:` array will be emitted as HTML `<input type=\"hidden\">` elements.",
1132
+ "accessibility_docs": "The action for the menu item needs to be on the element with `role=\"menuitem\"`. Semantics are removed for everything\nnested 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\n[WAI-ARIA Authoring Practices](https://www.w3.org/TR/wai-aria-practices-1.2/#menu).",
1133
1133
  "is_form_component": false,
1134
1134
  "is_published": true,
1135
1135
  "requires_js": true,
@@ -1530,6 +1530,19 @@
1530
1530
  ]
1531
1531
  }
1532
1532
  },
1533
+ {
1534
+ "preview_path": "primer/alpha/action_menu/single_select_form_items",
1535
+ "name": "single_select_form_items",
1536
+ "snapshot": "false",
1537
+ "skip_rules": {
1538
+ "wont_fix": [
1539
+ "region"
1540
+ ],
1541
+ "will_fix": [
1542
+ "color-contrast"
1543
+ ]
1544
+ }
1545
+ },
1533
1546
  {
1534
1547
  "preview_path": "primer/alpha/action_menu/multiple_select_form",
1535
1548
  "name": "multiple_select_form",
@@ -2576,84 +2589,7 @@
2576
2589
 
2577
2590
  ],
2578
2591
  "previews": [
2579
- {
2580
- "preview_path": "primer/alpha/check_box/playground",
2581
- "name": "playground",
2582
- "snapshot": "false",
2583
- "skip_rules": {
2584
- "wont_fix": [
2585
- "region"
2586
- ],
2587
- "will_fix": [
2588
- "color-contrast"
2589
- ]
2590
- }
2591
- },
2592
- {
2593
- "preview_path": "primer/alpha/check_box/default",
2594
- "name": "default",
2595
- "snapshot": "false",
2596
- "skip_rules": {
2597
- "wont_fix": [
2598
- "region"
2599
- ],
2600
- "will_fix": [
2601
- "color-contrast"
2602
- ]
2603
- }
2604
- },
2605
- {
2606
- "preview_path": "primer/alpha/check_box/with_caption",
2607
- "name": "with_caption",
2608
- "snapshot": "true",
2609
- "skip_rules": {
2610
- "wont_fix": [
2611
- "region"
2612
- ],
2613
- "will_fix": [
2614
- "color-contrast"
2615
- ]
2616
- }
2617
- },
2618
- {
2619
- "preview_path": "primer/alpha/check_box/checked",
2620
- "name": "checked",
2621
- "snapshot": "false",
2622
- "skip_rules": {
2623
- "wont_fix": [
2624
- "region"
2625
- ],
2626
- "will_fix": [
2627
- "color-contrast"
2628
- ]
2629
- }
2630
- },
2631
- {
2632
- "preview_path": "primer/alpha/check_box/visually_hide_label",
2633
- "name": "visually_hide_label",
2634
- "snapshot": "false",
2635
- "skip_rules": {
2636
- "wont_fix": [
2637
- "region"
2638
- ],
2639
- "will_fix": [
2640
- "color-contrast"
2641
- ]
2642
- }
2643
- },
2644
- {
2645
- "preview_path": "primer/alpha/check_box/disabled",
2646
- "name": "disabled",
2647
- "snapshot": "false",
2648
- "skip_rules": {
2649
- "wont_fix": [
2650
- "region"
2651
- ],
2652
- "will_fix": [
2653
- "color-contrast"
2654
- ]
2655
- }
2656
- }
2592
+
2657
2593
  ],
2658
2594
  "subcomponents": [
2659
2595
 
@@ -3106,6 +3042,19 @@
3106
3042
  "color-contrast"
3107
3043
  ]
3108
3044
  }
3045
+ },
3046
+ {
3047
+ "preview_path": "primer/alpha/dialog/autofocus_element",
3048
+ "name": "autofocus_element",
3049
+ "snapshot": "false",
3050
+ "skip_rules": {
3051
+ "wont_fix": [
3052
+ "region"
3053
+ ],
3054
+ "will_fix": [
3055
+ "color-contrast"
3056
+ ]
3057
+ }
3109
3058
  }
3110
3059
  ],
3111
3060
  "subcomponents": [
@@ -5988,84 +5937,7 @@
5988
5937
 
5989
5938
  ],
5990
5939
  "previews": [
5991
- {
5992
- "preview_path": "primer/alpha/radio_button/playground",
5993
- "name": "playground",
5994
- "snapshot": "false",
5995
- "skip_rules": {
5996
- "wont_fix": [
5997
- "region"
5998
- ],
5999
- "will_fix": [
6000
- "color-contrast"
6001
- ]
6002
- }
6003
- },
6004
- {
6005
- "preview_path": "primer/alpha/radio_button/default",
6006
- "name": "default",
6007
- "snapshot": "true",
6008
- "skip_rules": {
6009
- "wont_fix": [
6010
- "region"
6011
- ],
6012
- "will_fix": [
6013
- "color-contrast"
6014
- ]
6015
- }
6016
- },
6017
- {
6018
- "preview_path": "primer/alpha/radio_button/with_caption",
6019
- "name": "with_caption",
6020
- "snapshot": "true",
6021
- "skip_rules": {
6022
- "wont_fix": [
6023
- "region"
6024
- ],
6025
- "will_fix": [
6026
- "color-contrast"
6027
- ]
6028
- }
6029
- },
6030
- {
6031
- "preview_path": "primer/alpha/radio_button/checked",
6032
- "name": "checked",
6033
- "snapshot": "true",
6034
- "skip_rules": {
6035
- "wont_fix": [
6036
- "region"
6037
- ],
6038
- "will_fix": [
6039
- "color-contrast"
6040
- ]
6041
- }
6042
- },
6043
- {
6044
- "preview_path": "primer/alpha/radio_button/visually_hide_label",
6045
- "name": "visually_hide_label",
6046
- "snapshot": "true",
6047
- "skip_rules": {
6048
- "wont_fix": [
6049
- "region"
6050
- ],
6051
- "will_fix": [
6052
- "color-contrast"
6053
- ]
6054
- }
6055
- },
6056
- {
6057
- "preview_path": "primer/alpha/radio_button/disabled",
6058
- "name": "disabled",
6059
- "snapshot": "true",
6060
- "skip_rules": {
6061
- "wont_fix": [
6062
- "region"
6063
- ],
6064
- "will_fix": [
6065
- "color-contrast"
6066
- ]
6067
- }
6068
- }
5940
+
6069
5941
  ],
6070
5942
  "subcomponents": [
6071
5943
 
@@ -6409,6 +6281,45 @@
6409
6281
  ]
6410
6282
  }
6411
6283
  },
6284
+ {
6285
+ "preview_path": "primer/alpha/segmented_control/trailing_label_width_small",
6286
+ "name": "trailing_label_width_small",
6287
+ "snapshot": "true",
6288
+ "skip_rules": {
6289
+ "wont_fix": [
6290
+ "region"
6291
+ ],
6292
+ "will_fix": [
6293
+ "color-contrast"
6294
+ ]
6295
+ }
6296
+ },
6297
+ {
6298
+ "preview_path": "primer/alpha/segmented_control/trailing_label_width_medium",
6299
+ "name": "trailing_label_width_medium",
6300
+ "snapshot": "true",
6301
+ "skip_rules": {
6302
+ "wont_fix": [
6303
+ "region"
6304
+ ],
6305
+ "will_fix": [
6306
+ "color-contrast"
6307
+ ]
6308
+ }
6309
+ },
6310
+ {
6311
+ "preview_path": "primer/alpha/segmented_control/trailing_label_width_large",
6312
+ "name": "trailing_label_width_large",
6313
+ "snapshot": "true",
6314
+ "skip_rules": {
6315
+ "wont_fix": [
6316
+ "region"
6317
+ ],
6318
+ "will_fix": [
6319
+ "color-contrast"
6320
+ ]
6321
+ }
6322
+ },
6412
6323
  {
6413
6324
  "preview_path": "primer/alpha/segmented_control/icon_only_small",
6414
6325
  "name": "icon_only_small",
@@ -6568,10 +6479,32 @@
6568
6479
  }
6569
6480
  ],
6570
6481
  "slots": [
6571
-
6482
+ {
6483
+ "name": "trailing_visual_label",
6484
+ "description": "Optional trailing Label",
6485
+ "parameters": [
6486
+ {
6487
+ "name": "system_arguments",
6488
+ "type": "Hash",
6489
+ "default": "N/A",
6490
+ "description": "The arguments accepted by {{#link_to_component}}Primer::Beta::Button{{/link_to_component}}'s `with_trailing_visual_label` slot."
6491
+ }
6492
+ ]
6493
+ }
6572
6494
  ],
6573
6495
  "methods": [
6574
-
6496
+ {
6497
+ "name": "with_trailing_visual_label",
6498
+ "description": "Optional trailing label.",
6499
+ "parameters": [
6500
+ {
6501
+ "name": "system_arguments",
6502
+ "type": "Hash",
6503
+ "default": "N/A",
6504
+ "description": "The arguments accepted by {{#link_to_component}}Primer::Beta::Button{{/link_to_component}}'s `with_trailing_visual_label` slot."
6505
+ }
6506
+ ]
6507
+ }
6575
6508
  ],
6576
6509
  "previews": [
6577
6510
 
@@ -8352,6 +8285,19 @@
8352
8285
  "color-contrast"
8353
8286
  ]
8354
8287
  }
8288
+ },
8289
+ {
8290
+ "preview_path": "primer/alpha/tooltip/tooltip_with_dialog_moving_focus_to_input",
8291
+ "name": "tooltip_with_dialog_moving_focus_to_input",
8292
+ "snapshot": "false",
8293
+ "skip_rules": {
8294
+ "wont_fix": [
8295
+ "region"
8296
+ ],
8297
+ "will_fix": [
8298
+ "color-contrast"
8299
+ ]
8300
+ }
8355
8301
  }
8356
8302
  ],
8357
8303
  "subcomponents": [
@@ -9545,6 +9491,12 @@
9545
9491
  "default": "`false`",
9546
9492
  "description": "Whether or not the button is disabled. If true, this option forces `tag:` to `:button`."
9547
9493
  },
9494
+ {
9495
+ "name": "inactive",
9496
+ "type": "Boolean",
9497
+ "default": "`false`",
9498
+ "description": "Whether the button looks visually disabled, but can still accept all the same interactions as an enabled button."
9499
+ },
9548
9500
  {
9549
9501
  "name": "system_arguments",
9550
9502
  "type": "Hash",
@@ -10610,6 +10562,19 @@
10610
10562
  "color-contrast"
10611
10563
  ]
10612
10564
  }
10565
+ },
10566
+ {
10567
+ "preview_path": "primer/beta/button/inactive",
10568
+ "name": "inactive",
10569
+ "snapshot": "true",
10570
+ "skip_rules": {
10571
+ "wont_fix": [
10572
+ "region"
10573
+ ],
10574
+ "will_fix": [
10575
+ "color-contrast"
10576
+ ]
10577
+ }
10613
10578
  }
10614
10579
  ],
10615
10580
  "subcomponents": [