primer_view_components 0.0.21 → 0.0.26

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.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +77 -0
  3. data/app/assets/javascripts/primer_view_components.js +2 -0
  4. data/app/assets/javascripts/primer_view_components.js.map +1 -0
  5. data/app/components/primer/avatar_component.rb +3 -3
  6. data/app/components/primer/avatar_stack_component.rb +3 -3
  7. data/app/components/primer/base_component.rb +6 -2
  8. data/app/components/primer/blankslate_component.html.erb +2 -2
  9. data/app/components/primer/blankslate_component.rb +11 -7
  10. data/app/components/primer/border_box_component.html.erb +4 -18
  11. data/app/components/primer/border_box_component.rb +58 -67
  12. data/app/components/primer/box_component.rb +2 -2
  13. data/app/components/primer/breadcrumb_component.html.erb +1 -2
  14. data/app/components/primer/breadcrumb_component.rb +24 -13
  15. data/app/components/primer/button_component.rb +2 -2
  16. data/app/components/primer/button_group_component.rb +1 -1
  17. data/app/components/primer/button_marketing_component.rb +2 -2
  18. data/app/components/primer/component.rb +4 -0
  19. data/app/components/primer/counter_component.rb +1 -1
  20. data/app/components/primer/details_component.html.erb +2 -6
  21. data/app/components/primer/details_component.rb +21 -35
  22. data/app/components/primer/dropdown_component.html.erb +2 -2
  23. data/app/components/primer/dropdown_component.rb +4 -6
  24. data/app/components/primer/dropdown_menu_component.rb +4 -4
  25. data/app/components/primer/flash_component.html.erb +2 -2
  26. data/app/components/primer/flash_component.rb +5 -5
  27. data/app/components/primer/flex_component.rb +4 -4
  28. data/app/components/primer/flex_item_component.rb +1 -1
  29. data/app/components/primer/heading_component.rb +3 -1
  30. data/app/components/primer/label_component.rb +22 -26
  31. data/app/components/primer/layout_component.rb +2 -2
  32. data/app/components/primer/link_component.rb +2 -2
  33. data/app/components/primer/markdown_component.rb +8 -8
  34. data/app/components/primer/menu_component.rb +1 -1
  35. data/app/components/primer/octicon_component.rb +5 -3
  36. data/app/components/primer/popover_component.rb +3 -3
  37. data/app/components/primer/primer.js +1 -0
  38. data/app/components/primer/primer.ts +1 -0
  39. data/app/components/primer/progress_bar_component.html.erb +1 -1
  40. data/app/components/primer/progress_bar_component.rb +27 -31
  41. data/app/components/primer/spinner_component.rb +3 -3
  42. data/app/components/primer/state_component.rb +21 -10
  43. data/app/components/primer/subhead_component.html.erb +3 -15
  44. data/app/components/primer/subhead_component.rb +47 -59
  45. data/app/components/primer/tab_container_component.js +1 -0
  46. data/app/components/primer/tab_container_component.rb +41 -0
  47. data/app/components/primer/tab_container_component.ts +1 -0
  48. data/app/components/primer/tab_nav_component.html.erb +17 -0
  49. data/app/components/primer/tab_nav_component.rb +108 -0
  50. data/app/components/primer/text_component.rb +1 -1
  51. data/app/components/primer/timeline_item_component.rb +1 -1
  52. data/app/components/primer/tooltip_component.rb +5 -5
  53. data/app/components/primer/truncate_component.rb +4 -4
  54. data/app/components/primer/underline_nav_component.rb +2 -2
  55. data/{lib → app/lib}/primer/class_name_helper.rb +0 -0
  56. data/{lib → app/lib}/primer/classify.rb +0 -2
  57. data/{lib → app/lib}/primer/classify/cache.rb +0 -0
  58. data/{lib → app/lib}/primer/fetch_or_fallback_helper.rb +0 -0
  59. data/{lib → app/lib}/primer/join_style_arguments_helper.rb +0 -0
  60. data/app/lib/primer/view_helper.rb +22 -0
  61. data/app/lib/primer/view_helper/dsl.rb +34 -0
  62. data/lib/primer/view_components/engine.rb +10 -2
  63. data/lib/primer/view_components/version.rb +5 -1
  64. data/static/statuses.json +1 -1
  65. metadata +18 -8
  66. data/app/components/primer/view_components.rb +0 -60
@@ -1,8 +1,7 @@
1
1
  <%= render Primer::BaseComponent.new(**@system_arguments) do %>
2
2
  <ol>
3
3
  <% items.each do |item| %>
4
- <%# The <li> and <a> need to be on the same line to prevent unwanted whitespace %>
5
- <%= render Primer::BaseComponent.new(**item.system_arguments) do %><%- if item.href.present? %><a href="<%= item.href %>"><%= item.content %></a><%- else %><%= item.content %><%- end %><%- end %>
4
+ <%= item %>
6
5
  <% end %>
7
6
  </ol>
8
7
  <% end %>
@@ -3,15 +3,20 @@
3
3
  module Primer
4
4
  # Use breadcrumbs to display page hierarchy within a section of the site. All of the items in the breadcrumb "trail" are links except for the final item, which is a plain string indicating the current page.
5
5
  class BreadcrumbComponent < Primer::Component
6
- include ViewComponent::Slotable
6
+ include ViewComponent::SlotableV2
7
7
 
8
- with_slot :item, collection: true, class_name: "BreadcrumbItem"
8
+ # _Note: if both `href` and `selected: true` are passed in, `href` will be ignored and the item will not be rendered as a link._
9
+ #
10
+ # @param href [String] The URL to link to.
11
+ # @param selected [Boolean] Whether or not the item is selected and not rendered as a link.
12
+ # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
13
+ renders_many :items, "ItemComponent"
9
14
 
10
- # @example auto|Basic
15
+ # @example Basic
11
16
  # <%= render(Primer::BreadcrumbComponent.new) do |component| %>
12
- # <% component.slot(:item, href: "/") do %>Home<% end %>
13
- # <% component.slot(:item, href: "/about") do %>About<% end %>
14
- # <% component.slot(:item, selected: true) do %>Team<% end %>
17
+ # <% component.item(href: "/") do %>Home<% end %>
18
+ # <% component.item(href: "/about") do %>About<% end %>
19
+ # <% component.item(selected: true) do %>Team<% end %>
15
20
  # <% end %>
16
21
  #
17
22
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
@@ -25,13 +30,9 @@ module Primer
25
30
  items.any?
26
31
  end
27
32
 
28
- # _Note: if both `href` and `selected: true` are passed in, `href` will be ignored and the item will not be rendered as a link._
29
- class BreadcrumbItem < Primer::Slot
30
- attr_reader :href, :system_arguments
31
-
32
- # @param href [String] The URL to link to.
33
- # @param selected [Boolean] Whether or not the item is selected and not rendered as a link.
34
- # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
33
+ # This component is part of `Primer::BreadcrumbComponent` and should not be
34
+ # used as a standalone component.
35
+ class ItemComponent < Primer::Component
35
36
  def initialize(href: nil, selected: false, **system_arguments)
36
37
  @href = href
37
38
  @system_arguments = system_arguments
@@ -41,6 +42,16 @@ module Primer
41
42
  @system_arguments[:"aria-current"] = "page" if selected
42
43
  @system_arguments[:classes] = "breadcrumb-item #{@system_arguments[:classes]}"
43
44
  end
45
+
46
+ def call
47
+ render(Primer::BaseComponent.new(**@system_arguments)) do
48
+ if @href.present?
49
+ render(Primer::LinkComponent.new(href: @href)) { content }
50
+ else
51
+ content
52
+ end
53
+ end
54
+ end
44
55
  end
45
56
  end
46
57
  end
@@ -26,13 +26,13 @@ module Primer
26
26
  DEFAULT_TYPE = :button
27
27
  TYPE_OPTIONS = [DEFAULT_TYPE, :reset, :submit].freeze
28
28
 
29
- # @example auto|Button types
29
+ # @example Button types
30
30
  # <%= render(Primer::ButtonComponent.new) { "Default" } %>
31
31
  # <%= render(Primer::ButtonComponent.new(button_type: :primary)) { "Primary" } %>
32
32
  # <%= render(Primer::ButtonComponent.new(button_type: :danger)) { "Danger" } %>
33
33
  # <%= render(Primer::ButtonComponent.new(button_type: :outline)) { "Outline" } %>
34
34
  #
35
- # @example auto|Variants
35
+ # @example Variants
36
36
  # <%= render(Primer::ButtonComponent.new(variant: :small)) { "Small" } %>
37
37
  # <%= render(Primer::ButtonComponent.new(variant: :medium)) { "Medium" } %>
38
38
  # <%= render(Primer::ButtonComponent.new(variant: :large)) { "Large" } %>
@@ -10,7 +10,7 @@ module Primer
10
10
  # @param kwargs [Hash] The same arguments as <%= link_to_component(Primer::ButtonComponent) %>.
11
11
  renders_many :buttons, ->(**kwargs) { Primer::ButtonComponent.new(group_item: true, **kwargs) }
12
12
 
13
- # @example auto|Default
13
+ # @example Default
14
14
  # <%= render(Primer::ButtonGroupComponent.new) do |component|
15
15
  # component.button { "Default" }
16
16
  # component.button(button_type: :primary) { "Primary" }
@@ -25,7 +25,7 @@ module Primer
25
25
  DEFAULT_TYPE = :button
26
26
  TYPE_OPTIONS = [DEFAULT_TYPE, :submit].freeze
27
27
 
28
- # @example auto|Button types
28
+ # @example Button types
29
29
  # <%= render(Primer::ButtonMarketingComponent.new(mr: 2)) { "Default" } %>
30
30
  # <%= render(Primer::ButtonMarketingComponent.new(button_type: :primary, mr: 2)) { "Primary" } %>
31
31
  # <%= render(Primer::ButtonMarketingComponent.new(button_type: :outline)) { "Outline" } %>
@@ -33,7 +33,7 @@ module Primer
33
33
  # <%= render(Primer::ButtonMarketingComponent.new(button_type: :transparent)) { "Transparent" } %>
34
34
  # </div>
35
35
  #
36
- # @example auto|Sizes
36
+ # @example Sizes
37
37
  # <%= render(Primer::ButtonMarketingComponent.new(mr: 2)) { "Default" } %>
38
38
  # <%= render(Primer::ButtonMarketingComponent.new(variant: :large)) { "Large" } %>
39
39
  #
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "octicons_helper/helper"
4
+
3
5
  module Primer
4
6
  # @private
5
7
  class Component < ViewComponent::Base
@@ -7,6 +9,8 @@ module Primer
7
9
  include FetchOrFallbackHelper
8
10
  include OcticonsHelper
9
11
  include JoinStyleArgumentsHelper
12
+ include ViewHelper::Dsl
13
+ include ViewHelper
10
14
 
11
15
  # sourced from https://primer.style/doctocat/usage/front-matter#status
12
16
  STATUSES = {
@@ -11,7 +11,7 @@ module Primer
11
11
  }.freeze
12
12
 
13
13
  #
14
- # @example auto|Default
14
+ # @example Default
15
15
  # <%= render(Primer::CounterComponent.new(count: 25)) %>
16
16
  #
17
17
  # @param count [Integer, Float::INFINITY, nil] The number to be displayed (e.x. # of issues, pull requests)
@@ -1,8 +1,4 @@
1
1
  <%= render Primer::BaseComponent.new(**@system_arguments) do %>
2
- <%= render summary.component do %>
3
- <%= summary.content %>
4
- <% end %>
5
- <%= render body.component do %>
6
- <%= body.content %>
7
- <% end %>
2
+ <%= summary %>
3
+ <%= body %>
8
4
  <% end %>
@@ -3,7 +3,7 @@
3
3
  module Primer
4
4
  # Use DetailsComponent to reveal content after clicking a button.
5
5
  class DetailsComponent < Primer::Component
6
- include ViewComponent::Slotable
6
+ include ViewComponent::SlotableV2
7
7
 
8
8
  NO_OVERLAY = :none
9
9
  OVERLAY_MAPPINGS = {
@@ -12,8 +12,26 @@ module Primer
12
12
  :dark => "details-overlay details-overlay-dark"
13
13
  }.freeze
14
14
 
15
- with_slot :body, class_name: "Body"
16
- with_slot :summary, class_name: "Summary"
15
+ # Use the Summary slot as a trigger to reveal the content.
16
+ #
17
+ # @param button [Boolean] Whether to render the Summary as a button or not.
18
+ # @param kwargs [Hash] The same arguments as <%= link_to_system_arguments_docs %>.
19
+ renders_one :summary, lambda { |button: true, **system_arguments|
20
+ system_arguments[:tag] = :summary
21
+ system_arguments[:role] = "button"
22
+
23
+ return Primer::BaseComponent.new(**system_arguments) unless button
24
+
25
+ Primer::ButtonComponent.new(**system_arguments)
26
+ }
27
+
28
+ # Use the Body slot as the main content to be shown when triggered by the Summary.
29
+ #
30
+ # @param kwargs [Hash] The same arguments as <%= link_to_system_arguments_docs %>.
31
+ renders_one :body, lambda { |**system_arguments|
32
+ system_arguments[:tag] ||= :div
33
+ Primer::BaseComponent.new(**system_arguments)
34
+ }
17
35
 
18
36
  # @param overlay [Symbol] Dictates the type of overlay to render with. <%= one_of(Primer::DetailsComponent::OVERLAY_MAPPINGS.keys) %>
19
37
  # @param reset [Boolean] Defatuls to false. If set to true, it will remove the default caret and remove style from the summary element
@@ -31,37 +49,5 @@ module Primer
31
49
  def render?
32
50
  summary.present? && body.present?
33
51
  end
34
-
35
- # Use the Summary slot as a trigger to reveal the content.
36
- class Summary < Primer::Slot
37
- # @param button [Boolean] Whether to render the Summary as a button or not.
38
- # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
39
- def initialize(button: true, **system_arguments)
40
- @button = button
41
-
42
- @system_arguments = system_arguments
43
- @system_arguments[:tag] = :summary
44
- @system_arguments[:role] = "button"
45
- end
46
-
47
- def component
48
- return Primer::BaseComponent.new(**@system_arguments) unless @button
49
-
50
- Primer::ButtonComponent.new(**@system_arguments)
51
- end
52
- end
53
-
54
- # Use the Body slot as the main content to be shown when triggered by the Summary.
55
- class Body < Primer::Slot
56
- # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
57
- def initialize(**system_arguments)
58
- @system_arguments = system_arguments
59
- @system_arguments[:tag] ||= :div
60
- end
61
-
62
- def component
63
- Primer::BaseComponent.new(**@system_arguments)
64
- end
65
- end
66
52
  end
67
53
  end
@@ -1,9 +1,9 @@
1
1
  <%= render(Primer::DetailsComponent.new(**@system_arguments)) do |c| %>
2
- <% c.slot(:summary, classes: @summary_classes) do %>
2
+ <% c.summary(classes: @summary_classes) do %>
3
3
  <%= button %>
4
4
  <% end %>
5
5
 
6
- <% c.slot(:body) do %>
6
+ <% c.body do %>
7
7
  <%= menu %>
8
8
  <% end %>
9
9
  <% end %>
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "dropdown/menu_component"
4
-
5
3
  module Primer
6
4
  # Dropdowns are lightweight context menus for housing navigation and actions.
7
5
  # They're great for instances where you don't need the full power (and code) of the select menu.
@@ -20,8 +18,8 @@ module Primer
20
18
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
21
19
  renders_one :menu, Primer::Dropdown::MenuComponent
22
20
 
23
- # @example 210|Default
24
- # <div style="margin-bottom: 150px">
21
+ # @example Default
22
+ # <div>
25
23
  # <%= render(Primer::DropdownComponent.new) do |c| %>
26
24
  # <% c.button do %>
27
25
  # Dropdown
@@ -37,8 +35,8 @@ module Primer
37
35
  # <% end %>
38
36
  # </div>
39
37
  #
40
- # @example 210|With Direction
41
- # <div style="margin-bottom: 150px" class="d-flex flex-justify-center">
38
+ # @example With Direction
39
+ # <div>
42
40
  # <%= render(Primer::DropdownComponent.new) do |c| %>
43
41
  # <% c.button do %>
44
42
  # Dropdown
@@ -18,14 +18,14 @@ module Primer
18
18
  STATUSES[:deprecated]
19
19
  end
20
20
 
21
- # @example 200|With a header
22
- # <div style="margin-bottom: 150px">
21
+ # @example With a header
22
+ # <div>
23
23
  # <%= render(Primer::DetailsComponent.new(overlay: :default, reset: true, position: :relative)) do |c| %>
24
- # <% c.slot(:summary) do %>
24
+ # <% c.summary do %>
25
25
  # Dropdown
26
26
  # <% end %>
27
27
  #
28
- # <% c.slot(:body) do %>
28
+ # <% c.body do %>
29
29
  # <%= render(Primer::DropdownMenuComponent.new(header: "Options")) do %>
30
30
  # <ul>
31
31
  # <li><a class="dropdown-item" href="#url">Dropdown item</a></li>
@@ -1,9 +1,9 @@
1
1
  <%= render Primer::BaseComponent.new(**@system_arguments) do %>
2
- <%= render(Primer::OcticonComponent.new(icon: @icon)) if @icon %>
2
+ <%= primer(:octicon, icon: @icon) if @icon %>
3
3
  <%= content %>
4
4
  <% if @dismissible %>
5
5
  <button class="flash-close js-flash-close" type="button" aria-label="Close">
6
- <%= render(Primer::OcticonComponent.new(icon: "x")) %>
6
+ <%= primer(:octicon, icon: "x") %>
7
7
  </button>
8
8
  <% end %>
9
9
 
@@ -22,22 +22,22 @@ module Primer
22
22
  :danger => "flash-error",
23
23
  :success => "flash-success"
24
24
  }.freeze
25
- # @example auto|Variants
25
+ # @example Variants
26
26
  # <%= render(Primer::FlashComponent.new) { "This is a flash message!" } %>
27
27
  # <%= render(Primer::FlashComponent.new(variant: :warning)) { "This is a warning flash message!" } %>
28
28
  # <%= render(Primer::FlashComponent.new(variant: :danger)) { "This is a danger flash message!" } %>
29
29
  # <%= render(Primer::FlashComponent.new(variant: :success)) { "This is a success flash message!" } %>
30
30
  #
31
- # @example auto|Full width
31
+ # @example Full width
32
32
  # <%= render(Primer::FlashComponent.new(full: true)) { "This is a full width flash message!" } %>
33
33
  #
34
- # @example auto|Dismissible
34
+ # @example Dismissible
35
35
  # <%= render(Primer::FlashComponent.new(dismissible: true)) { "This is a dismissible flash message!" } %>
36
36
  #
37
- # @example auto|Icon
37
+ # @example Icon
38
38
  # <%= render(Primer::FlashComponent.new(icon: "people")) { "This is a flash message with an icon!" } %>
39
39
  #
40
- # @example auto|With actions
40
+ # @example With actions
41
41
  # <%= render(Primer::FlashComponent.new) do |component| %>
42
42
  # This is a flash message with actions!
43
43
  # <% component.action do %>
@@ -35,28 +35,28 @@ module Primer
35
35
  DEFAULT_DIRECTION = nil
36
36
  ALLOWED_DIRECTIONS = [DEFAULT_DIRECTION, :column, :column_reverse, :row, :row_reverse].freeze
37
37
 
38
- # @example auto|Default
38
+ # @example Default
39
39
  # <%= render(Primer::FlexComponent.new(bg: :gray)) do %>
40
40
  # <%= render(Primer::BoxComponent.new(p: 5, bg: :gray_light, classes: "border")) { "Item 1" } %>
41
41
  # <%= render(Primer::BoxComponent.new(p: 5, bg: :gray_light, classes: "border")) { "Item 2" } %>
42
42
  # <%= render(Primer::BoxComponent.new(p: 5, bg: :gray_light, classes: "border")) { "Item 3" } %>
43
43
  # <% end %>
44
44
  #
45
- # @example auto|Justify center
45
+ # @example Justify center
46
46
  # <%= render(Primer::FlexComponent.new(justify_content: :center, bg: :gray)) do %>
47
47
  # <%= render(Primer::BoxComponent.new(p: 5, bg: :gray_light, classes: "border")) { "Item 1" } %>
48
48
  # <%= render(Primer::BoxComponent.new(p: 5, bg: :gray_light, classes: "border")) { "Item 2" } %>
49
49
  # <%= render(Primer::BoxComponent.new(p: 5, bg: :gray_light, classes: "border")) { "Item 3" } %>
50
50
  # <% end %>
51
51
  #
52
- # @example auto|Align end
52
+ # @example Align end
53
53
  # <%= render(Primer::FlexComponent.new(align_items: :end, bg: :gray)) do %>
54
54
  # <%= render(Primer::BoxComponent.new(p: 5, bg: :gray_light, classes: "border")) { "Item 1" } %>
55
55
  # <%= render(Primer::BoxComponent.new(p: 5, bg: :gray_light, classes: "border")) { "Item 2" } %>
56
56
  # <%= render(Primer::BoxComponent.new(p: 5, bg: :gray_light, classes: "border")) { "Item 3" } %>
57
57
  # <% end %>
58
58
  #
59
- # @example auto|Direction column
59
+ # @example Direction column
60
60
  # <%= render(Primer::FlexComponent.new(direction: :column, bg: :gray)) do %>
61
61
  # <%= render(Primer::BoxComponent.new(p: 5, bg: :gray_light, classes: "border")) { "Item 1" } %>
62
62
  # <%= render(Primer::BoxComponent.new(p: 5, bg: :gray_light, classes: "border")) { "Item 2" } %>
@@ -7,7 +7,7 @@ module Primer
7
7
  FLEX_AUTO_DEFAULT = false
8
8
  FLEX_AUTO_ALLOWED_VALUES = [FLEX_AUTO_DEFAULT, true].freeze
9
9
 
10
- # @example auto|Default
10
+ # @example Default
11
11
  # <%= render(Primer::FlexComponent.new) do %>
12
12
  # <%= render(Primer::FlexItemComponent.new) do %>
13
13
  # Item 1
@@ -3,7 +3,9 @@
3
3
  module Primer
4
4
  # Use the Heading component to wrap a component that will create a heading element
5
5
  class HeadingComponent < Primer::Component
6
- # @example auto|Default
6
+ view_helper :heading
7
+
8
+ # @example Default
7
9
  # <%= render(Primer::HeadingComponent.new) { "H1 Text" } %>
8
10
  # <%= render(Primer::HeadingComponent.new(tag: :h2)) { "H2 Text" } %>
9
11
  # <%= render(Primer::HeadingComponent.new(tag: :h3)) { "H3 Text" } %>
@@ -3,30 +3,17 @@
3
3
  module Primer
4
4
  # Use labels to add contextual metadata to a design.
5
5
  class LabelComponent < Primer::Component
6
- NEW_SCHEME_MAPPINGS = {
6
+ SCHEME_MAPPINGS = {
7
7
  primary: "Label--primary",
8
8
  secondary: "Label--secondary",
9
9
  info: "Label--info",
10
10
  success: "Label--success",
11
11
  warning: "Label--warning",
12
- danger: "Label--danger"
13
- }.freeze
14
-
15
- DEPRECATED_SCHEME_MAPPINGS = {
16
- gray: "Label--gray",
17
- dark_gray: "Label--gray-darker",
18
- yellow: "Label--yellow",
12
+ danger: "Label--danger",
13
+ # deprecated
19
14
  orange: "Label--orange",
20
- red: "Label--red",
21
- green: "Label--green",
22
- blue: "Label--blue",
23
- purple: "Label--purple",
24
- pink: "Label--pink",
25
- outline: "Label--outline",
26
- green_outline: "Label--outline-green"
15
+ purple: "Label--purple"
27
16
  }.freeze
28
-
29
- SCHEME_MAPPINGS = NEW_SCHEME_MAPPINGS.merge(DEPRECATED_SCHEME_MAPPINGS)
30
17
  SCHEME_OPTIONS = SCHEME_MAPPINGS.keys << nil
31
18
 
32
19
  VARIANT_MAPPINGS = {
@@ -35,20 +22,25 @@ module Primer
35
22
  }.freeze
36
23
  VARIANT_OPTIONS = VARIANT_MAPPINGS.keys << nil
37
24
 
38
- # @example auto|Schemes
39
- # <%= render(Primer::LabelComponent.new(title: "Label: Label")) { "default" } %>
40
- # <%= render(Primer::LabelComponent.new(title: "Label: Label", scheme: :gray)) { "gray" } %>
41
- # <%= render(Primer::LabelComponent.new(title: "Label: Label", scheme: :dark_gray)) { "dark_gray" } %>
42
- # <%= render(Primer::LabelComponent.new(title: "Label: Label", scheme: :yellow)) { "yellow" } %>
43
- # <%= render(Primer::LabelComponent.new(title: "Label: Label", scheme: :green)) { "green" } %>
44
- # <%= render(Primer::LabelComponent.new(title: "Label: Label", scheme: :purple)) { "purple" } %>
25
+ # @example Schemes
26
+ # <%= render(Primer::LabelComponent.new(title: "Label: Label")) { "Default" } %>
27
+ # <%= render(Primer::LabelComponent.new(title: "Label: Label", scheme: :primary)) { "Primary" } %>
28
+ # <%= render(Primer::LabelComponent.new(title: "Label: Label", scheme: :secondary)) { "Secondary" } %>
29
+ # <%= render(Primer::LabelComponent.new(title: "Label: Label", scheme: :info)) { "Info" } %>
30
+ # <%= render(Primer::LabelComponent.new(title: "Label: Label", scheme: :success)) { "Success" } %>
31
+ # <%= render(Primer::LabelComponent.new(title: "Label: Label", scheme: :warning)) { "Warning" } %>
32
+ # <%= render(Primer::LabelComponent.new(title: "Label: Label", scheme: :danger)) { "Danger" } %>
45
33
  #
46
- # @example auto|Variants
34
+ # @example Variants
47
35
  # <%= render(Primer::LabelComponent.new(title: "Label: Label")) { "Default" } %>
48
36
  # <%= render(Primer::LabelComponent.new(title: "Label: Label", variant: :large)) { "Large" } %>
49
37
  #
38
+ # @example Deprecated schemes
39
+ # <%= render(Primer::LabelComponent.new(title: "Label: Label", scheme: :orange)) { "Orange" } %>
40
+ # <%= render(Primer::LabelComponent.new(title: "Label: Label", scheme: :purple)) { "Purple" } %>
41
+ #
50
42
  # @param title [String] `title` attribute for the component element.
51
- # @param scheme [Symbol] <%= one_of(Primer::LabelComponent::DEPRECATED_SCHEME_MAPPINGS.keys) %>
43
+ # @param scheme [Symbol] <%= one_of(Primer::LabelComponent::SCHEME_MAPPINGS.keys) %>
52
44
  # @param variant [Symbol] <%= one_of(Primer::LabelComponent::VARIANT_OPTIONS) %>
53
45
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
54
46
  def initialize(title:, scheme: nil, variant: nil, **system_arguments)
@@ -67,5 +59,9 @@ module Primer
67
59
  def call
68
60
  render(Primer::BaseComponent.new(**@system_arguments)) { content }
69
61
  end
62
+
63
+ def self.status
64
+ Primer::Component::STATUSES[:beta]
65
+ end
70
66
  end
71
67
  end