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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/ratchet/base/form.js +9 -3
  3. data/app/assets/javascripts/ratchet/base/sync-input-value.js +9 -18
  4. data/app/assets/javascripts/ratchet/core.js +9 -3
  5. data/app/assets/javascripts/ratchet/enhancement/lightbox.js +6 -6
  6. data/app/assets/javascripts/ratchet/enhancement/mapbox.js +48 -0
  7. data/app/assets/stylesheets/ratchet/_core.scss +4 -2
  8. data/app/assets/stylesheets/ratchet/base/_button.scss +15 -14
  9. data/app/assets/stylesheets/ratchet/base/_document.scss +30 -66
  10. data/app/assets/stylesheets/ratchet/base/_form.scss +162 -529
  11. data/app/assets/stylesheets/ratchet/base/_label-placeholder.scss +97 -0
  12. data/app/assets/stylesheets/ratchet/base/_media.scss +1 -1
  13. data/app/assets/stylesheets/ratchet/base/_multistep-form.scss +65 -11
  14. data/app/assets/stylesheets/ratchet/base/_section.scss +284 -0
  15. data/app/assets/stylesheets/ratchet/base/_table.scss +4 -4
  16. data/app/assets/stylesheets/ratchet/base/_text.scss +50 -45
  17. data/app/assets/stylesheets/ratchet/base/_validation.scss +83 -0
  18. data/app/assets/stylesheets/ratchet/enhancement/_hero.scss +39 -39
  19. data/app/assets/stylesheets/ratchet/utility/_color.scss +135 -0
  20. data/app/assets/stylesheets/ratchet/utility/_global.scss +21 -40
  21. data/app/assets/stylesheets/ratchet/utility/_loader.scss +1 -1
  22. data/app/helpers/ratchet/application_helper.rb +16 -10
  23. data/app/helpers/ratchet/form_helper.rb +302 -18
  24. data/app/views/layouts/ratchet/default.html.slim +2 -2
  25. data/app/views/shared/ratchet/_defs.html.slim +67 -0
  26. data/app/views/shared/ratchet/_footer.html.slim +6 -0
  27. data/app/views/shared/ratchet/_header.html.slim +5 -0
  28. data/app/views/shared/ratchet/_icons.html.slim +53 -6
  29. data/lib/ratchet_design/version.rb +1 -1
  30. data/public/{core-0.1.12.js → core-0.1.13.js} +66 -66
  31. data/public/core-0.1.13.js.gz +0 -0
  32. data/public/core-0.1.13.map.json +1 -0
  33. data/public/{fonts-woff-0.1.12.css → fonts-woff-0.1.13.css} +0 -0
  34. data/public/{fonts-woff-0.1.12.css.gz → fonts-woff-0.1.13.css.gz} +0 -0
  35. data/public/{fonts-woff2-0.1.12.css → fonts-woff2-0.1.13.css} +0 -0
  36. data/public/{fonts-woff2-0.1.12.css.gz → fonts-woff2-0.1.13.css.gz} +0 -0
  37. metadata +36 -32
  38. data/app/assets/javascripts/ratchet/utility/loader.js +0 -84
  39. data/app/assets/stylesheets/ratchet/enhancement/_contrast-section.scss +0 -22
  40. data/public/core-0.1.12.js.gz +0 -0
  41. 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
- base_input_tag(name, value, options, :email)
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
- base_input_tag(name, value, options, :password)
229
+ input_tag(:password, name, value, options)
93
230
  end
94
231
 
95
232
  def text_input_tag(name, value = nil, options = {})
96
- base_input_tag(name, value, options, :text)
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
- base_input_tag(name, value, options, :card_number)
257
+ input_tag(:card_number, name, value, options)
101
258
  end
102
259
 
103
260
  def card_month_tag(name, value=nil, options={})
104
- base_input_tag(name, value, options, :card_month)
261
+ input_tag(:card_month, name, value, options)
105
262
  end
106
263
 
107
264
  def card_year_tag(name, value=nil, options={})
108
- base_input_tag(name, value, options, :card_year)
265
+ input_tag(:card_year, name, value, options)
109
266
  end
110
267
 
111
268
  def card_cvc_tag(name, value=nil, options={})
112
- base_input_tag(name, value, options, :card_cvc)
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 base_input_tag(name, value, options, type)
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
- if label
129
- options[:placeholder] = label
369
+ label_options = {
370
+ class: "#{label_class(options[:type])} #{options.delete(:class)}"
371
+ }
130
372
 
131
- content_tag(:label) do
132
- tag + content_tag(:span) { label }
133
- end
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
- tag
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
@@ -41,11 +41,11 @@ html
41
41
  / Head
42
42
  = yield :head
43
43
 
44
- body class=page_classes
44
+ body class=page_class
45
45
 
46
46
  / Icon inclusion
47
47
  = render "shared/ratchet/icons"
48
-
48
+
49
49
  - if content_for?(:blank)
50
50
 
51
51
  = yield :blank
@@ -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,3 +1,9 @@
1
+ / Render Ratchet footer
1
2
  - if content_for?(:footer)
2
3
  footer role="contentinfo"
3
4
  = yield :footer
5
+
6
+ / Render Kraken footer
7
+ - else
8
+ footer.kraken role="contentinfo"
9
+ = render "pages/kraken/partials/footer"
@@ -13,3 +13,8 @@ header role="banner"
13
13
  / Main site navigation
14
14
  nav.main-nav role="navigation"
15
15
  = yield :top_nav
16
+
17
+ - if content_for?(:app_nav)
18
+
19
+ nav.app-nav role="navigation"
20
+ = yield :app_nav
@@ -1,7 +1,9 @@
1
- svg#icons style="display: none;" xmlns="http://www.w3.org/2000/svg"
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 id="compose-logo" fill="currentColor"
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 id="ratchet-logo" fill="currentColor"
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 id="vert-logo" fill="currentColor"
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 id="logomark" fill="currentColor"
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"
@@ -1,3 +1,3 @@
1
1
  module RatchetDesign
2
- VERSION = "0.1.12"
2
+ VERSION = "0.1.13"
3
3
  end