primer_view_components 0.0.44 → 0.0.45

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8134ca7a0a270e780b58ce74eabd681c4c2d20ace4b45dd0a5a85eff6a21635d
4
- data.tar.gz: 8a8bc46d3f161e4398d129881b2ef6a0f1fe8f4a513b6cf82bd8b1c466f36d2d
3
+ metadata.gz: 8953ba874b51d234f8b42590fb30c2cc073c54ffd3b7a56dad24b9e6aa4d2f26
4
+ data.tar.gz: a0ac7e3a02d41fde2096547c8c68a91f99c003dee28bcb18a5e0862f46c1058f
5
5
  SHA512:
6
- metadata.gz: '0557945a7c1e8ce40e117c65c283ecc7b0d2e1480d130586dbc5bc807d4ac084ec776928ac400eaa6c7a2391edb9b22e21c97071b9a499cb7221af78f1c4dbf4'
7
- data.tar.gz: 31f974e2c2dc37056d9f67cb8036092521469d1d8e36c694dd02e664df50d7bffc12e6c3308853a89ad6b8a9794cc911196656fd36f5b3e6b4b389ee5fcd6a1e
6
+ metadata.gz: 89aa1e3a6f977a4bf25675092205034efc9797d275ea9d8e01b7bc50423506f67b2d05ca03a74b69dd3b16b669c6fa68d12b96895647218ca758034ed00d29ab
7
+ data.tar.gz: 46eead3cd6ae2b57008f2f7699e572029e736c5000dfd480c0cd5f399de7ac6160f746ccfab2d79305216f7e0602fc280b356051cd120e796f88988dde0fe303
data/CHANGELOG.md CHANGED
@@ -2,6 +2,38 @@
2
2
 
3
3
  ## main
4
4
 
5
+ ## 0.0.45
6
+
7
+ ### Updates
8
+
9
+ * Allow copying from elements using `for` in `ClipboardCopy`.
10
+
11
+ *Manuel Puyol*
12
+
13
+ ### Breaking changes
14
+
15
+ * Remove `label` argument in favor of `aria-label` in `ClipboardCopy`.
16
+
17
+ *Manuel Puyol*
18
+
19
+ ### Misc
20
+
21
+ * Add autocorrect for button linters.
22
+
23
+ *Manuel Puyol*
24
+
25
+ * Unify contributing guidelines.
26
+
27
+ *Kate Higa*
28
+
29
+ * Rerun flaky system tests.
30
+
31
+ *Manuel Puyol*
32
+
33
+ * Check if selector is a classify class in Utilities.
34
+
35
+ *Jon Rohan*
36
+
5
37
  ## 0.0.44
6
38
 
7
39
  ### Updates
@@ -30,6 +62,10 @@
30
62
 
31
63
  ### Misc
32
64
 
65
+ * Replace Classify::Spacing class with pre-generated mappings.
66
+
67
+ *Jon Rohan*
68
+
33
69
  * Add linter suggestions for `Button` component.
34
70
 
35
71
  *Manuel Puyol*
@@ -93,7 +93,7 @@ module Primer
93
93
  # | :- | :- | :- |
94
94
  # | `display` | Symbol | <%= one_of([:none, :block, :flex, :inline, :inline_block, :inline_flex, :table, :table_cell]) %> |
95
95
  # | `height` | Symbol | <%= one_of([:fit]) %> |
96
- # | `hide` | Symbol | Hide the element at a specific breakpoint. <%= one_of([:sm, :md, :lg, :xl]) %> |
96
+ # | `hide` | Symbol | Hide the element at a specific breakpoint. <%= one_of(Primer::Classify::Utilities.mappings(:hide)) %> |
97
97
  # | `v` | Symbol | Visibility. <%= one_of([:hidden, :visible]) %> |
98
98
  # | `vertical_align` | Symbol | <%= one_of([:baseline, :top, :middle, :bottom, :text_top, :text_bottom]) %> |
99
99
  #
@@ -102,7 +102,7 @@ module Primer
102
102
  # | Name | Type | Description |
103
103
  # | :- | :- | :- |
104
104
  # | `bottom` | Boolean | If `false`, sets `bottom: 0`. |
105
- # | `float` | Symbol | <%= one_of([:left, :right]) %> |
105
+ # | `float` | Symbol | <%= one_of(Primer::Classify::Utilities.mappings(:float)) %> |
106
106
  # | `left` | Boolean | If `false`, sets `left: 0`. |
107
107
  # | `position` | Symbol | <%= one_of([:relative, :absolute, :fixed]) %> |
108
108
  # | `right` | Boolean | If `false`, sets `right: 0`. |
@@ -112,20 +112,20 @@ module Primer
112
112
  #
113
113
  # | Name | Type | Description |
114
114
  # | :- | :- | :- |
115
- # | `m` | Integer | Margin. <%= one_of(Primer::Classify::Spacing::MAPPINGS[:m]) %> |
116
- # | `mb` | Integer | Margin bottom. <%= one_of(Primer::Classify::Spacing::MAPPINGS[:mb]) %> |
117
- # | `ml` | Integer | Margin left. <%= one_of(Primer::Classify::Spacing::MAPPINGS[:ml]) %> |
118
- # | `mr` | Integer | Margin right. <%= one_of(Primer::Classify::Spacing::MAPPINGS[:mr]) %> |
119
- # | `mt` | Integer | Margin top. <%= one_of(Primer::Classify::Spacing::MAPPINGS[:mt]) %> |
120
- # | `mx` | Integer | Horizontal margins. <%= one_of(Primer::Classify::Spacing::MAPPINGS[:mx]) %> |
121
- # | `my` | Integer | Vertical margins. <%= one_of(Primer::Classify::Spacing::MAPPINGS[:my]) %> |
122
- # | `p` | Integer | Padding. <%= one_of(Primer::Classify::Spacing::MAPPINGS[:p]) %> |
123
- # | `pb` | Integer | Padding bottom. <%= one_of(Primer::Classify::Spacing::MAPPINGS[:pb]) %> |
124
- # | `pl` | Integer | Padding left. <%= one_of(Primer::Classify::Spacing::MAPPINGS[:pl]) %> |
125
- # | `pr` | Integer | Padding right. <%= one_of(Primer::Classify::Spacing::MAPPINGS[:pr]) %> |
126
- # | `pt` | Integer | Padding left. <%= one_of(Primer::Classify::Spacing::MAPPINGS[:pt]) %> |
127
- # | `px` | Integer | Horizontal padding. <%= one_of(Primer::Classify::Spacing::MAPPINGS[:px]) %> |
128
- # | `py` | Integer | Vertical padding. <%= one_of(Primer::Classify::Spacing::MAPPINGS[:py]) %> |
115
+ # | `m` | Integer | Margin. <%= one_of(Primer::Classify::Utilities.mappings(:m)) %> |
116
+ # | `mb` | Integer | Margin bottom. <%= one_of(Primer::Classify::Utilities.mappings(:mb)) %> |
117
+ # | `ml` | Integer | Margin left. <%= one_of(Primer::Classify::Utilities.mappings(:ml)) %> |
118
+ # | `mr` | Integer | Margin right. <%= one_of(Primer::Classify::Utilities.mappings(:mr)) %> |
119
+ # | `mt` | Integer | Margin top. <%= one_of(Primer::Classify::Utilities.mappings(:mt)) %> |
120
+ # | `mx` | Integer | Horizontal margins. <%= one_of(Primer::Classify::Utilities.mappings(:mx)) %> |
121
+ # | `my` | Integer | Vertical margins. <%= one_of(Primer::Classify::Utilities.mappings(:my)) %> |
122
+ # | `p` | Integer | Padding. <%= one_of(Primer::Classify::Utilities.mappings(:p)) %> |
123
+ # | `pb` | Integer | Padding bottom. <%= one_of(Primer::Classify::Utilities.mappings(:pb)) %> |
124
+ # | `pl` | Integer | Padding left. <%= one_of(Primer::Classify::Utilities.mappings(:pl)) %> |
125
+ # | `pr` | Integer | Padding right. <%= one_of(Primer::Classify::Utilities.mappings(:pr)) %> |
126
+ # | `pt` | Integer | Padding left. <%= one_of(Primer::Classify::Utilities.mappings(:pt)) %> |
127
+ # | `px` | Integer | Horizontal padding. <%= one_of(Primer::Classify::Utilities.mappings(:px)) %> |
128
+ # | `py` | Integer | Vertical padding. <%= one_of(Primer::Classify::Utilities.mappings(:py)) %> |
129
129
  #
130
130
  # ## Typography
131
131
  #
@@ -2,25 +2,43 @@
2
2
 
3
3
  module Primer
4
4
  # Use `ClipboardCopy` to copy element text content or input values to the clipboard.
5
+ #
6
+ # @accessibility
7
+ # Always set an accessible label to help the user interact with the component.
5
8
  class ClipboardCopy < Primer::Component
6
9
  status :alpha
7
10
 
8
11
  # @example Default
9
- # <%= render(Primer::ClipboardCopy.new(value: "Text to copy", label: "Copy text to the system clipboard")) %>
12
+ # <%= render(Primer::ClipboardCopy.new(value: "Text to copy", "aria-label": "Copy text to the system clipboard")) %>
10
13
  #
11
14
  # @example With text instead of icons
12
- # <%= render(Primer::ClipboardCopy.new(value: "Text to copy", label: "Copy text to the system clipboard")) do %>
15
+ # <%= render(Primer::ClipboardCopy.new(value: "Text to copy", "aria-label": "Copy text to the system clipboard")) do %>
13
16
  # Click to copy!
14
17
  # <% end %>
15
18
  #
16
- # @param label [String] String that will be read to screenreaders when the component is focused
17
- # @param value [String] Text to copy into the users clipboard when they click the component
19
+ # @example Copying from an element
20
+ # <%= render(Primer::ClipboardCopy.new(for: "blob-path", "aria-label": "Copy text to the system clipboard")) %>
21
+ # <div id="blob-path">src/index.js</div>
22
+ #
23
+ # @param aria-label [String] String that will be read to screenreaders when the component is focused
24
+ # @param value [String] Text to copy into the users clipboard when they click the component.
25
+ # @param for [String] Element id from where to get the copied value.
18
26
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
19
- def initialize(label:, value:, **system_arguments)
27
+ def initialize(value: nil, **system_arguments)
20
28
  @system_arguments = system_arguments
29
+ @value = value
30
+
31
+ validate!
32
+
21
33
  @system_arguments[:tag] = "clipboard-copy"
22
- @system_arguments[:value] = value
23
- @system_arguments[:"aria-label"] = label
34
+ @system_arguments[:value] = value if value.present?
35
+ end
36
+
37
+ private
38
+
39
+ def validate!
40
+ validate_aria_label
41
+ raise ArgumentError, "Must provide either `value` or `for`" if @value.nil? && @system_arguments[:for].nil?
24
42
  end
25
43
  end
26
44
  end
@@ -0,0 +1 @@
1
+ import '@github/details-menu-element';
@@ -0,0 +1 @@
1
+ import '@github/details-menu-element';
@@ -3,11 +3,20 @@
3
3
  module Primer
4
4
  # :nodoc:
5
5
  class Classify
6
+ # Load the utilities.yml file.
7
+ # Disabling because we want to load symbols, strings, and integers from the .yml file
8
+ # rubocop:disable Security/YAMLLoad
9
+ UTILITIES = YAML.load(
10
+ File.read(
11
+ File.join(File.dirname(__FILE__), "./classify/utilities.yml")
12
+ )
13
+ ).freeze
14
+ # rubocop:enable Security/YAMLLoad
15
+
6
16
  DISPLAY_KEY = :display
7
- SPACING_KEYS = Primer::Classify::Spacing::KEYS
8
17
 
9
18
  # Keys where we can simply translate { key: value } into ".key-value"
10
- CONCAT_KEYS = SPACING_KEYS + %i[hide position v float text box_shadow].freeze
19
+ CONCAT_KEYS = %i[position v text box_shadow].freeze
11
20
 
12
21
  INVALID_CLASS_NAME_PREFIXES =
13
22
  (["bg-", "color-", "text-", "d-", "v-align-", "wb-", "box-shadow-"] + CONCAT_KEYS.map { |k| "#{k}-" }).freeze
@@ -25,7 +34,7 @@ module Primer
25
34
  CONTAINER_KEY = :container
26
35
 
27
36
  BREAKPOINTS = ["", "-sm", "-md", "-lg", "-xl"].freeze
28
- RESPONSIVE_KEYS = ([DISPLAY_KEY, :float, Primer::Classify::Grid::COL_KEY] + SPACING_KEYS + Primer::Classify::Flex::RESPONSIVE_KEYS).freeze
37
+ RESPONSIVE_KEYS = ([DISPLAY_KEY, Primer::Classify::Grid::COL_KEY] + Primer::Classify::Flex::RESPONSIVE_KEYS).freeze
29
38
 
30
39
  BOOLEAN_MAPPINGS = {
31
40
  underline: {
@@ -79,6 +88,7 @@ module Primer
79
88
  BORDER_RADIUS_KEY = :border_radius
80
89
  TYPOGRAPHY_KEYS = [:font_size].freeze
81
90
  VALID_KEYS = (
91
+ UTILITIES.keys +
82
92
  CONCAT_KEYS +
83
93
  BOOLEAN_MAPPINGS.keys +
84
94
  BORDER_MARGIN_KEYS +
@@ -129,7 +139,7 @@ module Primer
129
139
  if force_system_arguments? && !ENV["PRIMER_WARNINGS_DISABLED"]
130
140
  invalid_class_names =
131
141
  classes.split(" ").each_with_object([]) do |class_name, memo|
132
- memo << class_name if INVALID_CLASS_NAME_PREFIXES.any? { |prefix| class_name.start_with?(prefix) }
142
+ memo << class_name if INVALID_CLASS_NAME_PREFIXES.any? { |prefix| class_name.start_with?(prefix) } || Primer::Classify::Utilities.supported_selector?(class_name)
133
143
  end
134
144
 
135
145
  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. Set PRIMER_WARNINGS_DISABLED=1 to disable this warning." if invalid_class_names.any?
@@ -155,7 +165,7 @@ module Primer
155
165
  next unless VALID_KEYS.include?(key)
156
166
 
157
167
  if value.is_a?(Array)
158
- raise ArgumentError, "#{key} does not support responsive values" unless RESPONSIVE_KEYS.include?(key)
168
+ raise ArgumentError, "#{key} does not support responsive values" unless RESPONSIVE_KEYS.include?(key) || Primer::Classify::Utilities.supported_key?(key)
159
169
 
160
170
  value.each_with_index do |val, index|
161
171
  Primer::Classify::Cache.read(memo, key, val, BREAKPOINTS[index]) || extract_value(memo, key, val, BREAKPOINTS[index])
@@ -173,8 +183,8 @@ module Primer
173
183
  def extract_value(memo, key, val, breakpoint)
174
184
  return if val.nil? || val == ""
175
185
 
176
- if SPACING_KEYS.include?(key)
177
- memo[:classes] << Primer::Classify::Spacing.spacing(key, val, breakpoint)
186
+ if Primer::Classify::Utilities.supported_key?(key)
187
+ memo[:classes] << Primer::Classify::Utilities.classname(key, val, breakpoint)
178
188
  elsif BOOLEAN_MAPPINGS.key?(key)
179
189
  BOOLEAN_MAPPINGS[key][:mappings].each do |m|
180
190
  memo[:classes] << m[:css_class] if m[:value] == val && m[:css_class].present?
@@ -19,26 +19,6 @@ module Primer
19
19
  end
20
20
 
21
21
  def preload!
22
- preload(
23
- keys: Primer::Classify::Spacing::MARGIN_DIRECTION_MAPPINGS.keys,
24
- values: Primer::Classify::Spacing::MARGIN_DIRECTION_OPTIONS
25
- )
26
-
27
- preload(
28
- keys: Primer::Classify::Spacing::BASE_MAPPINGS.keys,
29
- values: Primer::Classify::Spacing::BASE_OPTIONS
30
- )
31
-
32
- preload(
33
- keys: Primer::Classify::Spacing::AUTO_MAPPINGS.keys,
34
- values: Primer::Classify::Spacing::AUTO_OPTIONS
35
- )
36
-
37
- preload(
38
- keys: Primer::Classify::Spacing::RESPONSIVE_MAPPINGS.keys,
39
- values: Primer::Classify::Spacing::RESPONSIVE_OPTIONS
40
- )
41
-
42
22
  preload(
43
23
  keys: Primer::Classify::Flex::DIRECTION_KEY,
44
24
  values: Primer::Classify::Flex::DIRECTION_VALUES
@@ -0,0 +1,137 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Primer
5
+ class Classify
6
+ # Handler for PrimerCSS utility classes loaded from utilities.rake
7
+ class Utilities
8
+ class << self
9
+ def classname(key, val, breakpoint = "")
10
+ if (valid = validate(key, val, breakpoint))
11
+ valid
12
+ else
13
+ # Get selector
14
+ Primer::Classify::UTILITIES[key][val][Primer::Classify::BREAKPOINTS.index(breakpoint)]
15
+ end
16
+ end
17
+
18
+ # Does the Utilitiy class support the given key
19
+ #
20
+ # returns Boolean
21
+ def supported_key?(key)
22
+ Primer::Classify::UTILITIES[key].present?
23
+ end
24
+
25
+ # Does the Utilitiy class support the given key and value
26
+ #
27
+ # returns Boolean
28
+ def supported_value?(key, val)
29
+ supported_key?(key) && Primer::Classify::UTILITIES[key][val].present?
30
+ end
31
+
32
+ # Does the given selector exist in the utilities file
33
+ #
34
+ # returns Boolean
35
+ def supported_selector?(selector)
36
+ # This method is too slow to run in production
37
+ return false if Rails.env.production?
38
+
39
+ find_selector(selector).present?
40
+ end
41
+
42
+ # Is the key and value responsive
43
+ #
44
+ # returns Boolean
45
+ def responsive?(key, val)
46
+ supported_value?(key, val) && Primer::Classify::UTILITIES[key][val].count > 1
47
+ end
48
+
49
+ # Get the options for the given key
50
+ #
51
+ # returns Array or nil if key not supported
52
+ def mappings(key)
53
+ return unless supported_key?(key)
54
+
55
+ Primer::Classify::UTILITIES[key].keys
56
+ end
57
+
58
+ # Extract hash from classes ie. "mr-1 mb-2 foo" => { mr: 1, mb: 2, classes: "foo" }
59
+ def classes_to_hash(classes)
60
+ # This method is too slow to run in production
61
+ return { classes: classes } if Rails.env.production?
62
+
63
+ obj = {}
64
+ classes = classes.split(" ")
65
+ # Loop through all classes supplied and reject ones we find a match for
66
+ # So when we're at the end of the loop we have classes left with any non-system classes.
67
+ classes.reject! do |classname|
68
+ key, value, index = find_selector(classname)
69
+ next false if key.nil?
70
+
71
+ # Create array if nil
72
+ obj[key] = Array.new(5, nil) if obj[key].nil?
73
+ # Place the arguments in the responsive array based on index mr: [nil, 2]
74
+ obj[key][index] = value
75
+ next true
76
+ end
77
+
78
+ # Transform responsive arrays into arrays without trailing nil, so `mr: [1, nil, nil, nil, nil]` becomes `mr: 1`
79
+ obj.transform_values! do |value|
80
+ value = value.reverse.drop_while(&:nil?).reverse
81
+ if value.count == 1
82
+ value.first
83
+ else
84
+ value
85
+ end
86
+ end
87
+
88
+ # Add back the non-system classes
89
+ obj[:classes] = classes.join(" ") if classes.any?
90
+ obj
91
+ end
92
+
93
+ private
94
+
95
+ def find_selector(selector)
96
+ # Search each key/value_hash pair, eg. key `:mr` and value_hash `{ 0 => [ "mr-0", "mr-sm-0", "mr-md-0", "mr-lg-0", "mr-xl-0" ] }`
97
+ Primer::Classify::UTILITIES.each do |key, value_hash|
98
+ # Each value hash will also contain an array of classnames for breakpoints
99
+ # Key argument `0`, classes `[ "mr-0", "mr-sm-0", "mr-md-0", "mr-lg-0", "mr-xl-0" ]`
100
+ value_hash.each do |key_argument, classnames|
101
+ # Skip each value hash until we get one with the selector
102
+ next unless classnames.include?(selector)
103
+
104
+ # Return [:mr, 0, 1]
105
+ # has index of classname, so we can match it up with responsvie array `mr: [nil, 0]`
106
+ return [key, key_argument, classnames.index(selector)]
107
+ end
108
+ end
109
+
110
+ nil
111
+ end
112
+
113
+ def validate(key, val, breakpoint)
114
+ unless supported_key?(key)
115
+ raise ArgumentError, "#{key} is not a valid Primer utility key" unless Rails.env.production?
116
+
117
+ return ""
118
+ end
119
+
120
+ unless breakpoint.empty? || responsive?(key, val)
121
+ raise ArgumentError, "#{key} does not support responsive values" unless Rails.env.production?
122
+
123
+ return ""
124
+ end
125
+
126
+ unless supported_value?(key, val)
127
+ raise ArgumentError, "#{val} is not a valid value for :#{key}. Use one of #{mappings(key)}" unless Rails.env.production?
128
+
129
+ return ""
130
+ end
131
+
132
+ nil
133
+ end
134
+ end
135
+ end
136
+ end
137
+ end
@@ -0,0 +1,1147 @@
1
+ ---
2
+ :float:
3
+ :left:
4
+ - float-left
5
+ - float-sm-left
6
+ - float-md-left
7
+ - float-lg-left
8
+ - float-xl-left
9
+ :right:
10
+ - float-right
11
+ - float-sm-right
12
+ - float-md-right
13
+ - float-lg-right
14
+ - float-xl-right
15
+ :none:
16
+ - float-none
17
+ - float-sm-none
18
+ - float-md-none
19
+ - float-lg-none
20
+ - float-xl-none
21
+ :m:
22
+ 0:
23
+ - m-0
24
+ - m-sm-0
25
+ - m-md-0
26
+ - m-lg-0
27
+ - m-xl-0
28
+ 1:
29
+ - m-1
30
+ - m-sm-1
31
+ - m-md-1
32
+ - m-lg-1
33
+ - m-xl-1
34
+ 2:
35
+ - m-2
36
+ - m-sm-2
37
+ - m-md-2
38
+ - m-lg-2
39
+ - m-xl-2
40
+ 3:
41
+ - m-3
42
+ - m-sm-3
43
+ - m-md-3
44
+ - m-lg-3
45
+ - m-xl-3
46
+ 4:
47
+ - m-4
48
+ - m-sm-4
49
+ - m-md-4
50
+ - m-lg-4
51
+ - m-xl-4
52
+ 5:
53
+ - m-5
54
+ - m-sm-5
55
+ - m-md-5
56
+ - m-lg-5
57
+ - m-xl-5
58
+ 6:
59
+ - m-6
60
+ - m-sm-6
61
+ - m-md-6
62
+ - m-lg-6
63
+ - m-xl-6
64
+ :auto:
65
+ - m-auto
66
+ :mt:
67
+ 0:
68
+ - mt-0
69
+ - mt-sm-0
70
+ - mt-md-0
71
+ - mt-lg-0
72
+ - mt-xl-0
73
+ 1:
74
+ - mt-1
75
+ - mt-sm-1
76
+ - mt-md-1
77
+ - mt-lg-1
78
+ - mt-xl-1
79
+ -1:
80
+ - mt-n1
81
+ - mt-sm-n1
82
+ - mt-md-n1
83
+ - mt-lg-n1
84
+ - mt-xl-n1
85
+ 2:
86
+ - mt-2
87
+ - mt-sm-2
88
+ - mt-md-2
89
+ - mt-lg-2
90
+ - mt-xl-2
91
+ -2:
92
+ - mt-n2
93
+ - mt-sm-n2
94
+ - mt-md-n2
95
+ - mt-lg-n2
96
+ - mt-xl-n2
97
+ 3:
98
+ - mt-3
99
+ - mt-sm-3
100
+ - mt-md-3
101
+ - mt-lg-3
102
+ - mt-xl-3
103
+ -3:
104
+ - mt-n3
105
+ - mt-sm-n3
106
+ - mt-md-n3
107
+ - mt-lg-n3
108
+ - mt-xl-n3
109
+ 4:
110
+ - mt-4
111
+ - mt-sm-4
112
+ - mt-md-4
113
+ - mt-lg-4
114
+ - mt-xl-4
115
+ -4:
116
+ - mt-n4
117
+ - mt-sm-n4
118
+ - mt-md-n4
119
+ - mt-lg-n4
120
+ - mt-xl-n4
121
+ 5:
122
+ - mt-5
123
+ - mt-sm-5
124
+ - mt-md-5
125
+ - mt-lg-5
126
+ - mt-xl-5
127
+ -5:
128
+ - mt-n5
129
+ - mt-sm-n5
130
+ - mt-md-n5
131
+ - mt-lg-n5
132
+ - mt-xl-n5
133
+ 6:
134
+ - mt-6
135
+ - mt-sm-6
136
+ - mt-md-6
137
+ - mt-lg-6
138
+ - mt-xl-6
139
+ -6:
140
+ - mt-n6
141
+ - mt-sm-n6
142
+ - mt-md-n6
143
+ - mt-lg-n6
144
+ - mt-xl-n6
145
+ 7:
146
+ - mt-7
147
+ - mt-sm-7
148
+ - mt-md-7
149
+ - mt-lg-7
150
+ - mt-xl-7
151
+ -7:
152
+ - mt-n7
153
+ - mt-sm-n7
154
+ - mt-md-n7
155
+ - mt-lg-n7
156
+ - mt-xl-n7
157
+ 8:
158
+ - mt-8
159
+ - mt-sm-8
160
+ - mt-md-8
161
+ - mt-lg-8
162
+ - mt-xl-8
163
+ -8:
164
+ - mt-n8
165
+ - mt-sm-n8
166
+ - mt-md-n8
167
+ - mt-lg-n8
168
+ - mt-xl-n8
169
+ 9:
170
+ - mt-9
171
+ - mt-sm-9
172
+ - mt-md-9
173
+ - mt-lg-9
174
+ - mt-xl-9
175
+ -9:
176
+ - mt-n9
177
+ - mt-sm-n9
178
+ - mt-md-n9
179
+ - mt-lg-n9
180
+ - mt-xl-n9
181
+ 10:
182
+ - mt-10
183
+ - mt-sm-10
184
+ - mt-md-10
185
+ - mt-lg-10
186
+ - mt-xl-10
187
+ -10:
188
+ - mt-n10
189
+ - mt-sm-n10
190
+ - mt-md-n10
191
+ - mt-lg-n10
192
+ - mt-xl-n10
193
+ 11:
194
+ - mt-11
195
+ - mt-sm-11
196
+ - mt-md-11
197
+ - mt-lg-11
198
+ - mt-xl-11
199
+ -11:
200
+ - mt-n11
201
+ - mt-sm-n11
202
+ - mt-md-n11
203
+ - mt-lg-n11
204
+ - mt-xl-n11
205
+ 12:
206
+ - mt-12
207
+ - mt-sm-12
208
+ - mt-md-12
209
+ - mt-lg-12
210
+ - mt-xl-12
211
+ -12:
212
+ - mt-n12
213
+ - mt-sm-n12
214
+ - mt-md-n12
215
+ - mt-lg-n12
216
+ - mt-xl-n12
217
+ :auto:
218
+ - mt-auto
219
+ :mb:
220
+ 0:
221
+ - mb-0
222
+ - mb-sm-0
223
+ - mb-md-0
224
+ - mb-lg-0
225
+ - mb-xl-0
226
+ 1:
227
+ - mb-1
228
+ - mb-sm-1
229
+ - mb-md-1
230
+ - mb-lg-1
231
+ - mb-xl-1
232
+ -1:
233
+ - mb-n1
234
+ - mb-sm-n1
235
+ - mb-md-n1
236
+ - mb-lg-n1
237
+ - mb-xl-n1
238
+ 2:
239
+ - mb-2
240
+ - mb-sm-2
241
+ - mb-md-2
242
+ - mb-lg-2
243
+ - mb-xl-2
244
+ -2:
245
+ - mb-n2
246
+ - mb-sm-n2
247
+ - mb-md-n2
248
+ - mb-lg-n2
249
+ - mb-xl-n2
250
+ 3:
251
+ - mb-3
252
+ - mb-sm-3
253
+ - mb-md-3
254
+ - mb-lg-3
255
+ - mb-xl-3
256
+ -3:
257
+ - mb-n3
258
+ - mb-sm-n3
259
+ - mb-md-n3
260
+ - mb-lg-n3
261
+ - mb-xl-n3
262
+ 4:
263
+ - mb-4
264
+ - mb-sm-4
265
+ - mb-md-4
266
+ - mb-lg-4
267
+ - mb-xl-4
268
+ -4:
269
+ - mb-n4
270
+ - mb-sm-n4
271
+ - mb-md-n4
272
+ - mb-lg-n4
273
+ - mb-xl-n4
274
+ 5:
275
+ - mb-5
276
+ - mb-sm-5
277
+ - mb-md-5
278
+ - mb-lg-5
279
+ - mb-xl-5
280
+ -5:
281
+ - mb-n5
282
+ - mb-sm-n5
283
+ - mb-md-n5
284
+ - mb-lg-n5
285
+ - mb-xl-n5
286
+ 6:
287
+ - mb-6
288
+ - mb-sm-6
289
+ - mb-md-6
290
+ - mb-lg-6
291
+ - mb-xl-6
292
+ -6:
293
+ - mb-n6
294
+ - mb-sm-n6
295
+ - mb-md-n6
296
+ - mb-lg-n6
297
+ - mb-xl-n6
298
+ 7:
299
+ - mb-7
300
+ - mb-sm-7
301
+ - mb-md-7
302
+ - mb-lg-7
303
+ - mb-xl-7
304
+ -7:
305
+ - mb-n7
306
+ - mb-sm-n7
307
+ - mb-md-n7
308
+ - mb-lg-n7
309
+ - mb-xl-n7
310
+ 8:
311
+ - mb-8
312
+ - mb-sm-8
313
+ - mb-md-8
314
+ - mb-lg-8
315
+ - mb-xl-8
316
+ -8:
317
+ - mb-n8
318
+ - mb-sm-n8
319
+ - mb-md-n8
320
+ - mb-lg-n8
321
+ - mb-xl-n8
322
+ 9:
323
+ - mb-9
324
+ - mb-sm-9
325
+ - mb-md-9
326
+ - mb-lg-9
327
+ - mb-xl-9
328
+ -9:
329
+ - mb-n9
330
+ - mb-sm-n9
331
+ - mb-md-n9
332
+ - mb-lg-n9
333
+ - mb-xl-n9
334
+ 10:
335
+ - mb-10
336
+ - mb-sm-10
337
+ - mb-md-10
338
+ - mb-lg-10
339
+ - mb-xl-10
340
+ -10:
341
+ - mb-n10
342
+ - mb-sm-n10
343
+ - mb-md-n10
344
+ - mb-lg-n10
345
+ - mb-xl-n10
346
+ 11:
347
+ - mb-11
348
+ - mb-sm-11
349
+ - mb-md-11
350
+ - mb-lg-11
351
+ - mb-xl-11
352
+ -11:
353
+ - mb-n11
354
+ - mb-sm-n11
355
+ - mb-md-n11
356
+ - mb-lg-n11
357
+ - mb-xl-n11
358
+ 12:
359
+ - mb-12
360
+ - mb-sm-12
361
+ - mb-md-12
362
+ - mb-lg-12
363
+ - mb-xl-12
364
+ -12:
365
+ - mb-n12
366
+ - mb-sm-n12
367
+ - mb-md-n12
368
+ - mb-lg-n12
369
+ - mb-xl-n12
370
+ :mr:
371
+ 0:
372
+ - mr-0
373
+ - mr-sm-0
374
+ - mr-md-0
375
+ - mr-lg-0
376
+ - mr-xl-0
377
+ 1:
378
+ - mr-1
379
+ - mr-sm-1
380
+ - mr-md-1
381
+ - mr-lg-1
382
+ - mr-xl-1
383
+ -1:
384
+ - mr-n1
385
+ - mr-sm-n1
386
+ - mr-md-n1
387
+ - mr-lg-n1
388
+ - mr-xl-n1
389
+ 2:
390
+ - mr-2
391
+ - mr-sm-2
392
+ - mr-md-2
393
+ - mr-lg-2
394
+ - mr-xl-2
395
+ -2:
396
+ - mr-n2
397
+ - mr-sm-n2
398
+ - mr-md-n2
399
+ - mr-lg-n2
400
+ - mr-xl-n2
401
+ 3:
402
+ - mr-3
403
+ - mr-sm-3
404
+ - mr-md-3
405
+ - mr-lg-3
406
+ - mr-xl-3
407
+ -3:
408
+ - mr-n3
409
+ - mr-sm-n3
410
+ - mr-md-n3
411
+ - mr-lg-n3
412
+ - mr-xl-n3
413
+ 4:
414
+ - mr-4
415
+ - mr-sm-4
416
+ - mr-md-4
417
+ - mr-lg-4
418
+ - mr-xl-4
419
+ -4:
420
+ - mr-n4
421
+ - mr-sm-n4
422
+ - mr-md-n4
423
+ - mr-lg-n4
424
+ - mr-xl-n4
425
+ 5:
426
+ - mr-5
427
+ - mr-sm-5
428
+ - mr-md-5
429
+ - mr-lg-5
430
+ - mr-xl-5
431
+ -5:
432
+ - mr-n5
433
+ - mr-sm-n5
434
+ - mr-md-n5
435
+ - mr-lg-n5
436
+ - mr-xl-n5
437
+ 6:
438
+ - mr-6
439
+ - mr-sm-6
440
+ - mr-md-6
441
+ - mr-lg-6
442
+ - mr-xl-6
443
+ -6:
444
+ - mr-n6
445
+ - mr-sm-n6
446
+ - mr-md-n6
447
+ - mr-lg-n6
448
+ - mr-xl-n6
449
+ :ml:
450
+ 0:
451
+ - ml-0
452
+ - ml-sm-0
453
+ - ml-md-0
454
+ - ml-lg-0
455
+ - ml-xl-0
456
+ 1:
457
+ - ml-1
458
+ - ml-sm-1
459
+ - ml-md-1
460
+ - ml-lg-1
461
+ - ml-xl-1
462
+ -1:
463
+ - ml-n1
464
+ - ml-sm-n1
465
+ - ml-md-n1
466
+ - ml-lg-n1
467
+ - ml-xl-n1
468
+ 2:
469
+ - ml-2
470
+ - ml-sm-2
471
+ - ml-md-2
472
+ - ml-lg-2
473
+ - ml-xl-2
474
+ -2:
475
+ - ml-n2
476
+ - ml-sm-n2
477
+ - ml-md-n2
478
+ - ml-lg-n2
479
+ - ml-xl-n2
480
+ 3:
481
+ - ml-3
482
+ - ml-sm-3
483
+ - ml-md-3
484
+ - ml-lg-3
485
+ - ml-xl-3
486
+ -3:
487
+ - ml-n3
488
+ - ml-sm-n3
489
+ - ml-md-n3
490
+ - ml-lg-n3
491
+ - ml-xl-n3
492
+ 4:
493
+ - ml-4
494
+ - ml-sm-4
495
+ - ml-md-4
496
+ - ml-lg-4
497
+ - ml-xl-4
498
+ -4:
499
+ - ml-n4
500
+ - ml-sm-n4
501
+ - ml-md-n4
502
+ - ml-lg-n4
503
+ - ml-xl-n4
504
+ 5:
505
+ - ml-5
506
+ - ml-sm-5
507
+ - ml-md-5
508
+ - ml-lg-5
509
+ - ml-xl-5
510
+ -5:
511
+ - ml-n5
512
+ - ml-sm-n5
513
+ - ml-md-n5
514
+ - ml-lg-n5
515
+ - ml-xl-n5
516
+ 6:
517
+ - ml-6
518
+ - ml-sm-6
519
+ - ml-md-6
520
+ - ml-lg-6
521
+ - ml-xl-6
522
+ -6:
523
+ - ml-n6
524
+ - ml-sm-n6
525
+ - ml-md-n6
526
+ - ml-lg-n6
527
+ - ml-xl-n6
528
+ :mx:
529
+ 0:
530
+ - mx-0
531
+ - mx-sm-0
532
+ - mx-md-0
533
+ - mx-lg-0
534
+ - mx-xl-0
535
+ 1:
536
+ - mx-1
537
+ - mx-sm-1
538
+ - mx-md-1
539
+ - mx-lg-1
540
+ - mx-xl-1
541
+ 2:
542
+ - mx-2
543
+ - mx-sm-2
544
+ - mx-md-2
545
+ - mx-lg-2
546
+ - mx-xl-2
547
+ 3:
548
+ - mx-3
549
+ - mx-sm-3
550
+ - mx-md-3
551
+ - mx-lg-3
552
+ - mx-xl-3
553
+ 4:
554
+ - mx-4
555
+ - mx-sm-4
556
+ - mx-md-4
557
+ - mx-lg-4
558
+ - mx-xl-4
559
+ 5:
560
+ - mx-5
561
+ - mx-sm-5
562
+ - mx-md-5
563
+ - mx-lg-5
564
+ - mx-xl-5
565
+ 6:
566
+ - mx-6
567
+ - mx-sm-6
568
+ - mx-md-6
569
+ - mx-lg-6
570
+ - mx-xl-6
571
+ :auto:
572
+ - mx-auto
573
+ - mx-sm-auto
574
+ - mx-md-auto
575
+ - mx-lg-auto
576
+ - mx-xl-auto
577
+ :my:
578
+ 0:
579
+ - my-0
580
+ - my-sm-0
581
+ - my-md-0
582
+ - my-lg-0
583
+ - my-xl-0
584
+ 1:
585
+ - my-1
586
+ - my-sm-1
587
+ - my-md-1
588
+ - my-lg-1
589
+ - my-xl-1
590
+ 2:
591
+ - my-2
592
+ - my-sm-2
593
+ - my-md-2
594
+ - my-lg-2
595
+ - my-xl-2
596
+ 3:
597
+ - my-3
598
+ - my-sm-3
599
+ - my-md-3
600
+ - my-lg-3
601
+ - my-xl-3
602
+ 4:
603
+ - my-4
604
+ - my-sm-4
605
+ - my-md-4
606
+ - my-lg-4
607
+ - my-xl-4
608
+ 5:
609
+ - my-5
610
+ - my-sm-5
611
+ - my-md-5
612
+ - my-lg-5
613
+ - my-xl-5
614
+ 6:
615
+ - my-6
616
+ - my-sm-6
617
+ - my-md-6
618
+ - my-lg-6
619
+ - my-xl-6
620
+ 7:
621
+ - my-7
622
+ - my-sm-7
623
+ - my-md-7
624
+ - my-lg-7
625
+ - my-xl-7
626
+ 8:
627
+ - my-8
628
+ - my-sm-8
629
+ - my-md-8
630
+ - my-lg-8
631
+ - my-xl-8
632
+ 9:
633
+ - my-9
634
+ - my-sm-9
635
+ - my-md-9
636
+ - my-lg-9
637
+ - my-xl-9
638
+ 10:
639
+ - my-10
640
+ - my-sm-10
641
+ - my-md-10
642
+ - my-lg-10
643
+ - my-xl-10
644
+ 11:
645
+ - my-11
646
+ - my-sm-11
647
+ - my-md-11
648
+ - my-lg-11
649
+ - my-xl-11
650
+ 12:
651
+ - my-12
652
+ - my-sm-12
653
+ - my-md-12
654
+ - my-lg-12
655
+ - my-xl-12
656
+ :p:
657
+ 0:
658
+ - p-0
659
+ - p-sm-0
660
+ - p-md-0
661
+ - p-lg-0
662
+ - p-xl-0
663
+ 1:
664
+ - p-1
665
+ - p-sm-1
666
+ - p-md-1
667
+ - p-lg-1
668
+ - p-xl-1
669
+ 2:
670
+ - p-2
671
+ - p-sm-2
672
+ - p-md-2
673
+ - p-lg-2
674
+ - p-xl-2
675
+ 3:
676
+ - p-3
677
+ - p-sm-3
678
+ - p-md-3
679
+ - p-lg-3
680
+ - p-xl-3
681
+ 4:
682
+ - p-4
683
+ - p-sm-4
684
+ - p-md-4
685
+ - p-lg-4
686
+ - p-xl-4
687
+ 5:
688
+ - p-5
689
+ - p-sm-5
690
+ - p-md-5
691
+ - p-lg-5
692
+ - p-xl-5
693
+ 6:
694
+ - p-6
695
+ - p-sm-6
696
+ - p-md-6
697
+ - p-lg-6
698
+ - p-xl-6
699
+ :responsive:
700
+ - p-responsive
701
+ :pt:
702
+ 0:
703
+ - pt-0
704
+ - pt-sm-0
705
+ - pt-md-0
706
+ - pt-lg-0
707
+ - pt-xl-0
708
+ 1:
709
+ - pt-1
710
+ - pt-sm-1
711
+ - pt-md-1
712
+ - pt-lg-1
713
+ - pt-xl-1
714
+ 2:
715
+ - pt-2
716
+ - pt-sm-2
717
+ - pt-md-2
718
+ - pt-lg-2
719
+ - pt-xl-2
720
+ 3:
721
+ - pt-3
722
+ - pt-sm-3
723
+ - pt-md-3
724
+ - pt-lg-3
725
+ - pt-xl-3
726
+ 4:
727
+ - pt-4
728
+ - pt-sm-4
729
+ - pt-md-4
730
+ - pt-lg-4
731
+ - pt-xl-4
732
+ 5:
733
+ - pt-5
734
+ - pt-sm-5
735
+ - pt-md-5
736
+ - pt-lg-5
737
+ - pt-xl-5
738
+ 6:
739
+ - pt-6
740
+ - pt-sm-6
741
+ - pt-md-6
742
+ - pt-lg-6
743
+ - pt-xl-6
744
+ 7:
745
+ - pt-7
746
+ - pt-sm-7
747
+ - pt-md-7
748
+ - pt-lg-7
749
+ - pt-xl-7
750
+ 8:
751
+ - pt-8
752
+ - pt-sm-8
753
+ - pt-md-8
754
+ - pt-lg-8
755
+ - pt-xl-8
756
+ 9:
757
+ - pt-9
758
+ - pt-sm-9
759
+ - pt-md-9
760
+ - pt-lg-9
761
+ - pt-xl-9
762
+ 10:
763
+ - pt-10
764
+ - pt-sm-10
765
+ - pt-md-10
766
+ - pt-lg-10
767
+ - pt-xl-10
768
+ 11:
769
+ - pt-11
770
+ - pt-sm-11
771
+ - pt-md-11
772
+ - pt-lg-11
773
+ - pt-xl-11
774
+ 12:
775
+ - pt-12
776
+ - pt-sm-12
777
+ - pt-md-12
778
+ - pt-lg-12
779
+ - pt-xl-12
780
+ :pr:
781
+ 0:
782
+ - pr-0
783
+ - pr-sm-0
784
+ - pr-md-0
785
+ - pr-lg-0
786
+ - pr-xl-0
787
+ 1:
788
+ - pr-1
789
+ - pr-sm-1
790
+ - pr-md-1
791
+ - pr-lg-1
792
+ - pr-xl-1
793
+ 2:
794
+ - pr-2
795
+ - pr-sm-2
796
+ - pr-md-2
797
+ - pr-lg-2
798
+ - pr-xl-2
799
+ 3:
800
+ - pr-3
801
+ - pr-sm-3
802
+ - pr-md-3
803
+ - pr-lg-3
804
+ - pr-xl-3
805
+ 4:
806
+ - pr-4
807
+ - pr-sm-4
808
+ - pr-md-4
809
+ - pr-lg-4
810
+ - pr-xl-4
811
+ 5:
812
+ - pr-5
813
+ - pr-sm-5
814
+ - pr-md-5
815
+ - pr-lg-5
816
+ - pr-xl-5
817
+ 6:
818
+ - pr-6
819
+ - pr-sm-6
820
+ - pr-md-6
821
+ - pr-lg-6
822
+ - pr-xl-6
823
+ 7:
824
+ - pr-7
825
+ - pr-sm-7
826
+ - pr-md-7
827
+ - pr-lg-7
828
+ - pr-xl-7
829
+ 8:
830
+ - pr-8
831
+ - pr-sm-8
832
+ - pr-md-8
833
+ - pr-lg-8
834
+ - pr-xl-8
835
+ 9:
836
+ - pr-9
837
+ - pr-sm-9
838
+ - pr-md-9
839
+ - pr-lg-9
840
+ - pr-xl-9
841
+ 10:
842
+ - pr-10
843
+ - pr-sm-10
844
+ - pr-md-10
845
+ - pr-lg-10
846
+ - pr-xl-10
847
+ 11:
848
+ - pr-11
849
+ - pr-sm-11
850
+ - pr-md-11
851
+ - pr-lg-11
852
+ - pr-xl-11
853
+ 12:
854
+ - pr-12
855
+ - pr-sm-12
856
+ - pr-md-12
857
+ - pr-lg-12
858
+ - pr-xl-12
859
+ :pb:
860
+ 0:
861
+ - pb-0
862
+ - pb-sm-0
863
+ - pb-md-0
864
+ - pb-lg-0
865
+ - pb-xl-0
866
+ 1:
867
+ - pb-1
868
+ - pb-sm-1
869
+ - pb-md-1
870
+ - pb-lg-1
871
+ - pb-xl-1
872
+ 2:
873
+ - pb-2
874
+ - pb-sm-2
875
+ - pb-md-2
876
+ - pb-lg-2
877
+ - pb-xl-2
878
+ 3:
879
+ - pb-3
880
+ - pb-sm-3
881
+ - pb-md-3
882
+ - pb-lg-3
883
+ - pb-xl-3
884
+ 4:
885
+ - pb-4
886
+ - pb-sm-4
887
+ - pb-md-4
888
+ - pb-lg-4
889
+ - pb-xl-4
890
+ 5:
891
+ - pb-5
892
+ - pb-sm-5
893
+ - pb-md-5
894
+ - pb-lg-5
895
+ - pb-xl-5
896
+ 6:
897
+ - pb-6
898
+ - pb-sm-6
899
+ - pb-md-6
900
+ - pb-lg-6
901
+ - pb-xl-6
902
+ 7:
903
+ - pb-7
904
+ - pb-sm-7
905
+ - pb-md-7
906
+ - pb-lg-7
907
+ - pb-xl-7
908
+ 8:
909
+ - pb-8
910
+ - pb-sm-8
911
+ - pb-md-8
912
+ - pb-lg-8
913
+ - pb-xl-8
914
+ 9:
915
+ - pb-9
916
+ - pb-sm-9
917
+ - pb-md-9
918
+ - pb-lg-9
919
+ - pb-xl-9
920
+ 10:
921
+ - pb-10
922
+ - pb-sm-10
923
+ - pb-md-10
924
+ - pb-lg-10
925
+ - pb-xl-10
926
+ 11:
927
+ - pb-11
928
+ - pb-sm-11
929
+ - pb-md-11
930
+ - pb-lg-11
931
+ - pb-xl-11
932
+ 12:
933
+ - pb-12
934
+ - pb-sm-12
935
+ - pb-md-12
936
+ - pb-lg-12
937
+ - pb-xl-12
938
+ :pl:
939
+ 0:
940
+ - pl-0
941
+ - pl-sm-0
942
+ - pl-md-0
943
+ - pl-lg-0
944
+ - pl-xl-0
945
+ 1:
946
+ - pl-1
947
+ - pl-sm-1
948
+ - pl-md-1
949
+ - pl-lg-1
950
+ - pl-xl-1
951
+ 2:
952
+ - pl-2
953
+ - pl-sm-2
954
+ - pl-md-2
955
+ - pl-lg-2
956
+ - pl-xl-2
957
+ 3:
958
+ - pl-3
959
+ - pl-sm-3
960
+ - pl-md-3
961
+ - pl-lg-3
962
+ - pl-xl-3
963
+ 4:
964
+ - pl-4
965
+ - pl-sm-4
966
+ - pl-md-4
967
+ - pl-lg-4
968
+ - pl-xl-4
969
+ 5:
970
+ - pl-5
971
+ - pl-sm-5
972
+ - pl-md-5
973
+ - pl-lg-5
974
+ - pl-xl-5
975
+ 6:
976
+ - pl-6
977
+ - pl-sm-6
978
+ - pl-md-6
979
+ - pl-lg-6
980
+ - pl-xl-6
981
+ 7:
982
+ - pl-7
983
+ - pl-sm-7
984
+ - pl-md-7
985
+ - pl-lg-7
986
+ - pl-xl-7
987
+ 8:
988
+ - pl-8
989
+ - pl-sm-8
990
+ - pl-md-8
991
+ - pl-lg-8
992
+ - pl-xl-8
993
+ 9:
994
+ - pl-9
995
+ - pl-sm-9
996
+ - pl-md-9
997
+ - pl-lg-9
998
+ - pl-xl-9
999
+ 10:
1000
+ - pl-10
1001
+ - pl-sm-10
1002
+ - pl-md-10
1003
+ - pl-lg-10
1004
+ - pl-xl-10
1005
+ 11:
1006
+ - pl-11
1007
+ - pl-sm-11
1008
+ - pl-md-11
1009
+ - pl-lg-11
1010
+ - pl-xl-11
1011
+ 12:
1012
+ - pl-12
1013
+ - pl-sm-12
1014
+ - pl-md-12
1015
+ - pl-lg-12
1016
+ - pl-xl-12
1017
+ :px:
1018
+ 0:
1019
+ - px-0
1020
+ - px-sm-0
1021
+ - px-md-0
1022
+ - px-lg-0
1023
+ - px-xl-0
1024
+ 1:
1025
+ - px-1
1026
+ - px-sm-1
1027
+ - px-md-1
1028
+ - px-lg-1
1029
+ - px-xl-1
1030
+ 2:
1031
+ - px-2
1032
+ - px-sm-2
1033
+ - px-md-2
1034
+ - px-lg-2
1035
+ - px-xl-2
1036
+ 3:
1037
+ - px-3
1038
+ - px-sm-3
1039
+ - px-md-3
1040
+ - px-lg-3
1041
+ - px-xl-3
1042
+ 4:
1043
+ - px-4
1044
+ - px-sm-4
1045
+ - px-md-4
1046
+ - px-lg-4
1047
+ - px-xl-4
1048
+ 5:
1049
+ - px-5
1050
+ - px-sm-5
1051
+ - px-md-5
1052
+ - px-lg-5
1053
+ - px-xl-5
1054
+ 6:
1055
+ - px-6
1056
+ - px-sm-6
1057
+ - px-md-6
1058
+ - px-lg-6
1059
+ - px-xl-6
1060
+ :py:
1061
+ 0:
1062
+ - py-0
1063
+ - py-sm-0
1064
+ - py-md-0
1065
+ - py-lg-0
1066
+ - py-xl-0
1067
+ 1:
1068
+ - py-1
1069
+ - py-sm-1
1070
+ - py-md-1
1071
+ - py-lg-1
1072
+ - py-xl-1
1073
+ 2:
1074
+ - py-2
1075
+ - py-sm-2
1076
+ - py-md-2
1077
+ - py-lg-2
1078
+ - py-xl-2
1079
+ 3:
1080
+ - py-3
1081
+ - py-sm-3
1082
+ - py-md-3
1083
+ - py-lg-3
1084
+ - py-xl-3
1085
+ 4:
1086
+ - py-4
1087
+ - py-sm-4
1088
+ - py-md-4
1089
+ - py-lg-4
1090
+ - py-xl-4
1091
+ 5:
1092
+ - py-5
1093
+ - py-sm-5
1094
+ - py-md-5
1095
+ - py-lg-5
1096
+ - py-xl-5
1097
+ 6:
1098
+ - py-6
1099
+ - py-sm-6
1100
+ - py-md-6
1101
+ - py-lg-6
1102
+ - py-xl-6
1103
+ 7:
1104
+ - py-7
1105
+ - py-sm-7
1106
+ - py-md-7
1107
+ - py-lg-7
1108
+ - py-xl-7
1109
+ 8:
1110
+ - py-8
1111
+ - py-sm-8
1112
+ - py-md-8
1113
+ - py-lg-8
1114
+ - py-xl-8
1115
+ 9:
1116
+ - py-9
1117
+ - py-sm-9
1118
+ - py-md-9
1119
+ - py-lg-9
1120
+ - py-xl-9
1121
+ 10:
1122
+ - py-10
1123
+ - py-sm-10
1124
+ - py-md-10
1125
+ - py-lg-10
1126
+ - py-xl-10
1127
+ 11:
1128
+ - py-11
1129
+ - py-sm-11
1130
+ - py-md-11
1131
+ - py-lg-11
1132
+ - py-xl-11
1133
+ 12:
1134
+ - py-12
1135
+ - py-sm-12
1136
+ - py-md-12
1137
+ - py-lg-12
1138
+ - py-xl-12
1139
+ :hide:
1140
+ :sm:
1141
+ - hide-sm
1142
+ :md:
1143
+ - hide-md
1144
+ :lg:
1145
+ - hide-lg
1146
+ :xl:
1147
+ - hide-xl