ucss 1.0.0 → 1.1.0

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: d3c03ac29c7181f247ab6aa0303f2457f120755a9048661e1ad1b41f28e5133e
4
- data.tar.gz: 8014cb34fb82bd0afa631c96c86a9577c6079edcfb934d257153ca6ae3eaa518
3
+ metadata.gz: f0096266f718c39f493f75d178c1cbda581bf76416ff10573eb66b90073b11bc
4
+ data.tar.gz: 6fe847b810cd6e1f11e27aba47b7e5466fe4bac17bfe7df73c555c032d9344ba
5
5
  SHA512:
6
- metadata.gz: 968d568ecd5eac6222300022bc07c89654c7cf128460f35fa4d2ae11859aa53cefbfee0f9d5793b7e2ba1bec32b3bfe4f1b226e0a6de96574bf48ad6618d1148
7
- data.tar.gz: a16263251d63c59858d36dd9a66c4be9c42d35ce43c2894d03791d82507a38134e458246f76dae9aa5279544dac9024c653b9e1450d3488858c666a404388f6d
6
+ metadata.gz: 427971e2ab812dc37a6cc27da9d149687a040f6eb909b23fbc6bd94d8176f403e1c89ccc5c0beada87f4f559db0be363666e09cf8872bb122b364d5a7344b9dc
7
+ data.tar.gz: a9ae1a21d7a4ef0152c95f1629cc98ceea7b3a1021eea0fec214cc15802e19b1b954183e5f16dbb07c31e25a85656df74a2c386ce9d2c7a10a3326d5e4c0d9cf
data/.gitignore CHANGED
@@ -1,4 +1,4 @@
1
-
1
+ *.gem
2
2
  /.bundle/
3
3
  /.yardoc
4
4
  /_yardoc/
data/lib/colors.rb ADDED
@@ -0,0 +1,268 @@
1
+ COLORS = {
2
+ 'black' => '#000',
3
+ 'white' => '#fff',
4
+ 'rose' => {
5
+ '50' => '#fff1f2',
6
+ '100' => '#ffe4e6',
7
+ '200' => '#fecdd3',
8
+ '300' => '#fda4af',
9
+ '400' => '#fb7185',
10
+ '500' => '#f43f5e',
11
+ '600' => '#e11d48',
12
+ '700' => '#be123c',
13
+ '800' => '#9f1239',
14
+ '900' => '#881337'
15
+ },
16
+ 'pink' => {
17
+ '50' => '#fdf2f8',
18
+ '100' => '#fce7f3',
19
+ '200' => '#fbcfe8',
20
+ '300' => '#f9a8d4',
21
+ '400' => '#f472b6',
22
+ '500' => '#ec4899',
23
+ '600' => '#db2777',
24
+ '700' => '#be185d',
25
+ '800' => '#9d174d',
26
+ '900' => '#831843'
27
+ },
28
+ 'fuchsia' => {
29
+ '50' => '#fdf4ff',
30
+ '100' => '#fae8ff',
31
+ '200' => '#f5d0fe',
32
+ '300' => '#f0abfc',
33
+ '400' => '#e879f9',
34
+ '500' => '#d946ef',
35
+ '600' => '#c026d3',
36
+ '700' => '#a21caf',
37
+ '800' => '#86198f',
38
+ '900' => '#701a75'
39
+ },
40
+ 'purple' => {
41
+ '50' => '#faf5ff',
42
+ '100' => '#f3e8ff',
43
+ '200' => '#e9d5ff',
44
+ '300' => '#d8b4fe',
45
+ '400' => '#c084fc',
46
+ '500' => '#a855f7',
47
+ '600' => '#9333ea',
48
+ '700' => '#7e22ce',
49
+ '800' => '#6b21a8',
50
+ '900' => '#581c87'
51
+ },
52
+ 'violet' => {
53
+ '50' => '#f5f3ff',
54
+ '100' => '#ede9fe',
55
+ '200' => '#ddd6fe',
56
+ '300' => '#c4b5fd',
57
+ '400' => '#a78bfa',
58
+ '500' => '#8b5cf6',
59
+ '600' => '#7c3aed',
60
+ '700' => '#6d28d9',
61
+ '800' => '#5b21b6',
62
+ '900' => '#4c1d95'
63
+ },
64
+ 'indigo' => {
65
+ '50' => '#eef2ff',
66
+ '100' => '#e0e7ff',
67
+ '200' => '#c7d2fe',
68
+ '300' => '#a5b4fc',
69
+ '400' => '#818cf8',
70
+ '500' => '#6366f1',
71
+ '600' => '#4f46e5',
72
+ '700' => '#4338ca',
73
+ '800' => '#3730a3',
74
+ '900' => '#312e81'
75
+ },
76
+ 'blue' => {
77
+ '50' => '#eff6ff',
78
+ '100' => '#dbeafe',
79
+ '200' => '#bfdbfe',
80
+ '300' => '#93c5fd',
81
+ '400' => '#60a5fa',
82
+ '500' => '#3b82f6',
83
+ '600' => '#2563eb',
84
+ '700' => '#1d4ed8',
85
+ '800' => '#1e40af',
86
+ '900' => '#1e3a8a'
87
+ },
88
+ 'sky' => {
89
+ '50' => '#f0f9ff',
90
+ '100' => '#e0f2fe',
91
+ '200' => '#bae6fd',
92
+ '300' => '#7dd3fc',
93
+ '400' => '#38bdf8',
94
+ '500' => '#0ea5e9',
95
+ '600' => '#0284c7',
96
+ '700' => '#0369a1',
97
+ '800' => '#075985',
98
+ '900' => '#0c4a6e'
99
+ },
100
+ 'cyan' => {
101
+ '50' => '#ecfeff',
102
+ '100' => '#cffafe',
103
+ '200' => '#a5f3fc',
104
+ '300' => '#67e8f9',
105
+ '400' => '#22d3ee',
106
+ '500' => '#06b6d4',
107
+ '600' => '#0891b2',
108
+ '700' => '#0e7490',
109
+ '800' => '#155e75',
110
+ '900' => '#164e63'
111
+ },
112
+ 'teal' => {
113
+ '50' => '#f0fdfa',
114
+ '100' => '#ccfbf1',
115
+ '200' => '#99f6e4',
116
+ '300' => '#5eead4',
117
+ '400' => '#2dd4bf',
118
+ '500' => '#14b8a6',
119
+ '600' => '#0d9488',
120
+ '700' => '#0f766e',
121
+ '800' => '#115e59',
122
+ '900' => '#134e4a'
123
+ },
124
+ 'emerald' => {
125
+ '50' => '#ecfdf5',
126
+ '100' => '#d1fae5',
127
+ '200' => '#a7f3d0',
128
+ '300' => '#6ee7b7',
129
+ '400' => '#34d399',
130
+ '500' => '#10b981',
131
+ '600' => '#059669',
132
+ '700' => '#047857',
133
+ '800' => '#065f46',
134
+ '900' => '#064e3b'
135
+ },
136
+ 'green' => {
137
+ '50' => '#f0fdf4',
138
+ '100' => '#dcfce7',
139
+ '200' => '#bbf7d0',
140
+ '300' => '#86efac',
141
+ '400' => '#4ade80',
142
+ '500' => '#22c55e',
143
+ '600' => '#16a34a',
144
+ '700' => '#15803d',
145
+ '800' => '#166534',
146
+ '900' => '#14532d'
147
+ },
148
+ 'lime' => {
149
+ '50' => '#f7fee7',
150
+ '100' => '#ecfccb',
151
+ '200' => '#d9f99d',
152
+ '300' => '#bef264',
153
+ '400' => '#a3e635',
154
+ '500' => '#84cc16',
155
+ '600' => '#65a30d',
156
+ '700' => '#4d7c0f',
157
+ '800' => '#3f6212',
158
+ '900' => '#365314'
159
+ },
160
+ 'yellow' => {
161
+ '50' => '#fefce8',
162
+ '100' => '#fef9c3',
163
+ '200' => '#fef08a',
164
+ '300' => '#fde047',
165
+ '400' => '#facc15',
166
+ '500' => '#eab308',
167
+ '600' => '#ca8a04',
168
+ '700' => '#a16207',
169
+ '800' => '#854d0e',
170
+ '900' => '#713f12'
171
+ },
172
+ 'amber' => {
173
+ '50' => '#fffbeb',
174
+ '100' => '#fef3c7',
175
+ '200' => '#fde68a',
176
+ '300' => '#fcd34d',
177
+ '400' => '#fbbf24',
178
+ '500' => '#f59e0b',
179
+ '600' => '#d97706',
180
+ '700' => '#b45309',
181
+ '800' => '#92400e',
182
+ '900' => '#78350f'
183
+ },
184
+ 'orange' => {
185
+ '50' => '#fff7ed',
186
+ '100' => '#ffedd5',
187
+ '200' => '#fed7aa',
188
+ '300' => '#fdba74',
189
+ '400' => '#fb923c',
190
+ '500' => '#f97316',
191
+ '600' => '#ea580c',
192
+ '700' => '#c2410c',
193
+ '800' => '#9a3412',
194
+ '900' => '#7c2d12'
195
+ },
196
+ 'red' => {
197
+ '50' => '#fef2f2',
198
+ '100' => '#fee2e2',
199
+ '200' => '#fecaca',
200
+ '300' => '#fca5a5',
201
+ '400' => '#f87171',
202
+ '500' => '#ef4444',
203
+ '600' => '#dc2626',
204
+ '700' => '#b91c1c',
205
+ '800' => '#991b1b',
206
+ '900' => '#7f1d1d'
207
+ },
208
+ 'warmGray' => {
209
+ '50' => '#fafaf9',
210
+ '100' => '#f5f5f4',
211
+ '200' => '#e7e5e4',
212
+ '300' => '#d6d3d1',
213
+ '400' => '#a8a29e',
214
+ '500' => '#78716c',
215
+ '600' => '#57534e',
216
+ '700' => '#44403c',
217
+ '800' => '#292524',
218
+ '900' => '#1c1917'
219
+ },
220
+ 'trueGray' => {
221
+ '50' => '#fafafa',
222
+ '100' => '#f5f5f5',
223
+ '200' => '#e5e5e5',
224
+ '300' => '#d4d4d4',
225
+ '400' => '#a3a3a3',
226
+ '500' => '#737373',
227
+ '600' => '#525252',
228
+ '700' => '#404040',
229
+ '800' => '#262626',
230
+ '900' => '#171717'
231
+ },
232
+ 'gray' => {
233
+ '50' => '#fafafa',
234
+ '100' => '#f4f4f5',
235
+ '200' => '#e4e4e7',
236
+ '300' => '#d4d4d8',
237
+ '400' => '#a1a1aa',
238
+ '500' => '#71717a',
239
+ '600' => '#52525b',
240
+ '700' => '#3f3f46',
241
+ '800' => '#27272a',
242
+ '900' => '#18181b'
243
+ },
244
+ 'coolGray' => {
245
+ '50' => '#f9fafb',
246
+ '100' => '#f3f4f6',
247
+ '200' => '#e5e7eb',
248
+ '300' => '#d1d5db',
249
+ '400' => '#9ca3af',
250
+ '500' => '#6b7280',
251
+ '600' => '#4b5563',
252
+ '700' => '#374151',
253
+ '800' => '#1f2937',
254
+ '900' => '#111827'
255
+ },
256
+ 'blueGray' => {
257
+ '50' => '#f8fafc',
258
+ '100' => '#f1f5f9',
259
+ '200' => '#e2e8f0',
260
+ '300' => '#cbd5e1',
261
+ '400' => '#94a3b8',
262
+ '500' => '#64748b',
263
+ '600' => '#475569',
264
+ '700' => '#334155',
265
+ '800' => '#1e293b',
266
+ '900' => '#0f172a'
267
+ }
268
+ }.freeze
data/lib/hash.rb ADDED
@@ -0,0 +1,44 @@
1
+ class Hash
2
+ # Returns a new hash with all values converted by the block operation.
3
+ # This includes the values from the root hash and from all
4
+ # nested hashes and arrays.
5
+ #
6
+ # hash = { person: { name: 'Rob', age: '28' } }
7
+ #
8
+ # hash.deep_transform_values{ |value| value.to_s.upcase }
9
+ # # => {person: {name: "ROB", age: "28"}}
10
+ def deep_transform_values(&block)
11
+ _deep_transform_values_in_object(self, &block)
12
+ end
13
+
14
+ # Destructively converts all values by using the block operation.
15
+ # This includes the values from the root hash and from all
16
+ # nested hashes and arrays.
17
+ def deep_transform_values!(&block)
18
+ _deep_transform_values_in_object!(self, &block)
19
+ end
20
+
21
+ private
22
+ # Support methods for deep transforming nested hashes and arrays.
23
+ def _deep_transform_values_in_object(object, &block)
24
+ case object
25
+ when Hash
26
+ object.transform_values { |value| _deep_transform_values_in_object(value, &block) }
27
+ when Array
28
+ object.map { |e| _deep_transform_values_in_object(e, &block) }
29
+ else
30
+ yield(object)
31
+ end
32
+ end
33
+
34
+ def _deep_transform_values_in_object!(object, &block)
35
+ case object
36
+ when Hash
37
+ object.transform_values! { |value| _deep_transform_values_in_object!(value, &block) }
38
+ when Array
39
+ object.map! { |e| _deep_transform_values_in_object!(e, &block) }
40
+ else
41
+ yield(object)
42
+ end
43
+ end
44
+ end
data/lib/spacing.rb ADDED
@@ -0,0 +1,38 @@
1
+ SPACING = {
2
+ 'px' => '1px',
3
+ '0' => '0px',
4
+ '0.5' => '0.125rem',
5
+ '1' => '0.25rem',
6
+ '1.5' => '0.375rem',
7
+ '2' => '0.5rem',
8
+ '2.5' => '0.625rem',
9
+ '3' => '0.75rem',
10
+ '3.5' => '0.875rem',
11
+ '4' => '1rem',
12
+ '5' => '1.25rem',
13
+ '6' => '1.5rem',
14
+ '7' => '1.75rem',
15
+ '8' => '2rem',
16
+ '9' => '2.25rem',
17
+ '10' => '2.5rem',
18
+ '11' => '2.75rem',
19
+ '12' => '3rem',
20
+ '14' => '3.5rem',
21
+ '16' => '4rem',
22
+ '20' => '5rem',
23
+ '24' => '6rem',
24
+ '28' => '7rem',
25
+ '32' => '8rem',
26
+ '36' => '9rem',
27
+ '40' => '10rem',
28
+ '44' => '11rem',
29
+ '48' => '12rem',
30
+ '52' => '13rem',
31
+ '56' => '14rem',
32
+ '60' => '15rem',
33
+ '64' => '16rem',
34
+ '72' => '18rem',
35
+ '80' => '20rem',
36
+ '96' => '24rem',
37
+ 'auto' => 'auto'
38
+ }.freeze
data/lib/ucss.rb CHANGED
@@ -1,334 +1,76 @@
1
+ require_relative 'colors'
2
+ require_relative 'spacing'
3
+ require_relative 'hash'
4
+
1
5
  class UCss
2
6
  REGEX = /[^[%w\[]^<>"'`\s]*[^<>"'`\s:^[\[\]]]/
3
7
 
8
+ def self.spacing(properties)
9
+ SPACING.transform_values do |v|
10
+ properties.map do |p|
11
+ "#{p}: #{v}"
12
+ end.join('; ')
13
+ end
14
+ end
15
+
16
+ def self.colors(property)
17
+ COLORS.deep_transform_values do |v|
18
+ "#{property}: #{v}"
19
+ end
20
+ end
21
+
22
+ def self.align(property)
23
+ %w[left right center justify].map do |v|
24
+ [v, "#{property}: #{v}"]
25
+ end.to_h
26
+ end
27
+
28
+ def self.flex_align(property)
29
+ {
30
+ 'start' => 'flex-start',
31
+ 'center' => 'center',
32
+ 'between' => 'space-between',
33
+ 'around' => 'space-around',
34
+ 'evenly' => 'space-evenly',
35
+ 'stretch' => 'stretch',
36
+ 'auto' => 'auto',
37
+ 'baseline' => 'baseline'
38
+ }.transform_values { |v| "#{property}: #{v}" }
39
+ end
40
+
4
41
  CLASS_MAP = {
5
- 'black' => '#000',
6
- 'white' => '#fff',
7
- 'rose' => {
8
- '50' => '#fff1f2',
9
- '100' => '#ffe4e6',
10
- '200' => '#fecdd3',
11
- '300' => '#fda4af',
12
- '400' => '#fb7185',
13
- '500' => '#f43f5e',
14
- '600' => '#e11d48',
15
- '700' => '#be123c',
16
- '800' => '#9f1239',
17
- '900' => '#881337'
18
- },
19
- 'pink' => {
20
- '50' => '#fdf2f8',
21
- '100' => '#fce7f3',
22
- '200' => '#fbcfe8',
23
- '300' => '#f9a8d4',
24
- '400' => '#f472b6',
25
- '500' => '#ec4899',
26
- '600' => '#db2777',
27
- '700' => '#be185d',
28
- '800' => '#9d174d',
29
- '900' => '#831843'
30
- },
31
- 'fuchsia' => {
32
- '50' => '#fdf4ff',
33
- '100' => '#fae8ff',
34
- '200' => '#f5d0fe',
35
- '300' => '#f0abfc',
36
- '400' => '#e879f9',
37
- '500' => '#d946ef',
38
- '600' => '#c026d3',
39
- '700' => '#a21caf',
40
- '800' => '#86198f',
41
- '900' => '#701a75'
42
- },
43
- 'purple' => {
44
- '50' => '#faf5ff',
45
- '100' => '#f3e8ff',
46
- '200' => '#e9d5ff',
47
- '300' => '#d8b4fe',
48
- '400' => '#c084fc',
49
- '500' => '#a855f7',
50
- '600' => '#9333ea',
51
- '700' => '#7e22ce',
52
- '800' => '#6b21a8',
53
- '900' => '#581c87'
54
- },
55
- 'violet' => {
56
- '50' => '#f5f3ff',
57
- '100' => '#ede9fe',
58
- '200' => '#ddd6fe',
59
- '300' => '#c4b5fd',
60
- '400' => '#a78bfa',
61
- '500' => '#8b5cf6',
62
- '600' => '#7c3aed',
63
- '700' => '#6d28d9',
64
- '800' => '#5b21b6',
65
- '900' => '#4c1d95'
66
- },
67
- 'indigo' => {
68
- '50' => '#eef2ff',
69
- '100' => '#e0e7ff',
70
- '200' => '#c7d2fe',
71
- '300' => '#a5b4fc',
72
- '400' => '#818cf8',
73
- '500' => '#6366f1',
74
- '600' => '#4f46e5',
75
- '700' => '#4338ca',
76
- '800' => '#3730a3',
77
- '900' => '#312e81'
78
- },
79
- 'blue' => {
80
- '50' => '#eff6ff',
81
- '100' => '#dbeafe',
82
- '200' => '#bfdbfe',
83
- '300' => '#93c5fd',
84
- '400' => '#60a5fa',
85
- '500' => '#3b82f6',
86
- '600' => '#2563eb',
87
- '700' => '#1d4ed8',
88
- '800' => '#1e40af',
89
- '900' => '#1e3a8a'
90
- },
91
- 'sky' => {
92
- '50' => '#f0f9ff',
93
- '100' => '#e0f2fe',
94
- '200' => '#bae6fd',
95
- '300' => '#7dd3fc',
96
- '400' => '#38bdf8',
97
- '500' => '#0ea5e9',
98
- '600' => '#0284c7',
99
- '700' => '#0369a1',
100
- '800' => '#075985',
101
- '900' => '#0c4a6e'
102
- },
103
- 'cyan' => {
104
- '50' => '#ecfeff',
105
- '100' => '#cffafe',
106
- '200' => '#a5f3fc',
107
- '300' => '#67e8f9',
108
- '400' => '#22d3ee',
109
- '500' => '#06b6d4',
110
- '600' => '#0891b2',
111
- '700' => '#0e7490',
112
- '800' => '#155e75',
113
- '900' => '#164e63'
114
- },
115
- 'teal' => {
116
- '50' => '#f0fdfa',
117
- '100' => '#ccfbf1',
118
- '200' => '#99f6e4',
119
- '300' => '#5eead4',
120
- '400' => '#2dd4bf',
121
- '500' => '#14b8a6',
122
- '600' => '#0d9488',
123
- '700' => '#0f766e',
124
- '800' => '#115e59',
125
- '900' => '#134e4a'
126
- },
127
- 'emerald' => {
128
- '50' => '#ecfdf5',
129
- '100' => '#d1fae5',
130
- '200' => '#a7f3d0',
131
- '300' => '#6ee7b7',
132
- '400' => '#34d399',
133
- '500' => '#10b981',
134
- '600' => '#059669',
135
- '700' => '#047857',
136
- '800' => '#065f46',
137
- '900' => '#064e3b'
138
- },
139
- 'green'=>{
140
- '50' => '#f0fdf4',
141
- '100' => '#dcfce7',
142
- '200' => '#bbf7d0',
143
- '300' => '#86efac',
144
- '400' => '#4ade80',
145
- '500' => '#22c55e',
146
- '600' => '#16a34a',
147
- '700' => '#15803d',
148
- '800' => '#166534',
149
- '900' => '#14532d'
150
- },
151
- 'lime'=>{
152
- '50' => '#f7fee7',
153
- '100' => '#ecfccb',
154
- '200' => '#d9f99d',
155
- '300' => '#bef264',
156
- '400' => '#a3e635',
157
- '500' => '#84cc16',
158
- '600' => '#65a30d',
159
- '700' => '#4d7c0f',
160
- '800' => '#3f6212',
161
- '900' => '#365314'
162
- },
163
- 'yellow'=>{
164
- '50' => '#fefce8',
165
- '100' => '#fef9c3',
166
- '200' => '#fef08a',
167
- '300' => '#fde047',
168
- '400' => '#facc15',
169
- '500' => '#eab308',
170
- '600' => '#ca8a04',
171
- '700' => '#a16207',
172
- '800' => '#854d0e',
173
- '900' => '#713f12'
174
- },
175
- 'amber'=>{
176
- '50' => '#fffbeb',
177
- '100' => '#fef3c7',
178
- '200' => '#fde68a',
179
- '300' => '#fcd34d',
180
- '400' => '#fbbf24',
181
- '500' => '#f59e0b',
182
- '600' => '#d97706',
183
- '700' => '#b45309',
184
- '800' => '#92400e',
185
- '900' => '#78350f'
186
- },
187
- 'orange'=>{
188
- '50' => '#fff7ed',
189
- '100' => '#ffedd5',
190
- '200' => '#fed7aa',
191
- '300' => '#fdba74',
192
- '400' => '#fb923c',
193
- '500' => '#f97316',
194
- '600' => '#ea580c',
195
- '700' => '#c2410c',
196
- '800' => '#9a3412',
197
- '900' => '#7c2d12'
198
- },
199
- 'red'=>{
200
- '50' => '#fef2f2',
201
- '100' => '#fee2e2',
202
- '200' => '#fecaca',
203
- '300' => '#fca5a5',
204
- '400' => '#f87171',
205
- '500' => '#ef4444',
206
- '600' => '#dc2626',
207
- '700' => '#b91c1c',
208
- '800' => '#991b1b',
209
- '900' => '#7f1d1d'
210
- },
211
- 'warmGray'=>{
212
- '50' => '#fafaf9',
213
- '100' => '#f5f5f4',
214
- '200' => '#e7e5e4',
215
- '300' => '#d6d3d1',
216
- '400' => '#a8a29e',
217
- '500' => '#78716c',
218
- '600' => '#57534e',
219
- '700' => '#44403c',
220
- '800' => '#292524',
221
- '900' => '#1c1917'
222
- },
223
- 'trueGray'=>{
224
- '50' => '#fafafa',
225
- '100' => '#f5f5f5',
226
- '200' => '#e5e5e5',
227
- '300' => '#d4d4d4',
228
- '400' => '#a3a3a3',
229
- '500' => '#737373',
230
- '600' => '#525252',
231
- '700' => '#404040',
232
- '800' => '#262626',
233
- '900' => '#171717'
234
- },
235
- 'gray'=>{
236
- '50' => '#fafafa',
237
- '100' => '#f4f4f5',
238
- '200' => '#e4e4e7',
239
- '300' => '#d4d4d8',
240
- '400' => '#a1a1aa',
241
- '500' => '#71717a',
242
- '600' => '#52525b',
243
- '700' => '#3f3f46',
244
- '800' => '#27272a',
245
- '900' => '#18181b'
246
- },
247
- 'coolGray'=>{
248
- '50' => '#f9fafb',
249
- '100' => '#f3f4f6',
250
- '200' => '#e5e7eb',
251
- '300' => '#d1d5db',
252
- '400' => '#9ca3af',
253
- '500' => '#6b7280',
254
- '600' => '#4b5563',
255
- '700' => '#374151',
256
- '800' => '#1f2937',
257
- '900' => '#111827'
258
- },
259
- 'blueGray'=>{
260
- '50' => '#f8fafc',
261
- '100' => '#f1f5f9',
262
- '200' => '#e2e8f0',
263
- '300' => '#cbd5e1',
264
- '400' => '#94a3b8',
265
- '500' => '#64748b',
266
- '600' => '#475569',
267
- '700' => '#334155',
268
- '800' => '#1e293b',
269
- '900' => '#0f172a'
270
- },
271
- 'px' => '1px',
272
- '0' => '0px',
273
- '0.5' => '0.125rem',
274
- '1' => '0.25rem',
275
- '1.5' => '0.375rem',
276
- '2' => '0.5rem',
277
- '2.5' => '0.625rem',
278
- '3' => '0.75rem',
279
- '3.5' => '0.875rem',
280
- '4' => '1rem',
281
- '5' => '1.25rem',
282
- '6' => '1.5rem',
283
- '7' => '1.75rem',
284
- '8' => '2rem',
285
- '9' => '2.25rem',
286
- '10' => '2.5rem',
287
- '11' => '2.75rem',
288
- '12' => '3rem',
289
- '14' => '3.5rem',
290
- '16' => '4rem',
291
- '20' => '5rem',
292
- '24' => '6rem',
293
- '28' => '7rem',
294
- '32' => '8rem',
295
- '36' => '9rem',
296
- '40' => '10rem',
297
- '44' => '11rem',
298
- '48' => '12rem',
299
- '52' => '13rem',
300
- '56' => '14rem',
301
- '60' => '15rem',
302
- '64' => '16rem',
303
- '72' => '18rem',
304
- '80' => '20rem',
305
- '96' => '24rem',
306
- 'bg' => 'background',
307
- 'p' => 'padding',
308
- 'm' => 'margin',
309
- 'my'=> [
310
- 'margin-top',
311
- 'margin-bottom'
312
- ],
313
- 'mx'=> [
314
- 'margin-left',
315
- 'margin-right'
316
- ],
317
- 'text' => 'color',
318
- 'text-left' => 'text-align: left',
319
- 'text-right' => 'text-align: right',
320
- 'stretch' => 'stretch',
321
- 'center' => 'center',
322
- 'flex' => 'display: flex',
323
- 'self' => 'align-self',
324
- 'items' => 'align-items',
325
- 'flex-start' => 'flex-start',
326
- 'flex-end' => 'flex-end',
327
- 'flex-row' => 'flex-direction: row',
328
- 'flex-col' => 'flex-direction: col',
329
- 'gap' => 'gap',
330
- 'auto' => 'auto'
331
- }.freeze
42
+ 'bg' => colors('background'),
43
+ 'p' => spacing(['padding']),
44
+ 'm' => spacing(['margin']),
45
+ 'my' => spacing(%w[margin-top margin-bottom]),
46
+ 'mx' => spacing(%w[margin-left margin-right]),
47
+ 'text' => colors('color').merge(align('text-align')),
48
+ 'justify' => flex_align('justify-content').merge(
49
+ { 'items' => flex_align('justify-items') },
50
+ { 'self' => flex_align('justify-self') }
51
+ ),
52
+ 'self' => flex_align('align-self'),
53
+ 'items' => flex_align('align-items'),
54
+ 'content' => flex_align('align-content'),
55
+ 'place' => {
56
+ 'content' => flex_align('place-content'),
57
+ 'items' => flex_align('place-items'),
58
+ 'self' => flex_align('self')
59
+ },
60
+ 'gap' => spacing(%w[gap]).merge(
61
+ { 'x' => spacing(%w[column-gap]) },
62
+ { 'y' => spacing(%w[row-gap]) }
63
+ ),
64
+ 'flex' => {
65
+ 'DEFAULT' => 'display: flex',
66
+ 'col' => 'flex-direction: column',
67
+ 'row' => 'flex-direction: row',
68
+ '1' => 'flex: 1 1 0%',
69
+ 'auto' => 'flex: 1 1 auto',
70
+ 'initial' => 'flex: 0 1 auto',
71
+ 'none' => 'flex: none'
72
+ }
73
+ }.merge(COLORS).freeze
332
74
 
333
75
  def initialize
334
76
  @output = './assets/css/utility.css'
@@ -337,23 +79,15 @@ class UCss
337
79
  end
338
80
 
339
81
  def body(name)
340
- # check for a direct key value pair
341
- return ".#{name} { #{CLASS_MAP[name]}; }" if CLASS_MAP[name]
342
-
343
- # otherwise split it up and get property/value pair from modifiers
344
82
  parts = name.split('-')
345
83
 
346
- property = CLASS_MAP[parts[0]]
347
-
348
- return if property.nil? || property&.empty?
349
-
350
- value = CLASS_MAP.dig(*parts.drop(1))
84
+ content = CLASS_MAP.dig(*parts)
351
85
 
352
- content = "#{property}: #{value};"
86
+ content = content['DEFAULT'] if content.is_a?(Hash)
353
87
 
354
- content = property.map { |p| "#{p}: #{value};" }.join(' ') if property.is_a?(Array)
88
+ return unless content
355
89
 
356
- ".#{name} { #{content} }"
90
+ ".#{name} { #{content}; }"
357
91
  end
358
92
 
359
93
  def content(classes = @matches)
data/ucss.gemspec CHANGED
@@ -4,7 +4,7 @@ require 'ucss'
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'ucss'
7
- spec.version = '1.0.0'
7
+ spec.version = '1.1.0'
8
8
  spec.authors = ['Sean Walker']
9
9
  spec.email = ['']
10
10
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ucss
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Walker
@@ -55,6 +55,9 @@ files:
55
55
  - LICENSE.txt
56
56
  - README.md
57
57
  - Rakefile
58
+ - lib/colors.rb
59
+ - lib/hash.rb
60
+ - lib/spacing.rb
58
61
  - lib/ucss.rb
59
62
  - ucss.gemspec
60
63
  homepage: https://github.com/swlkr/ucss
@@ -79,7 +82,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
79
82
  - !ruby/object:Gem::Version
80
83
  version: '0'
81
84
  requirements: []
82
- rubygems_version: 3.2.22
85
+ rubygems_version: 3.2.27
83
86
  signing_key:
84
87
  specification_version: 4
85
88
  summary: Tailwind jit inspired utility css generator