primer_view_components 0.0.17 → 0.0.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/app/components/primer/base_component.rb +5 -2
  4. data/app/components/primer/blankslate_component.rb +3 -2
  5. data/app/components/primer/border_box_component.rb +4 -0
  6. data/app/components/primer/box_component.rb +10 -0
  7. data/app/components/primer/breadcrumb_component.rb +2 -1
  8. data/app/components/primer/button_component.rb +1 -1
  9. data/app/components/primer/button_group_component.html.erb +5 -0
  10. data/app/components/primer/button_group_component.rb +34 -0
  11. data/app/components/primer/button_marketing_component.rb +73 -0
  12. data/app/components/primer/component.rb +13 -0
  13. data/app/components/primer/counter_component.rb +11 -8
  14. data/app/components/primer/details_component.rb +10 -6
  15. data/app/components/primer/dropdown_menu_component.rb +31 -3
  16. data/app/components/primer/flash_component.rb +1 -0
  17. data/app/components/primer/flex_component.rb +10 -9
  18. data/app/components/primer/flex_item_component.rb +2 -1
  19. data/app/components/primer/heading_component.rb +7 -0
  20. data/app/components/primer/label_component.rb +4 -4
  21. data/app/components/primer/octicon_component.rb +4 -3
  22. data/app/components/primer/popover_component.rb +2 -0
  23. data/app/components/primer/progress_bar_component.rb +2 -2
  24. data/app/components/primer/spinner_component.rb +1 -2
  25. data/app/components/primer/state_component.rb +3 -3
  26. data/app/components/primer/subhead_component.rb +3 -0
  27. data/app/components/primer/timeline_item_component.rb +3 -0
  28. data/app/components/primer/tooltip_component.rb +88 -0
  29. data/app/components/primer/truncate_component.rb +41 -0
  30. data/app/components/primer/underline_nav_component.rb +26 -1
  31. data/app/components/primer/view_components.rb +4 -0
  32. data/lib/primer/class_name_helper.rb +1 -0
  33. data/lib/primer/classify.rb +127 -108
  34. data/lib/primer/fetch_or_fallback_helper.rb +1 -0
  35. data/lib/primer/join_style_arguments_helper.rb +1 -0
  36. data/lib/primer/view_components.rb +1 -0
  37. data/lib/primer/view_components/engine.rb +1 -0
  38. data/lib/primer/view_components/version.rb +1 -1
  39. metadata +41 -22
@@ -4,6 +4,7 @@
4
4
  #
5
5
  # Helps build a list of conditional class names
6
6
  module Primer
7
+ # :nodoc:
7
8
  module ClassNameHelper
8
9
  def class_names(*args)
9
10
  classes = []
@@ -1,18 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Primer
4
+ # :nodoc:
4
5
  class Classify
5
- MARGIN_DIRECTION_KEYS = [:mt, :ml, :mb, :mr]
6
- SPACING_KEYS = ([:m, :my, :mx, :p, :py, :px, :pt, :pl, :pb, :pr] + MARGIN_DIRECTION_KEYS).freeze
6
+ MARGIN_DIRECTION_KEYS = %i[mt ml mb mr].freeze
7
+ SPACING_KEYS = (%i[m my mx p py px pt pl pb pr] + MARGIN_DIRECTION_KEYS).freeze
7
8
  DIRECTION_KEY = :direction
8
9
  JUSTIFY_CONTENT_KEY = :justify_content
9
10
  ALIGN_ITEMS_KEY = :align_items
10
11
  DISPLAY_KEY = :display
11
12
  RESPONSIVE_KEYS = ([DISPLAY_KEY, DIRECTION_KEY, JUSTIFY_CONTENT_KEY, ALIGN_ITEMS_KEY, :col, :float] + SPACING_KEYS).freeze
12
- BREAKPOINTS = ["", "-sm", "-md", "-lg", "-xl"]
13
+ BREAKPOINTS = ["", "-sm", "-md", "-lg", "-xl"].freeze
13
14
 
14
15
  # Keys where we can simply translate { key: value } into ".key-value"
15
- CONCAT_KEYS = SPACING_KEYS + [:hide, :position, :v, :float, :col, :text, :box_shadow].freeze
16
+ CONCAT_KEYS = SPACING_KEYS + %i[hide position v float col text box_shadow].freeze
16
17
 
17
18
  INVALID_CLASS_NAME_PREFIXES =
18
19
  (["bg-", "color-", "text-", "d-", "v-align-", "wb-", "text-", "box-shadow-"] + CONCAT_KEYS.map { |k| "#{k}-" }).freeze
@@ -21,7 +22,7 @@ module Primer
21
22
  BG_KEY = :bg
22
23
  VERTICAL_ALIGN_KEY = :vertical_align
23
24
  WORD_BREAK_KEY = :word_break
24
- TEXT_KEYS = [:text_align, :font_weight]
25
+ TEXT_KEYS = %i[text_align font_weight].freeze
25
26
  FLEX_KEY = :flex
26
27
  FLEX_GROW_KEY = :flex_grow
27
28
  FLEX_SHRINK_KEY = :flex_shrink
@@ -30,19 +31,20 @@ module Primer
30
31
  HEIGHT_KEY = :height
31
32
  BOX_SHADOW_KEY = :box_shadow
32
33
  VISIBILITY_KEY = :visibility
34
+ ANIMATION_KEY = :animation
33
35
 
34
36
  BOOLEAN_MAPPINGS = {
35
37
  underline: {
36
38
  mappings: [
37
39
  {
38
40
  value: true,
39
- css_class: "text-underline",
41
+ css_class: "text-underline"
40
42
  },
41
43
  {
42
44
  value: false,
43
- css_class: "no-underline",
44
- },
45
- ],
45
+ css_class: "no-underline"
46
+ }
47
+ ]
46
48
  },
47
49
  top: {
48
50
  mappings: [
@@ -77,8 +79,9 @@ module Primer
77
79
  ]
78
80
  }
79
81
  }.freeze
80
- BORDER_KEYS = [:border, :border_color].freeze
81
- BORDER_MARGIN_KEYS = [:border_top, :border_bottom, :border_left, :border_right].freeze
82
+ BORDER_KEYS = %i[border border_color].freeze
83
+ BORDER_MARGIN_KEYS = %i[border_top border_bottom border_left border_right].freeze
84
+ BORDER_RADIUS_KEY = :border_radius
82
85
  TYPOGRAPHY_KEYS = [:font_size].freeze
83
86
  VALID_KEYS = (
84
87
  CONCAT_KEYS +
@@ -88,6 +91,7 @@ module Primer
88
91
  TYPOGRAPHY_KEYS +
89
92
  TEXT_KEYS +
90
93
  [
94
+ BORDER_RADIUS_KEY,
91
95
  COLOR_KEY,
92
96
  BG_KEY,
93
97
  DISPLAY_KEY,
@@ -103,7 +107,8 @@ module Primer
103
107
  WIDTH_KEY,
104
108
  HEIGHT_KEY,
105
109
  BOX_SHADOW_KEY,
106
- VISIBILITY_KEY
110
+ VISIBILITY_KEY,
111
+ ANIMATION_KEY
107
112
  ]
108
113
  ).freeze
109
114
 
@@ -111,30 +116,31 @@ module Primer
111
116
  def call(classes: "", style: nil, **args)
112
117
  extracted_results = extract_hash(args)
113
118
 
114
- {
115
- class: [validated_class_names(classes), extracted_results[:classes]].compact.join(" ").presence,
116
- style: [extracted_results[:styles], style].compact.join("").presence,
117
- }.merge(extracted_results.except(:classes, :styles))
119
+ extracted_results[:class] = [
120
+ validated_class_names(classes),
121
+ extracted_results.delete(:classes)
122
+ ].compact.join(" ").presence
123
+
124
+ extracted_results[:style] = [
125
+ extracted_results.delete(:styles),
126
+ style
127
+ ].compact.join("").presence
128
+
129
+ extracted_results
118
130
  end
119
131
 
120
132
  private
121
133
 
122
134
  def validated_class_names(classes)
123
- return unless classes.present?
135
+ return if classes.blank?
124
136
 
125
137
  if ENV["RAILS_ENV"] == "development"
126
138
  invalid_class_names =
127
139
  classes.split(" ").each_with_object([]) do |class_name, memo|
128
- if INVALID_CLASS_NAME_PREFIXES.any? { |prefix| class_name.start_with?(prefix) }
129
- memo << class_name
130
- end
140
+ memo << class_name if INVALID_CLASS_NAME_PREFIXES.any? { |prefix| class_name.start_with?(prefix) }
131
141
  end
132
142
 
133
- if invalid_class_names.any?
134
- raise ArgumentError.new(
135
- "Use System Arguments (https://primer.style/view-components/system-arguments) instead of Primer CSS class #{'name'.pluralize(invalid_class_names.length)} #{invalid_class_names.to_sentence}. This warning will not be raised in production.",
136
- )
137
- end
143
+ raise ArgumentError, "Use System Arguments (https://primer.style/view-components/system-arguments) instead of Primer CSS class #{'name'.pluralize(invalid_class_names.length)} #{invalid_class_names.to_sentence}. This warning will not be raised in production." if invalid_class_names.any?
138
144
  end
139
145
 
140
146
  classes
@@ -152,98 +158,111 @@ module Primer
152
158
  # Example usage:
153
159
  # extract_hash({ mt: 4, py: 2 }) => "mt-4 py-2"
154
160
  def extract_hash(styles_hash)
155
- out = styles_hash.each_with_object({ classes: [], styles: [] }) do |(key, value), memo|
161
+ memo = { classes: [], styles: +"" }
162
+ styles_hash.each do |key, value|
156
163
  next unless VALID_KEYS.include?(key)
157
164
 
158
- if value.is_a?(Array) && !RESPONSIVE_KEYS.include?(key)
159
- raise ArgumentError, "#{key} does not support responsive values"
165
+ if value.is_a?(Array)
166
+ raise ArgumentError, "#{key} does not support responsive values" unless RESPONSIVE_KEYS.include?(key)
167
+
168
+ value.each_with_index do |val, index|
169
+ extract_value(memo, key, val, BREAKPOINTS[index])
170
+ end
171
+ else
172
+ extract_value(memo, key, value, BREAKPOINTS[0])
160
173
  end
174
+ end
161
175
 
162
- Array(value).each_with_index do |val, index|
163
- next if val.nil?
176
+ memo[:classes] = memo[:classes].join(" ")
164
177
 
165
- if SPACING_KEYS.include?(key)
166
- if MARGIN_DIRECTION_KEYS.include?(key)
167
- raise ArgumentError, "value of #{key} must be between -6 and 6" if (val < -6 || val > 6)
168
- elsif !((key == :mx || key == :my) && val == :auto)
169
- raise ArgumentError, "value of #{key} must be between 0 and 6" if (val < 0 || val > 6)
170
- end
171
- end
178
+ memo
179
+ end
172
180
 
173
- dasherized_val = val.to_s.dasherize
174
- breakpoint = BREAKPOINTS[index]
175
-
176
- if BOOLEAN_MAPPINGS.has_key?(key)
177
- BOOLEAN_MAPPINGS[key][:mappings].map { |m| m[:css_class] if m[:value] == val }.compact.each do |css_class|
178
- memo[:classes] << css_class
179
- end
180
- elsif key == BG_KEY
181
- if val.to_s.starts_with?("#")
182
- memo[:styles] << "background-color: #{val};"
183
- else
184
- memo[:classes] << "bg-#{dasherized_val}"
185
- end
186
- elsif key == COLOR_KEY
187
- if val.to_s.chars.last !~ /\D/
188
- memo[:classes] << "color-#{dasherized_val}"
189
- else
190
- memo[:classes] << "text-#{dasherized_val}"
191
- end
192
- elsif key == DISPLAY_KEY
193
- memo[:classes] << "d#{breakpoint}-#{dasherized_val}"
194
- elsif key == VERTICAL_ALIGN_KEY
195
- memo[:classes] << "v-align-#{dasherized_val}"
196
- elsif key == WORD_BREAK_KEY
197
- memo[:classes] << "wb-#{dasherized_val}"
198
- elsif BORDER_KEYS.include?(key)
199
- memo[:classes] << "border-#{dasherized_val}"
200
- elsif BORDER_MARGIN_KEYS.include?(key)
201
- memo[:classes] << "#{key.to_s.dasherize}-#{val}"
202
- elsif key == DIRECTION_KEY
203
- memo[:classes] << "flex#{breakpoint}-#{dasherized_val}"
204
- elsif key == JUSTIFY_CONTENT_KEY
205
- formatted_value = val.to_s.gsub(/(flex\_|space\_)/, "")
206
- memo[:classes] << "flex#{breakpoint}-justify-#{formatted_value}"
207
- elsif key == ALIGN_ITEMS_KEY
208
- memo[:classes] << "flex#{breakpoint}-items-#{val.to_s.gsub("flex_", "")}"
209
- elsif key == FLEX_KEY
210
- memo[:classes] << "flex-#{val}"
211
- elsif key == FLEX_GROW_KEY
212
- memo[:classes] << "flex-grow-#{val}"
213
- elsif key == FLEX_SHRINK_KEY
214
- memo[:classes] << "flex-shrink-#{val}"
215
- elsif key == ALIGN_SELF_KEY
216
- memo[:classes] << "flex-self-#{val}"
217
- elsif key == WIDTH_KEY || key == HEIGHT_KEY
218
- if val == :fit || val == :fill
219
- memo[:classes] << "#{key}-#{val}"
220
- else
221
- memo[key] = val
222
- end
223
- elsif TEXT_KEYS.include?(key)
224
- memo[:classes] << "text-#{dasherized_val}"
225
- elsif TYPOGRAPHY_KEYS.include?(key)
226
- memo[:classes] << "f#{dasherized_val}"
227
- elsif MARGIN_DIRECTION_KEYS.include?(key) && val < 0
228
- memo[:classes] << "#{key.to_s.dasherize}#{breakpoint}-n#{val.abs}"
229
- elsif key == BOX_SHADOW_KEY
230
- if val == true
231
- memo[:classes] << "box-shadow"
232
- else
233
- memo[:classes] << "box-shadow-#{dasherized_val}"
234
- end
235
- elsif key == VISIBILITY_KEY
236
- memo[:classes] << "v-#{dasherized_val}"
237
- else
238
- memo[:classes] << "#{key.to_s.dasherize}#{breakpoint}-#{dasherized_val}"
239
- end
181
+ def extract_value(memo, key, val, breakpoint)
182
+ return if val.nil?
183
+
184
+ if SPACING_KEYS.include?(key)
185
+ if MARGIN_DIRECTION_KEYS.include?(key)
186
+ raise ArgumentError, "value of #{key} must be between -6 and 6" if val < -6 || val > 6
187
+ elsif !((key == :mx || key == :my) && val == :auto)
188
+ raise ArgumentError, "value of #{key} must be between 0 and 6" if val.negative? || val > 6
240
189
  end
241
190
  end
242
191
 
243
- {
244
- classes: out[:classes].join(" "),
245
- styles: out[:styles].join(" ")
246
- }.merge(out.except(:classes, :styles))
192
+ if BOOLEAN_MAPPINGS.key?(key)
193
+ BOOLEAN_MAPPINGS[key][:mappings].map { |m| m[:css_class] if m[:value] == val }.compact.each do |css_class|
194
+ memo[:classes] << css_class
195
+ end
196
+ elsif key == BG_KEY
197
+ if val.to_s.starts_with?("#")
198
+ memo[:styles] << "background-color: #{val};"
199
+ else
200
+ memo[:classes] << "bg-#{val.to_s.dasherize}"
201
+ end
202
+ elsif key == COLOR_KEY
203
+ char_code = val[-1].ord
204
+ # Does this string end in a character that is NOT a number?
205
+ memo[:classes] << if char_code >= 48 && char_code <= 57 # 48 is the charcode for 0; 57 is the charcode for 9
206
+ "color-#{val.to_s.dasherize}"
207
+ else
208
+ "text-#{val.to_s.dasherize}"
209
+ end
210
+ elsif key == DISPLAY_KEY
211
+ memo[:classes] << "d#{breakpoint}-#{val.to_s.dasherize}"
212
+ elsif key == VERTICAL_ALIGN_KEY
213
+ memo[:classes] << "v-align-#{val.to_s.dasherize}"
214
+ elsif key == WORD_BREAK_KEY
215
+ memo[:classes] << "wb-#{val.to_s.dasherize}"
216
+ elsif BORDER_KEYS.include?(key)
217
+ memo[:classes] << "border-#{val.to_s.dasherize}"
218
+ elsif BORDER_MARGIN_KEYS.include?(key)
219
+ memo[:classes] << "#{key.to_s.dasherize}-#{val}"
220
+ elsif key == BORDER_RADIUS_KEY
221
+ memo[:classes] << "rounded-#{val}"
222
+ elsif key == DIRECTION_KEY
223
+ memo[:classes] << "flex#{breakpoint}-#{val.to_s.dasherize}"
224
+ elsif key == JUSTIFY_CONTENT_KEY
225
+ formatted_value = val.to_s.gsub(/(flex\_|space\_)/, "")
226
+ memo[:classes] << "flex#{breakpoint}-justify-#{formatted_value}"
227
+ elsif key == ALIGN_ITEMS_KEY
228
+ memo[:classes] << "flex#{breakpoint}-items-#{val.to_s.gsub('flex_', '')}"
229
+ elsif key == FLEX_KEY
230
+ memo[:classes] << "flex-#{val}"
231
+ elsif key == FLEX_GROW_KEY
232
+ memo[:classes] << "flex-grow-#{val}"
233
+ elsif key == FLEX_SHRINK_KEY
234
+ memo[:classes] << "flex-shrink-#{val}"
235
+ elsif key == ALIGN_SELF_KEY
236
+ memo[:classes] << "flex-self-#{val}"
237
+ elsif key == WIDTH_KEY || key == HEIGHT_KEY
238
+ if val == :fit || val == :fill
239
+ memo[:classes] << "#{key}-#{val}"
240
+ else
241
+ memo[key] = val
242
+ end
243
+ elsif TEXT_KEYS.include?(key)
244
+ memo[:classes] << "text-#{val.to_s.dasherize}"
245
+ elsif TYPOGRAPHY_KEYS.include?(key)
246
+ memo[:classes] << "f#{val.to_s.dasherize}"
247
+ elsif MARGIN_DIRECTION_KEYS.include?(key) && val.negative?
248
+ memo[:classes] << "#{key.to_s.dasherize}#{breakpoint}-n#{val.abs}"
249
+ elsif key == BOX_SHADOW_KEY
250
+ memo[:classes] << if val == true
251
+ "box-shadow"
252
+ else
253
+ "box-shadow-#{val.to_s.dasherize}"
254
+ end
255
+ elsif key == VISIBILITY_KEY
256
+ memo[:classes] << "v-#{val.to_s.dasherize}"
257
+ elsif key == ANIMATION_KEY
258
+ memo[:classes] << if val == :grow
259
+ "hover-grow"
260
+ else
261
+ "anim-#{val.to_s.dasherize}"
262
+ end
263
+ else
264
+ memo[:classes] << "#{key.to_s.dasherize}#{breakpoint}-#{val.to_s.dasherize}"
265
+ end
247
266
  end
248
267
  end
249
268
  end
@@ -14,6 +14,7 @@
14
14
  # fetch_or_fallback([1,2,3], 1, 2) => 1
15
15
  # fetch_or_fallback([1,2,3], nil, 2) => 2
16
16
  module Primer
17
+ # :nodoc
17
18
  module FetchOrFallbackHelper
18
19
  mattr_accessor :fallback_raises, default: true
19
20
 
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Primer
4
+ # :nodoc
4
5
  module JoinStyleArgumentsHelper
5
6
  # Join two `style` arguments
6
7
  #
@@ -4,6 +4,7 @@ require "primer/view_components/version"
4
4
  require "primer/view_components/engine"
5
5
 
6
6
  module Primer
7
+ # :nodoc
7
8
  module ViewComponents
8
9
  end
9
10
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  module Primer
4
4
  module ViewComponents
5
+ # :nodoc
5
6
  class Engine < ::Rails::Engine
6
7
  isolate_namespace Primer::ViewComponents
7
8
  end
@@ -5,7 +5,7 @@ module Primer
5
5
  module VERSION
6
6
  MAJOR = 0
7
7
  MINOR = 0
8
- PATCH = 17
8
+ PATCH = 18
9
9
 
10
10
  STRING = [MAJOR, MINOR, PATCH].join(".")
11
11
  end
metadata CHANGED
@@ -1,75 +1,75 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: primer_view_components
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.17
4
+ version: 0.0.18
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: 2020-12-10 00:00:00.000000000 Z
11
+ date: 2021-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rails
14
+ name: octicons_helper
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 5.0.0
19
+ version: 9.0.0
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '7.0'
22
+ version: 12.0.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 5.0.0
29
+ version: 9.0.0
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '7.0'
32
+ version: 12.0.0
33
33
  - !ruby/object:Gem::Dependency
34
- name: view_component
34
+ name: rails
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 2.0.0
39
+ version: 5.0.0
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: '3.0'
42
+ version: '7.0'
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 2.0.0
49
+ version: 5.0.0
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: '3.0'
52
+ version: '7.0'
53
53
  - !ruby/object:Gem::Dependency
54
- name: octicons_helper
54
+ name: view_component
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: 9.0.0
59
+ version: 2.0.0
60
60
  - - "<"
61
61
  - !ruby/object:Gem::Version
62
- version: 12.0.0
62
+ version: '3.0'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: 9.0.0
69
+ version: 2.0.0
70
70
  - - "<"
71
71
  - !ruby/object:Gem::Version
72
- version: 12.0.0
72
+ version: '3.0'
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: listen
75
75
  requirement: !ruby/object:Gem::Requirement
@@ -118,28 +118,42 @@ dependencies:
118
118
  requirements:
119
119
  - - '='
120
120
  - !ruby/object:Gem::Version
121
- version: '0.74'
121
+ version: '0.82'
122
122
  type: :development
123
123
  prerelease: false
124
124
  version_requirements: !ruby/object:Gem::Requirement
125
125
  requirements:
126
126
  - - '='
127
127
  - !ruby/object:Gem::Version
128
- version: '0.74'
128
+ version: '0.82'
129
129
  - !ruby/object:Gem::Dependency
130
130
  name: rubocop-github
131
131
  requirement: !ruby/object:Gem::Requirement
132
132
  requirements:
133
133
  - - "~>"
134
134
  - !ruby/object:Gem::Version
135
- version: 0.13.0
135
+ version: 0.16.0
136
+ type: :development
137
+ prerelease: false
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - "~>"
141
+ - !ruby/object:Gem::Version
142
+ version: 0.16.0
143
+ - !ruby/object:Gem::Dependency
144
+ name: rubocop-performance
145
+ requirement: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - "~>"
148
+ - !ruby/object:Gem::Version
149
+ version: '1.7'
136
150
  type: :development
137
151
  prerelease: false
138
152
  version_requirements: !ruby/object:Gem::Requirement
139
153
  requirements:
140
154
  - - "~>"
141
155
  - !ruby/object:Gem::Version
142
- version: 0.13.0
156
+ version: '1.7'
143
157
  - !ruby/object:Gem::Dependency
144
158
  name: simplecov
145
159
  requirement: !ruby/object:Gem::Requirement
@@ -202,6 +216,9 @@ files:
202
216
  - app/components/primer/breadcrumb_component.html.erb
203
217
  - app/components/primer/breadcrumb_component.rb
204
218
  - app/components/primer/button_component.rb
219
+ - app/components/primer/button_group_component.html.erb
220
+ - app/components/primer/button_group_component.rb
221
+ - app/components/primer/button_marketing_component.rb
205
222
  - app/components/primer/component.rb
206
223
  - app/components/primer/counter_component.rb
207
224
  - app/components/primer/details_component.html.erb
@@ -231,6 +248,8 @@ files:
231
248
  - app/components/primer/text_component.rb
232
249
  - app/components/primer/timeline_item_component.html.erb
233
250
  - app/components/primer/timeline_item_component.rb
251
+ - app/components/primer/tooltip_component.rb
252
+ - app/components/primer/truncate_component.rb
234
253
  - app/components/primer/underline_nav_component.html.erb
235
254
  - app/components/primer/underline_nav_component.rb
236
255
  - app/components/primer/view_components.rb
@@ -261,7 +280,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
261
280
  - !ruby/object:Gem::Version
262
281
  version: '0'
263
282
  requirements: []
264
- rubygems_version: 3.1.2
283
+ rubygems_version: 3.0.3
265
284
  signing_key:
266
285
  specification_version: 4
267
286
  summary: ViewComponents for the Primer Design System