System arguments
On this page
All Primer ViewComponents accept a standard set of options called system arguments, mimicking the styled-system API used by Primer React.
Under the hood, system arguments are mapped to Primer CSS classes, with any remaining options passed to Rails' content_tag
.
Responsive values
To apply different values across responsive breakpoints, pass an array with up to five values in the order [default, small, medium, large, xlarge]
. To skip a breakpoint, pass nil
.
For example:
<%= render Primer::Beta::Heading.new(mt: [0, nil, nil, 4, 2]) do %>Hello world<% end %>
Renders:
<h1 class="mt-0 mt-lg-4 mt-xl-2">Hello world</h1>
HTML attributes
System arguments include most HTML attributes. For example:
Name | Type | Description |
---|---|---|
aria | Hash | Aria attributes: aria: { label: "foo" } renders aria-label='foo' . |
data | Hash | Data attributes: data: { foo: :bar } renders data-foo='bar' . |
height | Integer | Height. |
hidden | Boolean | Whether to assign the hidden attribute. |
style | String | Inline styles. |
title | String | The title attribute. |
width | Integer | Width. |
Animation
Name | Type | Description |
---|---|---|
animation | Symbol | One of :fade_down , :fade_in , :fade_out , :fade_up , :grow_x , :hover_grow , :pulse , :pulse_in , :rotate , :scale_in , or :shrink_x . |
Border
Name | Type | Description |
---|---|---|
border_bottom | Integer | Set to 0 to remove the bottom border. |
border_left | Integer | Set to 0 to remove the left border. |
border_radius | Integer | One of 0 , 1 , 2 , or 3 . |
border_right | Integer | Set to 0 to remove the right border. |
border_top | Integer | Set to 0 to remove the top border. |
border | Symbol | One of :bottom , :left , :right , :top , :x , :y , or true . |
box_shadow | Boolean, Symbol | Box shadow. One of :extra_large , :large , :medium , :none , or true . |
Color
Name | Type | Description |
---|---|---|
bg | Symbol | Background color. One of :accent , :accent_emphasis , :attention , :attention_emphasis , :closed , :closed_emphasis , :danger , :danger_emphasis , :default , :done , :done_emphasis , :emphasis , :inset , :open , :open_emphasis , :overlay , :severe , :severe_emphasis , :sponsors , :sponsors_emphasis , :subtle , :success , :success_emphasis , or :transparent . |
border_color | Symbol | Border color. One of :accent , :accent_emphasis , :attention , :attention_emphasis , :closed , :closed_emphasis , :danger , :danger_emphasis , :default , :done , :done_emphasis , :muted , :open , :open_emphasis , :severe , :severe_emphasis , :sponsors , :sponsors_emphasis , :subtle , :success , or :success_emphasis . |
color | Symbol | Text color. One of :accent , :attention , :closed , :danger , :default , :done , :inherit , :muted , :on_emphasis , :open , :severe , :sponsors , :subtle , or :success . |
Flex
Name | Type | Description |
---|---|---|
align_items | Symbol | One of :baseline , :center , :flex_end , :flex_start , or :stretch . |
align_self | Symbol | One of :auto , :baseline , :center , :end , :start , or :stretch . |
direction | Symbol | One of :column , :column_reverse , :row , or :row_reverse . |
flex | Integer, Symbol | One of 1 or :auto . |
flex_grow | Integer | To enable, set to 0 . |
flex_shrink | Integer | To enable, set to 0 . |
flex_wrap | Symbol | One of :nowrap , :reverse , or :wrap . |
justify_content | Symbol | One of :center , :flex_end , :flex_start , :space_around , or :space_between . |
Grid
Name | Type | Description |
---|---|---|
clearfix | Boolean | Whether to assign the clearfix class. |
col | Integer | Number of columns. One of 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , or 12 . |
container | Symbol | Size of the container. One of :lg , :md , :sm , or :xl . |
Layout
Name | Type | Description |
---|---|---|
display | Symbol | One of :block , :flex , :inline , :inline_block , :inline_flex , :none , :table , or :table_cell . |
w | Symbol | One of :auto , :fit , or :full . |
h | Symbol | One of :fit or :full . |
hide | Symbol | Hide the element at a specific breakpoint. One of :lg , :md , :sm , :whenNarrow , :whenRegular , :whenWide , or :xl . |
visibility | Symbol | Visibility. One of :hidden or :visible . |
vertical_align | Symbol | One of :baseline , :bottom , :middle , :text_bottom , :text_top , or :top . |
Position
Name | Type | Description |
---|---|---|
bottom | Boolean | If false , sets bottom: 0 . |
float | Symbol | One of :left , :none , or :right . |
left | Boolean | If false , sets left: 0 . |
position | Symbol | One of :absolute , :fixed , :relative , :static , or :sticky . |
right | Boolean | If false , sets right: 0 . |
top | Boolean | If false , sets top: 0 . |
Spacing
Name | Type | Description |
---|---|---|
m | Integer | Margin. One of 0 , 1 , 2 , 3 , 4 , 5 , 6 , or :auto . |
mb | Integer | Margin bottom. One of -12 , -11 , -10 , -9 , -8 , -7 , -6 , -5 , -4 , -3 , -2 , -1 , 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , or :auto . |
ml | Integer | Margin left. One of -6 , -5 , -4 , -3 , -2 , -1 , 0 , 1 , 2 , 3 , 4 , 5 , 6 , or :auto . |
mr | Integer | Margin right. One of -6 , -5 , -4 , -3 , -2 , -1 , 0 , 1 , 2 , 3 , 4 , 5 , 6 , or :auto . |
mt | Integer | Margin top. One of -12 , -11 , -10 , -9 , -8 , -7 , -6 , -5 , -4 , -3 , -2 , -1 , 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , or :auto . |
mx | Integer | Horizontal margins. One of 0 , 1 , 2 , 3 , 4 , 5 , 6 , or :auto . |
my | Integer | Vertical margins. One of 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , or 12 . |
p | Integer | Padding. One of 0 , 1 , 2 , 3 , 4 , 5 , 6 , or :responsive . |
pb | Integer | Padding bottom. One of 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , or 12 . |
pl | Integer | Padding left. One of 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , or 12 . |
pr | Integer | Padding right. One of 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , or 12 . |
pt | Integer | Padding left. One of 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , or 12 . |
px | Integer | Horizontal padding. One of 0 , 1 , 2 , 3 , 4 , 5 , or 6 . |
py | Integer | Vertical padding. One of 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , or 12 . |
Typography
Name | Type | Description |
---|---|---|
font_family | Symbol | Font family. One of :mono . |
font_size | String, Integer, Symbol | One of 0 , 1 , 2 , 3 , 4 , 5 , 6 , 00 , :normal , or :small . |
font_style | Symbol | Font style. One of :italic . |
font_weight | Symbol | Font weight. One of :bold , :emphasized , :light , or :normal . |
text_align | Symbol | Text alignment. One of :center , :left , or :right . |
text_transform | Symbol | Text transformation. One of :uppercase . |
underline | Boolean | Whether text should be underlined. |
word_break | Symbol | Whether to break words on line breaks. One of :break_all or :break_word . |
Other
Name | Type | Description |
---|---|---|
classes | String | CSS class name value to be concatenated with generated Primer CSS classes. |
test_selector | String | Adds data-test-selector='given value' in non-Production environments for testing purposes. |