primer_view_components 0.0.54 → 0.0.55
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +37 -0
- data/app/components/primer/alpha/tab_nav.html.erb +11 -0
- data/app/components/primer/alpha/tab_nav.rb +130 -0
- data/app/components/primer/{tab_nav_component.html.erb → alpha/tab_panels.html.erb} +3 -8
- data/app/components/primer/alpha/tab_panels.rb +82 -0
- data/app/components/primer/alpha/underline_nav.rb +1 -7
- data/app/components/primer/alpha/underline_panels.html.erb +1 -1
- data/app/components/primer/base_component.rb +1 -1
- data/app/components/primer/beta/breadcrumbs.html.erb +2 -1
- data/app/components/primer/beta/breadcrumbs.rb +15 -13
- data/app/components/primer/navigation/tab_component.rb +2 -2
- data/app/components/primer/octicon_component.rb +6 -1
- data/app/components/primer/tab_container_component.rb +1 -1
- data/app/lib/primer/class_name_helper.rb +14 -13
- data/app/lib/primer/octicon/cache.rb +10 -2
- data/app/lib/primer/tab_nav_helper.rb +35 -0
- data/app/lib/primer/tabbed_component_helper.rb +3 -3
- data/lib/primer/classify/cache.rb +0 -6
- data/lib/primer/classify/utilities.rb +1 -1
- data/lib/primer/classify/utilities.yml +35 -0
- data/lib/primer/classify.rb +0 -5
- data/lib/primer/view_components/version.rb +1 -1
- data/lib/rubocop/cop/primer/base_cop.rb +28 -0
- data/lib/rubocop/cop/primer/deprecated_arguments.rb +1 -15
- data/lib/rubocop/cop/primer/system_argument_instead_of_class.rb +1 -15
- data/lib/tasks/docs.rake +5 -5
- data/lib/tasks/utilities.rake +2 -0
- data/static/arguments.yml +29 -36
- data/static/classes.yml +1 -0
- data/static/constants.json +16 -17
- data/static/statuses.json +2 -1
- metadata +22 -5
- data/app/components/primer/tab_nav_component.rb +0 -151
- data/lib/primer/classify/functional_text_colors.rb +0 -64
@@ -41,7 +41,12 @@ module Primer
|
|
41
41
|
system_arguments.delete(:width)
|
42
42
|
end
|
43
43
|
|
44
|
-
cache_key = Primer::Octicon::Cache.get_key(
|
44
|
+
cache_key = Primer::Octicon::Cache.get_key(
|
45
|
+
symbol: icon_key,
|
46
|
+
size: size,
|
47
|
+
height: system_arguments[:height],
|
48
|
+
width: system_arguments[:width]
|
49
|
+
)
|
45
50
|
|
46
51
|
@system_arguments = system_arguments
|
47
52
|
@system_arguments[:tag] = :svg
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module Primer
|
4
4
|
# Use `TabContainer` to create tabbed content with keyboard support. This component does not add any styles.
|
5
|
-
# It only provides the tab functionality. If you want styled Tabs you can look at <%= link_to_component(Primer::
|
5
|
+
# It only provides the tab functionality. If you want styled Tabs you can look at <%= link_to_component(Primer::Alpha::TabNav) %>.
|
6
6
|
#
|
7
7
|
# This component requires javascript.
|
8
8
|
class TabContainerComponent < Primer::Component
|
@@ -7,22 +7,23 @@ module Primer
|
|
7
7
|
# :nodoc:
|
8
8
|
module ClassNameHelper
|
9
9
|
def class_names(*args)
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
10
|
+
[].tap do |classes|
|
11
|
+
args.each do |class_name|
|
12
|
+
case class_name
|
13
|
+
when String
|
14
|
+
classes << class_name if class_name.present?
|
15
|
+
when Hash
|
16
|
+
class_name.each do |key, val|
|
17
|
+
classes << key if val
|
18
|
+
end
|
19
|
+
when Array
|
20
|
+
classes << class_names(*class_name).presence
|
19
21
|
end
|
20
|
-
when Array
|
21
|
-
classes << class_names(*class_name).presence
|
22
22
|
end
|
23
|
-
end
|
24
23
|
|
25
|
-
|
24
|
+
classes.compact!
|
25
|
+
classes.uniq!
|
26
|
+
end.join(" ")
|
26
27
|
end
|
27
28
|
end
|
28
29
|
end
|
@@ -9,8 +9,9 @@ module Primer
|
|
9
9
|
PRELOADED_ICONS = [:alert, :check, :"chevron-down", :paste, :clock, :"dot-fill", :info, :"kebab-horizontal", :link, :lock, :mail, :pencil, :plus, :question, :repo, :search, :"shield-lock", :star, :trash, :x].freeze
|
10
10
|
|
11
11
|
class << self
|
12
|
-
def get_key(
|
13
|
-
|
12
|
+
def get_key(**kwargs)
|
13
|
+
correct_key_args?(**kwargs)
|
14
|
+
kwargs.hash
|
14
15
|
end
|
15
16
|
|
16
17
|
def read(key)
|
@@ -36,6 +37,13 @@ module Primer
|
|
36
37
|
def preload!
|
37
38
|
PRELOADED_ICONS.each { |icon| Primer::OcticonComponent.new(icon: icon) }
|
38
39
|
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def correct_key_args?(symbol:, size:, width: nil, height: nil)
|
44
|
+
# This method does nothing but will raise an ArgumentError if the
|
45
|
+
# wrong args are passed.
|
46
|
+
end
|
39
47
|
end
|
40
48
|
end
|
41
49
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "active_support/concern"
|
4
|
+
|
5
|
+
module Primer
|
6
|
+
# Helper to share tab validation logic between components.
|
7
|
+
# The component will raise an error if there are 0 or 2+ selected tabs.
|
8
|
+
module TabNavHelper
|
9
|
+
extend ActiveSupport::Concern
|
10
|
+
|
11
|
+
EXTRA_ALIGN_DEFAULT = :left
|
12
|
+
EXTRA_ALIGN_OPTIONS = [EXTRA_ALIGN_DEFAULT, :right].freeze
|
13
|
+
|
14
|
+
def tab_nav_tab_classes(classes)
|
15
|
+
class_names(
|
16
|
+
"tabnav-tab",
|
17
|
+
classes
|
18
|
+
)
|
19
|
+
end
|
20
|
+
|
21
|
+
def tab_nav_classes(classes)
|
22
|
+
class_names(
|
23
|
+
"tabnav",
|
24
|
+
classes
|
25
|
+
)
|
26
|
+
end
|
27
|
+
|
28
|
+
def tab_nav_body_classes(classes)
|
29
|
+
class_names(
|
30
|
+
"tabnav-tabs",
|
31
|
+
classes
|
32
|
+
)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -16,11 +16,11 @@ module Primer
|
|
16
16
|
|
17
17
|
private
|
18
18
|
|
19
|
-
def
|
20
|
-
|
19
|
+
def aria_label_for_page_nav(label)
|
20
|
+
@system_arguments[:tag] == :nav ? @system_arguments[:"aria-label"] = label : @body_arguments[:"aria-label"] = label
|
21
21
|
end
|
22
22
|
|
23
|
-
def
|
23
|
+
def tab_container_wrapper(with_panel:, **system_arguments)
|
24
24
|
return yield unless with_panel
|
25
25
|
|
26
26
|
render Primer::TabContainerComponent.new(**system_arguments) do
|
@@ -3,7 +3,6 @@
|
|
3
3
|
require_relative "flex"
|
4
4
|
require_relative "functional_background_colors"
|
5
5
|
require_relative "functional_border_colors"
|
6
|
-
require_relative "functional_text_colors"
|
7
6
|
require_relative "grid"
|
8
7
|
|
9
8
|
module Primer
|
@@ -55,11 +54,6 @@ module Primer
|
|
55
54
|
values: Primer::Classify::Grid::COL_VALUES
|
56
55
|
)
|
57
56
|
|
58
|
-
preload(
|
59
|
-
keys: [Primer::Classify::COLOR_KEY],
|
60
|
-
values: Primer::Classify::FunctionalTextColors::OPTIONS
|
61
|
-
)
|
62
|
-
|
63
57
|
preload(
|
64
58
|
keys: [Primer::Classify::BG_KEY],
|
65
59
|
values: Primer::Classify::FunctionalBackgroundColors::OPTIONS
|
@@ -175,7 +175,7 @@ module Primer
|
|
175
175
|
unless supported_value?(key, val)
|
176
176
|
raise ArgumentError, "#{val} is not a valid value for :#{key}. Use one of #{mappings(key)}" unless ENV["RAILS_ENV"] == "production"
|
177
177
|
|
178
|
-
return ""
|
178
|
+
return "#{key.to_s.dasherize}-#{val.to_s.dasherize}"
|
179
179
|
end
|
180
180
|
|
181
181
|
nil
|
@@ -22,6 +22,39 @@
|
|
22
22
|
- anim-hover-grow
|
23
23
|
:rotate:
|
24
24
|
- anim-rotate
|
25
|
+
:color:
|
26
|
+
:text_primary:
|
27
|
+
- color-text-primary
|
28
|
+
:text_secondary:
|
29
|
+
- color-text-secondary
|
30
|
+
:text_tertiary:
|
31
|
+
- color-text-tertiary
|
32
|
+
:text_link:
|
33
|
+
- color-text-link
|
34
|
+
:text_success:
|
35
|
+
- color-text-success
|
36
|
+
:text_warning:
|
37
|
+
- color-text-warning
|
38
|
+
:text_danger:
|
39
|
+
- color-text-danger
|
40
|
+
:text_inverse:
|
41
|
+
- color-text-inverse
|
42
|
+
:text_white:
|
43
|
+
- color-text-white
|
44
|
+
:icon_primary:
|
45
|
+
- color-icon-primary
|
46
|
+
:icon_secondary:
|
47
|
+
- color-icon-secondary
|
48
|
+
:icon_tertiary:
|
49
|
+
- color-icon-tertiary
|
50
|
+
:icon_info:
|
51
|
+
- color-icon-info
|
52
|
+
:icon_danger:
|
53
|
+
- color-icon-danger
|
54
|
+
:icon_success:
|
55
|
+
- color-icon-success
|
56
|
+
:icon_warning:
|
57
|
+
- color-icon-warning
|
25
58
|
:position:
|
26
59
|
:static:
|
27
60
|
- position-static
|
@@ -1220,6 +1253,8 @@
|
|
1220
1253
|
- py-lg-12
|
1221
1254
|
- py-xl-12
|
1222
1255
|
:word_break:
|
1256
|
+
:break_word:
|
1257
|
+
- wb-break-word
|
1223
1258
|
:break_all:
|
1224
1259
|
- wb-break-all
|
1225
1260
|
:display:
|
data/lib/primer/classify.rb
CHANGED
@@ -4,7 +4,6 @@ require_relative "classify/cache"
|
|
4
4
|
require_relative "classify/flex"
|
5
5
|
require_relative "classify/functional_background_colors"
|
6
6
|
require_relative "classify/functional_border_colors"
|
7
|
-
require_relative "classify/functional_text_colors"
|
8
7
|
require_relative "classify/grid"
|
9
8
|
require_relative "classify/utilities"
|
10
9
|
require_relative "classify/validation"
|
@@ -15,7 +14,6 @@ module Primer
|
|
15
14
|
# Keys where we can simply translate { key: value } into ".key-value"
|
16
15
|
CONCAT_KEYS = %i[text box_shadow].freeze
|
17
16
|
|
18
|
-
COLOR_KEY = :color
|
19
17
|
BG_KEY = :bg
|
20
18
|
TEXT_KEYS = %i[font_family font_style font_weight text_align text_transform].freeze
|
21
19
|
BOX_SHADOW_KEY = :box_shadow
|
@@ -88,7 +86,6 @@ module Primer
|
|
88
86
|
BORDER_KEY,
|
89
87
|
BORDER_COLOR_KEY,
|
90
88
|
BORDER_RADIUS_KEY,
|
91
|
-
COLOR_KEY,
|
92
89
|
BG_KEY,
|
93
90
|
BOX_SHADOW_KEY,
|
94
91
|
CONTAINER_KEY
|
@@ -176,8 +173,6 @@ module Primer
|
|
176
173
|
else
|
177
174
|
memo[:classes] << Primer::Classify::FunctionalBackgroundColors.color(val)
|
178
175
|
end
|
179
|
-
elsif key == COLOR_KEY
|
180
|
-
memo[:classes] << Primer::Classify::FunctionalTextColors.color(val)
|
181
176
|
elsif key == BORDER_KEY
|
182
177
|
border_value = if val == true
|
183
178
|
"border"
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "rubocop"
|
4
|
+
require "primer/view_components/statuses"
|
5
|
+
require_relative "../../../../app/lib/primer/view_helper"
|
6
|
+
|
7
|
+
module RuboCop
|
8
|
+
module Cop
|
9
|
+
module Primer
|
10
|
+
# :nodoc:
|
11
|
+
class BaseCop < RuboCop::Cop::Cop
|
12
|
+
# We only verify SystemArguments if it's a `.new` call on a component or
|
13
|
+
# a ViewHeleper call.
|
14
|
+
def valid_node?(node)
|
15
|
+
return if node.nil?
|
16
|
+
|
17
|
+
view_helpers.include?(node.method_name) || (node.method_name == :new && !node.receiver.nil? && ::Primer::ViewComponents::STATUSES.key?(node.receiver.const_name))
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def view_helpers
|
23
|
+
::Primer::ViewHelper::HELPERS.keys.map { |key| "primer_#{key}".to_sym }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -1,8 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "rubocop"
|
4
|
-
require "primer/view_components/statuses"
|
5
|
-
require_relative "../../../../app/lib/primer/view_helper"
|
6
4
|
|
7
5
|
# :nocov:
|
8
6
|
module RuboCop
|
@@ -15,7 +13,7 @@ module RuboCop
|
|
15
13
|
#
|
16
14
|
# good
|
17
15
|
# Component.new(foo: :bar)
|
18
|
-
class DeprecatedArguments <
|
16
|
+
class DeprecatedArguments < BaseCop
|
19
17
|
INVALID_MESSAGE = <<~STR
|
20
18
|
Avoid using deprecated arguments: https://primer.style/view-components/deprecated.
|
21
19
|
STR
|
@@ -259,18 +257,6 @@ module RuboCop
|
|
259
257
|
corrector.replace(node, replacement) if replacement.present?
|
260
258
|
end
|
261
259
|
end
|
262
|
-
|
263
|
-
private
|
264
|
-
|
265
|
-
# We only verify SystemArguments if it's a `.new` call on a component or
|
266
|
-
# a ViewHleper call.
|
267
|
-
def valid_node?(node)
|
268
|
-
view_helpers.include?(node.method_name) || (node.method_name == :new && ::Primer::ViewComponents::STATUSES.key?(node.receiver.const_name))
|
269
|
-
end
|
270
|
-
|
271
|
-
def view_helpers
|
272
|
-
::Primer::ViewHelper::HELPERS.keys.map { |key| "primer_#{key}".to_sym }
|
273
|
-
end
|
274
260
|
end
|
275
261
|
end
|
276
262
|
end
|
@@ -2,8 +2,6 @@
|
|
2
2
|
|
3
3
|
require "rubocop"
|
4
4
|
require "primer/classify/utilities"
|
5
|
-
require "primer/view_components/statuses"
|
6
|
-
require_relative "../../../../app/lib/primer/view_helper"
|
7
5
|
|
8
6
|
# :nocov:
|
9
7
|
module RuboCop
|
@@ -16,7 +14,7 @@ module RuboCop
|
|
16
14
|
#
|
17
15
|
# good
|
18
16
|
# Component.new(mr: 1)
|
19
|
-
class SystemArgumentInsteadOfClass <
|
17
|
+
class SystemArgumentInsteadOfClass < BaseCop
|
20
18
|
INVALID_MESSAGE = <<~STR
|
21
19
|
Avoid using CSS classes when you can use System Arguments: https://primer.style/view-components/system-arguments.
|
22
20
|
STR
|
@@ -53,18 +51,6 @@ module RuboCop
|
|
53
51
|
corrector.replace(node.loc.expression, args)
|
54
52
|
end
|
55
53
|
end
|
56
|
-
|
57
|
-
private
|
58
|
-
|
59
|
-
# We only verify SystemArguments if it's a `.new` call on a component or
|
60
|
-
# a ViewHleper call.
|
61
|
-
def valid_node?(node)
|
62
|
-
view_helpers.include?(node.method_name) || (node.method_name == :new && ::Primer::ViewComponents::STATUSES.key?(node.receiver.const_name))
|
63
|
-
end
|
64
|
-
|
65
|
-
def view_helpers
|
66
|
-
::Primer::ViewHelper::HELPERS.keys.map { |key| "primer_#{key}".to_sym }
|
67
|
-
end
|
68
54
|
end
|
69
55
|
end
|
70
56
|
end
|
data/lib/tasks/docs.rake
CHANGED
@@ -68,7 +68,6 @@ namespace :docs do
|
|
68
68
|
Primer::SpinnerComponent,
|
69
69
|
Primer::SubheadComponent,
|
70
70
|
Primer::TabContainerComponent,
|
71
|
-
Primer::TabNavComponent,
|
72
71
|
Primer::Beta::Text,
|
73
72
|
Primer::TimeAgoComponent,
|
74
73
|
Primer::TimelineItemComponent,
|
@@ -76,7 +75,8 @@ namespace :docs do
|
|
76
75
|
Primer::Truncate,
|
77
76
|
Primer::Beta::Truncate,
|
78
77
|
Primer::Alpha::UnderlineNav,
|
79
|
-
Primer::Alpha::
|
78
|
+
Primer::Alpha::TabNav,
|
79
|
+
Primer::Alpha::TabPanels
|
80
80
|
]
|
81
81
|
|
82
82
|
js_components = [
|
@@ -86,9 +86,9 @@ namespace :docs do
|
|
86
86
|
Primer::Beta::AutoComplete,
|
87
87
|
Primer::ClipboardCopy,
|
88
88
|
Primer::TabContainerComponent,
|
89
|
-
Primer::TabNavComponent,
|
90
89
|
Primer::TimeAgoComponent,
|
91
|
-
Primer::Alpha::UnderlinePanels
|
90
|
+
Primer::Alpha::UnderlinePanels,
|
91
|
+
Primer::Alpha::TabPanels
|
92
92
|
]
|
93
93
|
|
94
94
|
all_components = Primer::Component.descendants - [Primer::BaseComponent]
|
@@ -206,7 +206,7 @@ namespace :docs do
|
|
206
206
|
f.puts
|
207
207
|
f.puts("### `#{slot_documentation.name.to_s.capitalize}`")
|
208
208
|
|
209
|
-
if slot_documentation.base_docstring.present?
|
209
|
+
if slot_documentation.base_docstring.to_s.present?
|
210
210
|
f.puts
|
211
211
|
f.puts(view_context.render(inline: slot_documentation.base_docstring))
|
212
212
|
end
|
data/lib/tasks/utilities.rake
CHANGED
data/static/arguments.yml
CHANGED
@@ -22,8 +22,8 @@
|
|
22
22
|
type: Hash
|
23
23
|
default: N/A
|
24
24
|
description: "[System arguments](/system-arguments)"
|
25
|
-
- component:
|
26
|
-
source: https://github.com/primer/view_components/tree/main/app/components/primer/alpha/
|
25
|
+
- component: TabNav
|
26
|
+
source: https://github.com/primer/view_components/tree/main/app/components/primer/alpha/tab_nav.rb
|
27
27
|
parameters:
|
28
28
|
- name: tag
|
29
29
|
type: Symbol
|
@@ -34,10 +34,6 @@
|
|
34
34
|
default: N/A
|
35
35
|
description: Sets an `aria-label` that helps assistive technology users understand
|
36
36
|
the purpose of the links, and distinguish it from similar elements.
|
37
|
-
- name: align
|
38
|
-
type: Symbol
|
39
|
-
default: "`:left`"
|
40
|
-
description: One of `:left` and `:right`. - Defaults to left
|
41
37
|
- name: body_arguments
|
42
38
|
type: Hash
|
43
39
|
default: "`{}`"
|
@@ -46,8 +42,8 @@
|
|
46
42
|
type: Hash
|
47
43
|
default: N/A
|
48
44
|
description: "[System arguments](/system-arguments)"
|
49
|
-
- component:
|
50
|
-
source: https://github.com/primer/view_components/tree/main/app/components/primer/alpha/
|
45
|
+
- component: TabPanels
|
46
|
+
source: https://github.com/primer/view_components/tree/main/app/components/primer/alpha/tab_panels.rb
|
51
47
|
parameters:
|
52
48
|
- name: label
|
53
49
|
type: String
|
@@ -56,7 +52,7 @@
|
|
56
52
|
the purpose of the tabs.
|
57
53
|
- name: align
|
58
54
|
type: Symbol
|
59
|
-
default:
|
55
|
+
default: N/A
|
60
56
|
description: One of `:left` and `:right`. - Defaults to left
|
61
57
|
- name: body_arguments
|
62
58
|
type: Hash
|
@@ -70,6 +66,30 @@
|
|
70
66
|
type: Hash
|
71
67
|
default: N/A
|
72
68
|
description: "[System arguments](/system-arguments)"
|
69
|
+
- component: UnderlineNav
|
70
|
+
source: https://github.com/primer/view_components/tree/main/app/components/primer/alpha/underline_nav.rb
|
71
|
+
parameters:
|
72
|
+
- name: tag
|
73
|
+
type: Symbol
|
74
|
+
default: "`:nav`"
|
75
|
+
description: One of `:div` and `:nav`.
|
76
|
+
- name: label
|
77
|
+
type: String
|
78
|
+
default: N/A
|
79
|
+
description: Sets an `aria-label` that helps assistive technology users understand
|
80
|
+
the purpose of the links, and distinguish it from similar elements.
|
81
|
+
- name: align
|
82
|
+
type: Symbol
|
83
|
+
default: "`:left`"
|
84
|
+
description: One of `:left` and `:right`. - Defaults to left
|
85
|
+
- name: body_arguments
|
86
|
+
type: Hash
|
87
|
+
default: "`{}`"
|
88
|
+
description: "[System arguments](/system-arguments) for the body wrapper."
|
89
|
+
- name: system_arguments
|
90
|
+
type: Hash
|
91
|
+
default: N/A
|
92
|
+
description: "[System arguments](/system-arguments)"
|
73
93
|
- component: BaseButton
|
74
94
|
source: https://github.com/primer/view_components/tree/main/app/components/primer/base_button.rb
|
75
95
|
parameters:
|
@@ -886,33 +906,6 @@
|
|
886
906
|
type: Hash
|
887
907
|
default: N/A
|
888
908
|
description: "[System arguments](/system-arguments)"
|
889
|
-
- component: TabNav
|
890
|
-
source: https://github.com/primer/view_components/tree/main/app/components/primer/tab_nav_component.rb
|
891
|
-
parameters:
|
892
|
-
- name: label
|
893
|
-
type: String
|
894
|
-
default: N/A
|
895
|
-
description: Used to set the `aria-label` on the top level `<nav>` element.
|
896
|
-
- name: with_panel
|
897
|
-
type: Boolean
|
898
|
-
default: "`false`"
|
899
|
-
description: Whether the TabNav should navigate through pages or panels. When
|
900
|
-
true, [TabContainer](/components/tabcontainer) is rendered along with JavaScript
|
901
|
-
behavior. Additionally, the `tab` slot will render as a button as opposed to
|
902
|
-
an anchor.
|
903
|
-
- name: body_arguments
|
904
|
-
type: Hash
|
905
|
-
default: "`{}`"
|
906
|
-
description: "[System arguments](/system-arguments) for the body wrapper."
|
907
|
-
- name: wrapper_arguments
|
908
|
-
type: Hash
|
909
|
-
default: "`{}`"
|
910
|
-
description: "[System arguments](/system-arguments) for the `TabContainer` wrapper.
|
911
|
-
Only applies if `with_panel` is `true`."
|
912
|
-
- name: system_arguments
|
913
|
-
type: Hash
|
914
|
-
default: N/A
|
915
|
-
description: "[System arguments](/system-arguments)"
|
916
909
|
- component: TimeAgo
|
917
910
|
source: https://github.com/primer/view_components/tree/main/app/components/primer/time_ago_component.rb
|
918
911
|
parameters:
|