bookends 2.8.0 → 3.0.0.beta1

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 (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
- }