primer_view_components 0.0.91 → 0.0.92

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.
@@ -1,18 +1,19 @@
1
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
+ };
1
6
  var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
7
  if (kind === "m") throw new TypeError("Private method is not writable");
3
8
  if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
10
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
11
  };
7
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
- };
12
12
  var _ToolTipElement_instances, _ToolTipElement_abortController, _ToolTipElement_align, _ToolTipElement_side, _ToolTipElement_allowUpdatePosition, _ToolTipElement_update, _ToolTipElement_updatePosition;
13
13
  import { getAnchoredPosition } from '@primer/behaviors';
14
14
  const TOOLTIP_OPEN_CLASS = 'tooltip-open';
15
15
  const TOOLTIP_ARROW_EDGE_OFFSET = 6;
16
+ const TOOLTIP_SR_ONLY_CLASS = 'sr-only';
16
17
  const DIRECTION_CLASSES = [
17
18
  'tooltip-n',
18
19
  'tooltip-s',
@@ -176,6 +177,14 @@ class ToolTipElement extends HTMLElement {
176
177
  get control() {
177
178
  return this.ownerDocument.getElementById(this.htmlFor);
178
179
  }
180
+ set hiddenFromView(value) {
181
+ this.classList.toggle(TOOLTIP_SR_ONLY_CLASS, value);
182
+ if (this.isConnected)
183
+ __classPrivateFieldGet(this, _ToolTipElement_instances, "m", _ToolTipElement_update).call(this);
184
+ }
185
+ get hiddenFromView() {
186
+ return this.classList.contains(TOOLTIP_SR_ONLY_CLASS);
187
+ }
179
188
  connectedCallback() {
180
189
  var _a;
181
190
  if (!this.shadowRoot) {
@@ -188,7 +197,7 @@ class ToolTipElement extends HTMLElement {
188
197
  <slot></slot>
189
198
  `;
190
199
  }
191
- this.hidden = true;
200
+ this.hiddenFromView = true;
192
201
  __classPrivateFieldSet(this, _ToolTipElement_allowUpdatePosition, true, "f");
193
202
  if (!this.id) {
194
203
  this.id = `tooltip-${Date.now()}-${(Math.random() * 10000).toFixed(0)}`;
@@ -216,19 +225,19 @@ class ToolTipElement extends HTMLElement {
216
225
  return;
217
226
  // Ensures that tooltip stays open when hovering between tooltip and element
218
227
  // WCAG Success Criterion 1.4.13 Hoverable
219
- if ((event.type === 'mouseenter' || event.type === 'focus') && this.hidden) {
220
- this.hidden = false;
228
+ if ((event.type === 'mouseenter' || event.type === 'focus') && this.hiddenFromView) {
229
+ this.hiddenFromView = false;
221
230
  }
222
231
  else if (event.type === 'blur') {
223
- this.hidden = true;
232
+ this.hiddenFromView = true;
224
233
  }
225
234
  else if (event.type === 'mouseleave' &&
226
235
  event.relatedTarget !== this.control &&
227
236
  event.relatedTarget !== this) {
228
- this.hidden = true;
237
+ this.hiddenFromView = true;
229
238
  }
230
- else if (event.type === 'keydown' && event.key === 'Escape' && !this.hidden) {
231
- this.hidden = true;
239
+ else if (event.type === 'keydown' && event.key === 'Escape' && !this.hiddenFromView) {
240
+ this.hiddenFromView = true;
232
241
  }
233
242
  }
234
243
  attributeChangedCallback(name) {
@@ -236,7 +245,15 @@ class ToolTipElement extends HTMLElement {
236
245
  if (!this.id || !this.control)
237
246
  return;
238
247
  if (this.type === 'label') {
239
- this.control.setAttribute('aria-labelledby', this.id);
248
+ let labelledBy = this.control.getAttribute('aria-labelledby');
249
+ if (labelledBy) {
250
+ labelledBy = `${labelledBy} ${this.id}`;
251
+ }
252
+ else {
253
+ labelledBy = this.id;
254
+ }
255
+ this.control.setAttribute('aria-labelledby', labelledBy);
256
+ // Prevent duplicate accessible name announcements.
240
257
  this.setAttribute('aria-hidden', 'true');
241
258
  }
242
259
  else {
@@ -245,9 +262,6 @@ class ToolTipElement extends HTMLElement {
245
262
  this.control.setAttribute('aria-describedby', describedBy);
246
263
  }
247
264
  }
248
- else if (this.isConnected && name === 'hidden') {
249
- __classPrivateFieldGet(this, _ToolTipElement_instances, "m", _ToolTipElement_update).call(this);
250
- }
251
265
  else if (name === 'data-direction') {
252
266
  this.classList.remove(...DIRECTION_CLASSES);
253
267
  const direction = this.direction;
@@ -287,21 +301,21 @@ class ToolTipElement extends HTMLElement {
287
301
  }
288
302
  }
289
303
  _ToolTipElement_abortController = new WeakMap(), _ToolTipElement_align = new WeakMap(), _ToolTipElement_side = new WeakMap(), _ToolTipElement_allowUpdatePosition = new WeakMap(), _ToolTipElement_instances = new WeakSet(), _ToolTipElement_update = function _ToolTipElement_update() {
290
- if (this.hidden) {
304
+ if (this.hiddenFromView) {
291
305
  this.classList.remove(TOOLTIP_OPEN_CLASS, ...DIRECTION_CLASSES);
292
306
  }
293
307
  else {
294
308
  this.classList.add(TOOLTIP_OPEN_CLASS);
295
309
  for (const tooltip of this.ownerDocument.querySelectorAll(this.tagName)) {
296
310
  if (tooltip !== this)
297
- tooltip.hidden = true;
311
+ tooltip.hiddenFromView = true;
298
312
  }
299
313
  __classPrivateFieldGet(this, _ToolTipElement_instances, "m", _ToolTipElement_updatePosition).call(this);
300
314
  }
301
315
  }, _ToolTipElement_updatePosition = function _ToolTipElement_updatePosition() {
302
316
  if (!this.control)
303
317
  return;
304
- if (!__classPrivateFieldGet(this, _ToolTipElement_allowUpdatePosition, "f") || this.hidden)
318
+ if (!__classPrivateFieldGet(this, _ToolTipElement_allowUpdatePosition, "f") || this.hiddenFromView)
305
319
  return;
306
320
  const TOOLTIP_OFFSET = 10;
307
321
  this.style.left = `0px`; // Ensures we have reliable tooltip width in `getAnchoredPosition`
@@ -345,7 +359,7 @@ _ToolTipElement_abortController = new WeakMap(), _ToolTipElement_align = new Wea
345
359
  }
346
360
  this.classList.add(`tooltip-${direction}`);
347
361
  };
348
- ToolTipElement.observedAttributes = ['data-type', 'data-direction', 'id', 'hidden'];
362
+ ToolTipElement.observedAttributes = ['data-type', 'data-direction', 'id'];
349
363
  if (!window.customElements.get('tool-tip')) {
350
364
  window.ToolTipElement = ToolTipElement;
351
365
  window.customElements.define('tool-tip', ToolTipElement);
@@ -4,6 +4,7 @@ import {getAnchoredPosition} from '@primer/behaviors'
4
4
 
5
5
  const TOOLTIP_OPEN_CLASS = 'tooltip-open'
6
6
  const TOOLTIP_ARROW_EDGE_OFFSET = 6
7
+ const TOOLTIP_SR_ONLY_CLASS = 'sr-only'
7
8
 
8
9
  type Direction = 'n' | 's' | 'e' | 'w' | 'ne' | 'se' | 'nw' | 'sw'
9
10
 
@@ -176,6 +177,15 @@ class ToolTipElement extends HTMLElement {
176
177
  return this.ownerDocument.getElementById(this.htmlFor)
177
178
  }
178
179
 
180
+ set hiddenFromView(value: true | false) {
181
+ this.classList.toggle(TOOLTIP_SR_ONLY_CLASS, value)
182
+ if (this.isConnected) this.#update()
183
+ }
184
+
185
+ get hiddenFromView() {
186
+ return this.classList.contains(TOOLTIP_SR_ONLY_CLASS)
187
+ }
188
+
179
189
  connectedCallback() {
180
190
  if (!this.shadowRoot) {
181
191
  const shadow = this.attachShadow({mode: 'open'})
@@ -187,7 +197,7 @@ class ToolTipElement extends HTMLElement {
187
197
  <slot></slot>
188
198
  `
189
199
  }
190
- this.hidden = true
200
+ this.hiddenFromView = true
191
201
  this.#allowUpdatePosition = true
192
202
 
193
203
  if (!this.id) {
@@ -220,30 +230,30 @@ class ToolTipElement extends HTMLElement {
220
230
 
221
231
  // Ensures that tooltip stays open when hovering between tooltip and element
222
232
  // WCAG Success Criterion 1.4.13 Hoverable
223
- if ((event.type === 'mouseenter' || event.type === 'focus') && this.hidden) {
224
- this.hidden = false
233
+ if ((event.type === 'mouseenter' || event.type === 'focus') && this.hiddenFromView) {
234
+ this.hiddenFromView = false
225
235
  } else if (event.type === 'blur') {
226
- this.hidden = true
236
+ this.hiddenFromView = true
227
237
  } else if (
228
238
  event.type === 'mouseleave' &&
229
239
  (event as MouseEvent).relatedTarget !== this.control &&
230
240
  (event as MouseEvent).relatedTarget !== this
231
241
  ) {
232
- this.hidden = true
233
- } else if (event.type === 'keydown' && (event as KeyboardEvent).key === 'Escape' && !this.hidden) {
234
- this.hidden = true
242
+ this.hiddenFromView = true
243
+ } else if (event.type === 'keydown' && (event as KeyboardEvent).key === 'Escape' && !this.hiddenFromView) {
244
+ this.hiddenFromView = true
235
245
  }
236
246
  }
237
247
 
238
- static observedAttributes = ['data-type', 'data-direction', 'id', 'hidden']
248
+ static observedAttributes = ['data-type', 'data-direction', 'id']
239
249
 
240
250
  #update() {
241
- if (this.hidden) {
251
+ if (this.hiddenFromView) {
242
252
  this.classList.remove(TOOLTIP_OPEN_CLASS, ...DIRECTION_CLASSES)
243
253
  } else {
244
254
  this.classList.add(TOOLTIP_OPEN_CLASS)
245
- for (const tooltip of this.ownerDocument.querySelectorAll<HTMLElement>(this.tagName)) {
246
- if (tooltip !== this) tooltip.hidden = true
255
+ for (const tooltip of this.ownerDocument.querySelectorAll<ToolTipElement>(this.tagName)) {
256
+ if (tooltip !== this) tooltip.hiddenFromView = true
247
257
  }
248
258
  this.#updatePosition()
249
259
  }
@@ -253,15 +263,21 @@ class ToolTipElement extends HTMLElement {
253
263
  if (name === 'id' || name === 'data-type') {
254
264
  if (!this.id || !this.control) return
255
265
  if (this.type === 'label') {
256
- this.control.setAttribute('aria-labelledby', this.id)
266
+ let labelledBy = this.control.getAttribute('aria-labelledby')
267
+ if (labelledBy) {
268
+ labelledBy = `${labelledBy} ${this.id}`
269
+ } else {
270
+ labelledBy = this.id
271
+ }
272
+ this.control.setAttribute('aria-labelledby', labelledBy)
273
+
274
+ // Prevent duplicate accessible name announcements.
257
275
  this.setAttribute('aria-hidden', 'true')
258
276
  } else {
259
277
  let describedBy = this.control.getAttribute('aria-describedby')
260
278
  describedBy ? (describedBy = `${describedBy} ${this.id}`) : (describedBy = this.id)
261
279
  this.control.setAttribute('aria-describedby', describedBy)
262
280
  }
263
- } else if (this.isConnected && name === 'hidden') {
264
- this.#update()
265
281
  } else if (name === 'data-direction') {
266
282
  this.classList.remove(...DIRECTION_CLASSES)
267
283
  const direction = this.direction
@@ -295,7 +311,7 @@ class ToolTipElement extends HTMLElement {
295
311
 
296
312
  #updatePosition() {
297
313
  if (!this.control) return
298
- if (!this.#allowUpdatePosition || this.hidden) return
314
+ if (!this.#allowUpdatePosition || this.hiddenFromView) return
299
315
 
300
316
  const TOOLTIP_OFFSET = 10
301
317
 
@@ -107,9 +107,12 @@ module Primer
107
107
 
108
108
  @text = text
109
109
  @system_arguments = system_arguments
110
- @system_arguments[:hidden] = true
111
110
  @system_arguments[:tag] = :"tool-tip"
112
111
  @system_arguments[:for] = for_id
112
+ system_arguments[:classes] = class_names(
113
+ system_arguments[:classes],
114
+ "sr-only"
115
+ )
113
116
  @system_arguments[:position] = :absolute
114
117
  @system_arguments[:"data-direction"] = fetch_or_fallback(DIRECTION_OPTIONS, direction, DIRECTION_DEFAULT).to_s
115
118
  @system_arguments[:"data-type"] = fetch_or_fallback(TYPE_OPTIONS, type, TYPE_FALLBACK).to_s
@@ -5,5 +5,5 @@ import './time_ago_component';
5
5
  import './local_time';
6
6
  import './image_crop';
7
7
  import './dropdown';
8
+ import './alpha/toggle-switch-element';
8
9
  import './alpha/tool-tip-element';
9
- import './alpha/segmented-control-element';
@@ -5,5 +5,5 @@ import './time_ago_component';
5
5
  import './local_time';
6
6
  import './image_crop';
7
7
  import './dropdown';
8
+ import './alpha/toggle-switch-element';
8
9
  import './alpha/tool-tip-element';
9
- import './alpha/segmented-control-element';
@@ -5,4 +5,5 @@ import './time_ago_component'
5
5
  import './local_time'
6
6
  import './image_crop'
7
7
  import './dropdown'
8
+ import './alpha/toggle-switch-element'
8
9
  import './alpha/tool-tip-element'
@@ -38,7 +38,7 @@ module Primer
38
38
  end
39
39
 
40
40
  TemplateGlob = Struct.new(:glob_pattern, :method_name, :on_compile_callback)
41
- TemplateParams = Struct.new(:source, :identifier, :type, :format)
41
+ TemplateParams = Struct.new(:source, :identifier, :type, :format, keyword_init: true)
42
42
 
43
43
  attr_accessor :template_root_path
44
44
 
@@ -9,14 +9,12 @@ module ERBLint
9
9
  COMPONENT_TO_USE_INSTEAD = {
10
10
  "Primer::HiddenTextExpander" => "Primer::Alpha::HiddenTextExpander",
11
11
  "Primer::HeadingComponent" => "Primer::Beta::Heading",
12
- "Primer::ButtonGroup" => "Primer::Beta::ButtonGroup",
13
12
  "Primer::CloseButton" => "Primer::Beta::CloseButton",
14
13
  "Primer::CounterComponent" => "Primer::Beta::Counter",
15
14
  "Primer::DetailsComponent" => "Primer::Beta::Details",
16
15
  "Primer::Alpha::AutoComplete::Item" => "Primer::Beta::AutoComplete::Item",
17
16
  "Primer::Alpha::AutoComplete" => "Primer::Beta::AutoComplete",
18
17
  "Primer::BlankslateComponent" => "Primer::Beta::Blankslate",
19
- "Primer::BorderBoxComponent" => "Primer::Beta::BorderBox",
20
18
  "Primer::BoxComponent" => "Primer::Box",
21
19
  "Primer::DropdownMenuComponent" => nil,
22
20
  "Primer::Tooltip" => "Primer::Alpha::Tooltip",
@@ -5,7 +5,7 @@ module Primer
5
5
  module VERSION
6
6
  MAJOR = 0
7
7
  MINOR = 0
8
- PATCH = 91
8
+ PATCH = 92
9
9
 
10
10
  STRING = [MAJOR, MINOR, PATCH].join(".")
11
11
  end
@@ -23,7 +23,6 @@ module RuboCop
23
23
  "Primer::CloseButton" => "Primer::Beta::CloseButton",
24
24
  "Primer::CounterComponent" => "Primer::Beta::Counter",
25
25
  "Primer::BlankslateComponent" => "Primer::Beta::Blankslate",
26
- "Primer::BorderBoxComponent" => "Primer::Beta::BorderBox",
27
26
  "Primer::BaseButton" => "Primer::Beta::BaseButton",
28
27
  "Primer::TestComponent" => "Primer::Beta::Test"
29
28
  }.freeze
@@ -9,6 +9,7 @@
9
9
  "Primer::Alpha::TabNav": "",
10
10
  "Primer::Alpha::TabPanels": "",
11
11
  "Primer::Alpha::TextField": "",
12
+ "Primer::Alpha::ToggleSwitch": "",
12
13
  "Primer::Alpha::Tooltip": "",
13
14
  "Primer::Alpha::UnderlineNav": "",
14
15
  "Primer::Alpha::UnderlinePanels": "",
@@ -33,11 +34,9 @@
33
34
  "Primer::Beta::Truncate": "",
34
35
  "Primer::Beta::Truncate::TruncateText": "",
35
36
  "Primer::BlankslateComponent": "",
36
- "Primer::BorderBoxComponent": "",
37
37
  "Primer::Box": "",
38
38
  "Primer::BoxComponent": "",
39
39
  "Primer::ButtonComponent": "",
40
- "Primer::ButtonGroup": "",
41
40
  "Primer::ClipboardCopy": "",
42
41
  "Primer::CloseButton": "",
43
42
  "Primer::ConditionalWrapper": "",
@@ -136,6 +136,26 @@
136
136
  },
137
137
  "Primer::Alpha::TextField": {
138
138
  },
139
+ "Primer::Alpha::ToggleSwitch": {
140
+ "SIZE_DEFAULT": "medium",
141
+ "SIZE_MAPPINGS": {
142
+ "medium": null,
143
+ "small": "ToggleSwitch--small"
144
+ },
145
+ "SIZE_OPTIONS": [
146
+ "medium",
147
+ "small"
148
+ ],
149
+ "STATUS_LABEL_POSITION_DEFAULT": "start",
150
+ "STATUS_LABEL_POSITION_MAPPINGS": {
151
+ "start": null,
152
+ "end": "ToggleSwitch--statusAtEnd"
153
+ },
154
+ "STATUS_LABEL_POSITION_OPTIONS": [
155
+ "start",
156
+ "end"
157
+ ]
158
+ },
139
159
  "Primer::Alpha::Tooltip": {
140
160
  "DIRECTION_DEFAULT": "s",
141
161
  "DIRECTION_OPTIONS": [
@@ -373,8 +393,6 @@
373
393
  },
374
394
  "Primer::BlankslateComponent": {
375
395
  },
376
- "Primer::BorderBoxComponent": {
377
- },
378
396
  "Primer::Box": {
379
397
  },
380
398
  "Primer::BoxComponent": {
@@ -408,8 +426,6 @@
408
426
  "medium"
409
427
  ]
410
428
  },
411
- "Primer::ButtonGroup": {
412
- },
413
429
  "Primer::ClipboardCopy": {
414
430
  },
415
431
  "Primer::CloseButton": {
data/static/statuses.json CHANGED
@@ -9,6 +9,7 @@
9
9
  "Primer::Alpha::TabNav": "alpha",
10
10
  "Primer::Alpha::TabPanels": "alpha",
11
11
  "Primer::Alpha::TextField": "alpha",
12
+ "Primer::Alpha::ToggleSwitch": "alpha",
12
13
  "Primer::Alpha::Tooltip": "alpha",
13
14
  "Primer::Alpha::UnderlineNav": "alpha",
14
15
  "Primer::Alpha::UnderlinePanels": "alpha",
@@ -33,11 +34,9 @@
33
34
  "Primer::Beta::Truncate": "beta",
34
35
  "Primer::Beta::Truncate::TruncateText": "alpha",
35
36
  "Primer::BlankslateComponent": "deprecated",
36
- "Primer::BorderBoxComponent": "deprecated",
37
37
  "Primer::Box": "stable",
38
38
  "Primer::BoxComponent": "deprecated",
39
39
  "Primer::ButtonComponent": "beta",
40
- "Primer::ButtonGroup": "deprecated",
41
40
  "Primer::ClipboardCopy": "beta",
42
41
  "Primer::CloseButton": "deprecated",
43
42
  "Primer::ConditionalWrapper": "alpha",
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: primer_view_components
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.91
4
+ version: 0.0.92
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitHub Open Source
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-17 00:00:00.000000000 Z
11
+ date: 2022-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview
@@ -415,6 +415,8 @@ files:
415
415
  - app/components/primer/alpha/hidden_text_expander.rb
416
416
  - app/components/primer/alpha/layout.html.erb
417
417
  - app/components/primer/alpha/layout.rb
418
+ - app/components/primer/alpha/modal-dialog-element.d.ts
419
+ - app/components/primer/alpha/modal-dialog-element.js
418
420
  - app/components/primer/alpha/segmented-control-element.d.ts
419
421
  - app/components/primer/alpha/segmented-control-element.js
420
422
  - app/components/primer/alpha/tab_nav.html.erb
@@ -422,6 +424,11 @@ files:
422
424
  - app/components/primer/alpha/tab_panels.html.erb
423
425
  - app/components/primer/alpha/tab_panels.rb
424
426
  - app/components/primer/alpha/text_field.rb
427
+ - app/components/primer/alpha/toggle-switch-element.d.ts
428
+ - app/components/primer/alpha/toggle-switch-element.js
429
+ - app/components/primer/alpha/toggle-switch-element.ts
430
+ - app/components/primer/alpha/toggle_switch.html.erb
431
+ - app/components/primer/alpha/toggle_switch.rb
425
432
  - app/components/primer/alpha/tool-tip-element.d.ts
426
433
  - app/components/primer/alpha/tool-tip-element.js
427
434
  - app/components/primer/alpha/tool-tip-element.ts
@@ -464,12 +471,10 @@ files:
464
471
  - app/components/primer/beta/truncate.rb
465
472
  - app/components/primer/blankslate_component.html.erb
466
473
  - app/components/primer/blankslate_component.rb
467
- - app/components/primer/border_box_component.rb
468
474
  - app/components/primer/box.rb
469
475
  - app/components/primer/box_component.rb
470
476
  - app/components/primer/button_component.html.erb
471
477
  - app/components/primer/button_component.rb
472
- - app/components/primer/button_group.rb
473
478
  - app/components/primer/clipboard_copy.html.erb
474
479
  - app/components/primer/clipboard_copy.rb
475
480
  - app/components/primer/clipboard_copy_component.d.ts
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Primer
4
- class BorderBoxComponent < Primer::Beta::BorderBox
5
- status :deprecated
6
- end
7
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Primer
4
- class ButtonGroup < Primer::Beta::ButtonGroup
5
- status :deprecated
6
- end
7
- end