From 7cde76abae23e0df0db651e8354e8358e89ab1d3 Mon Sep 17 00:00:00 2001
From: Seth Vargo
Date: Mon, 13 Oct 2014 12:44:38 -0400
Subject: [PATCH] Update to middleman-hashicorp
---
website/Gemfile | 14 +-
website/Gemfile.lock | 48 +-
website/Gruntfile.js | 36 -
website/config.rb | 24 +-
website/helpers/download_helpers.rb | 63 -
website/package.json | 17 -
.../fonts/.!50177!league_gothic-webfont.eot | 0
.../fonts/league_gothic-webfont.eot | Bin
.../fonts/league_gothic-webfont.svg | 0
.../fonts/league_gothic-webfont.ttf | Bin
.../fonts/league_gothic-webfont.woff | Bin
.../source/{ => assets}/images/bg-galaxy.jpg | Bin
.../source/{ => assets}/images/bg-static.png | Bin
.../{ => assets}/images/docs/module_graph.png | Bin
.../images/docs/module_graph_expand.png | Bin
.../source/{ => assets}/images/favicon.png | Bin
.../images/feature-iterate-bg.png | Bin
.../images/feature-iterate-bg@2x.png | Bin
.../images/footer-hashicorp-logo.png | Bin
.../images/footer-hashicorp-logo@2x.png | Bin
.../images/footer-hashicorp-white-logo.png | Bin
.../images/footer-hashicorp-white-logo@2x.png | Bin
.../{ => assets}/images/graph-example.png | Bin
.../images/header-download-icon.png | Bin
.../images/header-download-icon@2x.png | Bin
.../images/header-github-icon.png | Bin
.../images/header-github-icon@2x.png | Bin
.../{ => assets}/images/header-logo.png | Bin
.../{ => assets}/images/header-logo@2x.png | Bin
.../images/header-nav-divider.png | Bin
.../images/header-nav-divider@2x.png | Bin
.../source/{ => assets}/images/hero-bg.png | Bin
.../{ => assets}/images/logo-static.png | Bin
website/source/{ => assets}/images/readme.png | Bin
.../{ => assets}/images/sidebar-wire.png | Bin
.../{ => assets}/images/white-wireframe.png | Bin
.../images/white-wireframe@2x.png | Bin
.../javascripts/app/Engine.Particle.Fixed.js | 0
.../javascripts/app/Engine.Particle.js | 0
.../javascripts/app/Engine.Point.Puller.js | 0
.../javascripts/app/Engine.Point.js | 0
.../javascripts/app/Engine.Polygon.Puller.js | 0
.../javascripts/app/Engine.Polygon.js | 0
.../javascripts/app/Engine.Shape.Puller.js | 0
.../javascripts/app/Engine.Shape.js | 0
.../javascripts/app/Engine.Typewriter.js | 0
.../{ => assets}/javascripts/app/Engine.js | 0
.../{ => assets}/javascripts/app/Grid.js | 0
.../{ => assets}/javascripts/app/Init.js | 0
.../{ => assets}/javascripts/app/Logo.js | 0
.../{ => assets}/javascripts/app/Puller.js | 0
.../source/assets/javascripts/application.js | 24 +
.../source/{ => assets}/javascripts/docs.js | 0
.../{ => assets}/javascripts/html5shiv.js | 0
.../{ => assets}/javascripts/lang-go.js | 0
.../{ => assets}/javascripts/lib/Base.js | 0
.../{ => assets}/javascripts/lib/Chainable.js | 0
.../lib/Function.prototype.bind.js | 0
.../javascripts/lib/String.substitute.js | 0
.../{ => assets}/javascripts/lib/Vector.js | 0
.../{ => assets}/javascripts/lib/dbg.js | 0
.../{ => assets}/javascripts/prettify.js | 0
.../{ => assets}/javascripts/respond.min.js | 0
.../stylesheets/_buttons.scss} | 22 +-
.../stylesheets/_community.scss} | 0
.../stylesheets/_docs.scss} | 38 +-
.../stylesheets/_downloads.scss} | 0
website/source/assets/stylesheets/_fonts.scss | 26 +
.../stylesheets/_footer.scss} | 28 +-
.../stylesheets/_global.scss} | 26 +-
.../stylesheets/_header.scss} | 56 +-
.../stylesheets/_home.scss} | 70 +-
.../stylesheets/_jumbotron.scss} | 12 +-
.../source/assets/stylesheets/_mixins.scss | 724 +++++++
.../stylesheets/_utilities.scss} | 20 +-
.../source/assets/stylesheets/_variables.scss | 57 +
.../assets/stylesheets/application.scss | 27 +
.../{ => assets}/stylesheets/prettify.css | 0
website/source/downloads.html.erb | 10 +-
website/source/images/icons/icon_darwin.png | Bin 792 -> 0 bytes
website/source/images/icons/icon_freebsd.png | Bin 27054 -> 0 bytes
website/source/images/icons/icon_linux.png | Bin 15856 -> 0 bytes
website/source/images/icons/icon_openbsd.png | Bin 27488 -> 0 bytes
website/source/images/icons/icon_windows.png | Bin 11328 -> 0 bytes
website/source/javascripts/all.js | 24 -
website/source/javascripts/app/deploy/site.js | 0
.../source/javascripts/app/deploy/site.min.js | 0
.../source/javascripts/lib/bootstrap.min.js | 6 -
.../javascripts/lib/jquery-2.0.3.min.js | 6 -
website/source/layouts/_footer.erb | 4 +-
website/source/layouts/_meta.erb | 5 +-
website/source/stylesheets/_fonts.less | 26 -
website/source/stylesheets/_mixins.less | 724 -------
website/source/stylesheets/_variables.less | 57 -
website/source/stylesheets/bootstrap.min.css | 7 -
website/source/stylesheets/main.css | 1902 -----------------
website/source/stylesheets/main.less | 29 -
97 files changed, 1047 insertions(+), 3085 deletions(-)
delete mode 100644 website/Gruntfile.js
delete mode 100644 website/helpers/download_helpers.rb
delete mode 100755 website/package.json
rename website/source/{ => assets}/fonts/.!50177!league_gothic-webfont.eot (100%)
rename website/source/{ => assets}/fonts/league_gothic-webfont.eot (100%)
rename website/source/{ => assets}/fonts/league_gothic-webfont.svg (100%)
rename website/source/{ => assets}/fonts/league_gothic-webfont.ttf (100%)
rename website/source/{ => assets}/fonts/league_gothic-webfont.woff (100%)
rename website/source/{ => assets}/images/bg-galaxy.jpg (100%)
rename website/source/{ => assets}/images/bg-static.png (100%)
rename website/source/{ => assets}/images/docs/module_graph.png (100%)
rename website/source/{ => assets}/images/docs/module_graph_expand.png (100%)
rename website/source/{ => assets}/images/favicon.png (100%)
rename website/source/{ => assets}/images/feature-iterate-bg.png (100%)
rename website/source/{ => assets}/images/feature-iterate-bg@2x.png (100%)
rename website/source/{ => assets}/images/footer-hashicorp-logo.png (100%)
rename website/source/{ => assets}/images/footer-hashicorp-logo@2x.png (100%)
rename website/source/{ => assets}/images/footer-hashicorp-white-logo.png (100%)
rename website/source/{ => assets}/images/footer-hashicorp-white-logo@2x.png (100%)
rename website/source/{ => assets}/images/graph-example.png (100%)
rename website/source/{ => assets}/images/header-download-icon.png (100%)
rename website/source/{ => assets}/images/header-download-icon@2x.png (100%)
rename website/source/{ => assets}/images/header-github-icon.png (100%)
rename website/source/{ => assets}/images/header-github-icon@2x.png (100%)
rename website/source/{ => assets}/images/header-logo.png (100%)
rename website/source/{ => assets}/images/header-logo@2x.png (100%)
rename website/source/{ => assets}/images/header-nav-divider.png (100%)
rename website/source/{ => assets}/images/header-nav-divider@2x.png (100%)
rename website/source/{ => assets}/images/hero-bg.png (100%)
rename website/source/{ => assets}/images/logo-static.png (100%)
rename website/source/{ => assets}/images/readme.png (100%)
rename website/source/{ => assets}/images/sidebar-wire.png (100%)
rename website/source/{ => assets}/images/white-wireframe.png (100%)
rename website/source/{ => assets}/images/white-wireframe@2x.png (100%)
rename website/source/{ => assets}/javascripts/app/Engine.Particle.Fixed.js (100%)
rename website/source/{ => assets}/javascripts/app/Engine.Particle.js (100%)
rename website/source/{ => assets}/javascripts/app/Engine.Point.Puller.js (100%)
rename website/source/{ => assets}/javascripts/app/Engine.Point.js (100%)
rename website/source/{ => assets}/javascripts/app/Engine.Polygon.Puller.js (100%)
rename website/source/{ => assets}/javascripts/app/Engine.Polygon.js (100%)
rename website/source/{ => assets}/javascripts/app/Engine.Shape.Puller.js (100%)
rename website/source/{ => assets}/javascripts/app/Engine.Shape.js (100%)
rename website/source/{ => assets}/javascripts/app/Engine.Typewriter.js (100%)
rename website/source/{ => assets}/javascripts/app/Engine.js (100%)
rename website/source/{ => assets}/javascripts/app/Grid.js (100%)
rename website/source/{ => assets}/javascripts/app/Init.js (100%)
rename website/source/{ => assets}/javascripts/app/Logo.js (100%)
rename website/source/{ => assets}/javascripts/app/Puller.js (100%)
create mode 100644 website/source/assets/javascripts/application.js
rename website/source/{ => assets}/javascripts/docs.js (100%)
rename website/source/{ => assets}/javascripts/html5shiv.js (100%)
rename website/source/{ => assets}/javascripts/lang-go.js (100%)
rename website/source/{ => assets}/javascripts/lib/Base.js (100%)
rename website/source/{ => assets}/javascripts/lib/Chainable.js (100%)
rename website/source/{ => assets}/javascripts/lib/Function.prototype.bind.js (100%)
rename website/source/{ => assets}/javascripts/lib/String.substitute.js (100%)
rename website/source/{ => assets}/javascripts/lib/Vector.js (100%)
rename website/source/{ => assets}/javascripts/lib/dbg.js (100%)
rename website/source/{ => assets}/javascripts/prettify.js (100%)
rename website/source/{ => assets}/javascripts/respond.min.js (100%)
rename website/source/{stylesheets/_buttons.less => assets/stylesheets/_buttons.scss} (76%)
rename website/source/{stylesheets/_community.less => assets/stylesheets/_community.scss} (100%)
rename website/source/{stylesheets/_docs.less => assets/stylesheets/_docs.scss} (83%)
rename website/source/{stylesheets/_downloads.less => assets/stylesheets/_downloads.scss} (100%)
create mode 100755 website/source/assets/stylesheets/_fonts.scss
rename website/source/{stylesheets/_footer.less => assets/stylesheets/_footer.scss} (75%)
rename website/source/{stylesheets/_global.less => assets/stylesheets/_global.scss} (74%)
rename website/source/{stylesheets/_header.less => assets/stylesheets/_header.scss} (82%)
rename website/source/{stylesheets/_home.less => assets/stylesheets/_home.scss} (88%)
rename website/source/{stylesheets/_jumbotron.less => assets/stylesheets/_jumbotron.scss} (97%)
create mode 100755 website/source/assets/stylesheets/_mixins.scss
rename website/source/{stylesheets/_utilities.less => assets/stylesheets/_utilities.scss} (76%)
create mode 100755 website/source/assets/stylesheets/_variables.scss
create mode 100755 website/source/assets/stylesheets/application.scss
rename website/source/{ => assets}/stylesheets/prettify.css (100%)
delete mode 100644 website/source/images/icons/icon_darwin.png
delete mode 100644 website/source/images/icons/icon_freebsd.png
delete mode 100644 website/source/images/icons/icon_linux.png
delete mode 100644 website/source/images/icons/icon_openbsd.png
delete mode 100644 website/source/images/icons/icon_windows.png
delete mode 100644 website/source/javascripts/all.js
delete mode 100644 website/source/javascripts/app/deploy/site.js
delete mode 100644 website/source/javascripts/app/deploy/site.min.js
delete mode 100644 website/source/javascripts/lib/bootstrap.min.js
delete mode 100644 website/source/javascripts/lib/jquery-2.0.3.min.js
delete mode 100755 website/source/stylesheets/_fonts.less
delete mode 100755 website/source/stylesheets/_mixins.less
delete mode 100755 website/source/stylesheets/_variables.less
delete mode 100755 website/source/stylesheets/bootstrap.min.css
delete mode 100644 website/source/stylesheets/main.css
delete mode 100755 website/source/stylesheets/main.less
diff --git a/website/Gemfile b/website/Gemfile
index 99e3e69cc..936305b5e 100644
--- a/website/Gemfile
+++ b/website/Gemfile
@@ -1,13 +1,3 @@
-source "https://rubygems.org"
+source 'https://rubygems.org'
-gem "less", "~> 2.6"
-gem "middleman", "~> 3.3"
-gem "middleman-minify-html", "~> 3.4"
-gem "rack-contrib", "~> 1.1"
-gem "redcarpet", "~> 3.1"
-gem "therubyracer", "~> 0.12"
-gem "thin", "~> 1.6"
-
-group :development do
- gem "highline", "~> 1.6"
-end
+gem 'middleman-hashicorp', github: 'hashicorp/middleman-hashicorp'
diff --git a/website/Gemfile.lock b/website/Gemfile.lock
index dd50f1ecc..b6d99f8d4 100644
--- a/website/Gemfile.lock
+++ b/website/Gemfile.lock
@@ -1,3 +1,20 @@
+GIT
+ remote: git://github.com/hashicorp/middleman-hashicorp.git
+ revision: 81fe3211fb66b867c70671ed2db12206d711d61b
+ specs:
+ middleman-hashicorp (0.1.0)
+ bootstrap-sass (~> 3.2)
+ builder (~> 3.2)
+ less (~> 2.6)
+ middleman (~> 3.3)
+ middleman-livereload (~> 3.3)
+ middleman-minify-html (~> 3.4)
+ middleman-syntax (~> 2.0)
+ rack-contrib (~> 1.1)
+ redcarpet (~> 3.1)
+ therubyracer (~> 0.12)
+ thin (~> 1.6)
+
GEM
remote: https://rubygems.org/
specs:
@@ -7,6 +24,9 @@ GEM
minitest (~> 5.1)
thread_safe (~> 0.1)
tzinfo (~> 1.1)
+ bootstrap-sass (3.2.0.2)
+ sass (~> 3.2)
+ builder (3.2.2)
celluloid (0.16.0)
timers (~> 4.0.0)
chunky_png (1.3.1)
@@ -28,18 +48,21 @@ GEM
compass-import-once (1.0.5)
sass (>= 3.2, < 3.5)
daemons (1.1.9)
+ em-websocket (0.5.1)
+ eventmachine (>= 0.12.9)
+ http_parser.rb (~> 0.6.0)
erubis (2.7.0)
eventmachine (1.0.3)
execjs (2.2.1)
- ffi (1.9.5)
+ ffi (1.9.6)
haml (4.0.5)
tilt
- highline (1.6.21)
hike (1.2.3)
hitimes (1.2.2)
hooks (0.4.0)
uber (~> 0.0.4)
htmlcompressor (0.1.2)
+ http_parser.rb (0.6.0)
i18n (0.6.11)
json (1.8.1)
kramdown (1.4.2)
@@ -73,6 +96,10 @@ GEM
rack-test (~> 0.6.2)
thor (>= 0.15.2, < 2.0)
tilt (~> 1.4.1, < 2.0)
+ middleman-livereload (3.3.4)
+ em-websocket (~> 0.5.1)
+ middleman-core (~> 3.2)
+ rack-livereload (~> 0.3.15)
middleman-minify-html (3.4.0)
htmlcompressor (~> 0.1.0)
middleman-core (>= 3.2)
@@ -81,6 +108,9 @@ GEM
sprockets (~> 2.12.1)
sprockets-helpers (~> 1.1.0)
sprockets-sass (~> 1.2.0)
+ middleman-syntax (2.0.0)
+ middleman-core (~> 3.2)
+ rouge (~> 1.0)
minitest (5.4.2)
multi_json (1.10.1)
padrino-helpers (0.12.3)
@@ -92,6 +122,8 @@ GEM
rack (1.5.2)
rack-contrib (1.1.0)
rack (>= 0.9.1)
+ rack-livereload (0.3.15)
+ rack
rack-test (0.6.2)
rack (>= 1.0)
rb-fsevent (0.9.4)
@@ -99,6 +131,7 @@ GEM
ffi (>= 0.5.0)
redcarpet (3.1.2)
ref (1.0.5)
+ rouge (1.7.2)
sass (3.4.5)
sprockets (2.12.2)
hike (~> 1.2)
@@ -124,7 +157,7 @@ GEM
hitimes
tzinfo (1.2.2)
thread_safe (~> 0.1)
- uber (0.0.8)
+ uber (0.0.9)
uglifier (2.5.3)
execjs (>= 0.3.0)
json (>= 1.8.0)
@@ -133,11 +166,4 @@ PLATFORMS
ruby
DEPENDENCIES
- highline (~> 1.6)
- less (~> 2.6)
- middleman (~> 3.3)
- middleman-minify-html (~> 3.4)
- rack-contrib (~> 1.1)
- redcarpet (~> 3.1)
- therubyracer (~> 0.12)
- thin (~> 1.6)
+ middleman-hashicorp!
diff --git a/website/Gruntfile.js b/website/Gruntfile.js
deleted file mode 100644
index cf24c632c..000000000
--- a/website/Gruntfile.js
+++ /dev/null
@@ -1,36 +0,0 @@
-// jshint node:true
-module.exports = function(grunt) {
-
-// Load plugins here
-grunt.loadNpmTasks('grunt-contrib-less');
-grunt.loadNpmTasks('grunt-contrib-clean');
-grunt.loadNpmTasks('grunt-contrib-connect');
-grunt.loadNpmTasks('grunt-contrib-copy');
-grunt.loadNpmTasks('grunt-contrib-watch');
-grunt.loadNpmTasks('grunt-recess');
-
-// Configuration goes here
-grunt.initConfig({
-
- less: {
- development:{
- files: {
- "source/stylesheets/main.css": "source/stylesheets/main.less"
- }
- }
- },
-
-
- watch: {
- less: {
- files: 'source/stylesheets/*.less',
- tasks: ['less']
- }
- }
-
-});
-
-// CSS Compilation task
-grunt.registerTask('default', ['watch']);
-
-};
diff --git a/website/config.rb b/website/config.rb
index 3cbbb2145..cc79c8858 100644
--- a/website/config.rb
+++ b/website/config.rb
@@ -2,23 +2,9 @@
# Configure Middleman
#-------------------------------------------------------------------------
-set :css_dir, 'stylesheets'
-set :js_dir, 'javascripts'
-set :images_dir, 'images'
-
-# Use the RedCarpet Markdown engine
-set :markdown_engine, :redcarpet
-set :markdown,
- :fenced_code_blocks => true,
- :with_toc_data => true
-
-# Build-specific configuration
-configure :build do
- activate :asset_hash
- activate :minify_html, remove_multi_spaces: false
- activate :minify_javascript
-end
-
-configure :development do
- set :debug_assets, true
+activate :hashicorp do |h|
+ h.version = '0.2.2'
+ h.bintray_repo = 'mitchellh/terraform'
+ h.bintray_user = 'mitchellh'
+ h.bintray_key = ENV['BINTRAY_API_KEY']
end
diff --git a/website/helpers/download_helpers.rb b/website/helpers/download_helpers.rb
deleted file mode 100644
index 494ed6a5e..000000000
--- a/website/helpers/download_helpers.rb
+++ /dev/null
@@ -1,63 +0,0 @@
-require "net/http"
-
-$terraform_files = {}
-$terraform_os = []
-
-if ENV["TERRAFORM_VERSION"]
- raise "BINTRAY_API_KEY must be set." if !ENV["BINTRAY_API_KEY"]
- http = Net::HTTP.new("dl.bintray.com", 80)
- req = Net::HTTP::Get.new("/mitchellh/terraform/")
- req.basic_auth "mitchellh", ENV["BINTRAY_API_KEY"]
- response = http.request(req)
-
- response.body.split("\n").each do |line|
- next if line !~ /\/mitchellh\/terraform\/terraform_(#{Regexp.quote(ENV["TERRAFORM_VERSION"])}.+?)'/
- filename = $1.to_s
- os = filename.split("_")[1]
- next if os == "SHA256SUMS"
- next if os == "web"
-
- $terraform_files[os] ||= []
- $terraform_files[os] << filename
- end
-
- $terraform_os = ["darwin", "linux", "windows"] & $terraform_files.keys
- $terraform_os += $terraform_files.keys
- $terraform_os.uniq!
-
- $terraform_files.each do |key, value|
- value.sort!
- end
-end
-
-module DownloadHelpers
- def download_arch(file)
- parts = file.split("_")
- return "" if parts.length != 3
- parts[2].split(".")[0]
- end
-
- def download_os_human(os)
- if os == "darwin"
- return "Mac OS X"
- elsif os == "freebsd"
- return "FreeBSD"
- elsif os == "openbsd"
- return "OpenBSD"
- elsif os == "Linux"
- return "Linux"
- elsif os == "windows"
- return "Windows"
- else
- return os
- end
- end
-
- def download_url(file)
- "https://dl.bintray.com/mitchellh/terraform/terraform_#{file}"
- end
-
- def latest_version
- ENV["TERRAFORM_VERSION"]
- end
-end
diff --git a/website/package.json b/website/package.json
deleted file mode 100755
index 5662c9eba..000000000
--- a/website/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "terraform"
- , "description": ""
- , "version": "1.0.0"
- , "devDependencies": {
- "grunt": "~0.4.1"
- , "grunt-cli": "~0.1.13"
- , "grunt-contrib-less": "~0.11.0"
- , "grunt-contrib-clean": "~0.5.0"
- , "grunt-contrib-connect": "~0.3.0"
- , "grunt-contrib-concat": "~0.3.0"
- , "grunt-contrib-copy": "~0.4.0"
- , "grunt-contrib-uglify": "~0.2.2"
- , "grunt-contrib-watch": "~0.5.1"
- , "grunt-recess": "~0.3.3"
- }
-}
diff --git a/website/source/fonts/.!50177!league_gothic-webfont.eot b/website/source/assets/fonts/.!50177!league_gothic-webfont.eot
similarity index 100%
rename from website/source/fonts/.!50177!league_gothic-webfont.eot
rename to website/source/assets/fonts/.!50177!league_gothic-webfont.eot
diff --git a/website/source/fonts/league_gothic-webfont.eot b/website/source/assets/fonts/league_gothic-webfont.eot
similarity index 100%
rename from website/source/fonts/league_gothic-webfont.eot
rename to website/source/assets/fonts/league_gothic-webfont.eot
diff --git a/website/source/fonts/league_gothic-webfont.svg b/website/source/assets/fonts/league_gothic-webfont.svg
similarity index 100%
rename from website/source/fonts/league_gothic-webfont.svg
rename to website/source/assets/fonts/league_gothic-webfont.svg
diff --git a/website/source/fonts/league_gothic-webfont.ttf b/website/source/assets/fonts/league_gothic-webfont.ttf
similarity index 100%
rename from website/source/fonts/league_gothic-webfont.ttf
rename to website/source/assets/fonts/league_gothic-webfont.ttf
diff --git a/website/source/fonts/league_gothic-webfont.woff b/website/source/assets/fonts/league_gothic-webfont.woff
similarity index 100%
rename from website/source/fonts/league_gothic-webfont.woff
rename to website/source/assets/fonts/league_gothic-webfont.woff
diff --git a/website/source/images/bg-galaxy.jpg b/website/source/assets/images/bg-galaxy.jpg
similarity index 100%
rename from website/source/images/bg-galaxy.jpg
rename to website/source/assets/images/bg-galaxy.jpg
diff --git a/website/source/images/bg-static.png b/website/source/assets/images/bg-static.png
similarity index 100%
rename from website/source/images/bg-static.png
rename to website/source/assets/images/bg-static.png
diff --git a/website/source/images/docs/module_graph.png b/website/source/assets/images/docs/module_graph.png
similarity index 100%
rename from website/source/images/docs/module_graph.png
rename to website/source/assets/images/docs/module_graph.png
diff --git a/website/source/images/docs/module_graph_expand.png b/website/source/assets/images/docs/module_graph_expand.png
similarity index 100%
rename from website/source/images/docs/module_graph_expand.png
rename to website/source/assets/images/docs/module_graph_expand.png
diff --git a/website/source/images/favicon.png b/website/source/assets/images/favicon.png
similarity index 100%
rename from website/source/images/favicon.png
rename to website/source/assets/images/favicon.png
diff --git a/website/source/images/feature-iterate-bg.png b/website/source/assets/images/feature-iterate-bg.png
similarity index 100%
rename from website/source/images/feature-iterate-bg.png
rename to website/source/assets/images/feature-iterate-bg.png
diff --git a/website/source/images/feature-iterate-bg@2x.png b/website/source/assets/images/feature-iterate-bg@2x.png
similarity index 100%
rename from website/source/images/feature-iterate-bg@2x.png
rename to website/source/assets/images/feature-iterate-bg@2x.png
diff --git a/website/source/images/footer-hashicorp-logo.png b/website/source/assets/images/footer-hashicorp-logo.png
similarity index 100%
rename from website/source/images/footer-hashicorp-logo.png
rename to website/source/assets/images/footer-hashicorp-logo.png
diff --git a/website/source/images/footer-hashicorp-logo@2x.png b/website/source/assets/images/footer-hashicorp-logo@2x.png
similarity index 100%
rename from website/source/images/footer-hashicorp-logo@2x.png
rename to website/source/assets/images/footer-hashicorp-logo@2x.png
diff --git a/website/source/images/footer-hashicorp-white-logo.png b/website/source/assets/images/footer-hashicorp-white-logo.png
similarity index 100%
rename from website/source/images/footer-hashicorp-white-logo.png
rename to website/source/assets/images/footer-hashicorp-white-logo.png
diff --git a/website/source/images/footer-hashicorp-white-logo@2x.png b/website/source/assets/images/footer-hashicorp-white-logo@2x.png
similarity index 100%
rename from website/source/images/footer-hashicorp-white-logo@2x.png
rename to website/source/assets/images/footer-hashicorp-white-logo@2x.png
diff --git a/website/source/images/graph-example.png b/website/source/assets/images/graph-example.png
similarity index 100%
rename from website/source/images/graph-example.png
rename to website/source/assets/images/graph-example.png
diff --git a/website/source/images/header-download-icon.png b/website/source/assets/images/header-download-icon.png
similarity index 100%
rename from website/source/images/header-download-icon.png
rename to website/source/assets/images/header-download-icon.png
diff --git a/website/source/images/header-download-icon@2x.png b/website/source/assets/images/header-download-icon@2x.png
similarity index 100%
rename from website/source/images/header-download-icon@2x.png
rename to website/source/assets/images/header-download-icon@2x.png
diff --git a/website/source/images/header-github-icon.png b/website/source/assets/images/header-github-icon.png
similarity index 100%
rename from website/source/images/header-github-icon.png
rename to website/source/assets/images/header-github-icon.png
diff --git a/website/source/images/header-github-icon@2x.png b/website/source/assets/images/header-github-icon@2x.png
similarity index 100%
rename from website/source/images/header-github-icon@2x.png
rename to website/source/assets/images/header-github-icon@2x.png
diff --git a/website/source/images/header-logo.png b/website/source/assets/images/header-logo.png
similarity index 100%
rename from website/source/images/header-logo.png
rename to website/source/assets/images/header-logo.png
diff --git a/website/source/images/header-logo@2x.png b/website/source/assets/images/header-logo@2x.png
similarity index 100%
rename from website/source/images/header-logo@2x.png
rename to website/source/assets/images/header-logo@2x.png
diff --git a/website/source/images/header-nav-divider.png b/website/source/assets/images/header-nav-divider.png
similarity index 100%
rename from website/source/images/header-nav-divider.png
rename to website/source/assets/images/header-nav-divider.png
diff --git a/website/source/images/header-nav-divider@2x.png b/website/source/assets/images/header-nav-divider@2x.png
similarity index 100%
rename from website/source/images/header-nav-divider@2x.png
rename to website/source/assets/images/header-nav-divider@2x.png
diff --git a/website/source/images/hero-bg.png b/website/source/assets/images/hero-bg.png
similarity index 100%
rename from website/source/images/hero-bg.png
rename to website/source/assets/images/hero-bg.png
diff --git a/website/source/images/logo-static.png b/website/source/assets/images/logo-static.png
similarity index 100%
rename from website/source/images/logo-static.png
rename to website/source/assets/images/logo-static.png
diff --git a/website/source/images/readme.png b/website/source/assets/images/readme.png
similarity index 100%
rename from website/source/images/readme.png
rename to website/source/assets/images/readme.png
diff --git a/website/source/images/sidebar-wire.png b/website/source/assets/images/sidebar-wire.png
similarity index 100%
rename from website/source/images/sidebar-wire.png
rename to website/source/assets/images/sidebar-wire.png
diff --git a/website/source/images/white-wireframe.png b/website/source/assets/images/white-wireframe.png
similarity index 100%
rename from website/source/images/white-wireframe.png
rename to website/source/assets/images/white-wireframe.png
diff --git a/website/source/images/white-wireframe@2x.png b/website/source/assets/images/white-wireframe@2x.png
similarity index 100%
rename from website/source/images/white-wireframe@2x.png
rename to website/source/assets/images/white-wireframe@2x.png
diff --git a/website/source/javascripts/app/Engine.Particle.Fixed.js b/website/source/assets/javascripts/app/Engine.Particle.Fixed.js
similarity index 100%
rename from website/source/javascripts/app/Engine.Particle.Fixed.js
rename to website/source/assets/javascripts/app/Engine.Particle.Fixed.js
diff --git a/website/source/javascripts/app/Engine.Particle.js b/website/source/assets/javascripts/app/Engine.Particle.js
similarity index 100%
rename from website/source/javascripts/app/Engine.Particle.js
rename to website/source/assets/javascripts/app/Engine.Particle.js
diff --git a/website/source/javascripts/app/Engine.Point.Puller.js b/website/source/assets/javascripts/app/Engine.Point.Puller.js
similarity index 100%
rename from website/source/javascripts/app/Engine.Point.Puller.js
rename to website/source/assets/javascripts/app/Engine.Point.Puller.js
diff --git a/website/source/javascripts/app/Engine.Point.js b/website/source/assets/javascripts/app/Engine.Point.js
similarity index 100%
rename from website/source/javascripts/app/Engine.Point.js
rename to website/source/assets/javascripts/app/Engine.Point.js
diff --git a/website/source/javascripts/app/Engine.Polygon.Puller.js b/website/source/assets/javascripts/app/Engine.Polygon.Puller.js
similarity index 100%
rename from website/source/javascripts/app/Engine.Polygon.Puller.js
rename to website/source/assets/javascripts/app/Engine.Polygon.Puller.js
diff --git a/website/source/javascripts/app/Engine.Polygon.js b/website/source/assets/javascripts/app/Engine.Polygon.js
similarity index 100%
rename from website/source/javascripts/app/Engine.Polygon.js
rename to website/source/assets/javascripts/app/Engine.Polygon.js
diff --git a/website/source/javascripts/app/Engine.Shape.Puller.js b/website/source/assets/javascripts/app/Engine.Shape.Puller.js
similarity index 100%
rename from website/source/javascripts/app/Engine.Shape.Puller.js
rename to website/source/assets/javascripts/app/Engine.Shape.Puller.js
diff --git a/website/source/javascripts/app/Engine.Shape.js b/website/source/assets/javascripts/app/Engine.Shape.js
similarity index 100%
rename from website/source/javascripts/app/Engine.Shape.js
rename to website/source/assets/javascripts/app/Engine.Shape.js
diff --git a/website/source/javascripts/app/Engine.Typewriter.js b/website/source/assets/javascripts/app/Engine.Typewriter.js
similarity index 100%
rename from website/source/javascripts/app/Engine.Typewriter.js
rename to website/source/assets/javascripts/app/Engine.Typewriter.js
diff --git a/website/source/javascripts/app/Engine.js b/website/source/assets/javascripts/app/Engine.js
similarity index 100%
rename from website/source/javascripts/app/Engine.js
rename to website/source/assets/javascripts/app/Engine.js
diff --git a/website/source/javascripts/app/Grid.js b/website/source/assets/javascripts/app/Grid.js
similarity index 100%
rename from website/source/javascripts/app/Grid.js
rename to website/source/assets/javascripts/app/Grid.js
diff --git a/website/source/javascripts/app/Init.js b/website/source/assets/javascripts/app/Init.js
similarity index 100%
rename from website/source/javascripts/app/Init.js
rename to website/source/assets/javascripts/app/Init.js
diff --git a/website/source/javascripts/app/Logo.js b/website/source/assets/javascripts/app/Logo.js
similarity index 100%
rename from website/source/javascripts/app/Logo.js
rename to website/source/assets/javascripts/app/Logo.js
diff --git a/website/source/javascripts/app/Puller.js b/website/source/assets/javascripts/app/Puller.js
similarity index 100%
rename from website/source/javascripts/app/Puller.js
rename to website/source/assets/javascripts/app/Puller.js
diff --git a/website/source/assets/javascripts/application.js b/website/source/assets/javascripts/application.js
new file mode 100644
index 000000000..9180016ef
--- /dev/null
+++ b/website/source/assets/javascripts/application.js
@@ -0,0 +1,24 @@
+//= require jquery
+//= require bootstrap
+
+//= require lib/String.substitute
+//= require lib/Vector
+//= require lib/Function.prototype.bind
+//= require lib/Base
+//= require lib/Chainable
+//= require lib/dbg
+
+//= require docs
+//= require app/Logo
+//= require app/Grid
+//= require app/Engine
+//= require app/Engine.Particle
+//= require app/Engine.Particle.Fixed
+//= require app/Engine.Point
+//= require app/Engine.Point.Puller
+//= require app/Engine.Polygon
+//= require app/Engine.Polygon.Puller
+//= require app/Engine.Shape
+//= require app/Engine.Shape.Puller
+//= require app/Engine.Typewriter
+//= require app/Init
diff --git a/website/source/javascripts/docs.js b/website/source/assets/javascripts/docs.js
similarity index 100%
rename from website/source/javascripts/docs.js
rename to website/source/assets/javascripts/docs.js
diff --git a/website/source/javascripts/html5shiv.js b/website/source/assets/javascripts/html5shiv.js
similarity index 100%
rename from website/source/javascripts/html5shiv.js
rename to website/source/assets/javascripts/html5shiv.js
diff --git a/website/source/javascripts/lang-go.js b/website/source/assets/javascripts/lang-go.js
similarity index 100%
rename from website/source/javascripts/lang-go.js
rename to website/source/assets/javascripts/lang-go.js
diff --git a/website/source/javascripts/lib/Base.js b/website/source/assets/javascripts/lib/Base.js
similarity index 100%
rename from website/source/javascripts/lib/Base.js
rename to website/source/assets/javascripts/lib/Base.js
diff --git a/website/source/javascripts/lib/Chainable.js b/website/source/assets/javascripts/lib/Chainable.js
similarity index 100%
rename from website/source/javascripts/lib/Chainable.js
rename to website/source/assets/javascripts/lib/Chainable.js
diff --git a/website/source/javascripts/lib/Function.prototype.bind.js b/website/source/assets/javascripts/lib/Function.prototype.bind.js
similarity index 100%
rename from website/source/javascripts/lib/Function.prototype.bind.js
rename to website/source/assets/javascripts/lib/Function.prototype.bind.js
diff --git a/website/source/javascripts/lib/String.substitute.js b/website/source/assets/javascripts/lib/String.substitute.js
similarity index 100%
rename from website/source/javascripts/lib/String.substitute.js
rename to website/source/assets/javascripts/lib/String.substitute.js
diff --git a/website/source/javascripts/lib/Vector.js b/website/source/assets/javascripts/lib/Vector.js
similarity index 100%
rename from website/source/javascripts/lib/Vector.js
rename to website/source/assets/javascripts/lib/Vector.js
diff --git a/website/source/javascripts/lib/dbg.js b/website/source/assets/javascripts/lib/dbg.js
similarity index 100%
rename from website/source/javascripts/lib/dbg.js
rename to website/source/assets/javascripts/lib/dbg.js
diff --git a/website/source/javascripts/prettify.js b/website/source/assets/javascripts/prettify.js
similarity index 100%
rename from website/source/javascripts/prettify.js
rename to website/source/assets/javascripts/prettify.js
diff --git a/website/source/javascripts/respond.min.js b/website/source/assets/javascripts/respond.min.js
similarity index 100%
rename from website/source/javascripts/respond.min.js
rename to website/source/assets/javascripts/respond.min.js
diff --git a/website/source/stylesheets/_buttons.less b/website/source/assets/stylesheets/_buttons.scss
similarity index 76%
rename from website/source/stylesheets/_buttons.less
rename to website/source/assets/stylesheets/_buttons.scss
index 321144554..6d225ce5e 100755
--- a/website/source/stylesheets/_buttons.less
+++ b/website/source/assets/stylesheets/_buttons.scss
@@ -4,21 +4,21 @@
.outline-btn{
background-color: transparent;
- color: @white;
- border: 2px solid @white;
- //border-radius: @btn-border-radius;
+ color: $white;
+ border: 2px solid $white;
+ //border-radius: $btn-border-radius;
text-decoration: none !important;
- .transition(background-color .3s ease-in-out);
+ @include transition(background-color .3s ease-in-out);
&.purple{
- color: @purple;
- border: 2px solid @purple;
+ color: $purple;
+ border: 2px solid $purple;
}
&:hover{
- color: @white;
+ color: $white;
background-color: rgba(255, 255, 255, .2);
- .transition(background-color .3s ease-in-out);
+ @include transition(background-color .3s ease-in-out);
&.purple{
background-color: rgba(255, 255, 255, .5);
@@ -28,11 +28,11 @@
.terra-btn{
background-color: rgba(130, 47, 247, 0.36);
- .transition( background-color 0.3s ease );
+ @include transition( background-color 0.3s ease );
&:hover{
background-color: rgba(130, 47, 247, 0.8);
- .transition( background-color 0.3s ease );
+ @include transition( background-color 0.3s ease );
}
}
@@ -62,4 +62,4 @@
-webkit-transform: skewY(15deg) translateY(10px);
-moz-transform: skewY(15deg) translateY(10px);
transform: skewY(15deg) translateY(10px);
-}*/
\ No newline at end of file
+}*/
diff --git a/website/source/stylesheets/_community.less b/website/source/assets/stylesheets/_community.scss
similarity index 100%
rename from website/source/stylesheets/_community.less
rename to website/source/assets/stylesheets/_community.scss
diff --git a/website/source/stylesheets/_docs.less b/website/source/assets/stylesheets/_docs.scss
similarity index 83%
rename from website/source/stylesheets/_docs.less
rename to website/source/assets/stylesheets/_docs.scss
index 02797d407..e4733e38b 100755
--- a/website/source/stylesheets/_docs.less
+++ b/website/source/assets/stylesheets/_docs.scss
@@ -3,7 +3,7 @@
// --------------------------------------------------
body.page-sub{
- background-color: @light-black;
+ background-color: $light-black;
}
body.layout-consul,
@@ -18,7 +18,7 @@ body.layout-docs,
body.layout-inner,
body.layout-downloads,
body.layout-intro{
- background: @light-black url('../images/sidebar-wire.png') left 62px no-repeat;
+ background: $light-black image-url('sidebar-wire.png') left 62px no-repeat;
>.container{
.col-md-8[role=main]{
@@ -41,7 +41,7 @@ body.layout-intro{
margin-right: 4%;
a{
- color: @purple;
+ color: $purple;
}
.docs-sidenav{
@@ -58,14 +58,14 @@ body.layout-intro{
> a{
color: white;
- .transition( color 0.5s ease );
+ @include transition( color 0.5s ease );
}
> a:hover,
> a:focus {
background-color: transparent !important;
color: white;
- .transition( color 0.5s ease );
+ @include transition( color 0.5s ease );
}
}
@@ -84,7 +84,7 @@ body.layout-intro{
&.active {
>a{
- color: lighten(@purple, 4%);
+ color: lighten($purple, 4%);
font-weight: 500;
}
@@ -93,9 +93,9 @@ body.layout-intro{
position: absolute;
width: 6px;
height: 8px;
- background-color: @purple;
+ background-color: $purple;
font-weight: 500;
- .skewY(24deg);
+ @include skewY(24deg);
top: 26px;
left: -10px;
}
@@ -105,14 +105,14 @@ body.layout-intro{
/*> a:hover,
> a:focus {
- font-weight: @font-weight-lato-xb;
+ font-weight: $font-weight-lato-xb;
}*/
.nav {
display: block;
li.active a {
- color: lighten(@purple, 4%);
+ color: lighten($purple, 4%);
font-weight: 500;
}
}
@@ -160,8 +160,8 @@ body.layout-intro{
p, li, .alert {
font-size: 20px;
- font-family: @font-family-open-sans;
- font-weight: @font-weight-open;
+ font-family: $font-family-open-sans;
+ font-weight: $font-weight-open;
line-height: 1.5em;
margin: 0 0 18px;
-webkit-font-smoothing: antialiased;
@@ -172,7 +172,7 @@ body.layout-intro{
}
a{
- color: @purple;
+ color: $purple;
&:hover{
text-decoration: underline;
}
@@ -185,13 +185,13 @@ body.layout-intro{
}
h1{
- color: @purple;
+ color: $purple;
text-transform: uppercase;
padding-bottom: 24px;
margin-top: 40px;
margin-bottom: 24px;
border-bottom: 1px solid #eeeeee;
- .lato-light();
+ @include lato-light();
}
h2, h3, h4{
@@ -235,13 +235,13 @@ body.layout-intro{
li{
> a{
color: black;
- .transition( color 0.5s ease );
+ @include transition( color 0.5s ease );
}
> a:hover,
> a:focus {
- color: @purple;
- .transition( color 0.5s ease );
+ color: $purple;
+ @include transition( color 0.5s ease );
}
}
@@ -253,7 +253,7 @@ body.layout-intro{
color: black;
&:hover{
- color: @purple;
+ color: $purple;
}
}
}
diff --git a/website/source/stylesheets/_downloads.less b/website/source/assets/stylesheets/_downloads.scss
similarity index 100%
rename from website/source/stylesheets/_downloads.less
rename to website/source/assets/stylesheets/_downloads.scss
diff --git a/website/source/assets/stylesheets/_fonts.scss b/website/source/assets/stylesheets/_fonts.scss
new file mode 100755
index 000000000..3f1d4aaed
--- /dev/null
+++ b/website/source/assets/stylesheets/_fonts.scss
@@ -0,0 +1,26 @@
+//
+// Typography
+// --------------------------------------------------
+
+//light
+.rls-l{
+ font-family: $font-family-lato;
+ font-weight: $font-weight-lato-xl;
+}
+
+//semibold
+.rls-sb{
+ font-family: $font-family-lato;
+ font-weight: $font-weight-lato-sb;
+}
+
+//extrabold
+.rls-xb{
+ font-family: $font-family-lato;
+ font-weight: $font-weight-lato-xb;
+}
+
+.os{
+ font-family: $font-family-open-sans;
+ font-weight: $font-weight-open;
+}
diff --git a/website/source/stylesheets/_footer.less b/website/source/assets/stylesheets/_footer.scss
similarity index 75%
rename from website/source/stylesheets/_footer.less
rename to website/source/assets/stylesheets/_footer.scss
index 3f90eac47..c16acff75 100644
--- a/website/source/stylesheets/_footer.less
+++ b/website/source/assets/stylesheets/_footer.scss
@@ -31,7 +31,7 @@ body.page-home{
}
.li-under a::after {
- background-color: @purple;
+ background-color: $purple;
}
li{
@@ -39,12 +39,12 @@ body.page-home{
text-transform: uppercase;
font-size: 12px;
letter-spacing: 3px;
- .transition( color 0.3s ease );
+ @include transition( color 0.3s ease );
font-weight: 400;
&:hover{
- color: @purple;
- .transition( color 0.3s ease );
+ color: $purple;
+ @include transition( color 0.3s ease );
background-color: transparent;
}
}
@@ -64,15 +64,15 @@ body.page-home{
&.download{
a{
- background: url(../images/icon-download-purple.png) 8px 6px no-repeat;
- .img-retina("../images/icon-download-purple.png", "../images/icon-download-purple@2x.png", 20px, 20px);
+ background: image-url('icon-download-purple.png') 8px 6px no-repeat;
+ @include img-retina("icon-download-purple.png", "icon-download-purple@2x.png", 20px, 20px);
}
}
&.github{
a{
- background: url(../images/icon-github-purple.png) 8px 6px no-repeat;
- .img-retina("../images/icon-github-purple.png", "../images/icon-github-purple@2x.png", 20px, 20px);
+ background: image-url('icon-github-purple.png') 8px 6px no-repeat;
+ @include img-retina("icon-github-purple.png", "icon-github-purple@2x.png", 20px, 20px);
}
}
}
@@ -91,7 +91,7 @@ body.page-home{
a{
color: black;
- font-weight: @font-weight-lato-xb;
+ font-weight: $font-weight-lato-xb;
}
span{
@@ -105,8 +105,8 @@ body.page-home{
display: inline-block;
width: 37px;
height: 40px;
- background: url(../images/footer-hashicorp-logo.png) 0 0 no-repeat;
- .img-retina("../images/footer-hashicorp-logo.png", "../images/footer-hashicorp-logo@2x.png", 37px, 40px);
+ background: image-url('footer-hashicorp-logo.png') 0 0 no-repeat;
+ @include img-retina("footer-hashicorp-logo.png", "footer-hashicorp-logo@2x.png", 37px, 40px);
}
}
}
@@ -119,7 +119,7 @@ body.page-home{
#footer{
padding: 140px 0 100px;
- background-color: @black;
+ background-color: $black;
transform: none;
>.container{
@@ -135,8 +135,8 @@ body.page-home{
.hashi-logo{
i{
- background: url(../images/footer-hashicorp-white-logo.png) 0 0 no-repeat;
- .img-retina("../images/footer-hashicorp-white-logo.png", "../images/footer-hashicorp-white-logo@2x.png", 37px, 40px);
+ background: image-url('footer-hashicorp-white-logo.png') 0 0 no-repeat;
+ @include img-retina("footer-hashicorp-white-logo.png", "footer-hashicorp-white-logo@2x.png", 37px, 40px);
}
}
}
diff --git a/website/source/stylesheets/_global.less b/website/source/assets/stylesheets/_global.scss
similarity index 74%
rename from website/source/stylesheets/_global.less
rename to website/source/assets/stylesheets/_global.scss
index 932d6098a..a244e55f9 100755
--- a/website/source/stylesheets/_global.less
+++ b/website/source/assets/stylesheets/_global.scss
@@ -9,10 +9,10 @@
body {
-webkit-font-smoothing: subpixel-antialiased;
- color: @black;
- background-color: @black;
+ color: $black;
+ background-color: $black;
font-size: 15px;
- font-family: @font-family-lato;
+ font-family: $font-family-lato;
font-weight: 500;
}
@@ -23,24 +23,24 @@ h1, h2, h3, h4, h5 {
h1{
font-size: 42px;
line-height: 42px;
- font-family: @font-family-lato;
- font-weight: @font-weight-lato-sb;
+ font-family: $font-family-lato;
+ font-weight: $font-weight-lato-sb;
margin-bottom: 24px;
}
h3{
font-size: 28px;
line-height: 28px;
- font-family: @font-family-lato;
- font-weight: @font-weight-lato-sb;
+ font-family: $font-family-lato;
+ font-weight: $font-weight-lato-sb;
}
//an alternative color for buttons in the doc body
.btn-serf{
- color: @white !important;
- background-color: @btn-color;
- border-radius: @btn-border-radius;
- //.box-shadow( @shadow );
+ color: $white !important;
+ background-color: $btn-color;
+ border-radius: $btn-border-radius;
+ //@include box-shadow( $shadow );
}
.highlight{
@@ -48,8 +48,8 @@ h3{
}
pre {
- background-color: @black;
- color: @white;
+ background-color: $black;
+ color: $white;
font-size: 14px;
font-weight: normal;
font-family: "Courier New", Monaco, Menlo, Consolas, monospace;
diff --git a/website/source/stylesheets/_header.less b/website/source/assets/stylesheets/_header.scss
similarity index 82%
rename from website/source/stylesheets/_header.less
rename to website/source/assets/stylesheets/_header.scss
index 2e7803e93..408d11d78 100755
--- a/website/source/stylesheets/_header.less
+++ b/website/source/assets/stylesheets/_header.scss
@@ -10,7 +10,7 @@ body.page-sub{
#header{
height: 90px;
- background-color: @purple;
+ background-color: $purple;
.navbar-collapse{
background-color: rgba(255, 255, 255, 0.98);
@@ -29,30 +29,30 @@ body.page-sub{
float: left !important;
li > a {
color: black;
- .transition( color 0.3s ease );
+ @include transition( color 0.3s ease );
}
}
.buttons.nav > li > a, .buttons.nav > li > a {
- //background-color: lighten(@purple, 1%);
- .transition( background-color 0.3s ease );
+ //background-color: lighten($purple, 1%);
+ @include transition( background-color 0.3s ease );
}
.buttons.nav > li > a:hover, .buttons.nav > li > a:focus {
background-color: black;
- .transition( background-color 0.3s ease );
+ @include transition( background-color 0.3s ease );
}
.main-links.nav > li > a:hover, .main-links.nav > li > a:focus {
- color: @purple;
- .transition( color 0.3s ease );
+ color: $purple;
+ @include transition( color 0.3s ease );
}
}
}
#header {
position: relative;
- color: @white;
+ color: $white;
text-rendering: optimizeLegibility;
margin-bottom: 0;
@@ -68,17 +68,17 @@ body.page-sub{
}
a{
- color: @white;
+ color: $white;
}
.navbar-toggle{
margin-top: 26px;
margin-bottom: 14px;
margin-right: 0;
- border: 2px solid @white;
+ border: 2px solid $white;
border-radius: 0;
.icon-bar{
- border: 1px solid @white;
+ border: 1px solid $white;
border-radius: 0;
}
}
@@ -90,10 +90,10 @@ body.page-sub{
height: 56px;
line-height: 56px;
font-size: 24px;
- .lato-light();
+ @include lato-light();
text-transform: uppercase;
- background: url(../images/consul-header-logo.png) 0 0 no-repeat;
- .img-retina("../images/header-logo.png", "../images/header-logo@2x.png", 50px, 56px);
+ background: image-url('consul-header-logo.png') 0 0 no-repeat;
+ @include img-retina("header-logo.png", "header-logo@2x.png", 50px, 56px);
-webkit-font-smoothing: default;
}
}
@@ -108,7 +108,7 @@ body.page-sub{
text-transform: uppercase;
letter-spacing: 3px;
padding-left: 22px;
- .transition( color 0.3s ease );
+ @include transition( color 0.3s ease );
}
&.first{
@@ -121,8 +121,8 @@ body.page-sub{
.nav > li > a:hover, .nav > li > a:focus {
background-color: transparent;
- color: lighten(@purple, 15%);
- .transition( color 0.3s ease );
+ color: lighten($purple, 15%);
+ @include transition( color 0.3s ease );
}
.main-links.navbar-nav{
@@ -139,8 +139,8 @@ body.page-sub{
top: 7px;
width: 1px;
height: 12px;
- background-color: @purple;
- .skewY(24deg);
+ background-color: $purple;
+ @include skewY(24deg);
padding-right: 0;
}
@@ -165,15 +165,15 @@ body.page-sub{
&.download{
a{
padding-left: 30px;
- background: url(../images/header-download-icon.png) 12px 8px no-repeat;
- .img-retina("../images/header-download-icon.png", "../images/header-download-icon@2x.png", 12px, 13px);
+ background: image-url("header-download-icon.png") 12px 8px no-repeat;
+ @include img-retina("header-download-icon.png", "header-download-icon@2x.png", 12px, 13px);
}
}
&.github{
a{
- background: url(../images/header-github-icon.png) 12px 7px no-repeat;
- .img-retina("../images/header-github-icon.png", "../images/header-github-icon@2x.png", 12px, 13px);
+ background: image-url("header-github-icon.png") 12px 7px no-repeat;
+ @include img-retina("header-github-icon.png", "header-github-icon@2x.png", 12px, 13px);
}
}
}
@@ -206,8 +206,8 @@ body.page-sub{
top: 9px;
width: 6px;
height: 8px;
- background-color: @purple;
- .skewY(24deg);
+ background-color: $purple;
+ @include skewY(24deg);
padding-right: 8px;
}
@@ -243,8 +243,8 @@ body.page-sub{
top: 9px;
width: 6px;
height: 8px;
- background-color: @purple;
- .skewY(24deg);
+ background-color: $purple;
+ @include skewY(24deg);
padding-right: 8px;
}
}
@@ -366,7 +366,7 @@ body.page-sub{
font-size: 20px !important;
line-height:42px !important;
margin-top: 23px !important ;
- .img-retina("../images/header-logo.png", "../images/header-logo@2x.png", 39px, 44px);
+ @include img-retina("../images/header-logo.png", "../images/header-logo@2x.png", 39px, 44px);
}
}
diff --git a/website/source/stylesheets/_home.less b/website/source/assets/stylesheets/_home.scss
similarity index 88%
rename from website/source/stylesheets/_home.less
rename to website/source/assets/stylesheets/_home.scss
index c35f18422..ecd8e882a 100755
--- a/website/source/stylesheets/_home.less
+++ b/website/source/assets/stylesheets/_home.scss
@@ -7,7 +7,7 @@
.feature{
padding: 240px 0;
- .lato-light();
+ @include lato-light();
h2{
text-align: right;
@@ -15,15 +15,15 @@
line-height: 44px;
letter-spacing: 2px;
text-transform: uppercase;
- color: @purple;
- .lato-light();
+ color: $purple;
+ @include lato-light();
}
p{
font-size: 16px;
letter-spacing: 1px;
line-height: 1.5em;
- font-family: @font-family-lato;
+ font-family: $font-family-lato;
font-weight: 300;
}
@@ -61,9 +61,9 @@
margin-top: -36px;
#feature-auto-bg{
- background: #fff url(../images/white-wireframe.png) center top no-repeat;
+ background: #fff image-url("white-wireframe.png") center top no-repeat;
background-size: cover;
- .skewY(-3deg);
+ @include skewY(-3deg);
z-index: 10;
}
@@ -98,11 +98,11 @@
}
#feature-iterate-bg{
- background: #fff url(../images/feature-iterate-bg.png) center top no-repeat;
+ background: #fff image-url("feature-iterate-bg.png") center top no-repeat;
border-top: 2px solid white;
- border-bottom: 2px solid @purple;
+ border-bottom: 2px solid $purple;
background-size: cover;
- .skewY(3deg);
+ @include skewY(3deg);
z-index: 20;
}
@@ -120,7 +120,7 @@
background-color: rgb(255, 255, 255);
width: 80px;
height: 80px;
- .skewY(26deg);
+ @include skewY(26deg);
float: left;
margin-right: 25px;
@@ -153,8 +153,8 @@
}
#feature-clone-bg{
- background-color: @purple;
- .skewY(3deg);
+ background-color: $purple;
+ @include skewY(3deg);
z-index: 20;
}
@@ -199,7 +199,7 @@
background-color: white;
width: 30px;
height: 30px;
- .skewY(30deg);
+ @include skewY(30deg);
margin: 5px 5px 0 0;
}
}
@@ -216,8 +216,8 @@
}
#cta-bg{
- background-color: @purple;
- .skewY(-3deg);
+ background-color: $purple;
+ @include skewY(-3deg);
z-index: 20;
}
@@ -238,7 +238,7 @@
font-size: 14px;
letter-spacing: 1px;
line-height: 1.5esm;
- font-family: @font-family-lato;
+ font-family: $font-family-lato;
}
@@ -256,7 +256,7 @@
text-transform: uppercase;
letter-spacing: 3px;
color: white;
- .lato-light();
+ @include lato-light();
font-weight: 500;
&:hover {
@@ -276,7 +276,7 @@
#demo-bg{
background-color: #000;
- .skewY(-3deg);
+ @include skewY(-3deg);
z-index: 30;
}
@@ -287,8 +287,8 @@
h2 {
margin-top: 0;
font-size: 28px;
- color: lighten(@purple, 8%);
- .lato-light();
+ color: lighten($purple, 8%);
+ @include lato-light();
}
p{
@@ -296,7 +296,7 @@
font-size: 16px;
letter-spacing: 1px;
line-height: 1.5em;
- color: @gray-light;
+ color: $gray-light;
font-weight: 400;
}
}
@@ -349,8 +349,8 @@
font-size: 14px;
letter-spacing: 1px;
color: white;
- font-family: @font-family-lato;
- font-weight: @font-weight-lato-xb;
+ font-family: $font-family-lato;
+ font-weight: $font-weight-lato-xb;
}
ul.shell-dots{
@@ -384,28 +384,28 @@
padding: 20px;
font-size: 15px;
font-family: "Courier New", Monaco, Menlo, Consolas, monospace;
- color: @white;
+ color: $white;
background-color: transparent;
overflow:auto;
font-weight: 500;
-webkit-font-smoothing: subpixel-antialiased;
.txt-spe {
- color: lighten(@blue, 5%);
+ color: lighten($blue, 5%);
font-weight: 600;
}
.txt-var {
- color: lighten(@purple, 8%);
+ color: lighten($purple, 8%);
font-weight: 600;
}
.txt-str {
- color: lighten(@green, 2%);
+ color: lighten($green, 2%);
}
.txt-int {
- color: lighten(@orange, 2%);
+ color: lighten($orange, 2%);
font-weight: 600;
}
@@ -414,7 +414,7 @@
white-space: pre-wrap;
}
.cursor {
- background-color: lighten(@purple, %5);
+ background-color: lighten($purple, 5%);
}
}
}
@@ -667,14 +667,14 @@
margin-top: -80px;
padding: 280px 0 360px;
color: white;
- background: #fff url(../images/feature-iterate-bg.png) center top no-repeat;
+ background: #fff image-url("feature-iterate-bg.png") center top no-repeat;
border-top: 2px solid white;
- border-bottom: 2px solid @purple;
+ border-bottom: 2px solid $purple;
background-size: cover;
- .skewY(3deg);
+ @include skewY(3deg);
>.container{
- .skewY(-3deg);
+ @include skewY(-3deg);
}
p{
@@ -693,7 +693,7 @@
background-color: rgb(255, 255, 255);
width: 40px;
height: 40px;
- .skewY(26deg);
+ @include skewY(26deg);
float: left;
margin-right: 15px;
}
@@ -729,7 +729,7 @@
background-color: white;
width: 15px;
height: 15px;
- .skewY(30deg);
+ @include skewY(30deg);
margin: 3px 3px 0 0;
}
}
diff --git a/website/source/stylesheets/_jumbotron.less b/website/source/assets/stylesheets/_jumbotron.scss
similarity index 97%
rename from website/source/stylesheets/_jumbotron.less
rename to website/source/assets/stylesheets/_jumbotron.scss
index 30df36368..39cc872e8 100755
--- a/website/source/stylesheets/_jumbotron.less
+++ b/website/source/assets/stylesheets/_jumbotron.scss
@@ -6,7 +6,7 @@
position:relative;
z-index:0;
height:700px;
- margin-top: @negative-hero-margin;
+ margin-top: $negative-hero-margin;
background-color: black;
}
@@ -15,15 +15,15 @@
height:700px;
padding-top: 0;
padding-bottom: 0;
- color: @jumbotron-color;
+ color: $jumbotron-color;
&.static {
- background-image:url(../images/bg-galaxy.jpg);
+ background-image:image-url("bg-galaxy.jpg");
background-position:50% 50%;
background-repeat:no-repeat;
.jumbotron-content {
- background-image:url(../images/bg-static.png);
+ background-image:image-url("bg-static.png");
background-size:cover;
background-position:50% 50%;
background-repeat:no-repeat;
@@ -35,7 +35,7 @@
position:absolute;
top:50%;
left:50%;
- background:url(../images/logo-static.png);
+ background:image-url("logo-static.png");
-webkit-background-size:100% 100%;
-moz-background-size:100% 100%;
@@ -92,7 +92,7 @@
top:0;
left:0;
- background-image:url(../images/bg-galaxy.jpg);
+ background-image:image-url("bg-galaxy.jpg");
/* background-size:cover; */
background-position:50% 50%;
background-repeat: no-repeat;
diff --git a/website/source/assets/stylesheets/_mixins.scss b/website/source/assets/stylesheets/_mixins.scss
new file mode 100755
index 000000000..f49151e3a
--- /dev/null
+++ b/website/source/assets/stylesheets/_mixins.scss
@@ -0,0 +1,724 @@
+//
+// Mixins
+// --------------------------------------------------
+
+
+// Utilities
+// -------------------------
+
+// Clearfix
+// Source: http://nicolasgallagher.com/micro-clearfix-hack/
+//
+// For modern browsers
+// 1. The space content is one way to avoid an Opera bug when the
+// contenteditable attribute is included anywhere else in the document.
+// Otherwise it causes space to appear at the top and bottom of elements
+// that are clearfixed.
+// 2. The use of `table` rather than `block` is only necessary if using
+// `:before` to contain the top-margins of child elements.
+@mixin clearfix() {
+ &:before,
+ &:after {
+ content: " "; /* 1 */
+ display: table; /* 2 */
+ }
+ &:after {
+ clear: both;
+ }
+}
+
+// Webkit-style focus
+@mixin tab-focus() {
+ // Default
+ outline: thin dotted #333;
+ // Webkit
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+
+// Center-align a block level element
+@mixin center-block() {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+// Sizing shortcuts
+@mixin size($width, $height) {
+ width: $width;
+ height: $height;
+}
+@mixin square($size) {
+ @include size($size, $size);
+}
+
+// Placeholder text
+@mixin placeholder($color: $input-color-placeholder) {
+ &:-moz-placeholder { color: $color; } // Firefox 4-18
+ &::-moz-placeholder { color: $color; } // Firefox 19+
+ &:-ms-input-placeholder { color: $color; } // Internet Explorer 10+
+ &::-webkit-input-placeholder { color: $color; } // Safari and Chrome
+}
+
+// Text overflow
+// Requires inline-block or block for proper styling
+@mixin text-overflow() {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+// CSS image replacement
+// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
+@mixin hide-text() {
+ font: #{"0/0"} a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
+}
+
+
+
+// CSS3 PROPERTIES
+// --------------------------------------------------
+
+// Single side border-radius
+@mixin border-top-radius($radius) {
+ border-top-right-radius: $radius;
+ border-top-left-radius: $radius;
+}
+@mixin border-right-radius($radius) {
+ border-bottom-right-radius: $radius;
+ border-top-right-radius: $radius;
+}
+@mixin border-bottom-radius($radius) {
+ border-bottom-right-radius: $radius;
+ border-bottom-left-radius: $radius;
+}
+@mixin border-left-radius($radius) {
+ border-bottom-left-radius: $radius;
+ border-top-left-radius: $radius;
+}
+
+// Drop shadows
+@mixin box-shadow($shadow) {
+ -webkit-box-shadow: $shadow; // iOS <4.3 & Android <4.1
+ box-shadow: $shadow;
+}
+
+// Transitions
+@mixin transition($transition) {
+ -webkit-transition: $transition;
+ transition: $transition;
+}
+@mixin transition-delay($transition-delay) {
+ -webkit-transition-delay: $transition-delay;
+ transition-delay: $transition-delay;
+}
+@mixin transition-duration($transition-duration) {
+ -webkit-transition-duration: $transition-duration;
+ transition-duration: $transition-duration;
+}
+@mixin transition-transform($transition) {
+ -webkit-transition: -webkit-transform $transition;
+ -moz-transition: -moz-transform $transition;
+ -o-transition: -o-transform $transition;
+ transition: transform $transition;
+}
+
+// Transformations
+@mixin rotate($degrees) {
+ -webkit-transform: rotate($degrees);
+ -ms-transform: rotate($degrees); // IE9+
+ transform: rotate($degrees);
+}
+@mixin scale($ratio) {
+ -webkit-transform: scale($ratio);
+ -ms-transform: scale($ratio); // IE9+
+ transform: scale($ratio);
+}
+@mixin translate($x, $y) {
+ -webkit-transform: translate($x, $y);
+ -ms-transform: translate($x, $y); // IE9+
+ transform: translate($x, $y);
+}
+@mixin skew($x, $y) {
+ -webkit-transform: skew($x, $y);
+ -ms-transform: skewX($x) skewY($y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+
+ transform: skew($x, $y);
+}
+@mixin translate3d($x, $y, $z) {
+ -webkit-transform: translate3d($x, $y, $z);
+ transform: translate3d($x, $y, $z);
+}
+
+// Backface visibility
+// Prevent browsers from flickering when using CSS 3D transforms.
+// Default value is `visible`, but can be changed to `hidden`
+// See git pull https://github.com/dannykeane/bootstrap.git backface-visibility for examples
+@mixin backface-visibility($visibility) {
+ -webkit-backface-visibility: $visibility;
+ -moz-backface-visibility: $visibility;
+ backface-visibility: $visibility;
+}
+
+// Box sizing
+@mixin box-sizing($boxmodel) {
+ -webkit-box-sizing: $boxmodel;
+ -moz-box-sizing: $boxmodel;
+ box-sizing: $boxmodel;
+}
+
+// User select
+// For selecting text on the page
+@mixin user-select($select) {
+ -webkit-user-select: $select;
+ -moz-user-select: $select;
+ -ms-user-select: $select; // IE10+
+ -o-user-select: $select;
+ user-select: $select;
+}
+
+// Resize anything
+@mixin resizable($direction) {
+ resize: $direction; // Options: horizontal, vertical, both
+ overflow: auto; // Safari fix
+}
+
+// CSS3 Content Columns
+@mixin content-columns($column-count, $column-gap: $grid-gutter-width) {
+ -webkit-column-count: $column-count;
+ -moz-column-count: $column-count;
+ column-count: $column-count;
+ -webkit-column-gap: $column-gap;
+ -moz-column-gap: $column-gap;
+ column-gap: $column-gap;
+}
+
+// Optional hyphenation
+@mixin hyphens($mode: auto) {
+ word-wrap: break-word;
+ -webkit-hyphens: $mode;
+ -moz-hyphens: $mode;
+ -ms-hyphens: $mode; // IE10+
+ -o-hyphens: $mode;
+ hyphens: $mode;
+}
+
+// Opacity
+@mixin opacity($opacity) {
+ opacity: $opacity;
+ // IE8 filter
+ $opacity-ie: ($opacity * 100);
+ filter: #{"alpha(opacity=#{opacity-ie})"};
+}
+
+
+
+// GRADIENTS
+// --------------------------------------------------
+
+#gradient {
+
+ // Horizontal gradient, from left to right
+ //
+ // Creates two color stops, start and end, by specifying a color and position for each color stop.
+ // Color stops are not available in IE9 and below.
+ @mixin horizontal($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
+ background-image: -webkit-gradient(linear, $start-percent top, $end-percent top, from($start-color), to($end-color)); // Safari 4+, Chrome 2+
+ background-image: -webkit-linear-gradient(left, color-stop($start-color $start-percent), color-stop($end-color $end-percent)); // Safari 5.1+, Chrome 10+
+ background-image: -moz-linear-gradient(left, $start-color $start-percent, $end-color $end-percent); // FF 3.6+
+ background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent); // Standard, IE10
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{argb($start-color)}', endColorstr='#{argb($end-color)}', GradientType=1); // IE9 and down
+ }
+
+ // Vertical gradient, from top to bottom
+ //
+ // Creates two color stops, start and end, by specifying a color and position for each color stop.
+ // Color stops are not available in IE9 and below.
+ @mixin vertical($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
+ background-image: -webkit-gradient(linear, left $start-percent, left $end-percent, from($start-color), to($end-color)); // Safari 4+, Chrome 2+
+ background-image: -webkit-linear-gradient(top, $start-color, $start-percent, $end-color, $end-percent); // Safari 5.1+, Chrome 10+
+ background-image: -moz-linear-gradient(top, $start-color $start-percent, $end-color $end-percent); // FF 3.6+
+ background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent); // Standard, IE10
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{argb($start-color)}', endColorstr='#{argb($end-color)}', GradientType=0); // IE9 and down
+ }
+
+ @mixin directional($start-color: #555, $end-color: #333, $deg: 45deg) {
+ background-repeat: repeat-x;
+ background-image: -webkit-linear-gradient($deg, $start-color, $end-color); // Safari 5.1+, Chrome 10+
+ background-image: -moz-linear-gradient($deg, $start-color, $end-color); // FF 3.6+
+ background-image: linear-gradient($deg, $start-color, $end-color); // Standard, IE10
+ }
+ @mixin horizontal-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
+ background-image: -webkit-gradient(left, linear, 0 0, 0 100%, from($start-color), color-stop($color-stop, $mid-color), to($end-color));
+ background-image: -webkit-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color);
+ background-image: -moz-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color);
+ background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
+ background-repeat: no-repeat;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{argb($start-color)}', endColorstr='#{argb($end-color)}', GradientType=1); // IE9 and down
+ }
+ @mixin vertical-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from($start-color), color-stop($color-stop, $mid-color), to($end-color));
+ background-image: -webkit-linear-gradient($start-color, $mid-color $color-stop, $end-color);
+ background-image: -moz-linear-gradient(top, $start-color, $mid-color $color-stop, $end-color);
+ background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
+ background-repeat: no-repeat;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{argb($start-color)}', endColorstr='#{argb($end-color)}', GradientType=0); // IE9 and down
+ }
+ @mixin radial($inner-color: #555, $outer-color: #333) {
+ background-image: -webkit-gradient(radial, center center, 0, center center, 460, from($inner-color), to($outer-color));
+ background-image: -webkit-radial-gradient(circle, $inner-color, $outer-color);
+ background-image: -moz-radial-gradient(circle, $inner-color, $outer-color);
+ background-image: radial-gradient(circle, $inner-color, $outer-color);
+ background-repeat: no-repeat;
+ }
+ @mixin striped($color: #555, $angle: 45deg) {
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient($angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient($angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient($angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
+ }
+}
+
+// Reset filters for IE
+//
+// When you need to remove a gradient background, do not forget to use this to reset
+// the IE filter for IE9 and below.
+@mixin reset-filter() {
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+
+
+
+// Retina images
+//
+// Short retina mixin for setting background-image and -size
+
+@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {
+ background-image: image-url("#{$file-1x}");
+ background-size: $width-1x $height-1x;
+
+ @media
+ only screen and (-webkit-min-device-pixel-ratio: 2),
+ only screen and ( min--moz-device-pixel-ratio: 2),
+ only screen and ( -o-min-device-pixel-ratio: 2/1),
+ only screen and ( min-device-pixel-ratio: 2),
+ only screen and ( min-resolution: 192dpi),
+ only screen and ( min-resolution: 2dppx) {
+ background-image: image-url("#{$file-2x}");
+ background-size: $width-1x $height-1x;
+ }
+}
+
+
+// Responsive image
+//
+// Keep images from scaling beyond the width of their parents.
+
+@mixin img-responsive($display: block) {
+ display: $display;
+ max-width: 100%; // Part 1: Set a maximum relative to the parent
+ height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching
+}
+
+
+// COMPONENT MIXINS
+// --------------------------------------------------
+
+// Horizontal dividers
+// -------------------------
+// Dividers (basically an hr) within dropdowns and nav lists
+@mixin nav-divider($color: #e5e5e5) {
+ height: 1px;
+ margin: (($line-height-computed / 2) - 1) 0;
+ overflow: hidden;
+ background-color: $color;
+}
+
+// Panels
+// -------------------------
+@mixin panel-variant($border, $heading-text-color, $heading-bg-color, $heading-border) {
+ border-color: $border;
+ & > .panel-heading {
+ color: $heading-text-color;
+ background-color: $heading-bg-color;
+ border-color: $heading-border;
+ + .panel-collapse .panel-body {
+ border-top-color: $border;
+ }
+ }
+ & > .panel-footer {
+ + .panel-collapse .panel-body {
+ border-bottom-color: $border;
+ }
+ }
+}
+
+// Alerts
+// -------------------------
+@mixin alert-variant($background, $border, $text-color) {
+ background-color: $background;
+ border-color: $border;
+ color: $text-color;
+ hr {
+ border-top-color: darken($border, 5%);
+ }
+ .alert-link {
+ color: darken($text-color, 10%);
+ }
+}
+
+// Tables
+// -------------------------
+@mixin table-row-variant($state, $background, $border) {
+ // Exact selectors below required to override `.table-striped` and prevent
+ // inheritance to nested tables.
+ .table > thead > tr,
+ .table > tbody > tr,
+ .table > tfoot > tr {
+ > td.#{state},
+ > th.#{state},
+ &.#{state} > td,
+ &.#{state} > th {
+ background-color: $background;
+ border-color: $border;
+ }
+ }
+
+ // Hover states for `.table-hover`
+ // Note: this is not available for cells or rows within `thead` or `tfoot`.
+ .table-hover > tbody > tr {
+ > td.#{state}:hover,
+ > th.#{state}:hover,
+ &.#{state}:hover > td {
+ background-color: darken($background, 5%);
+ border-color: darken($border, 5%);
+ }
+ }
+}
+
+// Button variants
+// -------------------------
+// Easily pump out default styles, as well as :hover, :focus, :active,
+// and disabled options for all buttons
+@mixin button-variant($color, $background, $border) {
+ color: $color;
+ background-color: $background;
+ border-color: $border;
+
+ &:hover,
+ &:focus,
+ &:active,
+ &.active,
+ .open .dropdown-toggle& {
+ color: $color;
+ background-color: darken($background, 8%);
+ border-color: darken($border, 12%);
+ }
+ &:active,
+ &.active,
+ .open .dropdown-toggle& {
+ background-image: none;
+ }
+ &.disabled,
+ &[disabled],
+ fieldset[disabled] & {
+ &,
+ &:hover,
+ &:focus,
+ &:active,
+ &.active {
+ background-color: $background;
+ border-color: $border
+ }
+ }
+}
+
+// Button sizes
+// -------------------------
+@mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
+ padding: $padding-vertical $padding-horizontal;
+ font-size: $font-size;
+ line-height: $line-height;
+ border-radius: $border-radius;
+}
+
+// Pagination
+// -------------------------
+@mixin pagination-size($padding-vertical, $padding-horizontal, $font-size, $border-radius) {
+ > li {
+ > a,
+ > span {
+ padding: $padding-vertical $padding-horizontal;
+ font-size: $font-size;
+ }
+ &:first-child {
+ > a,
+ > span {
+ @include border-left-radius($border-radius);
+ }
+ }
+ &:last-child {
+ > a,
+ > span {
+ @include border-right-radius($border-radius);
+ }
+ }
+ }
+}
+
+// Labels
+// -------------------------
+@mixin label-variant($color) {
+ background-color: $color;
+ &[href] {
+ &:hover,
+ &:focus {
+ background-color: darken($color, 10%);
+ }
+ }
+}
+
+// Navbar vertical align
+// -------------------------
+// Vertically center elements in the navbar.
+// Example: an element has a height of 30px, so write out `@include navbar-vertical-align(30px);` to calculate the appropriate top margin.
+@mixin navbar-vertical-align($element-height) {
+ margin-top: (($navbar-height - $element-height) / 2);
+ margin-bottom: (($navbar-height - $element-height) / 2);
+}
+
+// Progress bars
+// -------------------------
+// @mixin progress-bar-variant($color) {
+// background-color: $color;
+// .progress-striped & {
+// #gradient > @include striped($color);
+// }
+// }
+
+// Responsive utilities
+// -------------------------
+// More easily include all the states for responsive-utilities.less.
+@mixin responsive-visibility() {
+ display: block !important;
+ tr& { display: table-row !important; }
+ th&,
+ td& { display: table-cell !important; }
+}
+
+@mixin responsive-invisibility() {
+ display: none !important;
+ tr& { display: none !important; }
+ th&,
+ td& { display: none !important; }
+}
+
+// Grid System
+// -----------
+
+// Centered container element
+@mixin container-fixed() {
+ margin-right: auto;
+ margin-left: auto;
+ padding-left: ($grid-gutter-width / 2);
+ padding-right: ($grid-gutter-width / 2);
+ @include clearfix();
+}
+
+// Creates a wrapper for a series of columns
+@mixin make-row($gutter: $grid-gutter-width) {
+ margin-left: ($gutter / -2);
+ margin-right: ($gutter / -2);
+ @include clearfix();
+}
+
+// Generate the extra small columns
+@mixin make-xs-column($columns, $gutter: $grid-gutter-width) {
+ position: relative;
+ float: left;
+ width: percentage(($columns / $grid-columns));
+ // Prevent columns from collapsing when empty
+ min-height: 1px;
+ // Inner gutter via padding
+ padding-left: ($gutter / 2);
+ padding-right: ($gutter / 2);
+}
+
+// Generate the small columns
+@mixin make-sm-column($columns, $gutter: $grid-gutter-width) {
+ position: relative;
+ // Prevent columns from collapsing when empty
+ min-height: 1px;
+ // Inner gutter via padding
+ padding-left: ($gutter / 2);
+ padding-right: ($gutter / 2);
+
+ // Calculate width based on number of columns available
+ @media (min-width: $screen-sm) {
+ float: left;
+ width: percentage(($columns / $grid-columns));
+ }
+}
+
+// Generate the small column offsets
+@mixin make-sm-column-offset($columns) {
+ @media (min-width: $screen-sm) {
+ margin-left: percentage(($columns / $grid-columns));
+ }
+}
+@mixin make-sm-column-push($columns) {
+ @media (min-width: $screen-sm) {
+ left: percentage(($columns / $grid-columns));
+ }
+}
+@mixin make-sm-column-pull($columns) {
+ @media (min-width: $screen-sm) {
+ right: percentage(($columns / $grid-columns));
+ }
+}
+
+// Generate the medium columns
+@mixin make-md-column($columns, $gutter: $grid-gutter-width) {
+ position: relative;
+ // Prevent columns from collapsing when empty
+ min-height: 1px;
+ // Inner gutter via padding
+ padding-left: ($gutter / 2);
+ padding-right: ($gutter / 2);
+
+ // Calculate width based on number of columns available
+ @media (min-width: $screen-md) {
+ float: left;
+ width: percentage(($columns / $grid-columns));
+ }
+}
+
+// Generate the large column offsets
+@mixin make-md-column-offset($columns) {
+ @media (min-width: $screen-md) {
+ margin-left: percentage(($columns / $grid-columns));
+ }
+}
+@mixin make-md-column-push($columns) {
+ @media (min-width: $screen-md) {
+ left: percentage(($columns / $grid-columns));
+ }
+}
+@mixin make-md-column-pull($columns) {
+ @media (min-width: $screen-md) {
+ right: percentage(($columns / $grid-columns));
+ }
+}
+
+// Generate the large columns
+@mixin make-lg-column($columns, $gutter: $grid-gutter-width) {
+ position: relative;
+ // Prevent columns from collapsing when empty
+ min-height: 1px;
+ // Inner gutter via padding
+ padding-left: ($gutter / 2);
+ padding-right: ($gutter / 2);
+
+ // Calculate width based on number of columns available
+ @media (min-width: $screen-lg) {
+ float: left;
+ width: percentage(($columns / $grid-columns));
+ }
+}
+
+// Generate the large column offsets
+@mixin make-lg-column-offset($columns) {
+ @media (min-width: $screen-lg) {
+ margin-left: percentage(($columns / $grid-columns));
+ }
+}
+@mixin make-lg-column-push($columns) {
+ @media (min-width: $screen-lg) {
+ left: percentage(($columns / $grid-columns));
+ }
+}
+@mixin make-lg-column-pull($columns) {
+ @media (min-width: $screen-lg) {
+ right: percentage(($columns / $grid-columns));
+ }
+}
+
+
+// Form validation states
+//
+// Used in forms.less to generate the form validation CSS for warnings, errors,
+// and successes.
+
+@mixin form-control-validation($text-color: #555, $border-color: #ccc, $background-color: #f5f5f5) {
+ // Color the label and help text
+ .help-block,
+ .control-label {
+ color: $text-color;
+ }
+ // Set the border and box shadow on specific inputs to match
+ .form-control {
+ border-color: $border-color;
+ @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
+ &:focus {
+ border-color: darken($border-color, 10%);
+ $shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten($border-color, 20%);
+ @include box-shadow($shadow);
+ }
+ }
+ // Set validation states also for addons
+ .input-group-addon {
+ color: $text-color;
+ border-color: $border-color;
+ background-color: $background-color;
+ }
+}
+
+// Form control focus state
+//
+// Generate a customized focus state and for any input with the specified color,
+// which defaults to the `$input-focus-border` variable.
+//
+// We highly encourage you to not customize the default value, but instead use
+// this to tweak colors on an as-needed basis. This aesthetic change is based on
+// WebKit's default styles, but applicable to a wider range of browsers. Its
+// usability and accessibility should be taken into account with any change.
+//
+// Example usage: change the default blue border and shadow to white for better
+// contrast against a dark gray background.
+
+@mixin form-control-focus($color: $input-border-focus) {
+ $color-rgba: rgba(red($color), green($color), blue($color), .6);
+ &:focus {
+ border-color: $color;
+ outline: 0;
+ @include box-shadow(#{"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px #{color-rgba}"});
+ }
+}
+
+// Form control sizing
+//
+// Relative text size, padding, and border-radii changes for form controls. For
+// horizontal sizing, wrap controls in the predefined grid classes. `
- <% $terraform_os.each do |os| %>
+ <% product_versions.each do |os, versions| %>
-
<%= image_tag "/images/icons/icon_#{os}.png" %>
+
<%= system_icon(os) %>
-
<%= download_os_human(os) %>
+
<%= os %>
diff --git a/website/source/images/icons/icon_darwin.png b/website/source/images/icons/icon_darwin.png
deleted file mode 100644
index fdbc1e536fcaac800b642bb09adf869f3d17eece..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 792
zcmV+z1LypSP)
8Ly1wscu1VJDf2Q?ZHUk=D2NYa34KxiP721Mt=lMOhi4Kg5Em+!it`gq3yL{nM5
zAe!rS1?l-54fk+ZJvQYO1Cmk*2=np`YYee0U`a~VI2g>SR&(jOI%8W`^Sa~A?mS|@
zk>e(OI}~*W=80F$>97UwRp9~iw)fZ5)R`(;@OJC*Hd%L6@Uxzq-TOp!8QbH}inCRB
zSRIO5uVvJX-CKsL_Dzoz!((SW>I|bejP3kS0$46~!@WKs2`)7&2?tdh-ZcTb3ZO
zCha1E2y!>1j{?bXP#0y(YP5?8B8VV5YSn1e?T8?P2*NdqGF|w-owhAOLPDN;UM0v)
zJ(5;E_&Skb(2#h840=H!+H%HGL!y+qAy9Wr72ot?iP{=94r?qSwG6^OLF5!arMi^l^hni!&=B87Q4f$
z>fo33H$XD^fLPTW{E{XGk)*pC$Q>5D!(w+>><)|FVX-?bc88Tup3t%rhc%pj+qU)L
zuu7JQ;kZon)%Ep?;kc@{>;-OE)jyB=D0_hXRq*Gf9se(1>Bp^(K7ibGK-VOtzV!!8
W%1}d@NKFd>0000$>kofBW2f
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