ratchet_design 0.1.12 → 0.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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"
|