bookends 0.6.0 → 2.0.0

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.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/README.md +28 -24
  4. data/Rakefile +7 -3
  5. data/bin/bookends +5 -0
  6. data/bookends.gemspec +5 -2
  7. data/fixtures/dummy-jekyll/README.md +64 -0
  8. data/fixtures/dummy-jekyll/_config.yml +8 -0
  9. data/fixtures/dummy-jekyll/_layouts/default.html +118 -0
  10. data/fixtures/dummy-jekyll/_layouts/post.html +14 -0
  11. data/fixtures/dummy-jekyll/_sass/_base.scss +478 -0
  12. data/fixtures/dummy-jekyll/_sass/_google-cse.scss +372 -0
  13. data/fixtures/dummy-jekyll/_sass/_header.scss +780 -0
  14. data/fixtures/dummy-jekyll/_sass/_legacy.scss +567 -0
  15. data/fixtures/dummy-jekyll/_sass/_menu-icon.scss +68 -0
  16. data/fixtures/dummy-jekyll/_sass/_mixins.scss +12 -0
  17. data/fixtures/dummy-jekyll/_sass/_search.scss +51 -0
  18. data/{lib/generators/bookends/install/templates/footer.scss → fixtures/dummy-jekyll/_sass/bookends/_footer.scss} +0 -0
  19. data/fixtures/dummy-jekyll/_sass/mixins/_background-image.scss +48 -0
  20. data/fixtures/dummy-jekyll/_sass/mixins/_border-radius.scss +22 -0
  21. data/fixtures/dummy-jekyll/_sass/mixins/_box-sizing.scss +4 -0
  22. data/fixtures/dummy-jekyll/_sass/mixins/_hide-text.scss +5 -0
  23. data/fixtures/dummy-jekyll/_sass/mixins/_hidpi.scss +10 -0
  24. data/fixtures/dummy-jekyll/_sass/mixins/_linear-gradient.scss +41 -0
  25. data/fixtures/dummy-jekyll/_sass/mixins/_prefixer.scss +49 -0
  26. data/fixtures/dummy-jekyll/_sass/mixins/_responsiveness.scss +129 -0
  27. data/fixtures/dummy-jekyll/_sass/mixins/_retina-image.scss +31 -0
  28. data/fixtures/dummy-jekyll/_sass/mixins/_size.scss +44 -0
  29. data/fixtures/dummy-jekyll/_sass/mixins/_transition.scss +34 -0
  30. data/fixtures/dummy-jekyll/_sass/mixins/_triangle.scss +45 -0
  31. data/fixtures/dummy-jekyll/app.json +15 -0
  32. data/fixtures/dummy-jekyll/bin/from-gdoc +3 -0
  33. data/fixtures/dummy-jekyll/bin/platform-setup +15 -0
  34. data/fixtures/dummy-jekyll/feed.xml +34 -0
  35. data/fixtures/dummy-jekyll/index.html +40 -0
  36. data/fixtures/dummy-jekyll/static.json +3 -0
  37. data/fixtures/dummy-rails/README.md +9 -0
  38. data/fixtures/dummy-rails/Rakefile +6 -0
  39. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-book.eot +0 -0
  40. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-book.svg +400 -0
  41. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-book.ttf +0 -0
  42. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-book.woff +0 -0
  43. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-medium.eot +0 -0
  44. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-medium.svg +416 -0
  45. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-medium.ttf +0 -0
  46. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-medium.woff +0 -0
  47. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-regular.eot +0 -0
  48. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-regular.svg +416 -0
  49. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-regular.ttf +0 -0
  50. data/fixtures/dummy-rails/app/assets/fonts/bentonsans-regular.woff +0 -0
  51. data/fixtures/dummy-rails/app/assets/images/.keep +0 -0
  52. data/{lib/generators/bookends/install/templates/footer_images → fixtures/dummy-rails/app/assets/images/bookends/footer}/footer_sprite.png +0 -0
  53. data/{lib/generators/bookends/install/templates/footer_images → fixtures/dummy-rails/app/assets/images/bookends/footer}/footer_sprite@2x.png +0 -0
  54. data/{lib/generators/bookends/install/templates/footer_images → fixtures/dummy-rails/app/assets/images/bookends/footer}/salesforce_heroku_gray.png +0 -0
  55. data/fixtures/dummy-rails/app/assets/javascripts/application.js +15 -0
  56. data/fixtures/dummy-rails/app/assets/stylesheets/application.css.scss +11 -0
  57. data/fixtures/dummy-rails/app/controllers/application_controller.rb +5 -0
  58. data/fixtures/dummy-rails/app/controllers/concerns/.keep +0 -0
  59. data/fixtures/dummy-rails/app/controllers/pages_controller.rb +5 -0
  60. data/fixtures/dummy-rails/app/helpers/application_helper.rb +2 -0
  61. data/fixtures/dummy-rails/app/mailers/.keep +0 -0
  62. data/fixtures/dummy-rails/app/models/.keep +0 -0
  63. data/fixtures/dummy-rails/app/models/concerns/.keep +0 -0
  64. data/fixtures/dummy-rails/app/views/layouts/application.html.erb +16 -0
  65. data/fixtures/dummy-rails/app/views/pages/home.html.erb +1 -0
  66. data/fixtures/dummy-rails/bin/bundle +3 -0
  67. data/fixtures/dummy-rails/bin/rails +4 -0
  68. data/fixtures/dummy-rails/bin/rake +4 -0
  69. data/fixtures/dummy-rails/bin/setup +29 -0
  70. data/fixtures/dummy-rails/config/application.rb +34 -0
  71. data/fixtures/dummy-rails/config/boot.rb +5 -0
  72. data/fixtures/dummy-rails/config/database.yml +25 -0
  73. data/fixtures/dummy-rails/config/environment.rb +5 -0
  74. data/fixtures/dummy-rails/config/environments/development.rb +41 -0
  75. data/fixtures/dummy-rails/config/environments/production.rb +79 -0
  76. data/fixtures/dummy-rails/config/environments/test.rb +42 -0
  77. data/fixtures/dummy-rails/config/initializers/assets.rb +11 -0
  78. data/fixtures/dummy-rails/config/initializers/backtrace_silencers.rb +7 -0
  79. data/fixtures/dummy-rails/config/initializers/cookies_serializer.rb +3 -0
  80. data/fixtures/dummy-rails/config/initializers/filter_parameter_logging.rb +4 -0
  81. data/fixtures/dummy-rails/config/initializers/inflections.rb +16 -0
  82. data/fixtures/dummy-rails/config/initializers/mime_types.rb +4 -0
  83. data/fixtures/dummy-rails/config/initializers/session_store.rb +3 -0
  84. data/fixtures/dummy-rails/config/initializers/wrap_parameters.rb +14 -0
  85. data/fixtures/dummy-rails/config/locales/en.yml +23 -0
  86. data/fixtures/dummy-rails/config/routes.rb +6 -0
  87. data/fixtures/dummy-rails/config/secrets.yml +22 -0
  88. data/fixtures/dummy-rails/config.ru +4 -0
  89. data/fixtures/dummy-rails/db/development.sqlite3 +0 -0
  90. data/fixtures/dummy-rails/lib/assets/.keep +0 -0
  91. data/fixtures/dummy-rails/log/.keep +0 -0
  92. data/fixtures/dummy-rails/log/development.log +1893 -0
  93. data/fixtures/dummy-rails/public/404.html +67 -0
  94. data/fixtures/dummy-rails/public/422.html +67 -0
  95. data/fixtures/dummy-rails/public/500.html +66 -0
  96. data/fixtures/dummy-rails/public/favicon.ico +0 -0
  97. data/lib/bookends/cli.rb +88 -0
  98. data/lib/bookends/config/framework.rb +24 -0
  99. data/lib/bookends/config/turbolinks.rb +18 -0
  100. data/lib/bookends/file_actions.rb +13 -0
  101. data/lib/bookends/jekyll_handler.rb +21 -0
  102. data/lib/bookends/rails_handler.rb +30 -0
  103. data/lib/{generators/bookends/install/templates/footer.html.erb → bookends/templates/footer.html} +18 -18
  104. data/lib/bookends/templates/footer.scss +403 -0
  105. data/lib/bookends/templates/footer_images/footer_sprite.png +0 -0
  106. data/lib/bookends/templates/footer_images/footer_sprite@2x.png +0 -0
  107. data/lib/bookends/templates/footer_images/salesforce.png +0 -0
  108. data/lib/bookends/templates/newsletter-init-turbolinks.js +6 -0
  109. data/lib/bookends/templates/newsletter-init.js +6 -0
  110. data/lib/{generators/bookends/install → bookends}/templates/newsletter.js +0 -4
  111. data/lib/bookends/version.rb +1 -1
  112. data/lib/bookends.rb +1 -1
  113. metadata +138 -11
  114. data/lib/generators/bookends/install/install_generator.rb +0 -21
@@ -0,0 +1,478 @@
1
+ // https://github.com/kennethormandy/my-harp-blog/edit/master/main.less#
2
+
3
+ $text-color: #4c4c4c;
4
+ $light-text-color: #858585;
5
+ $primary-color: #6e5baa;
6
+ $error-color: #e65252;
7
+ $secondary-color: #4A90E2;
8
+ $gray-bg: #F6F6F6;
9
+ $color-indigo: #211746;
10
+
11
+ $border-color: #e1e1e1;
12
+ $gray-border: #EBEBEB;
13
+
14
+ $faded-purple: #8a7eb1;
15
+ $faded-blue: #79bbe7;
16
+ $faded-green: #89c061;
17
+
18
+ // Mobile thresholds
19
+ $mobile-threshold: 320px;
20
+ $mobile-landscape-threshold: 568px;
21
+ $mobile-max-width: 288px;
22
+ $tablet-threshold: 768px;
23
+ $tablet-landscape-threshold: 1024px;
24
+ $large-screen-threshold: 2000px;
25
+
26
+ $border-radius: 3px;
27
+
28
+ $wrapper-width: 94%;
29
+ $wrapper-max-width: 1060px;
30
+
31
+ @import 'mixins';
32
+ @import 'legacy';
33
+ @import 'search';
34
+ @import 'header';
35
+ @import 'menu-icon';
36
+ @import 'bookends/footer';
37
+
38
+ @font-face {
39
+ font-family: 'proxima-nova';
40
+ src: url('/assets/fonts/ProximaNova/proxima_nova_reg-webfont.eot');
41
+ src: url('/assets/fonts/ProximaNova/proxima_nova_reg-webfont.eot?#iefix') format('embedded-opentype'),
42
+ url('/assets/fonts/ProximaNova/proxima_nova_reg-webfont.woff') format('woff'),
43
+ url('/assets/fonts/ProximaNova/proxima_nova_reg-webfont.ttf') format('truetype'),
44
+ url('/assets/fonts/ProximaNova/ proxima_nova_reg-webfont.svg#proxima_novaregular') format('svg');
45
+ font-weight: normal;
46
+ font-style: normal;
47
+ }
48
+
49
+ @mixin hidpi($ratio: 1.3) {
50
+ @media only screen and (-webkit-min-device-pixel-ratio: $ratio),
51
+ only screen and (min--moz-device-pixel-ratio: $ratio),
52
+ only screen and (-o-min-device-pixel-ratio: #{$ratio}/1),
53
+ only screen and (min-resolution: #{round($ratio*96)}dpi),
54
+ only screen and (min-resolution: #{$ratio}dppx) {
55
+ @content;
56
+ }
57
+ }
58
+
59
+ @mixin hide-text {
60
+ color: transparent;
61
+ font: 0/0 a;
62
+ text-shadow: none;
63
+ }
64
+
65
+ @mixin screen($threshold: max-width, $screen: $tablet-threshold) {
66
+ @media ($threshold: $screen) {
67
+ @content;
68
+ }
69
+ }
70
+
71
+ @mixin clearfix {
72
+ *zoom: 1;
73
+
74
+ &:before,
75
+ &:after {
76
+ content: " ";
77
+ display: table;
78
+ }
79
+
80
+ &:after {
81
+ clear: both;
82
+ }
83
+ }
84
+
85
+ // base style overrides
86
+ div.container-fluid {
87
+
88
+ margin: 0 auto;
89
+ padding: 1.25em 1.25em 5em 1.25em;
90
+ max-width: 66.25em;
91
+
92
+ ul, ol {
93
+ padding-left: 0;
94
+ }
95
+
96
+ ul, li {
97
+ }
98
+
99
+ h1 {
100
+ color: #6e5baa;
101
+ line-height: normal;
102
+ }
103
+
104
+ address {
105
+ display: inline;
106
+ }
107
+
108
+ time {
109
+ display: inline;
110
+ }
111
+
112
+ article {
113
+
114
+ margin: 20px 0 0 0;
115
+
116
+ h2 {
117
+ padding: 0;
118
+ margin: 0;
119
+ }
120
+
121
+ header {
122
+ background-color: transparent;
123
+ }
124
+
125
+ .byline {
126
+ padding: 10px 0 0 0;
127
+ }
128
+ }
129
+
130
+ .byline {
131
+ color: #999;
132
+ margin: 0 0 20px 0;
133
+ }
134
+ }
135
+
136
+ .wrapper {
137
+ @include clearfix();
138
+ position: relative;
139
+ width: $wrapper-width;
140
+ max-width: $wrapper-max-width;
141
+ padding: 2em 0;
142
+ margin: 0 auto;
143
+ }
144
+
145
+ .wrapper-full {
146
+ padding: 20px;
147
+ width: 100%;
148
+ max-width: none;
149
+ }
150
+
151
+ pre {
152
+ padding: 0.75em;
153
+ border-radius: 0.15em;
154
+ background: #444;
155
+ word-break: break-all;
156
+ word-wrap: break-word;
157
+ code {
158
+ color: #CFCFCF;
159
+ }
160
+ }
161
+
162
+ code {
163
+ font-family: "Source Code Pro", Menlo, monospace;
164
+ font-size: 90%;
165
+ }
166
+
167
+
168
+ #heroku-footer {
169
+
170
+ $asset-path: '/assets/images';
171
+
172
+ $color-header: #211746;
173
+ $color-purple: #6e5baa;
174
+ $color-link: #999;
175
+ $color-background: #f0f0f0;
176
+ $color-border: darken($color-background, 10%);
177
+
178
+ $threshold-tablet: 900px;
179
+ $threshold-mobile: 700px;
180
+
181
+ padding-top: 15px;
182
+ background: $color-background;
183
+ box-shadow: 0 1px 1px 0 fade-out($color-background, .9) inset;
184
+ font-size: 13px;
185
+ color: #999;
186
+ line-height: 1.8em;
187
+ -webkit-font-smoothing: antialiased;
188
+
189
+ * {
190
+ // @include box-sizing(border-box);
191
+ }
192
+
193
+ a:link,
194
+ a:visited {
195
+ color: $color-link;
196
+ text-decoration: none;
197
+ }
198
+
199
+ a:hover,
200
+ a:active {
201
+ color: darken($color-link, 30%);
202
+ }
203
+
204
+ ul {
205
+ list-style: none;
206
+ padding-left: 0;
207
+ font-weight: 200;
208
+ }
209
+
210
+ h1,
211
+ h2,
212
+ h3,
213
+ h4,
214
+ h5 {
215
+ line-height: 1.1em;
216
+ padding: 0;
217
+ }
218
+
219
+ h3 {
220
+ color: $color-purple;
221
+ font-size: 14px;
222
+ font-weight: 500;
223
+ }
224
+
225
+ h4 {
226
+ margin: 1.33em 0;
227
+ font-size: 12px;
228
+ text-align: left;
229
+ font-weight: bold;
230
+ text-transform: uppercase;
231
+ letter-spacing: .1em;
232
+ color: $color-header;
233
+
234
+ @include screen($screen: $threshold-mobile) {
235
+ text-align: center;
236
+ }
237
+ }
238
+
239
+ .tertiary {
240
+ background: fade-out(white, .6);
241
+ @include screen() {
242
+ text-align: center;
243
+ }
244
+
245
+ a:link,
246
+ a:visited {
247
+ text-decoration: underline;
248
+ }
249
+
250
+ .col {
251
+ width: 50%;
252
+ }
253
+ }
254
+
255
+ .col {
256
+ display: block;
257
+ float: left;
258
+
259
+ ul {
260
+ margin: 1em 0;
261
+ }
262
+
263
+ li {
264
+ margin: 0;
265
+ }
266
+ }
267
+
268
+ .wrapper {
269
+
270
+ .col {
271
+ @include screen() {
272
+ float: none;
273
+ width: 100%;
274
+ }
275
+ }
276
+ }
277
+
278
+ .heroku-footer-links {
279
+ @include clearfix();
280
+ width: 70%;
281
+
282
+ .col {
283
+ width: 25%;
284
+ padding-right: 2%;
285
+ @include screen($screen: $threshold-mobile) {
286
+ width: auto;
287
+ padding-right: 0;
288
+ text-align: center;
289
+ }
290
+ }
291
+ }
292
+
293
+ .heroku-footer-social {
294
+ width: 30%;
295
+ @include screen() {
296
+ border-top: 1px solid $color-border;
297
+ text-align: center;
298
+ margin-top: 30px;
299
+ padding-top: 10px;
300
+ }
301
+
302
+ h3 {
303
+ margin: 7px 0 15px;
304
+ text-align: left;
305
+ span {
306
+ margin-right: 6px;
307
+ top: 4px;
308
+ }
309
+ }
310
+
311
+ // This has been commented out because the form is styled inside of Pardot.
312
+ // See template "Newsletter Signup - WWW Footer" to style the newsletter form.
313
+
314
+ // form {
315
+ // $input-height: 40px;
316
+
317
+ // position: relative;
318
+ // width: 100%;
319
+ // padding-bottom: 10px;
320
+ // @include screen(min-width, $threshold-tablet) {
321
+ // border-bottom: 1px solid $color-border;
322
+ // }
323
+
324
+ // input[type="text"],
325
+ // input[type="email"], {
326
+ // -webkit-appearance: none;
327
+ // width: 100%;
328
+ // height: $input-height;
329
+ // padding: 0 10px;
330
+ // border-radius: 4px;
331
+ // border: 1px solid $color-border;
332
+ // box-shadow: 0 0 4px fade-out($color-purple, 1);
333
+ // transition: all .2s ease;
334
+ // -webkit-transition: all .2s ease;
335
+ // &:focus {
336
+ // outline: none;
337
+ // box-shadow: 0 0 4px fade-out($color-purple, .5);
338
+ // border-color: $color-purple;
339
+ // }
340
+ // }
341
+
342
+ // button {
343
+ // -webkit-appearance: none;
344
+ // position: absolute;
345
+ // top: 0;
346
+ // right: 0;
347
+ // width: $input-height;
348
+ // height: $input-height;
349
+ // border: 0;
350
+ // background-color: transparent;
351
+ // border-radius: 3px;
352
+ // &:focus {
353
+ // outline: none;
354
+ // border: 1px solid fade-out($color-purple, .5);
355
+ // }
356
+ // }
357
+ // }
358
+
359
+ .social-list {
360
+ margin: 0;
361
+ li {
362
+ display: inline-block;
363
+ margin-right: 5px;
364
+ }
365
+ }
366
+
367
+ iframe {
368
+ position: relative;
369
+ width: 100%;
370
+ margin: 0;
371
+
372
+ @include screen(min-width, $threshold-tablet) {
373
+ border-bottom: 1px solid $color-border;
374
+ }
375
+ }
376
+
377
+ }
378
+
379
+ .tertiary {
380
+ p {
381
+ margin: 1em 0;
382
+ padding: 0;
383
+ font-size: 13px;
384
+ color: #999;
385
+ }
386
+ ul {
387
+ margin: 13px 0 10px;
388
+ float: right;
389
+ @include screen() {
390
+ float: none;
391
+ }
392
+ }
393
+
394
+ li {
395
+ display: inline-block;
396
+ margin-right: 7px;
397
+ @include screen() {
398
+ &:last-child {
399
+ margin-right: 0;
400
+ }
401
+ }
402
+ a {
403
+ display: block;
404
+ }
405
+ }
406
+ }
407
+
408
+ .sfdc-heroku-logo {
409
+ @include hide-text;
410
+ display: block;
411
+ float: left;
412
+ width: 142px;
413
+ height: 54px;
414
+ margin-right: 18px;
415
+ background-image: url("#{$asset-path}/salesforce_heroku_gray.png");
416
+ background-size: 100%;
417
+ @include screen() {
418
+ display: inline-block;
419
+ float: none;
420
+ margin-right: 0;
421
+ }
422
+ }
423
+
424
+ //Icons
425
+ [class^="heroku-footer-icon-"] {
426
+ position: relative;
427
+ display: inline-block;
428
+ width: 21px;
429
+ height: 21px;
430
+ background-color: transparent;
431
+ background-repeat: no-repeat;
432
+ background-image: url("#{$asset-path}/footer_sprite.png");
433
+ @include hide-text;
434
+ @include hidpi {
435
+ background-image: url("#{$asset-path}/footer_sprite@2x.png");
436
+ background-size: 200px 100px;
437
+ }
438
+ }
439
+
440
+ //Icon array (class, background position x, y)
441
+ $icons: (rss 0 0,
442
+ twitter -21px 0,
443
+ facebook -42px 0,
444
+ github -63px 0,
445
+ vimeo -84px 0,
446
+ linkedin -105px 0,
447
+ newsletter -21px -63px,
448
+ submit 0 -42px
449
+ );
450
+
451
+ //Each loop to create classes
452
+ .heroku-footer-icon {
453
+ @each $var in $icons {
454
+ &-#{nth($var, 1)} {
455
+ background-position: #{nth($var, 2)} #{nth($var, 3)};
456
+ }
457
+ }
458
+ }
459
+
460
+ //Hover state for social links
461
+ .social-list .heroku-footer-icon {
462
+ @each $var in $icons {
463
+ &-#{nth($var, 1)} {
464
+ &:hover {
465
+ background-position: #{nth($var, 2)} -21px;
466
+ }
467
+ }
468
+ }
469
+ }
470
+
471
+ .heroku-footer-icon-submit {
472
+ top: -8px;
473
+ &:hover {
474
+ background-position: 0 -63px;
475
+ }
476
+ }
477
+
478
+ }