primer_view_components 0.0.61 → 0.0.62

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +44 -2
  3. data/app/components/primer/alpha/border_box/header.rb +1 -2
  4. data/app/components/primer/alpha/button_marketing.rb +4 -4
  5. data/app/components/primer/alpha/tab_nav.rb +1 -1
  6. data/app/components/primer/alpha/tab_panels.rb +2 -2
  7. data/app/components/primer/alpha/underline_nav.rb +2 -1
  8. data/app/components/primer/alpha/underline_panels.rb +2 -2
  9. data/app/components/primer/base_component.rb +8 -36
  10. data/app/components/primer/beta/auto_complete/item.rb +1 -1
  11. data/app/components/primer/beta/auto_complete.rb +4 -2
  12. data/app/components/primer/beta/avatar.rb +1 -1
  13. data/app/components/primer/beta/blankslate.html.erb +2 -2
  14. data/app/components/primer/beta/blankslate.rb +6 -3
  15. data/app/components/primer/beta/breadcrumbs.rb +2 -2
  16. data/app/components/primer/beta/text.rb +1 -1
  17. data/app/components/primer/border_box_component.rb +1 -1
  18. data/app/components/primer/box_component.rb +3 -2
  19. data/app/components/primer/button_component.html.erb +3 -9
  20. data/app/components/primer/button_component.rb +21 -2
  21. data/app/components/primer/button_group.rb +1 -1
  22. data/app/components/primer/clipboard_copy.rb +1 -1
  23. data/app/components/primer/close_button.rb +1 -1
  24. data/app/components/primer/component.rb +71 -0
  25. data/app/components/primer/counter_component.rb +1 -1
  26. data/app/components/primer/details_component.rb +1 -1
  27. data/app/components/primer/dropdown/menu.rb +1 -1
  28. data/app/components/primer/dropdown.html.erb +0 -1
  29. data/app/components/primer/dropdown.rb +1 -0
  30. data/app/components/primer/dropdown_menu_component.rb +1 -1
  31. data/app/components/primer/flash_component.rb +2 -1
  32. data/app/components/primer/flex_component.rb +16 -16
  33. data/app/components/primer/flex_item_component.rb +1 -1
  34. data/app/components/primer/hellip_button.rb +1 -1
  35. data/app/components/primer/hidden_text_expander.rb +1 -1
  36. data/app/components/primer/image.rb +1 -1
  37. data/app/components/primer/image_crop.rb +2 -1
  38. data/app/components/primer/layout_component.rb +1 -0
  39. data/app/components/primer/local_time.rb +1 -1
  40. data/app/components/primer/markdown.rb +1 -1
  41. data/app/components/primer/menu_component.rb +2 -1
  42. data/app/components/primer/navigation/tab_component.rb +1 -0
  43. data/app/components/primer/octicon_symbols_component.rb +2 -2
  44. data/app/components/primer/popover_component.rb +1 -1
  45. data/app/components/primer/progress_bar_component.rb +7 -6
  46. data/app/components/primer/spinner_component.rb +1 -1
  47. data/app/components/primer/subhead_component.rb +3 -1
  48. data/app/components/primer/tab_container_component.rb +1 -1
  49. data/app/components/primer/time_ago_component.rb +1 -1
  50. data/app/components/primer/timeline_item_component.rb +4 -3
  51. data/app/components/primer/tooltip.rb +1 -0
  52. data/lib/primer/classify/utilities.rb +26 -23
  53. data/lib/primer/classify/utilities.yml +192 -68
  54. data/lib/primer/classify.rb +92 -178
  55. data/lib/primer/view_components/linters/blankslate_api_migration.rb +11 -5
  56. data/lib/primer/view_components/version.rb +1 -1
  57. data/lib/rubocop/cop/primer/deprecated_layout_component.rb +30 -0
  58. data/lib/rubocop/cop/primer/primer_octicon.rb +1 -3
  59. data/lib/tasks/custom_utilities.yml +192 -0
  60. data/lib/tasks/docs.rake +1 -1
  61. data/lib/tasks/utilities.rake +6 -2
  62. data/static/classes.yml +14 -14
  63. data/static/constants.json +3 -3
  64. metadata +4 -4
  65. data/lib/primer/classify/cache.rb +0 -109
  66. data/lib/primer/classify/flex.rb +0 -111
@@ -61,31 +61,31 @@ module Primer
61
61
  ALLOWED_DIRECTIONS = [DEFAULT_DIRECTION, :column, :column_reverse, :row, :row_reverse].freeze
62
62
 
63
63
  # @example Default
64
- # <%= render(Primer::FlexComponent.new(bg: :tertiary)) do %>
65
- # <%= render(Primer::BoxComponent.new(p: 5, bg: :secondary, classes: "border")) { "Item 1" } %>
66
- # <%= render(Primer::BoxComponent.new(p: 5, bg: :secondary, classes: "border")) { "Item 2" } %>
67
- # <%= render(Primer::BoxComponent.new(p: 5, bg: :secondary, classes: "border")) { "Item 3" } %>
64
+ # <%= render(Primer::FlexComponent.new(bg: :subtle)) do %>
65
+ # <%= render(Primer::BoxComponent.new(p: 5, bg: :subtle, classes: "border")) { "Item 1" } %>
66
+ # <%= render(Primer::BoxComponent.new(p: 5, bg: :subtle, classes: "border")) { "Item 2" } %>
67
+ # <%= render(Primer::BoxComponent.new(p: 5, bg: :subtle, classes: "border")) { "Item 3" } %>
68
68
  # <% end %>
69
69
  #
70
70
  # @example Justify center
71
- # <%= render(Primer::FlexComponent.new(justify_content: :center, bg: :tertiary)) do %>
72
- # <%= render(Primer::BoxComponent.new(p: 5, bg: :secondary, classes: "border")) { "Item 1" } %>
73
- # <%= render(Primer::BoxComponent.new(p: 5, bg: :secondary, classes: "border")) { "Item 2" } %>
74
- # <%= render(Primer::BoxComponent.new(p: 5, bg: :secondary, classes: "border")) { "Item 3" } %>
71
+ # <%= render(Primer::FlexComponent.new(justify_content: :center, bg: :subtle)) do %>
72
+ # <%= render(Primer::BoxComponent.new(p: 5, bg: :subtle, classes: "border")) { "Item 1" } %>
73
+ # <%= render(Primer::BoxComponent.new(p: 5, bg: :subtle, classes: "border")) { "Item 2" } %>
74
+ # <%= render(Primer::BoxComponent.new(p: 5, bg: :subtle, classes: "border")) { "Item 3" } %>
75
75
  # <% end %>
76
76
  #
77
77
  # @example Align end
78
- # <%= render(Primer::FlexComponent.new(align_items: :end, bg: :tertiary)) do %>
79
- # <%= render(Primer::BoxComponent.new(p: 5, bg: :secondary, classes: "border")) { "Item 1" } %>
80
- # <%= render(Primer::BoxComponent.new(p: 5, bg: :secondary, classes: "border")) { "Item 2" } %>
81
- # <%= render(Primer::BoxComponent.new(p: 5, bg: :secondary, classes: "border")) { "Item 3" } %>
78
+ # <%= render(Primer::FlexComponent.new(align_items: :end, bg: :subtle)) do %>
79
+ # <%= render(Primer::BoxComponent.new(p: 5, bg: :subtle, classes: "border")) { "Item 1" } %>
80
+ # <%= render(Primer::BoxComponent.new(p: 5, bg: :subtle, classes: "border")) { "Item 2" } %>
81
+ # <%= render(Primer::BoxComponent.new(p: 5, bg: :subtle, classes: "border")) { "Item 3" } %>
82
82
  # <% end %>
83
83
  #
84
84
  # @example Direction column
85
- # <%= render(Primer::FlexComponent.new(direction: :column, bg: :tertiary)) do %>
86
- # <%= render(Primer::BoxComponent.new(p: 5, bg: :secondary, classes: "border")) { "Item 1" } %>
87
- # <%= render(Primer::BoxComponent.new(p: 5, bg: :secondary, classes: "border")) { "Item 2" } %>
88
- # <%= render(Primer::BoxComponent.new(p: 5, bg: :secondary, classes: "border")) { "Item 3" } %>
85
+ # <%= render(Primer::FlexComponent.new(direction: :column, bg: :subtle)) do %>
86
+ # <%= render(Primer::BoxComponent.new(p: 5, bg: :subtle, classes: "border")) { "Item 1" } %>
87
+ # <%= render(Primer::BoxComponent.new(p: 5, bg: :subtle, classes: "border")) { "Item 2" } %>
88
+ # <%= render(Primer::BoxComponent.new(p: 5, bg: :subtle, classes: "border")) { "Item 3" } %>
89
89
  # <% end %>
90
90
  #
91
91
  # @param justify_content [Symbol] Use this param to distribute space between and around flex items along the main axis of the container. <%= one_of(Primer::FlexComponent::JUSTIFY_CONTENT_OPTIONS) %>
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Primer
4
4
  # Use `FlexItem` to specify the ability of a flex item to alter its
5
- # dimensions to fill available space
5
+ # dimensions to fill available space.
6
6
  #
7
7
  # @deprecated
8
8
  # Use <%= link_to_component(Primer::BoxComponent) %> instead.
@@ -20,7 +20,7 @@ module Primer
20
20
  # @param inline [Boolean] Whether or not the button is inline.
21
21
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
22
22
  def initialize(inline: false, **system_arguments)
23
- @system_arguments = system_arguments
23
+ @system_arguments = deny_tag_argument(**system_arguments)
24
24
 
25
25
  validate_aria_label
26
26
 
@@ -22,7 +22,7 @@ module Primer
22
22
  # @param button_arguments [Hash] <%= link_to_system_arguments_docs %> for the button element.
23
23
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
24
24
  def initialize(inline: false, button_arguments: {}, **system_arguments)
25
- @system_arguments = system_arguments
25
+ @system_arguments = deny_tag_argument(**system_arguments)
26
26
  @button_arguments = button_arguments
27
27
 
28
28
  @system_arguments[:tag] = :span
@@ -27,7 +27,7 @@ module Primer
27
27
  # @param lazy [Boolean] Whether or not to lazily load the image.
28
28
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
29
29
  def initialize(src:, alt:, lazy: false, **system_arguments)
30
- @system_arguments = system_arguments
30
+ @system_arguments = deny_tag_argument(**system_arguments)
31
31
 
32
32
  @system_arguments[:tag] = :img
33
33
  @system_arguments[:src] = src
@@ -6,6 +6,7 @@ module Primer
6
6
  # A loading indicator that is shown while the image is loading.
7
7
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
8
8
  renders_one :loading, lambda { |**system_arguments|
9
+ deny_tag_argument(**system_arguments)
9
10
  system_arguments[:tag] = :div
10
11
  system_arguments[:"data-loading-slot"] = true
11
12
 
@@ -27,7 +28,7 @@ module Primer
27
28
  # @param rounded [Boolean] If the crop mask should be a circle. Defaults to true.
28
29
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
29
30
  def initialize(src:, rounded: true, **system_arguments)
30
- @system_arguments = system_arguments
31
+ @system_arguments = deny_tag_argument(**system_arguments)
31
32
  @system_arguments[:tag] = "image-crop"
32
33
  @system_arguments[:src] = src
33
34
  @system_arguments[:rounded] = true if rounded
@@ -7,6 +7,7 @@ module Primer
7
7
  #
8
8
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
9
9
  renders_one :main, lambda { |**system_arguments|
10
+ deny_tag_argument(**system_arguments)
10
11
  system_arguments[:classes] = class_names("flex-shrink-0", system_arguments[:classes])
11
12
  system_arguments[:col] = (@responsive ? [12, nil, @main_col] : @main_col)
12
13
  system_arguments[:mb] = (@responsive ? [4, nil, 0] : nil)
@@ -33,7 +33,7 @@ module Primer
33
33
  # @param time_zone_name [Symbol] <%= one_of(Primer::LocalTime::TEXT_TYPE_OPTIONS) %>
34
34
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
35
35
  def initialize(datetime:, initial_text: nil, weekday: DEFAULT_TEXT_TYPE, year: DEFAULT_DIGIT_TYPE, month: DEFAULT_TEXT_TYPE, day: DEFAULT_DIGIT_TYPE, hour: DEFAULT_DIGIT_TYPE, minute: DEFAULT_DIGIT_TYPE, second: DEFAULT_DIGIT_TYPE, time_zone_name: DEFAULT_TEXT_TYPE, **system_arguments)
36
- @system_arguments = system_arguments
36
+ @system_arguments = deny_tag_argument(**system_arguments)
37
37
 
38
38
  @datetime = datetime
39
39
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Primer
4
- # Use `Markdown` to wrap markdown content
4
+ # Use `Markdown` to wrap markdown content.
5
5
  class Markdown < Primer::Component
6
6
  status :beta
7
7
 
@@ -26,6 +26,7 @@ module Primer
26
26
  # @param selected [Boolean] Whether the item is the current selection
27
27
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
28
28
  renders_many :items, lambda { |href:, selected: false, **system_arguments|
29
+ deny_tag_argument(**system_arguments)
29
30
  system_arguments[:tag] = :a
30
31
  system_arguments[:href] = href
31
32
  system_arguments[:"aria-current"] = :page if selected
@@ -58,7 +59,7 @@ module Primer
58
59
  #
59
60
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
60
61
  def initialize(**system_arguments)
61
- @system_arguments = system_arguments
62
+ @system_arguments = deny_tag_argument(**system_arguments)
62
63
  @system_arguments[:tag] = :nav
63
64
  @system_arguments[:classes] = class_names(
64
65
  "menu",
@@ -20,6 +20,7 @@ module Primer
20
20
  renders_one :panel, lambda { |**system_arguments|
21
21
  return unless @with_panel
22
22
 
23
+ deny_tag_argument(**system_arguments)
23
24
  system_arguments[:id] = @panel_id
24
25
  system_arguments[:tag] = :div
25
26
  system_arguments[:role] ||= :tabpanel
@@ -6,8 +6,8 @@ module Primer
6
6
  # OcticonSymbols renders a symbol dictionary using a list of <%= link_to_octicons %>.
7
7
  class OcticonSymbolsComponent < Primer::Component
8
8
  # @example Symbol dictionary
9
- # <%= render(Primer::OcticonComponent.new(icon: :check, use_symbol: true, color: :icon_success)) %>
10
- # <%= render(Primer::OcticonComponent.new(icon: :check, use_symbol: true, color: :text_danger)) %>
9
+ # <%= render(Primer::OcticonComponent.new(icon: :check, use_symbol: true, color: :success)) %>
10
+ # <%= render(Primer::OcticonComponent.new(icon: :check, use_symbol: true, color: :danger)) %>
11
11
  # <%= render(Primer::OcticonComponent.new(icon: :check, use_symbol: true, size: :medium)) %>
12
12
  # <%= render(Primer::OcticonSymbolsComponent.new(icons: [{ symbol: :check }, { symbol: :check, size: :medium }])) %>
13
13
  #
@@ -108,7 +108,7 @@ module Primer
108
108
  #
109
109
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
110
110
  def initialize(**system_arguments)
111
- @system_arguments = system_arguments
111
+ @system_arguments = deny_tag_argument(**system_arguments)
112
112
  @system_arguments[:tag] = :div
113
113
  @system_arguments[:classes] = class_names(
114
114
  system_arguments[:classes],
@@ -10,7 +10,8 @@ module Primer
10
10
  # @param percentage [Integer] The percent complete
11
11
  # @param bg [Symbol] The background color
12
12
  # @param kwargs [Hash] The same arguments as <%= link_to_system_arguments_docs %>.
13
- renders_many :items, lambda { |percentage: 0, bg: :success_inverse, **system_arguments|
13
+ renders_many :items, lambda { |percentage: 0, bg: :success_emphasis, **system_arguments|
14
+ deny_tag_argument(**system_arguments)
14
15
  system_arguments[:tag] = :span
15
16
  system_arguments[:bg] = bg
16
17
  system_arguments[:style] = join_style_arguments(system_arguments[:style], "width: #{percentage}%;")
@@ -35,25 +36,25 @@ module Primer
35
36
  #
36
37
  # @example Small
37
38
  # <%= render(Primer::ProgressBarComponent.new(size: :small)) do |component| %>
38
- # <% component.item(bg: :info_inverse, percentage: 50) %>
39
+ # <% component.item(bg: :accent_emphasis, percentage: 50) %>
39
40
  # <% end %>
40
41
  #
41
42
  # @example Large
42
43
  # <%= render(Primer::ProgressBarComponent.new(size: :large)) do |component| %>
43
- # <% component.item(bg: :danger_inverse, percentage: 75) %>
44
+ # <% component.item(bg: :danger_emphasis, percentage: 75) %>
44
45
  # <% end %>
45
46
  #
46
47
  # @example Multiple items
47
48
  # <%= render(Primer::ProgressBarComponent.new) do |component| %>
48
49
  # <% component.item(percentage: 10) %>
49
- # <% component.item(bg: :info_inverse, percentage: 20) %>
50
- # <% component.item(bg: :danger_inverse, percentage: 30) %>
50
+ # <% component.item(bg: :accent_emphasis, percentage: 20) %>
51
+ # <% component.item(bg: :danger_emphasis, percentage: 30) %>
51
52
  # <% end %>
52
53
  #
53
54
  # @param size [Symbol] <%= one_of(Primer::ProgressBarComponent::SIZE_OPTIONS) %> Increases height.
54
55
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
55
56
  def initialize(size: SIZE_DEFAULT, **system_arguments)
56
- @system_arguments = system_arguments
57
+ @system_arguments = deny_tag_argument(**system_arguments)
57
58
  @system_arguments[:classes] = class_names(
58
59
  @system_arguments[:classes],
59
60
  "Progress",
@@ -30,7 +30,7 @@ module Primer
30
30
  # @param style [String] Custom element styles.
31
31
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
32
32
  def initialize(size: DEFAULT_SIZE, style: DEFAULT_STYLE, **system_arguments)
33
- @system_arguments = system_arguments
33
+ @system_arguments = deny_tag_argument(**system_arguments)
34
34
  @system_arguments[:tag] = :svg
35
35
  @system_arguments[:style] ||= style
36
36
  @system_arguments[:animation] = :rotate
@@ -36,6 +36,7 @@ module Primer
36
36
  #
37
37
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
38
38
  renders_one :actions, lambda { |**system_arguments|
39
+ deny_tag_argument(**system_arguments)
39
40
  system_arguments[:tag] = :div
40
41
  system_arguments[:classes] = class_names(system_arguments[:classes], "Subhead-actions")
41
42
 
@@ -46,6 +47,7 @@ module Primer
46
47
  #
47
48
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
48
49
  renders_one :description, lambda { |**system_arguments|
50
+ deny_tag_argument(**system_arguments)
49
51
  system_arguments[:tag] = :div
50
52
  system_arguments[:classes] = class_names(system_arguments[:classes], "Subhead-description")
51
53
 
@@ -111,7 +113,7 @@ module Primer
111
113
  # @param hide_border [Boolean] Whether to hide the border under the heading.
112
114
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
113
115
  def initialize(spacious: false, hide_border: false, **system_arguments)
114
- @system_arguments = system_arguments
116
+ @system_arguments = deny_tag_argument(**system_arguments)
115
117
 
116
118
  @system_arguments[:tag] = :div
117
119
  @system_arguments[:classes] =
@@ -26,7 +26,7 @@ module Primer
26
26
  #
27
27
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
28
28
  def initialize(**system_arguments)
29
- @system_arguments = system_arguments
29
+ @system_arguments = deny_tag_argument(**system_arguments)
30
30
  @system_arguments[:tag] = "tab-container"
31
31
  end
32
32
 
@@ -12,7 +12,7 @@ module Primer
12
12
  # @param micro [Boolean] If true then the text will be formatted in "micro" mode, using as few characters as possible
13
13
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
14
14
  def initialize(time:, micro: false, **system_arguments)
15
- @system_arguments = system_arguments
15
+ @system_arguments = deny_tag_argument(**system_arguments)
16
16
  @system_arguments[:datetime] = time.utc.iso8601
17
17
  @system_arguments[:classes] = class_names("no-wrap", @system_arguments[:classes])
18
18
  @system_arguments[:tag] = "time-ago"
@@ -27,6 +27,7 @@ module Primer
27
27
  #
28
28
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
29
29
  renders_one :body, lambda { |**system_arguments|
30
+ deny_tag_argument(**system_arguments)
30
31
  system_arguments[:tag] = :div
31
32
  system_arguments[:classes] = class_names(
32
33
  "TimelineItem-body",
@@ -40,7 +41,7 @@ module Primer
40
41
  # <div style="padding-left: 60px">
41
42
  # <%= render(Primer::TimelineItemComponent.new) do |component| %>
42
43
  # <% component.avatar(src: "https://github.com/github.png", alt: "github") %>
43
- # <% component.badge(bg: :success_inverse, color: :text_white, icon: :check) %>
44
+ # <% component.badge(bg: :success_emphasis, color: :on_emphasis, icon: :check) %>
44
45
  # <% component.body { "Success!" } %>
45
46
  # <% end %>
46
47
  # </div>
@@ -48,7 +49,7 @@ module Primer
48
49
  # @param condensed [Boolean] Reduce the vertical padding and remove the background from the badge item. Most commonly used in commits.
49
50
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
50
51
  def initialize(condensed: false, **system_arguments)
51
- @system_arguments = system_arguments
52
+ @system_arguments = deny_tag_argument(**system_arguments)
52
53
  @system_arguments[:tag] = :div
53
54
  @system_arguments[:classes] = class_names(
54
55
  "TimelineItem",
@@ -67,7 +68,7 @@ module Primer
67
68
  def initialize(icon: nil, **system_arguments)
68
69
  @icon = icon
69
70
 
70
- @system_arguments = system_arguments
71
+ @system_arguments = deny_tag_argument(**system_arguments)
71
72
  @system_arguments[:tag] = :div
72
73
  @system_arguments[:classes] = class_names(
73
74
  "TimelineItem-badge",
@@ -72,6 +72,7 @@ module Primer
72
72
  @system_arguments = system_arguments
73
73
  @system_arguments[:tag] ||= :span # rubocop:disable Primer/NoTagMemoize
74
74
  @system_arguments[:aria] = { label: label }
75
+ @system_arguments[:skip_aria_label_check] = true
75
76
 
76
77
  @system_arguments[:classes] = class_names(
77
78
  @system_arguments[:classes],
@@ -16,6 +16,7 @@ module Primer
16
16
  )
17
17
  ).freeze
18
18
  # rubocop:enable Security/YAMLLoad
19
+
19
20
  BREAKPOINTS = ["", "-sm", "-md", "-lg", "-xl"].freeze
20
21
 
21
22
  # Replacements for some classnames that end up being a different argument key
@@ -145,6 +146,30 @@ module Primer
145
146
  end.join(", ")
146
147
  end
147
148
 
149
+ def validate(key, val, breakpoint)
150
+ unless supported_key?(key)
151
+ raise ArgumentError, "#{key} is not a valid Primer utility key" if validate_class_names?
152
+
153
+ return ""
154
+ end
155
+
156
+ unless breakpoint.empty? || responsive?(key, val)
157
+ raise ArgumentError, "#{key} does not support responsive values" if validate_class_names?
158
+
159
+ return ""
160
+ end
161
+
162
+ unless supported_value?(key, val)
163
+ raise ArgumentError, "#{val} is not a valid value for :#{key}. Use one of #{mappings(key)}" if validate_class_names?
164
+
165
+ return nil if [true, false].include?(val)
166
+
167
+ return "#{key.to_s.dasherize}-#{val.to_s.dasherize}"
168
+ end
169
+
170
+ nil
171
+ end
172
+
148
173
  private
149
174
 
150
175
  def find_selector(selector)
@@ -160,7 +185,7 @@ module Primer
160
185
  next unless classnames.include?(selector)
161
186
 
162
187
  # Return [:mr, 0, 1]
163
- # has index of classname, so we can match it up with responsvie array `mr: [nil, 0]`
188
+ # has index of classname, so we can match it up with responsive array `mr: [nil, 0]`
164
189
  return [key, key_argument, classnames.index(selector)]
165
190
  end
166
191
 
@@ -174,28 +199,6 @@ module Primer
174
199
 
175
200
  selector.split("-").first.to_sym
176
201
  end
177
-
178
- def validate(key, val, breakpoint)
179
- unless supported_key?(key)
180
- raise ArgumentError, "#{key} is not a valid Primer utility key" if validate_class_names?
181
-
182
- return ""
183
- end
184
-
185
- unless breakpoint.empty? || responsive?(key, val)
186
- raise ArgumentError, "#{key} does not support responsive values" if validate_class_names?
187
-
188
- return ""
189
- end
190
-
191
- unless supported_value?(key, val)
192
- raise ArgumentError, "#{val} is not a valid value for :#{key}. Use one of #{mappings(key)}" if validate_class_names?
193
-
194
- return "#{key.to_s.dasherize}-#{val.to_s.dasherize}"
195
- end
196
-
197
- nil
198
- end
199
202
  end
200
203
  end
201
204
  end