primer_view_components 0.1.4 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -0
  3. data/app/assets/javascripts/primer_view_components.js +1 -1
  4. data/app/assets/javascripts/primer_view_components.js.map +1 -1
  5. data/app/assets/styles/primer_view_components.css +2 -2
  6. data/app/assets/styles/primer_view_components.css.map +1 -1
  7. data/app/components/primer/alpha/action_list/heading.html.erb +1 -1
  8. data/app/components/primer/alpha/action_list/heading.rb +5 -3
  9. data/app/components/primer/alpha/action_list/item.html.erb +9 -0
  10. data/app/components/primer/alpha/action_list/item.rb +32 -11
  11. data/app/components/primer/alpha/action_list.css +1 -1
  12. data/app/components/primer/alpha/action_list.css.json +4 -41
  13. data/app/components/primer/alpha/action_list.css.map +1 -1
  14. data/app/components/primer/alpha/action_list.pcss +19 -20
  15. data/app/components/primer/alpha/action_list.rb +54 -6
  16. data/app/components/primer/alpha/action_menu/action_menu_element.d.ts +23 -0
  17. data/app/components/primer/alpha/action_menu/action_menu_element.js +165 -0
  18. data/app/components/primer/alpha/action_menu/action_menu_element.ts +168 -0
  19. data/app/components/primer/alpha/action_menu/list.rb +91 -0
  20. data/app/components/primer/alpha/action_menu.html.erb +26 -0
  21. data/app/components/primer/alpha/action_menu.rb +361 -0
  22. data/app/components/primer/alpha/auto_complete.css.json +0 -11
  23. data/app/components/primer/alpha/banner.css.json +0 -14
  24. data/app/components/primer/alpha/button_marketing.css.json +0 -10
  25. data/app/components/primer/alpha/dialog.css +1 -1
  26. data/app/components/primer/alpha/dialog.css.json +0 -65
  27. data/app/components/primer/alpha/dialog.css.map +1 -1
  28. data/app/components/primer/alpha/dialog.pcss +0 -4
  29. data/app/components/primer/alpha/dialog.rb +6 -2
  30. data/app/components/primer/alpha/dropdown/menu.rb +1 -1
  31. data/app/components/primer/alpha/dropdown.css.json +0 -21
  32. data/app/components/primer/alpha/layout.css.json +0 -27
  33. data/app/components/primer/alpha/menu.css.json +0 -11
  34. data/app/components/primer/alpha/modal_dialog.js +12 -0
  35. data/app/components/primer/alpha/modal_dialog.ts +17 -0
  36. data/app/components/primer/alpha/nav_list/item.rb +5 -0
  37. data/app/components/primer/alpha/overlay.css +1 -1
  38. data/app/components/primer/alpha/overlay.css.json +0 -3
  39. data/app/components/primer/alpha/overlay.css.map +1 -1
  40. data/app/components/primer/alpha/overlay.pcss +1 -0
  41. data/app/components/primer/alpha/overlay.rb +19 -19
  42. data/app/components/primer/alpha/segmented_control.css.json +0 -15
  43. data/app/components/primer/alpha/tab_nav.css.json +0 -10
  44. data/app/components/primer/alpha/text_field.css.json +0 -38
  45. data/app/components/primer/alpha/toggle_switch.css.json +0 -16
  46. data/app/components/primer/alpha/underline_nav.css.json +0 -13
  47. data/app/components/primer/beta/auto_complete/auto_complete.html.erb +1 -1
  48. data/app/components/primer/beta/auto_complete.rb +19 -1
  49. data/app/components/primer/beta/avatar.css.json +0 -14
  50. data/app/components/primer/beta/avatar_stack.css.json +0 -9
  51. data/app/components/primer/beta/blankslate.css.json +0 -12
  52. data/app/components/primer/beta/border_box.css.json +0 -32
  53. data/app/components/primer/beta/border_box.rb +3 -3
  54. data/app/components/primer/beta/breadcrumbs.css.json +0 -4
  55. data/app/components/primer/beta/button.css +1 -1
  56. data/app/components/primer/beta/button.css.json +0 -24
  57. data/app/components/primer/beta/button.css.map +1 -1
  58. data/app/components/primer/beta/button.pcss +5 -7
  59. data/app/components/primer/beta/counter.css.json +0 -6
  60. data/app/components/primer/beta/flash.css.json +0 -15
  61. data/app/components/primer/beta/label.css.json +0 -20
  62. data/app/components/primer/beta/link.css.json +0 -8
  63. data/app/components/primer/beta/popover.css.json +0 -18
  64. data/app/components/primer/beta/progress_bar.css.json +0 -6
  65. data/app/components/primer/beta/state.css.json +0 -10
  66. data/app/components/primer/beta/subhead.css.json +0 -8
  67. data/app/components/primer/beta/timeline_item.css.json +0 -9
  68. data/app/components/primer/beta/truncate.css.json +0 -6
  69. data/app/components/primer/focus_group.d.ts +19 -0
  70. data/app/components/primer/focus_group.js +144 -0
  71. data/app/components/primer/focus_group.ts +137 -0
  72. data/app/components/primer/icon_button.rb +1 -1
  73. data/app/components/primer/primer.d.ts +2 -0
  74. data/app/components/primer/primer.js +2 -0
  75. data/app/components/primer/primer.ts +2 -0
  76. data/app/components/primer/truncate.css.json +0 -7
  77. data/app/lib/primer/css/layout.css.json +0 -263
  78. data/app/lib/primer/css/utilities.css.json +0 -1636
  79. data/lib/primer/static/generate_arguments.rb +55 -0
  80. data/lib/primer/static/generate_audited_at.rb +17 -0
  81. data/lib/primer/static/generate_constants.rb +19 -0
  82. data/lib/primer/static/generate_info_arch.rb +156 -0
  83. data/lib/primer/static/generate_previews.rb +45 -0
  84. data/lib/primer/static/generate_statuses.rb +17 -0
  85. data/lib/primer/static.rb +72 -0
  86. data/lib/primer/view_components/linters/disallow_component_css_counter.rb +43 -4
  87. data/lib/primer/view_components/version.rb +1 -1
  88. data/lib/primer/view_components.rb +0 -48
  89. data/lib/primer/yard/component_manifest.rb +1 -0
  90. data/lib/primer/yard/component_ref.rb +14 -0
  91. data/lib/primer/yard/docs_helper.rb +3 -0
  92. data/lib/primer/yard/info_arch_docs_helper.rb +31 -0
  93. data/lib/primer/yard/legacy_gatsby_backend.rb +3 -35
  94. data/lib/primer/yard/registry.rb +2 -1
  95. data/lib/primer/yard.rb +1 -0
  96. data/lib/tasks/docs.rake +10 -12
  97. data/lib/tasks/static.rake +20 -28
  98. data/previews/primer/alpha/action_list_preview.rb +4 -1
  99. data/previews/primer/alpha/action_menu_preview/align_end.html.erb +6 -0
  100. data/previews/primer/alpha/action_menu_preview/content_labels.html.erb +9 -0
  101. data/previews/primer/alpha/action_menu_preview/opens_dialog.html.erb +21 -0
  102. data/previews/primer/alpha/action_menu_preview.rb +245 -0
  103. data/previews/primer/alpha/dialog_preview/body_has_scrollbar_overflow.html.erb +2 -2
  104. data/previews/primer/alpha/dialog_preview/custom_header.html.erb +3 -3
  105. data/previews/primer/alpha/dialog_preview/nested_dialog.html.erb +4 -4
  106. data/previews/primer/alpha/dialog_preview/test.html.erb +3 -3
  107. data/previews/primer/alpha/dialog_preview/with_footer.html.erb +3 -3
  108. data/previews/primer/alpha/dialog_preview/with_form.html.erb +1 -1
  109. data/previews/primer/alpha/dialog_preview/with_text_input.html.erb +2 -2
  110. data/previews/primer/alpha/dialog_preview.rb +7 -2
  111. data/previews/primer/beta/auto_complete_item_preview.rb +1 -0
  112. data/previews/primer/beta/auto_complete_preview.rb +36 -23
  113. data/static/arguments.json +3085 -1405
  114. data/static/audited_at.json +2 -0
  115. data/static/classes.json +576 -311
  116. data/static/constants.json +53 -2
  117. data/static/info_arch.json +8888 -0
  118. data/static/previews.json +226 -101
  119. data/static/statuses.json +2 -0
  120. metadata +28 -6
@@ -53,13 +53,17 @@ module Primer
53
53
  # Optional button to open the dialog.
54
54
  #
55
55
  # @param system_arguments [Hash] The same arguments as <%= link_to_component(Primer::Beta::Button) %>.
56
- renders_one :show_button, lambda { |**system_arguments|
56
+ renders_one :show_button, lambda { |icon: nil, **system_arguments|
57
57
  system_arguments[:classes] = class_names(
58
58
  system_arguments[:classes]
59
59
  )
60
60
  system_arguments[:id] = "dialog-show-#{@system_arguments[:id]}"
61
61
  system_arguments[:data] = (system_arguments[:data] || {}).merge({ "show-dialog-id": @system_arguments[:id] })
62
- Primer::Beta::Button.new(**system_arguments)
62
+ if icon.present?
63
+ Primer::Beta::IconButton.new(icon: icon, **system_arguments)
64
+ else
65
+ Primer::Beta::Button.new(**system_arguments)
66
+ end
63
67
  }
64
68
 
65
69
  # Header content.
@@ -70,7 +70,7 @@ module Primer
70
70
  @system_arguments[:tag] = fetch_or_fallback(TAG_OPTIONS, tag, TAG_DEFAULT)
71
71
  @system_arguments[:tag] = :li if list? && divider?
72
72
  @system_arguments[:role] ||= :menuitem
73
- @system_arguments[:role] = :separator if divider
73
+ @system_arguments[:role] = :presentation if divider
74
74
  @system_arguments[:classes] = class_names(
75
75
  @system_arguments[:classes],
76
76
  "dropdown-item" => !divider,
@@ -36,26 +36,5 @@
36
36
  ".dropdown-menu-sw:after",
37
37
  ".dropdown-menu-se:before",
38
38
  ".dropdown-menu-se:after"
39
- ],
40
- "classes": [
41
- "dropdown",
42
- "dropdown-caret",
43
- "dropdown-menu",
44
- "dropdown-menu-no-overflow",
45
- "dropdown-item",
46
- "octicon",
47
- "color-fg-",
48
- "Label",
49
- "btn-link",
50
- "dropdown-signout",
51
- "dropdown-divider",
52
- "dropdown-header",
53
- "octicon-check",
54
- "dropdown-menu-w",
55
- "dropdown-menu-e",
56
- "dropdown-menu-ne",
57
- "dropdown-menu-s",
58
- "dropdown-menu-sw",
59
- "dropdown-menu-se"
60
39
  ]
61
40
  }
@@ -76,32 +76,5 @@
76
76
  ".Layout-main .Layout-main-centered-xl>.container-lg",
77
77
  ".Layout-main .Layout-main-centered-xl>.container-md",
78
78
  ".Layout-main .Layout-main-centered-xl>.container-xl"
79
- ],
80
- "classes": [
81
- "Layout",
82
- "Layout-divider",
83
- "Layout-main",
84
- "Layout-sidebar",
85
- "Layout--sidebarPosition-flowRow-start",
86
- "Layout--sidebarPosition-flowRow-end",
87
- "Layout--sidebarPosition-flowRow-none",
88
- "Layout--divided",
89
- "Layout-divider--flowRow-hidden",
90
- "Layout-divider--flowRow-shallow",
91
- "Layout--flowRow-until-md",
92
- "Layout--flowRow-until-lg",
93
- "Layout--gutter-none",
94
- "Layout--gutter-condensed",
95
- "Layout--gutter-spacious",
96
- "Layout--sidebar-narrow",
97
- "Layout--sidebar-wide",
98
- "Layout--sidebarPosition-start",
99
- "Layout--sidebarPosition-end",
100
- "Layout-main-centered-lg",
101
- "Layout-main-centered-md",
102
- "Layout-main-centered-xl",
103
- "container-lg",
104
- "container-md",
105
- "container-xl"
106
79
  ]
107
80
  }
@@ -24,16 +24,5 @@
24
24
  ".menu-heading:hover",
25
25
  ".menu-heading:first-child",
26
26
  ".menu-heading:last-child"
27
- ],
28
- "classes": [
29
- "menu",
30
- "menu-item",
31
- "selected",
32
- "octicon",
33
- "Counter",
34
- "menu-warning",
35
- "avatar",
36
- "alert",
37
- "menu-heading"
38
27
  ]
39
28
  }
@@ -49,6 +49,17 @@ function clickHandler(event) {
49
49
  topLevelDialog.close(true);
50
50
  }
51
51
  }
52
+ function keydownHandler(event) {
53
+ if (!(event instanceof KeyboardEvent) ||
54
+ event.type !== 'keydown' ||
55
+ event.key !== 'Enter' ||
56
+ event.ctrlKey ||
57
+ event.altKey ||
58
+ event.metaKey ||
59
+ event.shiftKey)
60
+ return;
61
+ clickHandler(event);
62
+ }
52
63
  function mousedownHandler(event) {
53
64
  const target = event.target;
54
65
  if (target === null || target === void 0 ? void 0 : target.closest('button'))
@@ -122,6 +133,7 @@ export class ModalDialogElement extends HTMLElement {
122
133
  if (!this.hasAttribute('role'))
123
134
  this.setAttribute('role', 'dialog');
124
135
  document.addEventListener('click', clickHandler);
136
+ document.addEventListener('keydown', keydownHandler);
125
137
  document.addEventListener('mousedown', mousedownHandler);
126
138
  this.addEventListener('keydown', e => __classPrivateFieldGet(this, _ModalDialogElement_instances, "m", _ModalDialogElement_keydown).call(this, e));
127
139
  }
@@ -12,6 +12,7 @@ const overlayStack: ModalDialogElement[] = []
12
12
  function clickHandler(event: Event) {
13
13
  const target = event.target as HTMLElement
14
14
  const button = target?.closest('button')
15
+
15
16
  if (!button) return
16
17
 
17
18
  // If the user is clicking a valid dialog trigger
@@ -42,6 +43,21 @@ function clickHandler(event: Event) {
42
43
  }
43
44
  }
44
45
 
46
+ function keydownHandler(event: Event) {
47
+ if (
48
+ !(event instanceof KeyboardEvent) ||
49
+ event.type !== 'keydown' ||
50
+ event.key !== 'Enter' ||
51
+ event.ctrlKey ||
52
+ event.altKey ||
53
+ event.metaKey ||
54
+ event.shiftKey
55
+ )
56
+ return
57
+
58
+ clickHandler(event)
59
+ }
60
+
45
61
  function mousedownHandler(event: Event) {
46
62
  const target = event.target as HTMLElement
47
63
  if (target?.closest('button')) return
@@ -124,6 +140,7 @@ export class ModalDialogElement extends HTMLElement {
124
140
  if (!this.hasAttribute('role')) this.setAttribute('role', 'dialog')
125
141
 
126
142
  document.addEventListener('click', clickHandler)
143
+ document.addEventListener('keydown', keydownHandler)
127
144
  document.addEventListener('mousedown', mousedownHandler)
128
145
 
129
146
  this.addEventListener('keydown', e => this.#keydown(e))
@@ -73,6 +73,11 @@ module Primer
73
73
  @content_arguments[:classes],
74
74
  "ActionListContent--hasActiveSubItem"
75
75
  )
76
+ else
77
+ @system_arguments[:classes] = class_names(
78
+ @system_arguments[:classes],
79
+ "ActionListItem--navActive" => active?
80
+ )
76
81
  end
77
82
 
78
83
  super
@@ -1 +1 @@
1
- .Overlay[popover]{border-width:0;padding:0;position:absolute}.Overlay[popover]:not(:open){display:none}anchored-position{display:block}
1
+ .Overlay[popover]{border-width:0;min-width:192px;padding:0;position:absolute}.Overlay[popover]:not(:open){display:none}anchored-position{display:block}
@@ -4,8 +4,5 @@
4
4
  ".Overlay[popover]",
5
5
  ".Overlay[popover]:not(:open)",
6
6
  "anchored-position"
7
- ],
8
- "classes": [
9
- "Overlay"
10
7
  ]
11
8
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["overlay.pcss"],"names":[],"mappings":"AAAA,kBACE,cAAe,CACf,SAAU,CACV,iBACF,CAGA,6BACE,YACF,CAEA,kBACE,aACF","file":"overlay.css","sourcesContent":[".Overlay[popover] {\n border-width: 0;\n padding: 0;\n position: absolute;\n}\n\n/* stylelint-disable-next-line selector-pseudo-class-no-unknown */\n.Overlay[popover]:not(:open) {\n display: none;\n}\n\nanchored-position {\n display: block;\n}\n"]}
1
+ {"version":3,"sources":["overlay.pcss"],"names":[],"mappings":"AAAA,kBACE,cAAe,CAGf,eAAgB,CAFhB,SAAU,CACV,iBAEF,CAGA,6BACE,YACF,CAEA,kBACE,aACF","file":"overlay.css","sourcesContent":[".Overlay[popover] {\n border-width: 0;\n padding: 0;\n position: absolute;\n min-width: 192px;\n}\n\n/* stylelint-disable-next-line selector-pseudo-class-no-unknown */\n.Overlay[popover]:not(:open) {\n display: none;\n}\n\nanchored-position {\n display: block;\n}\n"]}
@@ -2,6 +2,7 @@
2
2
  border-width: 0;
3
3
  padding: 0;
4
4
  position: absolute;
5
+ min-width: 192px;
5
6
  }
6
7
 
7
8
  /* stylelint-disable-next-line selector-pseudo-class-no-unknown */
@@ -63,28 +63,33 @@ module Primer
63
63
  DEFAULT_POPOVER = :auto
64
64
  POPOVER_OPTIONS = [DEFAULT_POPOVER, :manual].freeze
65
65
 
66
- ROLE_OPTIONS = [:dialog, :menu].freeze
66
+ ROLE_OPTIONS = [:dialog, :menu, nil].freeze
67
67
 
68
68
  # Optional button to open the Overlay.
69
69
  #
70
- # @param system_arguments [Hash] The same arguments as <%= link_to_component(Primer::ButtonComponent) %>.
71
- renders_one :show_button, lambda { |icon: nil, **system_arguments|
72
- system_arguments[:classes] = class_names(
73
- system_arguments[:classes]
70
+ # @param icon [String] Name of <%= link_to_octicons %> to use instead of text. If provided, a <%= link_to_component(Primer::Beta::IconButton) %> will be rendered. Otherwise a <%= link_to_component(Primer::Beta::Button) %> will be rendered.
71
+ # @param controls [String] The ID of the menu this button controls. Used internally.
72
+ # @param button_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::Beta::Button) %> or <%= link_to_component(Primer::Beta::IconButton) %> depending on the presence of the `icon:` argument.
73
+ renders_one :show_button, lambda { |icon: nil, controls: nil, **button_arguments|
74
+ button_arguments[:id] ||= show_button_id
75
+ @system_arguments[:anchor] = button_arguments[:id]
76
+ button_arguments["popovertarget"] = @id
77
+ button_arguments[:aria] = merge_aria(
78
+ button_arguments,
79
+ { aria: { controls: controls, haspopup: "true" } }
74
80
  )
75
- system_arguments[:id] = show_button_id
76
- system_arguments["popovertoggletarget"] = overlay_id
77
- system_arguments[:aria] = (system_arguments[:aria] || {}).merge({ controls: overlay_id, haspopup: "true" })
81
+
78
82
  if icon.present?
79
- Primer::Beta::IconButton.new(icon: icon, **system_arguments)
83
+ Primer::Beta::IconButton.new(icon: icon, **button_arguments)
80
84
  else
81
- Primer::Beta::Button.new(**system_arguments)
85
+ Primer::Beta::Button.new(**button_arguments)
82
86
  end
83
87
  }
84
88
 
85
89
  # Header content.
86
90
  #
87
91
  # @param divider [Boolean] Show a divider between the header and body.
92
+ # @param size [Symbol] One of <%= one_of(Primer::Alpha::Overlay::SIZE_OPTIONS) %>.
88
93
  # @param visually_hide_title [Boolean] Visually hide the `title` while maintaining a label for assistive technologies.
89
94
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
90
95
  renders_one :header, lambda { |divider: false, size: :medium, visually_hide_title: @visually_hide_title, **system_arguments|
@@ -134,7 +139,6 @@ module Primer
134
139
  # @param title [String] Describes the content of the Overlay.
135
140
  # @param subtitle [String] Provides dditional context for the Overlay, also setting the `aria-describedby` attribute.
136
141
  # @param popover [Symbol] The popover behaviour. <%= one_of(Primer::Alpha::Overlay::POPOVER_OPTIONS) %>
137
- # @param popover [Symbol] The popover behaviour. <%= one_of(Primer::Alpha::Overlay::POPOVER_OPTIONS) %>
138
142
  # @param size [Symbol] The size of the Overlay. <%= one_of(Primer::Alpha::Overlay::SIZE_OPTIONS) %>
139
143
  # @param padding [Symbol] The padding given to the Overlay body. <%= one_of(Primer::Alpha::Overlay::PADDING_OPTIONS) %>
140
144
  # @param anchor [String] An ID of the element to anchor onto. Defaults to the `show_button`.
@@ -147,7 +151,7 @@ module Primer
147
151
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
148
152
  def initialize(
149
153
  title:,
150
- role:,
154
+ role: nil,
151
155
  subtitle: nil,
152
156
  popover: DEFAULT_POPOVER,
153
157
  size: DEFAULT_SIZE,
@@ -163,7 +167,7 @@ module Primer
163
167
  )
164
168
  @system_arguments = deny_tag_argument(**system_arguments)
165
169
 
166
- @system_arguments[:role] = fetch_or_fallback(ROLE_OPTIONS, role)
170
+ @system_arguments[:role] = fetch_or_fallback(ROLE_OPTIONS, role) if role.present?
167
171
 
168
172
  @system_arguments[:id] = id.to_s
169
173
  @system_arguments[:classes] = class_names(
@@ -198,16 +202,12 @@ module Primer
198
202
 
199
203
  private
200
204
 
201
- def overlay_id
202
- @system_arguments[:id]
203
- end
204
-
205
205
  def title_id
206
- "overlay-title-#{overlay_id}"
206
+ "overlay-title-#{@id}"
207
207
  end
208
208
 
209
209
  def show_button_id
210
- "overlay-show-#{overlay_id}"
210
+ "overlay-show-#{@id}"
211
211
  end
212
212
  end
213
213
  end
@@ -27,20 +27,5 @@
27
27
  ".SegmentedControl--fullWidth .SegmentedControl-item",
28
28
  ".SegmentedControl--fullWidth .Button--iconOnly",
29
29
  ".SegmentedControl--fullWidth .Button-withTooltip"
30
- ],
31
- "classes": [
32
- "SegmentedControl",
33
- "SegmentedControl-item",
34
- "SegmentedControl-item--selected",
35
- "Button",
36
- "Button-label",
37
- "Button--small",
38
- "Button--iconOnly",
39
- "Button--medium",
40
- "Button--large",
41
- "Button--invisible",
42
- "Button--invisible-noVisuals",
43
- "SegmentedControl--fullWidth",
44
- "Button-withTooltip"
45
30
  ]
46
31
  }
@@ -20,15 +20,5 @@
20
20
  ".tabnav-extra>.octicon",
21
21
  "a.tabnav-extra:hover",
22
22
  ".tabnav-btn"
23
- ],
24
- "classes": [
25
- "tabnav",
26
- "tabnav-tabs",
27
- "tabnav-tab",
28
- "selected",
29
- "octicon",
30
- "Counter",
31
- "tabnav-extra",
32
- "tabnav-btn"
33
23
  ]
34
24
  }
@@ -130,43 +130,5 @@
130
130
  "input.FormControl-radio[type=radio]:checked",
131
131
  "input.FormControl-radio[type=radio]:checked:disabled",
132
132
  "input.FormControl-radio[type=radio]:focus-visible"
133
- ],
134
- "classes": [
135
- "FormControl",
136
- "FormControl--fullWidth",
137
- "FormControl-label",
138
- "FormControl-caption",
139
- "FormControl-inlineValidation",
140
- "FormControl-spacingWrapper",
141
- "FormControl-horizontalGroup",
142
- "FormControl-input",
143
- "FormControl-select",
144
- "FormControl-textarea",
145
- "FormControl-small",
146
- "FormControl-medium",
147
- "FormControl-large",
148
- "FormControl-inset",
149
- "FormControl-monospace",
150
- "FormControl-error",
151
- "FormControl-success",
152
- "FormControl-warning",
153
- "FormControl-toggleSwitchInput",
154
- "FormControl-input-wrap",
155
- "FormControl-input-leadingVisualWrap",
156
- "FormControl-input-leadingVisual",
157
- "FormControl-input-trailingAction",
158
- "FormControl-input-trailingAction--divider",
159
- "FormControl-input-wrap--leadingVisual",
160
- "FormControl-input-wrap--trailingAction",
161
- "FormControl-input-wrap-trailingAction--divider",
162
- "FormControl-select-wrap",
163
- "FormControl-checkbox-wrap",
164
- "FormControl-radio-wrap",
165
- "FormControl-checkbox-labelWrap",
166
- "FormControl-radio-labelWrap",
167
- "FormControl-check-group-wrap",
168
- "FormControl-radio-group-wrap",
169
- "FormControl-checkbox",
170
- "FormControl-radio"
171
133
  ]
172
134
  }
@@ -36,21 +36,5 @@
36
36
  ".ToggleSwitch-statusOff",
37
37
  ".ToggleSwitch--statusAtEnd",
38
38
  ".ToggleSwitch--statusAtEnd .ToggleSwitch-status"
39
- ],
40
- "classes": [
41
- "ToggleSwitch",
42
- "ToggleSwitch--checked",
43
- "ToggleSwitch-statusOn",
44
- "ToggleSwitch-statusOff",
45
- "ToggleSwitch-track",
46
- "ToggleSwitch-knob",
47
- "ToggleSwitch-lineIcon",
48
- "ToggleSwitch-circleIcon",
49
- "ToggleSwitch-icons",
50
- "ToggleSwitch-status",
51
- "ToggleSwitch-statusIcon",
52
- "ToggleSwitch--small",
53
- "ToggleSwitch--disabled",
54
- "ToggleSwitch--statusAtEnd"
55
39
  ]
56
40
  }
@@ -24,18 +24,5 @@
24
24
  ".UnderlineNav--full .UnderlineNav-body",
25
25
  ".UnderlineNav-octicon",
26
26
  ".UnderlineNav-container"
27
- ],
28
- "classes": [
29
- "UnderlineNav",
30
- "Counter",
31
- "Counter--primary",
32
- "UnderlineNav-body",
33
- "UnderlineNav-item",
34
- "selected",
35
- "UnderlineNav--right",
36
- "UnderlineNav-actions",
37
- "UnderlineNav--full",
38
- "UnderlineNav-octicon",
39
- "UnderlineNav-container"
40
27
  ]
41
28
  }
@@ -18,7 +18,7 @@
18
18
  <% end %>
19
19
  </div>
20
20
  <div class="Overlay-backdrop--anchor">
21
- <div class="Overlay Overlay--height-auto Overlay--width-auto">
21
+ <div class="<%= @overlay_classes %>">
22
22
  <div class="Overlay-body Overlay-body--paddingNone">
23
23
  <%= results %>
24
24
  </div>
@@ -22,6 +22,17 @@ module Primer
22
22
  }.freeze
23
23
  SIZE_OPTIONS = SIZE_MAPPINGS.keys
24
24
 
25
+ DEFAULT_WIDTH = :auto
26
+ WIDTH_MAPPINGS = {
27
+ DEFAULT_WIDTH => "Overlay--width-auto",
28
+ :small => "Overlay--width-small",
29
+ :medium => "Overlay--width-medium",
30
+ :large => "Overlay--width-large",
31
+ :xlarge => "Overlay--width-xlarge",
32
+ :xxlarge => "Overlay--width-xxlarge"
33
+ }.freeze
34
+ WIDTH_OPTIONS = WIDTH_MAPPINGS.keys
35
+
25
36
  # Customizable results list.
26
37
  #
27
38
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
@@ -156,12 +167,13 @@ module Primer
156
167
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
157
168
  # @param size [Hash] Input size can be small, medium (default), or large
158
169
  # @param full_width [Boolean] Input can be full-width or fit to content
170
+ # @param width [String] Optional parameter to set max width of results list. <%= one_of(Primer::Beta::AutoComplete::WIDTH_OPTIONS) %>
159
171
  # @param disabled [Boolean] Disabled input
160
172
  # @param invalid [Boolean] Invalid input
161
173
  # @param placeholder [String] The placeholder text displayed within the input
162
174
  # @param inset [Boolean] subtle input background color
163
175
  # @param monospace [Boolean] monospace input font family
164
- def initialize(label_text:, src:, list_id:, input_id:, input_name: nil, placeholder: nil, show_clear_button: false, visually_hide_label: false, size: DEFAULT_SIZE, full_width: false, disabled: false, invalid: false, inset: false, monospace: false, **system_arguments)
176
+ def initialize(label_text:, src:, list_id:, input_id:, input_name: nil, placeholder: nil, show_clear_button: false, visually_hide_label: false, size: DEFAULT_SIZE, full_width: false, width: DEFAULT_WIDTH, disabled: false, invalid: false, inset: false, monospace: false, **system_arguments)
165
177
  @label_text = label_text
166
178
  @list_id = list_id
167
179
  @input_id = input_id
@@ -179,6 +191,7 @@ module Primer
179
191
  @inset = inset
180
192
  @monospace = monospace
181
193
  @full_width = full_width
194
+ @width = width
182
195
  @field_wrap_classes = class_names(
183
196
  "FormControl-input-wrap",
184
197
  SIZE_MAPPINGS[fetch_or_fallback(SIZE_OPTIONS, @size, DEFAULT_SIZE)],
@@ -188,6 +201,11 @@ module Primer
188
201
  "FormControl",
189
202
  "FormControl--fullWidth": full_width
190
203
  )
204
+ @overlay_classes = class_names(
205
+ "Overlay",
206
+ "Overlay--height-auto",
207
+ WIDTH_MAPPINGS[fetch_or_fallback(WIDTH_OPTIONS, @width, DEFAULT_WIDTH)]
208
+ )
191
209
  end
192
210
 
193
211
  # add `input` and `results` without needing to explicitly call them in the view
@@ -13,19 +13,5 @@
13
13
  ".avatar-6",
14
14
  ".avatar-7",
15
15
  ".avatar-8"
16
- ],
17
- "classes": [
18
- "avatar",
19
- "avatar-link",
20
- "avatar-group-item",
21
- "avatar-1",
22
- "avatar-2",
23
- "avatar-small",
24
- "avatar-3",
25
- "avatar-4",
26
- "avatar-5",
27
- "avatar-6",
28
- "avatar-7",
29
- "avatar-8"
30
16
  ]
31
17
  }
@@ -24,14 +24,5 @@
24
24
  ".AvatarStack--right .avatar.avatar-more:before",
25
25
  ".AvatarStack--right .avatar.avatar-more:after",
26
26
  ".AvatarStack--right .avatar"
27
- ],
28
- "classes": [
29
- "AvatarStack",
30
- "AvatarStack-body",
31
- "AvatarStack--two",
32
- "AvatarStack--three-plus",
33
- "avatar",
34
- "avatar-more",
35
- "AvatarStack--right"
36
27
  ]
37
28
  }
@@ -18,17 +18,5 @@
18
18
  ".blankslate-large h3",
19
19
  ".blankslate-large p",
20
20
  ".blankslate-clean-background"
21
- ],
22
- "classes": [
23
- "blankslate",
24
- "blankslate-icon",
25
- "blankslate-image",
26
- "blankslate-heading",
27
- "blankslate-action",
28
- "blankslate-capped",
29
- "blankslate-spacious",
30
- "blankslate-narrow",
31
- "blankslate-large",
32
- "blankslate-clean-background"
33
21
  ]
34
22
  }
@@ -50,37 +50,5 @@
50
50
  ".Box-row--blue",
51
51
  ".Box-row--gray",
52
52
  ".Box-btn-octicon.btn-octicon"
53
- ],
54
- "classes": [
55
- "Box",
56
- "Box--condensed",
57
- "Box-body",
58
- "Box-footer",
59
- "Box-header",
60
- "Box-btn-octicon",
61
- "btn-octicon",
62
- "Box-row",
63
- "Box--spacious",
64
- "Box-title",
65
- "Box-row--unread",
66
- "unread",
67
- "navigation-focus",
68
- "Box-row--drag-button",
69
- "is-dragging",
70
- "sortable-chosen",
71
- "sortable-ghost",
72
- "Box-row--drag-hide",
73
- "Box-row--focus-gray",
74
- "Box-row--focus-blue",
75
- "Box-row--hover-gray",
76
- "Box-row--hover-blue",
77
- "Box-row-link",
78
- "Box--scrollable",
79
- "Box--blue",
80
- "Box--danger",
81
- "Box-header--blue",
82
- "Box-row--yellow",
83
- "Box-row--blue",
84
- "Box-row--gray"
85
53
  ]
86
54
  }
@@ -26,7 +26,7 @@ module Primer
26
26
  #
27
27
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
28
28
  # @accessibility
29
- # When using header.title, the recommended tag is a heading tag, such as h1, h2, h3, etc.
29
+ # When using header.with_title, the recommended tag is a heading tag, such as h1, h2, h3, etc.
30
30
  renders_one :header, "Primer::Beta::BorderBox::Header"
31
31
 
32
32
  # Optional Body.
@@ -72,8 +72,8 @@ module Primer
72
72
 
73
73
  # @example Header with title, body, rows, and footer
74
74
  # <%= render(Primer::Beta::BorderBox.new) do |component| %>
75
- # <% component.with_header do |h| %>
76
- # <% h.title(tag: :h2) do %>
75
+ # <% component.with_header do |header| %>
76
+ # <% header.with_title(tag: :h2) do %>
77
77
  # Header
78
78
  # <% end %>
79
79
  # <% end %>
@@ -7,9 +7,5 @@
7
7
  ".breadcrumb-item-selected:after",
8
8
  ".breadcrumb-item[aria-current]:not([aria-current=false]):after",
9
9
  ".breadcrumb-item-selected a"
10
- ],
11
- "classes": [
12
- "breadcrumb-item",
13
- "breadcrumb-item-selected"
14
10
  ]
15
11
  }
@@ -1 +1 @@
1
- :root{--primer-duration-fast:80ms;--primer-easing-easeInOut:cubic-bezier(0.65,0,0.35,1)}.Button{align-items:center;background-color:initial;border:var(--primer-borderWidth-thin,1px) solid;border-color:#0000;border-radius:var(--primer-borderRadius-medium,6px);color:var(--color-btn-text);cursor:pointer;display:flex;flex-direction:row;font-size:var(--primer-text-body-size-medium,14px);font-weight:var(--base-text-weight-medium,500);gap:var(--primer-control-medium-gap,8px);height:var(--primer-control-medium-size,32px);justify-content:space-between;min-width:max-content;padding:0 var(--primer-control-medium-paddingInline-normal,12px);position:relative;text-align:center;transition:var(--primer-duration-fast) var(--primer-easing-easeInOut);transition-property:color,fill,background-color,border-color;-webkit-user-select:none;user-select:none}@media (pointer:coarse){.Button:before{content:"";height:100%;left:50%;min-height:48px;min-width:48px;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:100%}}.Button:hover{transition-duration:var(--primer-duration-fast)}.Button:active{transition:none}.Button:disabled,.Button[aria-disabled=true]{box-shadow:none;cursor:not-allowed}.Button-withTooltip{display:inline-block;position:relative}a.Button,summary.Button{display:inline-flex}a.Button:hover,summary.Button:hover{text-decoration:none}.Button-content{align-items:center;display:grid;flex:1 0 auto;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;place-content:center}.Button-content>:not(:last-child){margin-right:var(--primer-control-medium-gap,8px)}.Button-content--alignStart{justify-content:start}.Button-visual{display:flex;pointer-events:none}.Button-visual .Counter{background-color:var(--color-btn-counter-bg);color:inherit}.Button-label{grid-area:text;line-height:var(--primer-text-body-lineHeight-medium,1.42857);white-space:nowrap}.Button-leadingVisual{grid-area:leadingVisual}.Button-trailingVisual{grid-area:trailingVisual}.Button-trailingAction{margin-right:calc(var(--base-size-4, 4px)*-1)}.Button--small{font-size:var(--primer-text-body-size-small,12px);gap:var(--primer-control-small-gap,4px);height:var(--primer-control-small-size,28px);padding:0 var(--primer-control-small-paddingInline-condensed,8px)}.Button--small .Button-label{line-height:var(--primer-text-body-lineHeight-small,1.66667)}.Button--small .Button-content>:not(:last-child){margin-right:var(--primer-control-small-gap,4px)}.Button--large{gap:var(--primer-control-large-gap,8px);height:var(--primer-control-large-size,40px);padding:0 var(--primer-control-large-paddingInline-spacious,16px)}.Button--large .Button-label{line-height:var(--primer-text-body-lineHeight-large,1.5)}.Button--large .Button-content>:not(:last-child){margin-right:var(--primer-control-large-gap,8px)}.Button--fullWidth{width:100%}.Button--primary{fill:var(--color-btn-primary-icon);background-color:var(--color-btn-primary-bg);border-color:var(--color-btn-primary-border);box-shadow:var(--color-btn-primary-shadow),var(--color-btn-primary-inset-shadow);color:var(--color-btn-primary-text)}.Button--primary:hover:not(:disabled){background-color:var(--color-btn-primary-hover-bg);border-color:var(--color-btn-primary-hover-border)}.Button--primary:focus{box-shadow:inset 0 0 0 3px var(--color-fg-on-emphasis);outline:2px solid var(--color-accent-fg);outline-offset:-2px}.Button--primary:focus:not(:focus-visible){box-shadow:none;outline:1px solid #0000}.Button--primary:focus-visible{box-shadow:inset 0 0 0 3px var(--color-fg-on-emphasis);outline:2px solid var(--color-accent-fg);outline-offset:-2px}.Button--primary:active:not(:disabled),.Button--primary[aria-pressed=true]{background-color:var(--color-btn-primary-selected-bg);box-shadow:var(--color-btn-primary-selected-shadow)}.Button--primary:disabled,.Button--primary[aria-disabled=true]{fill:var(--color-btn-primary-disabled-text);background-color:var(--color-btn-primary-disabled-bg);border-color:var(--color-btn-primary-disabled-border);color:var(--color-btn-primary-disabled-text)}.Button--secondary{fill:var(--color-fg-muted);background-color:var(--color-btn-bg);border-color:var(--color-btn-border);box-shadow:var(--color-btn-shadow),var(--color-btn-inset-shadow);color:var(--color-btn-text)}.Button--secondary:hover:not(:disabled){background-color:var(--color-btn-hover-bg);border-color:var(--color-btn-hover-border)}.Button--secondary:active:not(:disabled){background-color:var(--color-btn-active-bg);border-color:var(--color-btn-active-border)}.Button--secondary[aria-pressed=true]{background-color:var(--color-btn-selected-bg);box-shadow:var(--color-primer-shadow-inset)}.Button--secondary:disabled,.Button--secondary[aria-disabled=true]{fill:var(--color-primer-fg-disabled);background-color:var(--color-btn-bg);border-color:var(--color-btn-border);color:var(--color-primer-fg-disabled)}.Button--invisible{color:var(--color-btn-text)}.Button--invisible:hover:not(:disabled){background-color:var(--color-action-list-item-default-hover-bg)}.Button--invisible:active:not(:disabled),.Button--invisible[aria-pressed=true]{background-color:var(--color-action-list-item-default-active-bg)}.Button--invisible:disabled,.Button--invisible[aria-disabled=true]{fill:var(--color-primer-fg-disabled);background-color:var(--color-btn-bg);border-color:var(--color-btn-border);color:var(--color-primer-fg-disabled)}.Button--invisible.Button--invisible-noVisuals .Button-label{color:var(--color-accent-fg)}.Button--invisible .Button-visual{color:var(--color-fg-muted)}.Button--link{fill:var(--color-accent-fg);border:none;color:var(--color-accent-fg);display:inline-block;font-size:inherit;height:unset;padding:0}.Button--link:hover:not(:disabled){text-decoration:underline}.Button--link:focus,.Button--link:focus-visible{outline-offset:2px}.Button--link:disabled,.Button--link[aria-disabled=true]{fill:var(--color-primer-fg-disabled);background-color:initial;border-color:#0000;color:var(--color-primer-fg-disabled)}.Button--danger{fill:var(--color-btn-danger-icon);background-color:var(--color-btn-bg);border-color:var(--color-btn-border);box-shadow:var(--color-btn-shadow),var(--color-btn-inset-shadow);color:var(--color-btn-danger-text)}.Button--danger:hover:not(:disabled){fill:var(--color-btn-danger-hover-text);background-color:var(--color-btn-danger-hover-bg);border-color:var(--color-btn-danger-hover-border);box-shadow:var(--color-btn-danger-hover-shadow),var(--color-btn-danger-hover-inset-shadow);color:var(--color-btn-danger-hover-text)}.Button--danger:active:not(:disabled),.Button--danger[aria-pressed=true]{fill:var(--color-btn-danger-selected-text);background-color:var(--color-btn-danger-selected-bg);border-color:var(--color-btn-danger-selected-border);box-shadow:var(--color-btn-danger-selected-shadow);color:var(--color-btn-danger-selected-text)}.Button--danger:disabled,.Button--danger[aria-disabled=true]{fill:var(--color-btn-danger-disabled-text);background-color:var(--color-btn-danger-disabled-bg);border-color:var(--color-btn-border);color:var(--color-btn-danger-disabled-text)}.Button--iconOnly{display:grid;padding:unset;place-content:center;width:var(--primer-control-medium-size,32px)}.Button--iconOnly.Button--small{width:var(--primer-control-small-size,28px)}.Button--iconOnly.Button--large{width:var(--primer-control-large-size,40px)}
1
+ :root{--primer-duration-fast:80ms;--primer-easing-easeInOut:cubic-bezier(0.65,0,0.35,1)}.Button{align-items:center;background-color:initial;border:var(--primer-borderWidth-thin,1px) solid;border-color:#0000;border-radius:var(--primer-borderRadius-medium,6px);color:var(--color-btn-text);cursor:pointer;display:inline-flex;flex-direction:row;font-size:var(--primer-text-body-size-medium,14px);font-weight:var(--base-text-weight-medium,500);gap:var(--base-size-4,4px);height:var(--primer-control-medium-size,32px);justify-content:space-between;min-width:max-content;padding:0 var(--primer-control-medium-paddingInline-normal,12px);position:relative;text-align:center;transition:var(--primer-duration-fast) var(--primer-easing-easeInOut);transition-property:color,fill,background-color,border-color;-webkit-user-select:none;user-select:none}@media (pointer:coarse){.Button:before{content:"";height:100%;left:50%;min-height:48px;min-width:48px;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:100%}}.Button:hover{transition-duration:var(--primer-duration-fast)}.Button:active{transition:none}.Button:disabled,.Button[aria-disabled=true]{box-shadow:none;cursor:not-allowed}.Button-withTooltip{display:inline-block;position:relative}a.Button:hover,summary.Button:hover{text-decoration:none}.Button-content{align-items:center;display:grid;flex:1 0 auto;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;place-content:center}.Button-content>:not(:last-child){margin-right:var(--primer-control-medium-gap,8px)}.Button-content--alignStart{justify-content:start}.Button-visual{display:flex;pointer-events:none}.Button-visual .Counter{background-color:var(--color-btn-counter-bg);color:inherit}.Button-label{grid-area:text;line-height:var(--primer-text-body-lineHeight-medium,1.42857);white-space:nowrap}.Button-leadingVisual{grid-area:leadingVisual}.Button-trailingVisual{grid-area:trailingVisual}.Button-trailingAction{margin-right:calc(var(--base-size-4, 4px)*-1)}.Button--small{font-size:var(--primer-text-body-size-small,12px);gap:var(--primer-control-small-gap,4px);height:var(--primer-control-small-size,28px);padding:0 var(--primer-control-small-paddingInline-condensed,8px)}.Button--small .Button-label{line-height:var(--primer-text-body-lineHeight-small,1.66667)}.Button--small .Button-content>:not(:last-child){margin-right:var(--primer-control-small-gap,4px)}.Button--large{gap:var(--primer-control-large-gap,8px);height:var(--primer-control-large-size,40px);padding:0 var(--primer-control-large-paddingInline-spacious,16px)}.Button--large .Button-label{line-height:var(--primer-text-body-lineHeight-large,1.5)}.Button--large .Button-content>:not(:last-child){margin-right:var(--primer-control-large-gap,8px)}.Button--fullWidth{width:100%}.Button--primary{fill:var(--color-btn-primary-icon);background-color:var(--color-btn-primary-bg);border-color:var(--color-btn-primary-border);box-shadow:var(--color-btn-primary-shadow),var(--color-btn-primary-inset-shadow);color:var(--color-btn-primary-text)}.Button--primary:hover:not(:disabled){background-color:var(--color-btn-primary-hover-bg);border-color:var(--color-btn-primary-hover-border)}.Button--primary:focus{box-shadow:inset 0 0 0 3px var(--color-fg-on-emphasis);outline:2px solid var(--color-accent-fg);outline-offset:-2px}.Button--primary:focus:not(:focus-visible){box-shadow:none;outline:1px solid #0000}.Button--primary:focus-visible{box-shadow:inset 0 0 0 3px var(--color-fg-on-emphasis);outline:2px solid var(--color-accent-fg);outline-offset:-2px}.Button--primary:active:not(:disabled),.Button--primary[aria-pressed=true]{background-color:var(--color-btn-primary-selected-bg);box-shadow:var(--color-btn-primary-selected-shadow)}.Button--primary:disabled,.Button--primary[aria-disabled=true]{fill:var(--color-btn-primary-disabled-text);background-color:var(--color-btn-primary-disabled-bg);border-color:var(--color-btn-primary-disabled-border);color:var(--color-btn-primary-disabled-text)}.Button--secondary{fill:var(--color-fg-muted);background-color:var(--color-btn-bg);border-color:var(--color-btn-border);box-shadow:var(--color-btn-shadow),var(--color-btn-inset-shadow);color:var(--color-btn-text)}.Button--secondary:hover:not(:disabled){background-color:var(--color-btn-hover-bg);border-color:var(--color-btn-hover-border)}.Button--secondary:active:not(:disabled){background-color:var(--color-btn-active-bg);border-color:var(--color-btn-active-border)}.Button--secondary[aria-pressed=true]{background-color:var(--color-btn-selected-bg);box-shadow:var(--color-primer-shadow-inset)}.Button--secondary:disabled,.Button--secondary[aria-disabled=true]{fill:var(--color-primer-fg-disabled);background-color:var(--color-btn-bg);border-color:var(--color-btn-border);color:var(--color-primer-fg-disabled)}.Button--invisible{color:var(--color-btn-text)}.Button--invisible:hover:not(:disabled){background-color:var(--color-action-list-item-default-hover-bg)}.Button--invisible:active:not(:disabled),.Button--invisible[aria-pressed=true]{background-color:var(--color-action-list-item-default-active-bg)}.Button--invisible:disabled,.Button--invisible[aria-disabled=true]{fill:var(--color-primer-fg-disabled);background-color:var(--color-btn-bg);border-color:var(--color-btn-border);color:var(--color-primer-fg-disabled)}.Button--invisible.Button--invisible-noVisuals .Button-label{color:var(--color-accent-fg)}.Button--invisible .Button-visual{color:var(--color-fg-muted)}.Button--link{fill:var(--color-accent-fg);border:none;color:var(--color-accent-fg);display:inline-block;font-size:inherit;height:unset;padding:0}.Button--link:hover:not(:disabled){text-decoration:underline}.Button--link:focus,.Button--link:focus-visible{outline-offset:2px}.Button--link:disabled,.Button--link[aria-disabled=true]{fill:var(--color-primer-fg-disabled);background-color:initial;border-color:#0000;color:var(--color-primer-fg-disabled)}.Button--danger{fill:var(--color-btn-danger-icon);background-color:var(--color-btn-bg);border-color:var(--color-btn-border);box-shadow:var(--color-btn-shadow),var(--color-btn-inset-shadow);color:var(--color-btn-danger-text)}.Button--danger:hover:not(:disabled){fill:var(--color-btn-danger-hover-text);background-color:var(--color-btn-danger-hover-bg);border-color:var(--color-btn-danger-hover-border);box-shadow:var(--color-btn-danger-hover-shadow),var(--color-btn-danger-hover-inset-shadow);color:var(--color-btn-danger-hover-text)}.Button--danger:active:not(:disabled),.Button--danger[aria-pressed=true]{fill:var(--color-btn-danger-selected-text);background-color:var(--color-btn-danger-selected-bg);border-color:var(--color-btn-danger-selected-border);box-shadow:var(--color-btn-danger-selected-shadow);color:var(--color-btn-danger-selected-text)}.Button--danger:disabled,.Button--danger[aria-disabled=true]{fill:var(--color-btn-danger-disabled-text);background-color:var(--color-btn-danger-disabled-bg);border-color:var(--color-btn-border);color:var(--color-btn-danger-disabled-text)}.Button--iconOnly{display:inline-grid;padding:unset;place-content:center;width:var(--primer-control-medium-size,32px)}.Button--iconOnly.Button--small{width:var(--primer-control-small-size,28px)}.Button--iconOnly.Button--large{width:var(--primer-control-large-size,40px)}