ratchet_design 0.1.12 → 0.1.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/ratchet/base/form.js +9 -3
- data/app/assets/javascripts/ratchet/base/sync-input-value.js +9 -18
- data/app/assets/javascripts/ratchet/core.js +9 -3
- data/app/assets/javascripts/ratchet/enhancement/lightbox.js +6 -6
- data/app/assets/javascripts/ratchet/enhancement/mapbox.js +48 -0
- data/app/assets/stylesheets/ratchet/_core.scss +4 -2
- data/app/assets/stylesheets/ratchet/base/_button.scss +15 -14
- data/app/assets/stylesheets/ratchet/base/_document.scss +30 -66
- data/app/assets/stylesheets/ratchet/base/_form.scss +162 -529
- data/app/assets/stylesheets/ratchet/base/_label-placeholder.scss +97 -0
- data/app/assets/stylesheets/ratchet/base/_media.scss +1 -1
- data/app/assets/stylesheets/ratchet/base/_multistep-form.scss +65 -11
- data/app/assets/stylesheets/ratchet/base/_section.scss +284 -0
- data/app/assets/stylesheets/ratchet/base/_table.scss +4 -4
- data/app/assets/stylesheets/ratchet/base/_text.scss +50 -45
- data/app/assets/stylesheets/ratchet/base/_validation.scss +83 -0
- data/app/assets/stylesheets/ratchet/enhancement/_hero.scss +39 -39
- data/app/assets/stylesheets/ratchet/utility/_color.scss +135 -0
- data/app/assets/stylesheets/ratchet/utility/_global.scss +21 -40
- data/app/assets/stylesheets/ratchet/utility/_loader.scss +1 -1
- data/app/helpers/ratchet/application_helper.rb +16 -10
- data/app/helpers/ratchet/form_helper.rb +302 -18
- data/app/views/layouts/ratchet/default.html.slim +2 -2
- data/app/views/shared/ratchet/_defs.html.slim +67 -0
- data/app/views/shared/ratchet/_footer.html.slim +6 -0
- data/app/views/shared/ratchet/_header.html.slim +5 -0
- data/app/views/shared/ratchet/_icons.html.slim +53 -6
- data/lib/ratchet_design/version.rb +1 -1
- data/public/{core-0.1.12.js → core-0.1.13.js} +66 -66
- data/public/core-0.1.13.js.gz +0 -0
- data/public/core-0.1.13.map.json +1 -0
- data/public/{fonts-woff-0.1.12.css → fonts-woff-0.1.13.css} +0 -0
- data/public/{fonts-woff-0.1.12.css.gz → fonts-woff-0.1.13.css.gz} +0 -0
- data/public/{fonts-woff2-0.1.12.css → fonts-woff2-0.1.13.css} +0 -0
- data/public/{fonts-woff2-0.1.12.css.gz → fonts-woff2-0.1.13.css.gz} +0 -0
- metadata +36 -32
- data/app/assets/javascripts/ratchet/utility/loader.js +0 -84
- data/app/assets/stylesheets/ratchet/enhancement/_contrast-section.scss +0 -22
- data/public/core-0.1.12.js.gz +0 -0
- data/public/core-0.1.12.map.json +0 -1
@@ -1,11 +1,13 @@
|
|
1
1
|
module Ratchet
|
2
2
|
module FormHelper
|
3
|
-
|
4
3
|
INPUT_OPTIONS = {
|
5
4
|
email: {
|
6
5
|
type: "email",
|
7
6
|
placeholder: "Email address",
|
8
7
|
pattern: "[^@]+@[^@]+\\.[a-zA-Z]{2,}",
|
8
|
+
autocorrect: "off",
|
9
|
+
autocapitalize: "off",
|
10
|
+
spellcheck: "false",
|
9
11
|
data: { message: "Please enter a valid email address." }
|
10
12
|
},
|
11
13
|
|
@@ -18,6 +20,20 @@ module Ratchet
|
|
18
20
|
type: "text"
|
19
21
|
},
|
20
22
|
|
23
|
+
tel: {
|
24
|
+
type: "tel",
|
25
|
+
placeholder: "Phone number"
|
26
|
+
},
|
27
|
+
|
28
|
+
url: {
|
29
|
+
type: "text",
|
30
|
+
placeholder: "Web address",
|
31
|
+
autocorrect: "off",
|
32
|
+
autocapitalize: "off",
|
33
|
+
spellcheck: "false",
|
34
|
+
pattern: ".+\\.[a-zA-Z]{2,}"
|
35
|
+
},
|
36
|
+
|
21
37
|
card_number: {
|
22
38
|
type: "text",
|
23
39
|
required: true,
|
@@ -55,6 +71,7 @@ module Ratchet
|
|
55
71
|
type: "text",
|
56
72
|
required: true,
|
57
73
|
pattern: "[0-9]{3,4}",
|
74
|
+
placeholder: "CVC",
|
58
75
|
data: {
|
59
76
|
stripe: "cvc",
|
60
77
|
message: "Please enter a valid security code."
|
@@ -62,6 +79,7 @@ module Ratchet
|
|
62
79
|
},
|
63
80
|
|
64
81
|
select_country: {
|
82
|
+
type: "select",
|
65
83
|
country_options: {
|
66
84
|
include_blank: "Select a country",
|
67
85
|
priority_countries: ["US", "GB", "CA"],
|
@@ -71,70 +89,336 @@ module Ratchet
|
|
71
89
|
}
|
72
90
|
}
|
73
91
|
|
92
|
+
def table_form_for(record, options = {}, &block)
|
93
|
+
form_for record, options do |f|
|
94
|
+
table_form_tag f, &block
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def table_form_tag(form = nil)
|
99
|
+
form.style = 'table' if form
|
100
|
+
content_tag :div, class: ['table', 'table-form'] do
|
101
|
+
yield form if block_given?
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def stacked_form_for(record, options = {}, &block)
|
106
|
+
form_for record, options do |f|
|
107
|
+
stacked_form_tag f, &block
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
def stacked_form_tag(form = nil)
|
112
|
+
form.style = 'stacked' if form
|
113
|
+
content_tag :div, class: 'stacked-form' do
|
114
|
+
yield form if block_given?
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def slider_input_tag(name, options={})
|
119
|
+
options = options.stringify_keys
|
120
|
+
classnames = options.delete('class') || ''
|
121
|
+
|
122
|
+
if label = options.delete('label')
|
123
|
+
label = content_tag(:span, class: 'label-text') { label }
|
124
|
+
end
|
125
|
+
|
126
|
+
data = options['data'] || {}
|
127
|
+
data['input'] ||= name
|
128
|
+
|
129
|
+
if options['position_label']
|
130
|
+
data['position_label'] = options['position_label']
|
131
|
+
end
|
132
|
+
|
133
|
+
# Set values (and max based on values size)
|
134
|
+
if values = options['values']
|
135
|
+
data['values'] = values.join(',')
|
136
|
+
options['max'] ||= values.size - 1
|
137
|
+
end
|
138
|
+
|
139
|
+
# Support legacy option
|
140
|
+
options['labels'] ||= options['label']
|
141
|
+
|
142
|
+
if labels = options['labels']
|
143
|
+
if labels.is_a?(Array)
|
144
|
+
data['label'] = labels.join(';')
|
145
|
+
options['max'] ||= labels.size - 1
|
146
|
+
elsif labels.is_a?(Hash)
|
147
|
+
labels.each do |label, value|
|
148
|
+
data['label-'+dasherize(label.to_s.downcase)] = value.join(';')
|
149
|
+
options['max'] ||= value.size - 1
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
if labels == false
|
155
|
+
data['label'] = 'false'
|
156
|
+
end
|
157
|
+
|
158
|
+
if labels = options['external_labels']
|
159
|
+
if labels.is_a?(Hash)
|
160
|
+
labels.each do |label, value|
|
161
|
+
data['external-label-'+dasherize(label.to_s.downcase)] = value.join(';')
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
if before = options['before']
|
167
|
+
if before.is_a?(String)
|
168
|
+
data['before-label'] = before
|
169
|
+
else
|
170
|
+
before.each do |key, value|
|
171
|
+
data["before-label-#{key}"] = value
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
if mark = options['mark']
|
177
|
+
data['mark'] = mark.join(',')
|
178
|
+
end
|
179
|
+
|
180
|
+
if after = options['after']
|
181
|
+
if after.is_a?(String)
|
182
|
+
data['after-label'] = after
|
183
|
+
else
|
184
|
+
after.each do |key, value|
|
185
|
+
data["after-label-#{key}"] = value
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
if line_labels = options['line_labels']
|
191
|
+
data['line_labels'] = []
|
192
|
+
line_labels.each do |k, v|
|
193
|
+
data['line_labels'] << "#{k}:#{v}"
|
194
|
+
end
|
195
|
+
data['line_labels'] = data['line_labels'].join(';')
|
196
|
+
end
|
197
|
+
|
198
|
+
options['value'] ||= options['min'] || 0
|
199
|
+
|
200
|
+
html_options = {"class" => classnames, "type" => "range", "min" => options['min'], "max" => options['max'], "value" => options['value'] }.update('data' => data)
|
201
|
+
|
202
|
+
content_tag(:label, class: 'range-label') {
|
203
|
+
concat label if label
|
204
|
+
concat tag :input, html_options
|
205
|
+
}
|
206
|
+
end
|
207
|
+
alias :range_input_tag :slider_input_tag
|
208
|
+
|
74
209
|
# Country select
|
75
210
|
def select_country_tag(name, options = {}, country_options = {})
|
76
211
|
country_options.reverse_merge! INPUT_OPTIONS[:select_country][:country_options]
|
77
212
|
|
78
213
|
options = INPUT_OPTIONS[:select_country][:html_options].deep_merge options
|
214
|
+
options[:class] ||= ' '
|
215
|
+
options[:class] += " #{label_class(:select)}"
|
79
216
|
|
80
|
-
content_tag(:label) do
|
217
|
+
content_tag(:label, class: options.delete(:class) ) do
|
81
218
|
country_select :user, :country, country_options, options
|
82
219
|
end
|
83
220
|
end
|
84
221
|
|
85
222
|
# Email inputs
|
86
223
|
def email_input_tag(name, value = nil, options = {})
|
87
|
-
|
224
|
+
input_tag(:email, name, value, options)
|
88
225
|
end
|
89
226
|
|
90
227
|
# Passowrd inputs
|
91
228
|
def password_input_tag(name, value = nil, options = {})
|
92
|
-
|
229
|
+
input_tag(:password, name, value, options)
|
93
230
|
end
|
94
231
|
|
95
232
|
def text_input_tag(name, value = nil, options = {})
|
96
|
-
|
233
|
+
input_tag(:text, name, value, options)
|
234
|
+
end
|
235
|
+
|
236
|
+
def url_input_tag(name, value = nil, options = {})
|
237
|
+
input_tag(:url, name, value, options)
|
238
|
+
end
|
239
|
+
|
240
|
+
def tel_input_tag(name, value = nil, options = {})
|
241
|
+
input_tag(:tel, name, value, options)
|
242
|
+
end
|
243
|
+
|
244
|
+
def textarea_tag(name, value = nil, options = {}, &block)
|
245
|
+
input_tag(:textarea, name, value, options, &block)
|
246
|
+
end
|
247
|
+
|
248
|
+
def number_input_tag(name, value = nil, options = {})
|
249
|
+
input_tag(:number, name, value, options)
|
250
|
+
end
|
251
|
+
|
252
|
+
def search_input_tag(name, value = nil, options = {})
|
253
|
+
input_tag(:search, name, value, options)
|
97
254
|
end
|
98
255
|
|
99
256
|
def card_number_tag(name, value=nil, options={})
|
100
|
-
|
257
|
+
input_tag(:card_number, name, value, options)
|
101
258
|
end
|
102
259
|
|
103
260
|
def card_month_tag(name, value=nil, options={})
|
104
|
-
|
261
|
+
input_tag(:card_month, name, value, options)
|
105
262
|
end
|
106
263
|
|
107
264
|
def card_year_tag(name, value=nil, options={})
|
108
|
-
|
265
|
+
input_tag(:card_year, name, value, options)
|
109
266
|
end
|
110
267
|
|
111
268
|
def card_cvc_tag(name, value=nil, options={})
|
112
|
-
|
269
|
+
input_tag(:card_cvc, name, value, options)
|
270
|
+
end
|
271
|
+
|
272
|
+
def radio_button_input_tag(name, value, checked = false, options = {})
|
273
|
+
|
274
|
+
if checked.is_a? Hash
|
275
|
+
options = checked
|
276
|
+
checked = false
|
277
|
+
end
|
278
|
+
|
279
|
+
options[:type] = :radio
|
280
|
+
|
281
|
+
tick_wrapper( name, options ) do
|
282
|
+
radio_button_tag(name, value, checked, options)
|
283
|
+
end
|
284
|
+
|
285
|
+
end
|
286
|
+
|
287
|
+
def checkbox_input_tag(name, checked = false, options = {})
|
288
|
+
value = true
|
289
|
+
|
290
|
+
if checked.is_a? Hash
|
291
|
+
options = checked
|
292
|
+
checked = false
|
293
|
+
end
|
294
|
+
|
295
|
+
options[:type] = :checkbox
|
296
|
+
|
297
|
+
tick_wrapper( name, options ) do
|
298
|
+
options.delete(:class)
|
299
|
+
concat tag :input, name: name, type: :hidden, value: false
|
300
|
+
concat check_box_tag(name, value, checked, options)
|
301
|
+
end
|
302
|
+
end
|
303
|
+
|
304
|
+
def select_input_tag(name, option_tags=nil, options={}, &block)
|
305
|
+
if option_tags.is_a? Hash
|
306
|
+
options = option_tags
|
307
|
+
option_tags = nil
|
308
|
+
end
|
309
|
+
|
310
|
+
options[:label] ||= options.delete(:label_placeholder)
|
311
|
+
|
312
|
+
option_tags ||= extract_block(&block) if block_given?
|
313
|
+
|
314
|
+
input_tag(:select, name, option_tags.html_safe, options)
|
315
|
+
end
|
316
|
+
|
317
|
+
def switch_input_tag(name, checked = false, options = {})
|
318
|
+
|
319
|
+
if checked.is_a? Hash
|
320
|
+
options = checked
|
321
|
+
checked = false
|
322
|
+
end
|
323
|
+
|
324
|
+
if label_text = options.delete(:label)
|
325
|
+
label_text = content_tag(:span, class: 'label-text') { label_text }
|
326
|
+
end
|
327
|
+
|
328
|
+
content_tag(:label, class: 'check-switch switch-label', data: { input: 'checkbox' }) do
|
329
|
+
concat tag :input, name: name, type: :hidden, value: false
|
330
|
+
concat label_text
|
331
|
+
concat check_box_tag(name, true, checked, options)
|
332
|
+
|
333
|
+
concat content_tag(:span, class: 'check-switch-panel') {
|
334
|
+
concat content_tag(:span, class: 'check-switch-tick') { '' }
|
335
|
+
}
|
336
|
+
|
337
|
+
concat content_tag(:span, class: 'check-switch-label') { 'Enable' }
|
338
|
+
end
|
339
|
+
|
113
340
|
end
|
114
341
|
|
115
342
|
private
|
116
343
|
|
117
|
-
def
|
344
|
+
def base_tag(name, value, options, type, &block)
|
345
|
+
case type
|
346
|
+
when :select
|
347
|
+
value = value.html_safe if value
|
348
|
+
select_tag(name, value, options)
|
349
|
+
when :textarea
|
350
|
+
value ||= extract_block(&block)
|
351
|
+
text_area_tag(name, value, options)
|
352
|
+
else
|
353
|
+
text_field_tag(name, value, options)
|
354
|
+
end
|
355
|
+
end
|
356
|
+
|
357
|
+
def input_tag(type, name, value, options=nil, &block)
|
358
|
+
type.to_sym! if type.is_a?( String )
|
359
|
+
|
118
360
|
if value.is_a? Hash
|
119
361
|
options = value
|
120
362
|
value = nil
|
121
363
|
end
|
122
364
|
|
123
365
|
options = (INPUT_OPTIONS[type]||{}).deep_merge options
|
366
|
+
options[:type] ||= type
|
124
367
|
|
125
|
-
label = options.delete(:label)
|
126
|
-
tag = text_field_tag(name, value, options)
|
127
368
|
|
128
|
-
|
129
|
-
options[:
|
369
|
+
label_options = {
|
370
|
+
class: "#{label_class(options[:type])} #{options.delete(:class)}"
|
371
|
+
}
|
130
372
|
|
131
|
-
|
132
|
-
|
133
|
-
|
373
|
+
if label_placeholder = options.delete(:label_placeholder)
|
374
|
+
options[:placeholder] = label_placeholder
|
375
|
+
label_placeholder = content_tag(:span, class: 'placeholder-label-text') { label_placeholder }
|
376
|
+
label_options[:class] += ' placeholder-label'
|
377
|
+
end
|
378
|
+
|
379
|
+
if !label_placeholder && label_text = options.delete(:label)
|
380
|
+
label_text = content_tag(:span, class: 'label-text') { label_text }
|
381
|
+
end
|
382
|
+
|
383
|
+
content_tag(:label, label_options) {
|
384
|
+
concat label_text
|
385
|
+
concat base_tag(name, value, options, type, &block)
|
386
|
+
concat label_placeholder
|
387
|
+
}
|
388
|
+
|
389
|
+
end
|
390
|
+
|
391
|
+
private
|
392
|
+
|
393
|
+
def label_class( type )
|
394
|
+
type = case type
|
395
|
+
when :tel, :password, :number, :url, :email, :search
|
396
|
+
"text"
|
397
|
+
when :checkbox, :radio
|
398
|
+
"tick"
|
134
399
|
else
|
135
|
-
|
400
|
+
type.to_s
|
136
401
|
end
|
137
402
|
|
403
|
+
"#{type}-label"
|
404
|
+
end
|
405
|
+
|
406
|
+
def tick_wrapper( name, options, &block )
|
407
|
+
|
408
|
+
tag = extract_block(&block)
|
409
|
+
|
410
|
+
tick = content_tag(:span, class: 'tick') {''}
|
411
|
+
label = content_tag(:span, class: 'label-text') { options.delete(:label) || name }
|
412
|
+
|
413
|
+
options[:class] ||= ' '
|
414
|
+
options[:class] << "#{label_class( options.delete(:type) )} tick-box"
|
415
|
+
|
416
|
+
content_tag(:label, options ) {
|
417
|
+
concat tag.html_safe
|
418
|
+
concat tick
|
419
|
+
concat content_tag(:span, class: 'label-text-wrapper') { label }
|
420
|
+
}
|
138
421
|
end
|
422
|
+
|
139
423
|
end
|
140
424
|
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
ruby:
|
2
|
+
activeColor = [
|
3
|
+
{ "name" => "azure" },
|
4
|
+
{ "name" => "byzantine" },
|
5
|
+
{ "name" => "mulberry" },
|
6
|
+
{ "name" => "majorelle" },
|
7
|
+
{ "name" => "caribbean" },
|
8
|
+
{ "name" => "grass" },
|
9
|
+
{ "name" => "gold" },
|
10
|
+
{ "name" => "tangelo" },
|
11
|
+
{ "name" => "rusty" }
|
12
|
+
]
|
13
|
+
|
14
|
+
passiveColor = [
|
15
|
+
{ "name" => "space" },
|
16
|
+
{ "name" => "shark" },
|
17
|
+
{ "name" => "steel" },
|
18
|
+
{ "name" => "pewter" },
|
19
|
+
{ "name" => "alabaster" },
|
20
|
+
{ "name" => "smoke" },
|
21
|
+
{ "name" => "white" }
|
22
|
+
]
|
23
|
+
|
24
|
+
gradient = [
|
25
|
+
{ "name" => "earthrise" },
|
26
|
+
{ "name" => "royalty" },
|
27
|
+
{ "name" => "lagoon" },
|
28
|
+
{ "name" => "pearlescent" },
|
29
|
+
{ "name" => "firestorm" },
|
30
|
+
{ "name" => "sunset" },
|
31
|
+
{ "name" => "berries" },
|
32
|
+
{ "name" => "supernova" },
|
33
|
+
{ "name" => "emerald" }
|
34
|
+
]
|
35
|
+
|
36
|
+
defs#svg-defs
|
37
|
+
|
38
|
+
// Active Colors
|
39
|
+
- activeColor.each do | a |
|
40
|
+
linearGradient id="#{a["name"]}" gradientUnits="objectBoundingBox"
|
41
|
+
stop offset="0"
|
42
|
+
|
43
|
+
// Passive Colors
|
44
|
+
- passiveColor.each do | a |
|
45
|
+
linearGradient id="#{a["name"]}" gradientUnits="objectBoundingBox"
|
46
|
+
stop offset="0"
|
47
|
+
|
48
|
+
// Standard Gradients
|
49
|
+
- gradient.each do | a |
|
50
|
+
linearGradient id="#{a["name"]}" gradientUnits="objectBoundingBox" gradientTransform="rotate(55)"
|
51
|
+
stop offset="0"
|
52
|
+
stop offset="1"
|
53
|
+
|
54
|
+
- gradient.each do | a |
|
55
|
+
linearGradient id="#{a["name"]}-darken" gradientUnits="objectBoundingBox" gradientTransform="rotate(55)"
|
56
|
+
stop offset="0"
|
57
|
+
stop offset="1"
|
58
|
+
|
59
|
+
- gradient.each do | a |
|
60
|
+
linearGradient id="#{a["name"]}-lighten" gradientUnits="objectBoundingBox" gradientTransform="rotate(55)"
|
61
|
+
stop offset="0"
|
62
|
+
stop offset="1"
|
63
|
+
|
64
|
+
// White
|
65
|
+
linearGradient#white gradientUnits="objectBoundingBox"
|
66
|
+
stop offset="0" style="stop-color:#FFFFFF"
|
67
|
+
stop offset="1" style="stop-color:#FFFFFF"
|
@@ -1,7 +1,9 @@
|
|
1
|
-
svg#icons style="display: none
|
1
|
+
svg#icons style="height: 0; width: 0; position: absolute; display: none" xmlns="http://www.w3.org/2000/svg" height="0" width="0"
|
2
|
+
|
3
|
+
= render "/shared/ratchet/defs"
|
2
4
|
|
3
5
|
/! Compose logo (viewBox="0 0 650 122")
|
4
|
-
symbol
|
6
|
+
symbol#compose-logo fill="currentColor"
|
5
7
|
path d="M325.4 28.6c-16.7 0-28.7 12.2-28.7 29s12.1 29 28.7 29c16.7 0 28.7-12.2 28.7-29 .1-16.8-12-29-28.7-29zm0 46.7c-9.5 0-16.1-7.3-16.1-17.7 0-10.6 6.5-17.7 16.1-17.7 9.5 0 16.1 7.3 16.1 17.7.1 10.4-6.6 17.7-16.1 17.7z"
|
6
8
|
polygon points="394.1,50.2 380.7,28.8 365,28.8 365,84.8 378,84.8 378,48.3 394.5,71.4 411,48.3 411,84.8 423,84.8 423,28.8 407.6,28.8"
|
7
9
|
path d="M461.3 28.8h-25.3v56h12v-18h13.3c11.1 0 18.9-8.3 18.9-19 .1-10.7-7.7-19-18.9-19zm-1.2 27h-12.1v-15h12.1c4.5 0 7.6 3.4 7.6 7.5s-3.1 7.5-7.6 7.5zM516.1 28.6c-16.7 0-28.7 12.2-28.7 29s12.1 29 28.7 29c16.7 0 28.7-12.2 28.7-29 .1-16.8-12-29-28.7-29zm0 46.7c-9.5 0-16.1-7.3-16.1-17.7 0-10.6 6.5-17.7 16.1-17.7 9.5 0 16.1 7.3 16.1 17.7 0 10.4-6.6 17.7-16.1 17.7zM576.9 50.7c-6.5-1.6-10.4-2.8-10.4-5.5 0-3.1 2.9-5.1 7.5-5.1 5.6 0 10.7 2 14.3 5.6l1.2 1.2 7.2-9.4-1-.9c-5.4-5.2-12.5-7.8-21-7.8-12.1 0-20.9 7.2-20.9 17 0 12.3 11 15.1 19.9 17.4 6.9 1.8 11.1 3.1 11.1 6.4 0 2.6-2.4 5.7-9.2 5.7-8.1 0-13.3-4.3-15.7-6.8l-1.3-1.3-7 9.7.9.9c5.5 5.8 13.3 8.9 22.7 8.9 16.3 0 22.1-9.3 22.1-17.9.2-12.9-11.7-15.9-20.4-18.1z"
|
@@ -23,11 +25,11 @@ svg#icons style="display: none;" xmlns="http://www.w3.org/2000/svg"
|
|
23
25
|
polygon points="122.1,88.1 155.2,107.8 155.2,73.5 122.1,54"
|
24
26
|
|
25
27
|
/! Ratchet logo (viewBox="0 0 600 120")
|
26
|
-
symbol
|
28
|
+
symbol#ratchet-logo fill="currentColor"
|
27
29
|
path d="M502.1 2.5h-105.1v39h-20v-39h-37v101.8l-16.8-30.2c-4.5 7.4-12.6 12.4-21.9 12.4-14.2 0-25.7-11.5-25.7-25.7s11.5-25.7 25.7-25.7c8.2 0 15.5 3.8 20.2 9.8l.6-1 18-31.7c-3.1-2.2-6.7-4.2-11-6-3.7-1.6-8-3-13.1-4.3-5-1.3-10.8-1.9-17.3-1.9-8.2 0-16 1.4-23.3 4.2-7.4 2.8-13.8 6.8-19.2 12.1-4.3 4.2-8 9-10.9 14.5 2.2-5.5 5.8-12.5 11.5-18.1 3.8-3.8 8.2-7.2 12.9-9.2h-156.2l-30.7 80.1 13.7 32.9h9.6l2.9-8h36.4l2.9 8h73.7v-77h19.5c-2.1 6.3-3.2 13.1-3.2 20.5 0 8.9 1.5 17.1 4.6 24.4 3.1 7.4 7.4 13.7 12.9 18.9 5.5 5.3 12 9.3 19.5 12.3 7.5 2.9 15.8 4.4 24.7 4.4 6.6 0 12.5-.7 17.7-2.1 5.1-1.4 9.3-2.9 13-4.5 3.6-1.7 7.3-3.5 9.3-5.6v9.6h37v-43h20v43h32l5.8-107.9.6 107.9h67.6v-37h-32v-7h19v-28h-19v-6h31v-36.2l6.3 36.3h23.7v78h38v-78h23.7l6.3-37h-97.9zm-379 71l4.2-10.9 4.2 10.9h-8.4zm19.3-66.4l18.4 32.4h23.2v76.1l-41.6-108.5zm-50.4 36.4c0-22.9-18.5-41-41.4-41h-50.6v114h37v-28.9l16.7 28.9h42.9l-22.4-39.4c10.7-7.4 17.8-19.5 17.8-33.6zm-50.1 13h-4.9v-21h4.9c5.4 0 9.7 4.7 9.8 10.5-.1 5.1-4.5 10.5-9.8 10.5zM293.8 73.7l-7.6-13.2 7.6-13.1h15l7.5 13.1-7.5 13.2h-15z"
|
28
30
|
|
29
31
|
/! Vertical Logo
|
30
|
-
symbol
|
32
|
+
symbol#vert-logo" fill="currentColor"
|
31
33
|
|
32
34
|
/ Compose
|
33
35
|
g transform="matrix(1,0,0,1,-545.032,-326.868)"
|
@@ -80,10 +82,55 @@ svg#icons style="display: none;" xmlns="http://www.w3.org/2000/svg"
|
|
80
82
|
polygon points="5.8,64.9 38.3,84.7 38.3,50.2 5.8,30.6"
|
81
83
|
polygon points="122.1,88.1 155.2,107.8 155.2,73.5 122.1,54"
|
82
84
|
|
83
|
-
/! Logomark
|
84
|
-
symbol
|
85
|
+
/! Logomark (viewBox="0 0 210 120")
|
86
|
+
symbol#compose-logomark fill="currentColor"
|
85
87
|
path d="M158.1 23.1h-.1l-38.8-22.6-38.3 22.3-39.3-22.8-41.6 24.2v44l80.3 46.8 38.4-22.2 39.4 22.8 41.9-24.2v-44l-41.9-24.3zm-.2 45.1l-32.9-19.1 33.2-19.4 32.9 19.3-33.2 19.2zm-77.9-38.8l33.2 19.2-32.8 19.1-33.1-19.3 32.7-19zm72.2-3l-32.5 18.9-33.1-19.2 32.6-19 33 19.3zm-77.5-.6l-6.7 3.9-27.1 15.3-32.3-19.2 33.1-19.2 33 19.2zm-68.9 4.8l32.5 19.6v34.6l-32.5-19.8v-34.4zm39 23l32.5 19.3v34.5l-32.5-19.3v-34.5zm77.3.4l33.1 19.5v34.2l-33.1-19.7v-34z"
|
86
88
|
g opacity=".5"
|
87
89
|
polygon points="44.8,88.2 77.3,107.3 77.3,72.9 44.8,53.6"
|
88
90
|
polygon points="5.8,64.9 38.3,84.7 38.3,50.2 5.8,30.6"
|
89
91
|
polygon points="122.1,88.1 155.2,107.8 155.2,73.5 122.1,54"
|
92
|
+
|
93
|
+
/! Icon Placeholder (viewBox="0 0 48 48")
|
94
|
+
symbol id="icon-placeholder" fill="currentColor"
|
95
|
+
path id="XMLID_1_" class="st0" d="M45,48H3c-1.6,0-3-1.3-3-3V3c0-1.6,1.4-3,3-3h42c1.7,0,3,1.4,3,3v42C48,46.7,46.7,48,45,48z"
|
96
|
+
/! Search Icon
|
97
|
+
symbol#search-icon fill="currentColor" viewbox="0 0 38 38"
|
98
|
+
path d="M26.7 25.1l-3.7-3.8c.7-1.1 1.2-2.4 1.2-3.8-.1-3.6-3-6.5-6.7-6.5-3.6 0-6.6 2.9-6.6 6.6s3 6.6 6.6 6.6c1.4 0 2.7-.5 3.8-1.2l3.7 3.7c.2.2.5.3.9.3.3 0 .6-.1.9-.3.3-.4.3-1.2-.1-1.6m-9.1-2.6c-2.7 0-4.9-2.2-4.9-4.9s2.2-4.9 4.9-4.9 4.9 2.2 4.9 4.9-2.2 4.9-4.9 4.9"
|
99
|
+
|
100
|
+
/! Twitter Icon
|
101
|
+
symbol#twitter fill="currentColor" viewbox="0 0 38 38"
|
102
|
+
path d="M27 12.4c-.7.4-1.4.6-2.2.8-.6-.7-1.5-1.1-2.5-1.1-2.3 0-3.9 2.1-3.4 4.3-2.9-.1-5.5-1.5-7.2-3.6-.9 1.5-.4 3.6 1.1 4.6-.6 0-1.1-.1-1.6-.4 0 1.7 1.1 3.2 2.8 3.5-.5.2-1.1.2-1.6.1.4 1.4 1.7 2.4 3.2 2.4-1.5 1.1-3.4 1.6-5.2 1.4 1.5 1 3.3 1.6 5.3 1.6 6.5 0 10.1-5.4 9.9-10.3.7-.5 1.3-1.1 1.9-1.9-.6.2-1.3.4-2 .5.7-.4 1.3-1.2 1.5-1.9z"
|
103
|
+
|
104
|
+
/! Facebook Icon
|
105
|
+
symbol#facebook fill="currentColor" viewbox="0 0 38 38"
|
106
|
+
path d="M21.4 12.8h2.1v-3.4h-2.7c-2.9 0-4.2 1.3-4.2 3.7v2.6h-2v3.3h2v9.6h3.9v-9.7h2.7l.3-3.2h-3v-1.8c0-.8.2-1.1.9-1.1z"
|
107
|
+
|
108
|
+
/! Y Combinator Icon
|
109
|
+
symbol#y-combinator fill="currentColor" viewbox="0 0 38 38"
|
110
|
+
path d="M22.4 10.9h3.8l-5.3 10v6h-3.3v-6l-5.5-10h3.9l3.3 7 3.1-7z"
|
111
|
+
|
112
|
+
/! LinkedIn Icon
|
113
|
+
symbol#linkedin fill="currentColor" viewbox="0 0 38 38"
|
114
|
+
rect x="11.6" y="15.5" width="3.4" height="10.8"
|
115
|
+
ellipse cx="13.3" cy="12.1" rx="2" ry="2"
|
116
|
+
path d="M27.5 26.4v-6.9c0-2.9-1.6-4.3-3.9-4.3s-3.3 1.8-3.3 1.8v-1.5h-3.2v10.8h3.2v-5.7c0-1.5.7-2.4 2-2.4 1.2 0 1.8.9 1.8 2.4v5.7h3.4z"
|
117
|
+
|
118
|
+
/! Github Icon
|
119
|
+
symbol#github fill="currentColor" viewbox="0 0 38 38"
|
120
|
+
path d="M23 35.9v-4.5c0-1.6-.5-2.5-1.1-3 3.6-.4 7.5-1.8 7.5-8.1 0-1.8-.6-3.3-1.7-4.4.2-.4.7-2.1-.2-4.3 0 0-1.4-.4-4.5 1.6-1.3-.3-2.7-.5-4.2-.5-1.4 0-2.8.2-4.2.5-3.1-2.1-4.5-1.6-4.5-1.6-.9 2.3-.3 3.9-.2 4.3-1 1.1-1.7 2.6-1.7 4.4 0 6.3 3.8 7.7 7.4 8.1-.4.4-.9 1.1-1 2.2-1 .4-3.3 1.1-4.8-1.4 0 0-.9-1.6-2.5-1.7 0 0-1.6 0-.1 1 0 0 1 .5 1.8 2.4 0 0 1 2.9 5.5 1.9v3c0 .4-.3 1-1 .8 1.6.5 3.4.9 5.2.9 1.8 0 3.5-.3 5.2-.9-.6.3-.9-.2-.9-.7z"
|
121
|
+
|
122
|
+
/! Google Plus Icon
|
123
|
+
symbol#google-plus fill="currentColor" viewBox="0 0 38 38"
|
124
|
+
path d="M14 18v2.4h3.97c-.16 1.029-1.2 3.02-3.97 3.02-2.39 0-4.34-1.979-4.34-4.42 0-2.44 1.95-4.42 4.34-4.42 1.36 0 2.27.58 2.79 1.08l1.9-1.83c-1.22-1.14-2.8-1.83-4.69-1.83-3.87 0-7 3.13-7 7s3.13 7 7 7c4.04 0 6.721-2.84 6.721-6.84 0-.46-.051-.81-.111-1.16h-6.61zm0 0l17 2h-3v3h-2v-3h-3v-2h3v-3h2v3h3v2l-17-2z"
|
125
|
+
|
126
|
+
/! YouTube Icon
|
127
|
+
symbol#youtube fill="currentColor" viewBox="0 0 38 38"
|
128
|
+
path d="M29.3,14.8c0,0-0.2-1.4-0.8-2.1c-0.8-0.8-1.7-0.8-2.1-0.9c-2.9-0.2-7.3-0.2-7.3-0.2h0 c0,0-4.4,0-7.3,0.2c-0.4,0-1.3,0.1-2.1,0.9c-0.6,0.6-0.8,2.1-0.8,2.1s-0.2,1.7-0.2,3.4v1.6c0,1.7,0.2,3.4,0.2,3.4 s0.2,1.4,0.8,2.1c0.8,0.8,1.8,0.8,2.3,0.9c1.7,0.2,7.1,0.2,7.1,0.2s4.4,0,7.3-0.2c0.4,0,1.3-0.1,2.1-0.9c0.6-0.6,0.8-2.1,0.8-2.1 s0.2-1.7,0.2-3.4v-1.6C29.5,16.5,29.3,14.8,29.3,14.8z M16.8,21.7l0-5.9l5.7,3L16.8,21.7z"
|
129
|
+
|
130
|
+
/! Subscribe Icon
|
131
|
+
symbol#subscribe fill="currentColor" viewBox="0 0 38 38"
|
132
|
+
path d="M21.6 26.9c0-5.8-4.7-10.5-10.5-10.5v3.2c4 0 7.3 3.3 7.3 7.3h3.2zm-6.2-2.2c0-1.2-1-2.2-2.2-2.2-1.2 0-2.2 1-2.2 2.2s1 2.2 2.2 2.2c1.2 0 2.2-.9 2.2-2.2zm11.6 2.3c0-8.8-7.1-16-15.9-16v3.2c3.4 0 6.6 1.3 9 3.7s3.7 5.6 3.7 9l3.2.1z"
|
133
|
+
|
134
|
+
/! Index Icon
|
135
|
+
symbol#index" stroke="currentColor" fill="none" stroke-width=".75" stroke-linecap="round" viewBox="0 0 15 13"
|
136
|
+
path d="M7.5 2.606c0-1.233 3.335-2.231 7.125-2.231v9.939c-3.79 0-7.125.828-7.125 2.061 0-1.233-3.335-2.061-7.125-2.061v-9.939c3.79 0 7.125.998 7.125 2.231zm0 0v9.769m-1.619-9.036c-1.043-.393-2.518-.677-4.211-.79m4.211 2.703c-1.043-.393-2.518-.677-4.211-.791m4.211 2.703c-1.043-.393-2.518-.677-4.211-.79m4.211 2.703c-1.043-.393-2.518-.677-4.211-.791m7.449-4.947c1.044-.393 2.518-.677 4.211-.79m-4.211 2.703c1.044-.393 2.518-.677 4.211-.791m-4.211 2.703c1.044-.393 2.518-.677 4.211-.79m-4.211 2.703c1.044-.393 2.518-.677 4.211-.791"
|