bookends 2.8.0 → 3.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (158) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +0 -8
  3. data/{fixtures/dummy-rails/app → app}/assets/fonts/bentonsans-book.eot +0 -0
  4. data/{fixtures/dummy-rails/app → app}/assets/fonts/bentonsans-book.svg +0 -0
  5. data/{fixtures/dummy-rails/app → app}/assets/fonts/bentonsans-book.ttf +0 -0
  6. data/{fixtures/dummy-rails/app → app}/assets/fonts/bentonsans-book.woff +0 -0
  7. data/{fixtures/dummy-rails/app → app}/assets/fonts/bentonsans-medium.eot +0 -0
  8. data/{fixtures/dummy-rails/app → app}/assets/fonts/bentonsans-medium.svg +0 -0
  9. data/{fixtures/dummy-rails/app → app}/assets/fonts/bentonsans-medium.ttf +0 -0
  10. data/{fixtures/dummy-rails/app → app}/assets/fonts/bentonsans-medium.woff +0 -0
  11. data/{fixtures/dummy-rails/app → app}/assets/fonts/bentonsans-regular.eot +0 -0
  12. data/{fixtures/dummy-rails/app → app}/assets/fonts/bentonsans-regular.svg +0 -0
  13. data/{fixtures/dummy-rails/app → app}/assets/fonts/bentonsans-regular.ttf +0 -0
  14. data/{fixtures/dummy-rails/app → app}/assets/fonts/bentonsans-regular.woff +0 -0
  15. data/app/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  16. data/app/assets/fonts/glyphicons-halflings-regular.svg +288 -0
  17. data/app/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  18. data/app/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  19. data/app/assets/fonts/glyphicons-halflings-regular.woff2 +0 -0
  20. data/app/assets/fonts/hk-icon.eot +0 -0
  21. data/app/assets/fonts/hk-icon.svg +268 -0
  22. data/app/assets/fonts/hk-icon.ttf +0 -0
  23. data/app/assets/fonts/hk-icon.woff +0 -0
  24. data/app/assets/fonts/inconsolata-bold.eot +0 -0
  25. data/app/assets/fonts/inconsolata-bold.svg +239 -0
  26. data/app/assets/fonts/inconsolata-bold.ttf +0 -0
  27. data/app/assets/fonts/inconsolata-bold.woff +0 -0
  28. data/app/assets/fonts/inconsolata-regular.eot +0 -0
  29. data/app/assets/fonts/inconsolata-regular.svg +239 -0
  30. data/app/assets/fonts/inconsolata-regular.ttf +0 -0
  31. data/app/assets/fonts/inconsolata-regular.woff +0 -0
  32. data/{lib/bookends/templates/footer_images → app/assets/images/bookends/footer}/footer_sprite.png +0 -0
  33. data/app/assets/images/bookends/footer/footer_sprite@2x.png +0 -0
  34. data/{lib/bookends/templates/footer_images → app/assets/images/bookends/footer}/salesforce.png +0 -0
  35. data/{lib/bookends/templates → app/assets/images/bookends}/glostick_icons/dashboard.svg +0 -0
  36. data/{lib/bookends/templates → app/assets/images/bookends}/glostick_icons/databases.svg +0 -0
  37. data/{lib/bookends/templates → app/assets/images/bookends}/glostick_icons/dataclips.svg +0 -0
  38. data/{lib/bookends/templates → app/assets/images/bookends}/glostick_icons/docs.svg +0 -0
  39. data/{lib/bookends/templates → app/assets/images/bookends}/glostick_icons/elements.svg +0 -0
  40. data/{lib/bookends/templates → app/assets/images/bookends}/glostick_icons/heroku-logo.svg +0 -0
  41. data/{lib/bookends/templates → app/assets/images/bookends}/glostick_icons/navigator-purple.svg +0 -0
  42. data/{lib/bookends/templates → app/assets/images/bookends}/glostick_icons/navigator.svg +0 -0
  43. data/{lib/bookends/templates → app/assets/images/bookends}/glostick_icons/settings.svg +0 -0
  44. data/{lib/bookends/templates → app/assets/images/bookends}/glostick_icons/signout.svg +0 -0
  45. data/{lib/bookends/templates → app/assets/images/bookends}/glostick_icons/support.svg +0 -0
  46. data/{lib/bookends/templates → app/assets/images/bookends}/icons/addons.svg +0 -0
  47. data/{lib/bookends/templates → app/assets/images/bookends}/icons/buildpacks.svg +0 -0
  48. data/{lib/bookends/templates → app/assets/images/bookends}/icons/buttons.svg +0 -0
  49. data/{lib/bookends/templates → app/assets/images/bookends}/icons/connect.svg +0 -0
  50. data/{lib/bookends/templates → app/assets/images/bookends}/icons/elements-information.svg +0 -0
  51. data/{lib/bookends/templates → app/assets/images/bookends}/icons/enterprise.svg +0 -0
  52. data/{lib/bookends/templates → app/assets/images/bookends}/icons/platform.svg +0 -0
  53. data/{lib/bookends/templates → app/assets/images/bookends}/icons/postgres.svg +0 -0
  54. data/{lib/bookends/templates → app/assets/images/bookends}/icons/redis.svg +0 -0
  55. data/{lib/bookends/templates → app/assets/images/bookends}/icons/teams.svg +0 -0
  56. data/app/assets/images/logo.svg +14 -0
  57. data/app/assets/images/nav-dropdown-caret.svg +16 -0
  58. data/app/assets/javascripts/blog-fetcher.js +131 -0
  59. data/{fixtures/dummy-rails/app/assets/javascripts/application.js → app/assets/javascripts/bookends.js} +1 -2
  60. data/{lib/bookends/templates/js → app/assets/javascripts}/header.js +0 -0
  61. data/app/assets/javascripts/heroku-namespace.js +1 -0
  62. data/app/assets/javascripts/lscache.js +359 -0
  63. data/{lib/bookends/templates/js → app/assets/javascripts}/md5.js +0 -0
  64. data/app/assets/javascripts/moment.js +3195 -0
  65. data/{lib/bookends/templates/js → app/assets/javascripts}/newsletter-init.js +1 -1
  66. data/{lib/bookends/templates/js → app/assets/javascripts}/newsletter.js +0 -0
  67. data/app/assets/stylesheets/bookends/_base.scss +21 -0
  68. data/app/assets/stylesheets/bookends/_colors.scss +62 -0
  69. data/app/assets/stylesheets/bookends/_fonts.scss +12 -0
  70. data/{lib/bookends/templates/scss/footer.scss → app/assets/stylesheets/bookends/_footer.scss} +17 -14
  71. data/{lib/bookends/templates/scss/glostick.scss → app/assets/stylesheets/bookends/_glostick.scss} +0 -0
  72. data/app/assets/stylesheets/bookends/_grid-settings.scss +18 -0
  73. data/app/assets/stylesheets/bookends/_header.scss +745 -0
  74. data/app/assets/stylesheets/bookends/_mixins.scss +72 -0
  75. data/app/assets/stylesheets/bookends/_responsive.scss +129 -0
  76. data/app/assets/stylesheets/bookends/_variables.scss +82 -0
  77. data/app/assets/stylesheets/bookends/bookends.scss +13 -0
  78. data/app/controllers/bookends/application_controller.rb +5 -0
  79. data/app/helpers/bookends/application_helper.rb +93 -0
  80. data/{lib/bookends/templates/footer.html → app/views/bookends/_footer.html.erb} +4 -6
  81. data/{lib/bookends/templates/rails_header.html.erb → app/views/bookends/_header.html.erb} +1 -2
  82. data/config/routes.rb +2 -0
  83. data/lib/bookends.rb +2 -2
  84. data/lib/bookends/config.rb +24 -0
  85. data/lib/bookends/engine.rb +15 -2
  86. data/lib/bookends/version.rb +1 -1
  87. data/lib/tasks/bookends_tasks.rake +4 -0
  88. metadata +221 -152
  89. data/.gitignore +0 -17
  90. data/.rspec +0 -2
  91. data/.ruby-version +0 -1
  92. data/.travis.yml +0 -8
  93. data/Gemfile +0 -4
  94. data/bin/bookends +0 -5
  95. data/bin/setup +0 -7
  96. data/bookends.gemspec +0 -31
  97. data/fixtures/dummy-jekyll/.gitkeep +0 -0
  98. data/fixtures/dummy-rails/README.md +0 -9
  99. data/fixtures/dummy-rails/Rakefile +0 -6
  100. data/fixtures/dummy-rails/app/assets/images/.keep +0 -0
  101. data/fixtures/dummy-rails/app/assets/images/bookends/footer/footer_sprite.png +0 -0
  102. data/fixtures/dummy-rails/app/assets/images/bookends/footer/footer_sprite@2x.png +0 -0
  103. data/fixtures/dummy-rails/app/assets/images/bookends/footer/salesforce_heroku_gray.png +0 -0
  104. data/fixtures/dummy-rails/app/assets/stylesheets/application.css.scss +0 -11
  105. data/fixtures/dummy-rails/app/controllers/application_controller.rb +0 -5
  106. data/fixtures/dummy-rails/app/controllers/concerns/.keep +0 -0
  107. data/fixtures/dummy-rails/app/controllers/pages_controller.rb +0 -5
  108. data/fixtures/dummy-rails/app/helpers/application_helper.rb +0 -2
  109. data/fixtures/dummy-rails/app/mailers/.keep +0 -0
  110. data/fixtures/dummy-rails/app/models/.keep +0 -0
  111. data/fixtures/dummy-rails/app/models/concerns/.keep +0 -0
  112. data/fixtures/dummy-rails/app/views/layouts/application.html.erb +0 -16
  113. data/fixtures/dummy-rails/app/views/pages/home.html.erb +0 -1
  114. data/fixtures/dummy-rails/bin/bundle +0 -3
  115. data/fixtures/dummy-rails/bin/rails +0 -4
  116. data/fixtures/dummy-rails/bin/rake +0 -4
  117. data/fixtures/dummy-rails/bin/setup +0 -29
  118. data/fixtures/dummy-rails/config.ru +0 -4
  119. data/fixtures/dummy-rails/config/application.rb +0 -34
  120. data/fixtures/dummy-rails/config/boot.rb +0 -5
  121. data/fixtures/dummy-rails/config/database.yml +0 -25
  122. data/fixtures/dummy-rails/config/environment.rb +0 -5
  123. data/fixtures/dummy-rails/config/environments/development.rb +0 -41
  124. data/fixtures/dummy-rails/config/environments/production.rb +0 -79
  125. data/fixtures/dummy-rails/config/environments/test.rb +0 -42
  126. data/fixtures/dummy-rails/config/initializers/assets.rb +0 -11
  127. data/fixtures/dummy-rails/config/initializers/backtrace_silencers.rb +0 -7
  128. data/fixtures/dummy-rails/config/initializers/cookies_serializer.rb +0 -3
  129. data/fixtures/dummy-rails/config/initializers/filter_parameter_logging.rb +0 -4
  130. data/fixtures/dummy-rails/config/initializers/inflections.rb +0 -16
  131. data/fixtures/dummy-rails/config/initializers/mime_types.rb +0 -4
  132. data/fixtures/dummy-rails/config/initializers/session_store.rb +0 -3
  133. data/fixtures/dummy-rails/config/initializers/wrap_parameters.rb +0 -14
  134. data/fixtures/dummy-rails/config/locales/en.yml +0 -23
  135. data/fixtures/dummy-rails/config/routes.rb +0 -6
  136. data/fixtures/dummy-rails/config/secrets.yml +0 -22
  137. data/fixtures/dummy-rails/db/development.sqlite3 +0 -0
  138. data/fixtures/dummy-rails/lib/assets/.keep +0 -0
  139. data/fixtures/dummy-rails/public/404.html +0 -67
  140. data/fixtures/dummy-rails/public/422.html +0 -67
  141. data/fixtures/dummy-rails/public/500.html +0 -66
  142. data/fixtures/dummy-rails/public/favicon.ico +0 -0
  143. data/lib/bookends/cli.rb +0 -95
  144. data/lib/bookends/config/framework.rb +0 -24
  145. data/lib/bookends/config/turbolinks.rb +0 -18
  146. data/lib/bookends/file_actions.rb +0 -13
  147. data/lib/bookends/flag_handler.rb +0 -17
  148. data/lib/bookends/jekyll_handler.rb +0 -25
  149. data/lib/bookends/rails_handler.rb +0 -41
  150. data/lib/bookends/templates/bookends_helper.rb +0 -63
  151. data/lib/bookends/templates/bookends_helper_spec.rb +0 -57
  152. data/lib/bookends/templates/footer_images/footer_sprite@2x.png +0 -0
  153. data/lib/bookends/templates/icons/kafka.svg +0 -37
  154. data/lib/bookends/templates/icons/spaces.svg +0 -1
  155. data/lib/bookends/templates/jekyll_header.html +0 -102
  156. data/lib/bookends/templates/js/header-turbolinks.js +0 -18
  157. data/lib/bookends/templates/js/newsletter-init-turbolinks.js +0 -6
  158. data/lib/bookends/templates/scss/bookends.scss +0 -21
@@ -1,18 +0,0 @@
1
- module Bookends
2
- module Config
3
- class Turbolinks
4
-
5
- attr_accessor :turbolinks
6
-
7
- #turbolinks<boolean> => does site in question use turbolinks?
8
- def set(turbolinks)
9
- self.turbolinks = turbolinks
10
- end
11
-
12
- def using?
13
- !!turbolinks
14
- end
15
- end
16
- end
17
- end
18
-
@@ -1,13 +0,0 @@
1
- module FileActions
2
- private
3
- def copy(type, name:, dest:, **options)
4
- self.destination_root = dest
5
- name_in_dest = options.fetch(:as, name)
6
-
7
- if type == :file
8
- copy_file name, name_in_dest
9
- else
10
- directory name, name_in_dest
11
- end
12
- end
13
- end
@@ -1,17 +0,0 @@
1
- module Bookends::FlagHandler
2
- extend self
3
-
4
- def handle_app_flag(app, config)
5
- has_valid_app_flag = true
6
-
7
- case app.downcase.strip
8
- when 'www' then config.framework.set(:rails); config.turbolinks.set(false)
9
- when 'blog' then config.framework.set(:rails); config.turbolinks.set(false)
10
- when 'elements' then config.framework.set(:rails); config.turbolinks.set(true)
11
- when 'engineering' then config.framework.set(:jekyll); config.turbolinks.set(false)
12
- else has_valid_app_flag = false
13
- end
14
-
15
- has_valid_app_flag
16
- end
17
- end
@@ -1,25 +0,0 @@
1
- require 'bookends'
2
- require 'thor'
3
- require_relative 'file_actions'
4
-
5
- module Bookends
6
- class JekyllHandler < Thor
7
- include FileActions
8
- include Thor::Actions
9
- source_root File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
10
-
11
- no_commands do
12
- def install
13
- copy :file, name: 'scss/footer.scss', dest: '_sass/bookends', as: '_footer.scss'
14
- copy :file, name: 'footer.html', dest: '_includes/bookends'
15
- copy :file, name: 'jekyll_header.html', dest: '_includes/bookends', as: 'header.html'
16
- copy :file, name: 'js/newsletter.js', dest: 'assets/js/bookends/', as: 'newsletter.js'
17
- copy :directory, name: 'footer_images', dest: 'assets/images/', as: 'bookends/footer'
18
- copy :directory, name: 'icons', dest: 'assets/images/', as: 'bookends/icons'
19
- append_to_file '../js/bookends/newsletter.js', "$(function() { return window.Heroku.newsletterSignup = new Heroku.NewsletterSignup(); });"
20
- gsub_file '../../_sass/bookends/_footer.scss', 'bookends/footer', 'images/bookends/footer'
21
- gsub_file '../../_sass/bookends/_footer.scss', 'asset-url', 'url'
22
- end
23
- end
24
- end
25
- end
@@ -1,41 +0,0 @@
1
- require 'bookends'
2
- require 'thor'
3
- require_relative 'file_actions'
4
-
5
- module Bookends
6
- class RailsHandler < Thor
7
- include FileActions
8
- include Thor::Actions
9
- source_root File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
10
-
11
- no_commands do
12
- def install(config)
13
- copy :file, name: 'scss/footer.scss', dest: 'app/assets/stylesheets/bookends', as: '_footer.scss'
14
- copy :file, name: 'scss/glostick.scss', dest: 'app/assets/stylesheets/bookends', as: '_glostick.scss'
15
- copy :file, name: 'scss/bookends.scss', dest: 'app/assets/stylesheets/bookends', as: '_bookends.scss'
16
- copy :file, name: 'footer.html', dest: 'app/views/bookends', as: '_footer.html'
17
- copy :file, name: 'rails_header.html.erb', dest: 'app/views/bookends', as: '_header.html.erb'
18
- copy :file, name: 'js/newsletter.js', dest: 'vendor/assets/javascripts/bookends', as: 'newsletter.js'
19
- copy :file, name: 'js/md5.js', dest: 'vendor/assets/javascripts/', as: 'md5.js'
20
- copy :file, name: 'bookends_helper.rb', dest: 'app/helpers'
21
- copy :file, name: 'bookends_helper_spec.rb', dest: 'spec/helpers'
22
- copy :directory, name: 'footer_images', dest: 'app/assets/images/', as: 'bookends/footer'
23
- copy :directory, name: 'glostick_icons', dest: 'app/assets/images/', as: 'bookends/glostick'
24
- copy :directory, name: 'icons', dest: 'app/assets/images/', as: 'bookends/icons'
25
- gsub_file '../stylesheets/bookends/_glostick.scss', 'url', 'asset-url'
26
- handle_templates_for_config(config)
27
- end
28
- end
29
-
30
- private
31
- def handle_templates_for_config(config)
32
- if config.turbolinks.using?
33
- copy :file, name: 'js/newsletter-init-turbolinks.js', dest: 'app/assets/javascripts/bookends', as: 'newsletter-init.js'
34
- copy :file, name: 'js/header-turbolinks.js', dest: 'vendor/assets/javascripts/bookends', as: 'header.js'
35
- else
36
- copy :file, name: 'js/newsletter-init.js', dest: 'app/assets/javascripts/bookends', as: 'newsletter-init.js'
37
- copy :file, name: 'js/header.js', dest: 'vendor/assets/javascripts/bookends', as: 'header.js'
38
- end
39
- end
40
- end
41
- end
@@ -1,63 +0,0 @@
1
- module BookendsHelper
2
- def glostick_user_name
3
- glostick_user['full_name']
4
- end
5
-
6
- def glostick_user_email
7
- glostick_user['email']
8
- end
9
-
10
- def signup_link(title, options = {})
11
- url = "https://signup.heroku.com"
12
- data = { trackable: { category: "Sign Up Links", action: "Clicked", label: "#{options[:referral] || options[:branded_signup]}" } }
13
-
14
- url += "/#{options[:branded_signup]}" if options[:branded_signup]
15
-
16
- if options[:campaign_id]
17
- url = url + "?c=" + options[:campaign_id]
18
- elsif options[:referral]
19
- url = url + "/" + options[:referral]
20
- end
21
-
22
- link_to title, url, class: options[:class], data: data
23
- end
24
-
25
- private
26
- def glostick_user
27
- @glostick_user ||= GlostickUserExtractor.new(cookies).user
28
- end
29
-
30
- class GlostickUserExtractor
31
- attr_reader :secret,
32
- :token
33
-
34
- def initialize(cookies)
35
- @secret = ENV['SESSION_COOKIE_SECRET_PRIMARY'] || ENV['SESSION_COOKIE_SECRET_SECONDARY']
36
- @token = CGI::unescape(cookies[:heroku_user_session]) if cookies[:heroku_user_session]
37
- end
38
-
39
- def user
40
- session_info = decrypt_session_cookie
41
- if session_info && session_info['user']
42
- session_info['user']
43
- else
44
- {
45
- 'email' => '',
46
- 'full_name' => ''
47
- }
48
- end
49
- end
50
-
51
- private
52
- def decrypt_session_cookie
53
- return nil unless token && secret
54
-
55
- verifier = Fernet.verifier(secret, token)
56
- verifier.enforce_ttl = false
57
-
58
- return nil unless verifier.valid?
59
-
60
- JSON.parse(verifier.message)
61
- end
62
- end
63
- end
@@ -1,57 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.describe BookendsHelper, type: :helper do
4
- describe "glostick methods" do
5
- before :each do
6
- allow_any_instance_of(BookendsHelper).to receive(:glostick_user).and_return({"email"=> "email@heroku.com", "full_name"=>"full name"})
7
- end
8
-
9
- describe "#glostick_user_name" do
10
- it "extracts the user's name from the heroku_user_session cookie info" do
11
- expect(helper.glostick_user_name).to eq 'full name'
12
- end
13
- end
14
-
15
- describe "#glostick_user_email" do
16
- it "extracts the user's email from the heroku_user_session cookie info" do
17
- expect(helper.glostick_user_email).to eq 'email@heroku.com'
18
- end
19
- end
20
- end
21
-
22
- describe "signup_link" do
23
- it "returns a link to https://signup.heroku.com" do
24
- expect(helper.signup_link("Sign up")).to include 'href="https://signup.heroku.com"'
25
- end
26
-
27
- it "sets its proper class if it's specified" do
28
- expect(helper.signup_link("Sign up", { class: "button"})).to include 'class="button"'
29
- end
30
-
31
- context "includes a referral" do
32
- it "it's added to the url if it's specified and there no campaign_id is provided" do
33
- expect(helper.signup_link("Sign up", { referral: "www-home-top"})).to include 'href="https://signup.heroku.com/www-home-top"'
34
- end
35
-
36
- it "it's not added to the url if it's specified and a campaign_id is provided" do
37
- expect(helper.signup_link("Sign up", { referral: "www-home-top", campaign_id: "12345"})).to include 'href="https://signup.heroku.com?c=12345"'
38
- end
39
-
40
- it "returns the data attributes to be used by trackable" do
41
- expect(helper.signup_link("Sign up", { referral: "www-header"}).split("data-trackable=\"").last.split("\"").first).to eq CGI.escapeHTML("{\"category\":\"Sign Up Links\",\"action\":\"Clicked\",\"label\":\"www-header\"}")
42
- end
43
- end
44
-
45
- context "includes a referral" do
46
- it "it's added to the url" do
47
- expect(helper.signup_link("Sign up", { campaign_id: "12345"} )).to include 'href="https://signup.heroku.com?c=12345"'
48
- end
49
- end
50
-
51
- context "includes branded_signup" do
52
- it "it's added to the url" do
53
- expect(helper.signup_link("Sign up", { branded_signup: "geaux"} )).to include 'href="https://signup.heroku.com/geaux"'
54
- end
55
- end
56
- end
57
- end
@@ -1,37 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <!-- Generator: Adobe Illustrator 20.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
- <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
- width="23px" height="23px" viewBox="0 0 23 23" style="enable-background:new 0 0 23 23;" xml:space="preserve">
5
- <style type="text/css">
6
- .st0{fill:none;stroke:#886BAA;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
7
- .st1{fill:none;stroke:#886BAA;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round;}
8
- .st2{fill:#886BAA;}
9
- .st3{fill:none;stroke:#886BAA;stroke-linecap:round;stroke-linejoin:round;}
10
- </style>
11
- <g id="Page-1">
12
- <g id="www-kafka" transform="translate(-650 -120)">
13
- <g id="hero" transform="translate(-287 -68)">
14
- <g id="copy" transform="translate(443 190)">
15
- <g id="logo_kafka" transform="translate(496)">
16
- <path id="Stroke-1" class="st0" d="M11.2,0v19.1"/>
17
- <path id="Stroke-3" class="st1" d="M7.6,8.6l-6.4-3"/>
18
- <path id="Stroke-5" class="st1" d="M1.2,13.4l6.4-3.1"/>
19
- <path id="Fill-7" class="st2" d="M-0.5,13.4c0,1,0.8,1.7,1.7,1.7s1.7-0.8,1.7-1.7c0-1-0.8-1.7-1.7-1.7S-0.5,12.5-0.5,13.4"/>
20
- <path id="Stroke-9" class="st3" d="M-0.5,13.4c0,1,0.8,1.7,1.7,1.7s1.7-0.8,1.7-1.7c0-1-0.8-1.7-1.7-1.7S-0.5,12.5-0.5,13.4z"
21
- />
22
- <path id="Fill-11" class="st2" d="M-0.5,5.6c0,1,0.8,1.7,1.7,1.7s1.7-0.8,1.7-1.7S2.2,3.9,1.2,3.9S-0.5,4.6-0.5,5.6"/>
23
- <path id="Stroke-13" class="st3" d="M-0.5,5.6c0,1,0.8,1.7,1.7,1.7s1.7-0.8,1.7-1.7S2.2,3.9,1.2,3.9S-0.5,4.6-0.5,5.6z"/>
24
- <path id="Fill-15" class="st2" d="M8,3.4c-1,0-1.7-0.8-1.7-1.7S7,0,8,0V3.4z"/>
25
- <path id="Stroke-17" class="st3" d="M8,3.4c-1,0-1.7-0.8-1.7-1.7S7,0,8,0V3.4z"/>
26
- <path id="Fill-19" class="st2" d="M8,15.6c-1,0-1.7,0.8-1.7,1.7S7,19,8,19V15.6z"/>
27
- <path id="Stroke-21" class="st3" d="M8,15.6c-1,0-1.7,0.8-1.7,1.7S7,19,8,19V15.6z"/>
28
- <path id="Fill-23" class="st2" d="M8,12.9C6.6,12.4,5.7,11,5.7,9.5s1-2.9,2.3-3.4V12.9z"/>
29
- <path id="Stroke-25" class="st3" d="M8,12.9C6.6,12.4,5.7,11,5.7,9.5s1-2.9,2.3-3.4V12.9z"/>
30
- <path id="Stroke-27" class="st0" d="M11.3,8.6l8.2-3.8"/>
31
- <path id="Stroke-29" class="st0" d="M19.5,14.3l-8.2-4.1"/>
32
- </g>
33
- </g>
34
- </g>
35
- </g>
36
- </g>
37
- </svg>
@@ -1 +0,0 @@
1
- <svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" width="23" height="23" viewBox="0 0 23 23"><style>.st0{stroke-width:2}.st0,.st1{fill:none;stroke:#876aaa;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style><path class="st0" d="M4.2 5.7L10 2.3c.9-.5 1.9-.5 2.8 0l5.9 3.4c.9.4 1.5 1.3 1.5 2.3v6.8c0 1-.5 1.9-1.4 2.4L13 20.7c-.9.5-1.9.5-2.8 0l-5.9-3.4c-.9-.4-1.5-1.3-1.5-2.3V8.2c0-1 .5-2 1.4-2.5z"/><path class="st1" d="M6.3 12.4l1.4-.8c.2-.1.5-.1.7 0l1.4.8c.2.1.3.3.3.6v1.6c0 .2-.1.5-.3.6l-1.4.8c-.2.1-.5.1-.7 0l-1.4-.8c-.2-.2-.3-.4-.3-.6V13c0-.3.1-.5.3-.6zM9.7 6.6l1.4-.8c.2-.1.5-.1.7 0l1.4.8c.2.1.3.3.3.6v1.6c0 .2-.1.5-.3.6l-1.4.8c-.2.1-.5.1-.7 0l-1.4-.8c-.2-.2-.3-.4-.3-.6V7.2c0-.3.1-.5.3-.6zM13.2 12.3l1.4-.8c.2-.1.5-.1.7 0l1.4.8c.2.1.3.3.3.6v1.6c0 .2-.1.5-.3.6l-1.4.8c-.2.1-.5.1-.7 0l-1.4-.8c-.2-.1-.3-.3-.3-.6v-1.6c0-.2.1-.4.3-.6z"/></svg>
@@ -1,102 +0,0 @@
1
- <header id="header">
2
- <div id="navigation" role="navigation">
3
- <span class="mobile-nav" aria-hidden="true">
4
- Show nav
5
- <span></span>
6
- <span></span>
7
- <span></span>
8
- <span></span>
9
- </span>
10
-
11
- <div class="wrapper wrapper-full">
12
- <div id="logo">
13
- <a href="https://www.heroku.com/home">Heroku</a>
14
- </div>
15
-
16
- <div class="nav-wrapper">
17
-
18
- <ul class="main-nav">
19
- <li class="has-dropdown">
20
- <a href="https://www.heroku.com/platform">Products</a>
21
- <ul class="dropdown">
22
- <li><a href="https://www.heroku.com/platform" class="platform">Heroku Platform</a></li>
23
- <li><a href="https://www.heroku.com/postgres" class="postgres">Heroku Postgres</a></li>
24
- <li><a href="https://www.heroku.com/redis" class="redis">Heroku Redis</a></li>
25
- <li><a href="https://www.heroku.com/kafka" class="kafka">Kafka on Heroku</a></li>
26
- <li><a href="https://www.heroku.com/connect" class="connect">Heroku Connect</a></li>
27
- <li class="has-dropdown">
28
- <a href="https://www.heroku.com/enterprise" class="enterprise">Heroku Enterprise</a>
29
- <ul class="dropdown">
30
- <li><a href="https://www.heroku.com/private-spaces" class="spaces">Private Spaces</a></li>
31
- </ul>
32
- </li>
33
- <li><a href="https://www.heroku.com/teams" class="teams">Heroku Teams</a></li>
34
- </ul>
35
- </li>
36
- <li class="has-dropdown">
37
- <a href="https://elements.heroku.com/">Elements</a>
38
- <ul class="dropdown">
39
- <li><a href="https://elements.heroku.com/addons" class="addons">Add-ons</a></li>
40
- <li><a href="https://elements.heroku.com/buttons" class="buttons">Buttons</a></li>
41
- <li><a href="https://elements.heroku.com/buildpacks" class="buildpacks">Buildpacks</a></li>
42
- <li><a href="https://www.heroku.com/elements" class="bookends-icon elements">About</a></li>
43
- </ul>
44
- </li>
45
- <li><a href="https://www.heroku.com/pricing">Pricing</a></li>
46
- <li><a href="https://devcenter.heroku.com">Documentation</a></li>
47
- <li><a href="https://www.heroku.com/support">Support</a></li>
48
-
49
- <li class="has-dropdown">
50
- <a href="#" class="more">More</a>
51
- <div class="dropdown more">
52
- <section class="more-resources">
53
- <span class="more-title">Additional Resources</span>
54
- <ul>
55
- <li><a href="https://www.heroku.com/what">What is Heroku?</a></li>
56
- <li><a href="https://www.heroku.com/help">Help Center</a></li>
57
- <li><a href="https://www.heroku.com/customers">Customers</a></li>
58
- <li><a href="https://www.heroku.com/careers">Careers</a></li>
59
- <li><a href="https://www.heroku.com/events">Events</a></li>
60
- </ul>
61
- </section>
62
- <section class="more-languages">
63
- <span class="more-title">Languages</span>
64
- <ul>
65
- <li><a href="https://www.heroku.com/node">Node</a></li>
66
- <li><a href="https://www.heroku.com/ruby">Ruby</a></li>
67
- <li><a href="https://www.heroku.com/java">Java</a></li>
68
- <li><a href="https://www.heroku.com/php">PHP</a></li>
69
- <li><a href="https://www.heroku.com/python">Python</a></li>
70
- <li><a href="https://www.heroku.com/go">Go</a></li>
71
- <li><a href="https://www.heroku.com/scala">Scala</a></li>
72
- <li><a href="https://www.heroku.com/clojure">Clojure</a></li>
73
- </ul>
74
- </section>
75
- <section id="more-blog" class="more-blog">
76
- <span class="more-title">Heroku Blog</span>
77
- <h3><a class="js-blog-link" href="https://blog.heroku.com">Heroku Blog</a></h3>
78
- <p class="js-blog-date"></p>
79
- <p class="js-blog-content">Find out what's new with Heroku on our blog.</p>
80
- <a href="https://blog.heroku.com" class="button btn-default btn-sm btn-inline">Visit Blog</a>
81
- </section>
82
- </div>
83
- </li>
84
- </ul>
85
-
86
- <ul class="tool-nav">
87
- <li>
88
- <form action="https://blog.heroku.com/search" class="site-search" id="site-search" method="get">
89
- <div class="gsc-input">
90
- <input name="utf8" type="hidden" value="✓">
91
- <input autocomplete="off" type="text" name="q" title="search" class="gsc-input" style="width: 100%; padding: 0px; border: none; margin: -0.0625em 0px 0px; height: 1.25em; outline: none;" dir="ltr" spellcheck="false">
92
- <span class="gsc-search-button">
93
- <input type="submit" class="search-button">
94
- </span>
95
- </div>
96
- </form>
97
- </li>
98
- </ul>
99
- </div>
100
- </div>
101
- </div>
102
- </header>
@@ -1,18 +0,0 @@
1
- //= require md5
2
- var Heroku = Heroku || {};
3
-
4
- $(document).on("ready page:load", function() {
5
- var $avatars,
6
- defaultAvatarURL,
7
- email,
8
- gravatarURL;
9
-
10
- email = $.trim($('.glostick__account-details__email').text());
11
- $avatars = $('.js-glostick-avatar');
12
- defaultAvatarURL = 'https://www.herokucdn.com/images/ninja-avatar-48x48.png';
13
- gravatarURL = "https://gravatar.com/avatar/" + (MD5(email)) + "?s=48&d=" + defaultAvatarURL;
14
-
15
- return $avatars.each(function(i, e) {
16
- return $(e).attr('src', gravatarURL);
17
- });
18
- });
@@ -1,6 +0,0 @@
1
- //= require bookends/newsletter
2
- var Heroku = Heroku || {};
3
-
4
- $(document).on('ready page:load', function() {
5
- window.Heroku.newsletterSignup = new Heroku.NewsletterSignup();
6
- });
@@ -1,21 +0,0 @@
1
- @import 'glostick';
2
- @import 'footer';
3
-
4
- .wrapper-full {
5
- -webkit-box-sizing: border-box;
6
- -moz-box-sizing: border-box;
7
- box-sizing: border-box;
8
- margin: 0 auto;
9
- max-width: 66.25em;
10
- width: 93.96226%;
11
- position: relative;
12
- max-width: none;
13
- width: 100%;
14
- padding: 20px;
15
-
16
- &:after {
17
- content: "";
18
- display: table;
19
- clear: both;
20
- }
21
- }