diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 09637914e..000000000
--- a/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-.DS_Store
-.metalsmith/build
-npm-debug.log
-node_modules
-/.agignore
-secret_config.json
-*.pem
diff --git a/.metalsmith/README.md b/.metalsmith/README.md
deleted file mode 100644
index b26f7d9de..000000000
--- a/.metalsmith/README.md
+++ /dev/null
@@ -1,98 +0,0 @@
-
-# KDLearn Development
-
-KDLearn is a series of Markdown files which are compiled to HTML. This
-compiling is handled by code found within this directory.
-
-## Content First
-
-Note that KDLearn's project structure is **content first**. This means that
-when someone visits the repo, they immediately see the content and know how to
-write it. They don't have to learn our implementation or even have a clue how
-to compile it. They only have to know Markdown.
-
-So, if you're looking to contribute features to KDLearn, make sure that
-implementation stays entirely within this directory. This includes all SASS,
-layout images, javascript, etc.
-
-## Installation
-
-A global installation of `gulp`, and varying node packages are required. From
-the `kdlearn` directory, type the following:
-
-```
-npm install -g gulp
-cd .metalsmith
-npm install
-```
-
-## Building
-
-With Gulp installed, simply run the following command, to compile the entire
-project into HTML.
-
-```
-cd .metalsmith
-gulp
-```
-
-The `./build` directory will contain all of the compiled html, css, and any
-static resources *(such as images/etc)* from the markdown directory.
-
-## Previewing
-
-If you want to preview the compiled site, open a new Koding Terminal tab and
-run the following:
-
-```
-cd .metalsmith
-gulp preview
-```
-
-This will run a small HTTP Server on Port `8000`, ie: `http://you.kd.io:8000`.
-
-Keep this tab open, and in a **different** Koding Terminal tab run your `gulp`
-command from above. Each time you compile the site, this will show your
-compiled site.
-
-
-## Compiling as you type
-
-To have your Markdown compiled as you write your documents, run the following
-commands:
-
-```
-cd .metalsmith
-gulp watch
-```
-
-This, in combination with the preview command above, will compile the site each
-time you change the Markdown.
-
-Of course, you can skip the `cd` command if you're already in the source
-directory.
-
-## Troubleshooting
-
-### Error: No local gulp install found in kdlearn
-
-The `gulp` command needs to be run from the `kdlearn/.metalsmith` directory.
-Assuming that you're in the `kdlearn` directory, navigate into the
-`.metalsmith` directory with the following command:
-
-```
-cd .metalsmith
-```
-
-### Missing Installation Packages
-
-If you failed to install the dependencies, or if the **dependencies have
-changed**, your `gulp` command may fail with verbose and confusing errors.
-There's no telling what the errors will say, because there is no telling what
-exactly will be missing when you see it.
-
-Regardless, if you're running into weird errors, try simply installing the
-dependencies again. If you're up to date, nothing will be installed. If you're
-missing something, it will be installed. See the [installation
-instructions](#installation) above for instructions.
-
diff --git a/.metalsmith/client/animations.coffee b/.metalsmith/client/animations.coffee
deleted file mode 100644
index 72eb43cd5..000000000
--- a/.metalsmith/client/animations.coffee
+++ /dev/null
@@ -1,140 +0,0 @@
-#
-# # General Animations
-#
-# General animation logic.
-#
-
-
-
-
-# ## Animate
-#
-# Add classes to the supplied element, and remove them after the
-# animation is done.
-animate = (jqo, classes, opts={}) ->
- # The end classes are used by jquery to detect when the animation
- # has ended.
- animEndedClasses = 'webkitAnimationEnd mozAnimationEnd
- MSAnimationEnd oanimationend animationend'
-
- # First up, add the animation classes.
- jqo.addClass classes
-
- # If the animation needs to set the display property to a visible
- # (not-none) value, we set it right away so that the animations
- # are visible. Note that the caller should be assigning a
- # css class above that sets the position/alpha/etc of the element
- # properly before setting to display.
- if opts.display? and opts.display != 'none'
- jqo.css 'display', opts.display
-
- # Add a callback for when the animations end, once.
- jqo.one animEndedClasses, ->
- jqo.css 'display', opts.display if opts.display?
- jqo.removeClass classes
-
-
-# ## Share Animations
-#
-# Set the share button to animate the sharebuttons in or out.
-setupShareAnimations = ->
- shareBtns = jQuery '#share-buttons'
-
- # The visiblity/display usage here is due to two things.
- # 1. We want the element hidden on page load.
- # 2. The share javascript has issues if the element is set to
- # display-none in the source html. So, we're setting it to *hidden*
- # with the page style, and then when this JS loads we set it to
- # display-none. This way the share-js works properly, and the
- # user still doesn't see a flash of the share buttons.
- shareBtns.css 'visibility', 'inherit'
- shareBtns.css 'display', 'none'
-
- jQuery('#share').click (e) ->
- e.preventDefault()
- switch shareBtns.css 'display'
- when 'block'
- animate shareBtns, 'animated fadeOutUp',
- display: 'none'
- else
- animate shareBtns, 'animated fadeInDown',
- display: 'block'
-
-# ## Search Animations
-#
-# Setup the animations for when the top search
-# icon (upper right) is clicked.
-setupSearchAnimations = ->
- jQuery('.topSearchButton').on 'click', ->
- jQuery('.topSearchBox').slideToggle()
- jQuery('.topSearchBox #topSearch').focus()
-
-# ## Mobile menu Animations
-#
-# Setup the animations for when the mobile menu
-# is clicked.
-setupMenuAnimations = ->
- jQuery('#mobile-menu').on 'click', ->
- jQuery('.toplinks').slideToggle()
-
-setupSubmenuAnimations = ->
- jQuery('nav #menu > .toplinks > li').hover (->
- jQuery(this).find(".icon").removeClass "fa-angle-down"
- jQuery(this).find(".icon").addClass "fa-angle-up"
- return
- ), ->
- jQuery(this).find(".icon").removeClass "fa-angle-up"
- jQuery(this).find(".icon").addClass "fa-angle-down"
- return
-
- jQuery(".submenu .column:first-child > span.submenu-item").each (i) ->
- jQuery(this).hover (->
- jQuery(".submenu .column:last-child > span.submenu-desc").each (j) ->
- if i == j
- jQuery(this).css 'display', 'block'
- return
- return
- ), ->
- jQuery(".submenu .column:last-child > span.submenu-desc").each (j) ->
- if i == j
- jQuery(this).css 'display', 'none'
- return
- return
-
- countFirst = jQuery('.submenu .column:first-child > span.submenu-item').length;
-
- jQuery(".submenu .column:nth-child(2) > span.submenu-item").each (i) ->
- jQuery(this).hover (->
- jQuery(".submenu .column:last-child > span.submenu-desc").each (j) ->
- if countFirst + i == j
- jQuery(this).css 'display', 'block'
- return
- return
- ), ->
- jQuery(".submenu .column:last-child > span.submenu-desc").each (j) ->
- if countFirst + i == j
- jQuery(this).css 'display', 'none'
- return
- return
-
-setupBackTopAnimations = ->
- offset = 250
- duration = 300
- jQuery(window).scroll ->
- if jQuery(this).scrollTop() > offset
- jQuery('.back-to-top').fadeIn duration
- else
- jQuery('.back-to-top').fadeOut duration
- return
- jQuery('.back-to-top').click (event) ->
- event.preventDefault()
- jQuery('html, body').animate { scrollTop: 0 }, duration
- false
-
-# When jquery is ready, setup our animations.
-jQuery(document).ready ->
- setupSearchAnimations()
- setupShareAnimations()
- setupMenuAnimations()
- setupSubmenuAnimations()
- setupBackTopAnimations()
\ No newline at end of file
diff --git a/.metalsmith/client/images.coffee b/.metalsmith/client/images.coffee
deleted file mode 100644
index 9c02db4e4..000000000
--- a/.metalsmith/client/images.coffee
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# # Images
-#
-# Some general images code.
-#
-
-
-
-setupImages = ->
- jQuery ".docs-content img"
- .each ->
- jQuery this
- .fancybox
- href:
- jQuery this
- .attr "src"
- maxWidth: 800
- maxHeight: 600
- fitToView: false
- width: '70%'
- height: '70%'
- autoSize: false
- closeClick: false
- openEffect: 'elastic'
- closeEffect: 'none'
- helpers: title: type: 'inside'
-
-
-# When jquery is ready, run our setup code.
-jQuery(document).ready -> setupImages()
diff --git a/.metalsmith/client/linkback.coffee b/.metalsmith/client/linkback.coffee
deleted file mode 100644
index 7b4e49c94..000000000
--- a/.metalsmith/client/linkback.coffee
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# # Linkback
-#
-# Change the linkback user interactions based on the users logged
-# in/out status on Koding.
-#
-
-
-jQuery.ready ->
- username = jQuery.cookie 'ajs_user_id'
- # The cookie value is stored as `"foo"`, so we trim off the quotes
- # If it equals `"null"` we set it to null
- username = if username is '"null"' then null else username[1...-1]
-
- # If the username doesn't exist, we display a register message.
- if not username?
- link = jQuery '.koding-linkback .large a'
- link.text 'Register for a free Koding account and try this now'
- link.attr 'href', 'https://koding.com/Register?\
- utm_source=KodingUniversity&\
- utm_content=SignupButton&\
- utm_campaign=growth'
- # If the user does exist, they see the message set in html.
diff --git a/.metalsmith/client/search.coffee b/.metalsmith/client/search.coffee
deleted file mode 100644
index 2167ea586..000000000
--- a/.metalsmith/client/search.coffee
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# # Search
-#
-# Search related coffee.
-#
-
-
-
-setupSearch = ->
- pathname = jQuery location # Get the browser location
- .attr 'pathname' # Extract the pathname from that
- .replace /\//g, '' # Remove path ambiguity, /search/ vs /search
-
- # If we're not on the search page, we don't run.
- if pathname isnt 'search' then return
-
- # Get the search results element, and use tapir to populate it.
- jQuery '#search-results'
- .tapir
- 'host': 'http://ulkk65a182f3.leeolayvar.koding.io:3000/search'
- 'token': '543475ab3493cda4d1000001'
- 'query_param': 'q'
- 'summary_limit': 400
-
-
-
-jQuery(document).ready -> setupSearch()
diff --git a/.metalsmith/client/videos.coffee b/.metalsmith/client/videos.coffee
deleted file mode 100644
index a4c53c2a7..000000000
--- a/.metalsmith/client/videos.coffee
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# # Videos
-#
-# Some general video code.
-#
-
-
-
-setupVideos = ->
- jQuery ".youtube-mini"
- .fancybox
- beforeShow: ->
- slug = jQuery @element
- .attr 'slug'
- @title = '' + @title + ''
- maxWidth: 800
- maxHeight: 600
- fitToView: false
- width: '70%'
- height: '70%'
- autoSize: false
- closeClick: false
- openEffect: 'elastic'
- closeEffect: 'none'
- helpers: title: type: 'inside'
-
-
-
-
-# When jquery is ready, run our setup code.
-jQuery(document).ready -> setupVideos()
diff --git a/.metalsmith/gulpfile.coffee b/.metalsmith/gulpfile.coffee
deleted file mode 100644
index 283629759..000000000
--- a/.metalsmith/gulpfile.coffee
+++ /dev/null
@@ -1,190 +0,0 @@
-#
-# # Gulpfile
-#
-# The Gulpfile is responsible for compiling our Metalsmith project,
-# sass, and any other build processes we may need. It also supports live
-# compiling the project, and reloading the code.
-#
-# Run with `cult`, and see README.md for more usage docs.
-#
-metal = require './metal'
-path = require 'path'
-connect = require 'connect'
-gulp = require 'gulp'
-coffee = require 'gulp-coffee'
-concat = require 'gulp-concat'
-minifyCss = require 'gulp-minify-css'
-minifyHtml = require 'gulp-minify-html'
-sass = require 'gulp-sass'
-uglify = require 'gulp-uglify'
-util = require 'gulp-util'
-
-
-
-paths =
- code: [
- '!sass/**'
- # I had a hard time ignoring node_modules, so instead
- # i'm manually adding the dirs i want to watch.
- '*'
- 'plugins/**'
- 'static/**'
- 'templates/**'
- ]
- documents: [
- '!**'
- '../**/*.md'
- ]
- sass: './sass/**/*.scss'
- staticDocuments: [
- '!**'
- '!../**/*.md'
- '../**/*.*'
- ]
- static: [
- '!static/**/*.coffee'
- 'static/**/*'
- ]
- vendor:
- js: 'vendor/js/**/*.js'
- css: [
- 'vendor/css/**/*.css'
- 'vendor/sass/**/*.scss'
- 'vendor/sass/**/*.sass'
- ]
-
-
-# ## client:coffee
-#
-# Compile coffee found in the static dir.
-gulp.task 'client:coffee', ->
- gulp.src 'client/**/*.coffee'
- .pipe coffee()
- .pipe uglify()
- .pipe concat 'main.js'
- .pipe gulp.dest 'build/js'
-
-
-# ## metalsmith
-#
-# Compile our metalsmith markdown and templates.
-gulp.task 'metalsmith', (callback) -> metal callback
-
-
-## metalsmith:minify
-#
-# Minify html in the build directory.
-#
-# Note: This is a "hack" until i can find a clear
-# metalsmith->gulp pipe solution. When that happens, we'll
-# just pipe straight from metalsmith into gulp-minify-html.
-gulp.task 'metalsmith:minify', ['metalsmith']
-# DISABLED
-# The minify-html module was returning a callstack error. To deal with this
-# i am disabling it.
-#gulp.task 'metalsmith:minify', ['metalsmith'], ->
-# gulp.src 'build/**/*.html'
-# .pipe minifyHtml()
-# .pipe gulp.dest 'build'
-
-
-# ## preview
-#
-# Run a small http server pointed at the build directory, to preview
-# the compiled pages.
-gulp.task 'preview', ['build'], ->
- connect()
- .use connect.static path.join __dirname, 'build'
- .listen 8000
-
-
-# ## sass
-#
-# Compile our sass to css in the build dir.
-gulp.task 'sass', ->
- gulp.src paths.sass
- .pipe sass()
- .pipe minifyCss()
- .pipe gulp.dest 'build/css'
-
-
-# ## static
-#
-# Copy static assets to build dir.
-gulp.task 'static', ->
- gulp.src paths.static
- .pipe gulp.dest 'build'
-
-
-# ## staticDocuments
-#
-# Copy static assets to build dir.
-gulp.task 'staticDocuments', ->
- gulp.src paths.staticDocuments
- .pipe gulp.dest 'build'
-
-
-# ## vendor:js
-#
-# Uglify all of the vendor files and concatenate them into a
-# single file.
-gulp.task 'vendor:js', ->
- gulp.src paths.vendor.js
- .pipe uglify()
- .pipe concat 'vendor.js'
- .pipe gulp.dest 'build/js'
-
-
-# ## vendor:css
-#
-# Minify all the vendor css and sass. Note that the `sass()` plugin
-# only cares about sass files.
-gulp.task 'vendor:css', ->
- gulp.src paths.vendor.css
- .pipe sass()
- .pipe minifyCss()
- .pipe concat 'vendor.css'
- .pipe gulp.dest 'build/css'
-
-
-# ## watch:code
-#
-# Watch the metalsmith code and reload it when changes are detected.
-# Note that this will not reload changes to this Gulpfile.
-gulp.task 'watch:code', ->
- gulp.watch paths.code, ['coffee', 'static'], ->
- util.log 'Code changed, reloading and compiling.'
- delete require.cache[path.join __dirname, 'metal.coffee']
- metal = require './metal'
- metal()
-
-
-# ## watch:md
-#
-# Run a web server exposing the files in the build directory, and recompile
-# the markdown on change.
-gulp.task 'watch:md', ['metalsmith'], ->
- gulp.watch paths.documents, ['metalsmith']
-
-
-# ## watch:sass
-#
-# Watch sass files for changes, compile on change.
-gulp.task 'watch:sass', ['sass'], ->
- gulp.watch paths.sass, ['sass']
-
-
-gulp.task 'client', ['client:coffee']
-gulp.task 'vendor', ['vendor:css', 'vendor:js']
-
-
-gulp.task 'watch', ['watch:md']
-gulp.task 'watch:all', ['watch:md', 'watch:code', 'watch:sass']
-gulp.task 'build', [
- 'metalsmith:minify'
- 'client', 'vendor'
- 'sass',
- 'static', 'staticDocuments'
- ]
-
-gulp.task 'default', ['build']
diff --git a/.metalsmith/helper b/.metalsmith/helper
deleted file mode 100755
index 897939944..000000000
--- a/.metalsmith/helper
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/usr/bin/env fish
-#
-# # Helper
-#
-
-
-if test (count $argv) -lt 1
- echo "
-Helper command required. See the following command for help
-
- ./helper help
-"
-else
- switch $argv[1]
- case "help"
- echo "
-Commands:
- build # Build kdlearn
- deploy # Deploy kdlearn
- init # Use once to setup a new repo
- preview # Run a server to preview on port 8000
-
-Example Deploy:
- ./helper build
- ./helper deploy
-"
- exit 0
-
- case "build"
- cd ./build
- and set -l cur_br (git branch | sed -n 's/^\* //p')
- and test "$cur_br" = "production"
- and git reset --hard HEAD
- and git clean -fd
- and git pull origin production
- and cd ..
- and gulp
- or begin
- set -l err $status
- echo "Unknown Error. Exit status: $err, build branch: $cur_br"
- exit $err
- end
-
- case "deploy"
- cd ./build
- and git add .
- and git commit -m "updated site"
- and git push
- or begin
- set -l err $status
- echo "Unknown Error. Exit status: $err"
- exit $err
- end
-
- case "init"
- rm -rf ./build
- and git clone git@github.com:koding/kdlearn build
- and cd ./build
- and git checkout production
- and cd ..
- or begin
- set -l err $status
- echo "Unknown Error. Exit status: $err"
- exit $err
- end
-
- case "preview"
- cd ./build
- and python -m SimpleHTTPServer
- end
-end
-
-
-# vim: set filetype=fish:
diff --git a/.metalsmith/metal.coffee b/.metalsmith/metal.coffee
deleted file mode 100644
index c8c67dd5e..000000000
--- a/.metalsmith/metal.coffee
+++ /dev/null
@@ -1,242 +0,0 @@
-#
-# # Metal
-#
-# Our metalsmith build code.
-#
-path = require 'path'
-highlightjs = require 'highlight.js'
-marked = require 'marked'
-metalsmith = require 'metalsmith'
-collections = require 'metalsmith-collections'
-drafts = require 'metalsmith-drafts'
-excerpts = require 'metalsmith-excerpts'
-ignore = require 'metalsmith-ignore'
-markdown = require 'metalsmith-markdown'
-metadata = require 'metalsmith-metadata'
-permalinks = require 'metalsmith-permalinks'
-templates = require 'metalsmith-templates'
-aboutSchema = require './plugins/about-schema'
-authors = require './plugins/authors'
-autoDate = require './plugins/autodate'
-defaultMeta = require './plugins/defaultmeta'
-descMeta = require './plugins/descriptionMeta'
-paginate = require './plugins/paginate'
-paginateTags = require './plugins/paginatetags'
-popularApi = require './plugins/popularapi'
-moment = require './plugins/moment'
-feed = require './plugins/feed'
-filename = require './plugins/filename'
-newPage = require './plugins/new-page'
-recentApi = require './plugins/recentapi'
-redirects = require './plugins/redirects'
-series = require './plugins/series'
-snapshot = require './plugins/snapshot'
-tags = require './plugins/tags'
-titleify = require './plugins/titleify'
-videoScraper = require './plugins/video-scraper'
-
-
-# Configure highlightjs with some language aliases
-highlightjs.registerLanguage 'coffee', (hljs) ->
- hljs.getLanguage('coffeescript')
-
-
-# Create a renderer instance which we'll use to modify the output of
-# the markdown.
-markedRenderer = new marked.Renderer()
-markedRenderer.heading = (text, level) ->
- # var escapedText = text.toLowerCase().replace(/[^\w]+/g, '-');
- #
- # return '' +
- # text + '';
- link = text.toLowerCase().replace /[^\w]+/g, '-'
- "
-
-
- #{text}
-
- "
-
-# In our version of blockquote, we're looking for `type:foo` strings
-# and styling the blockquote based on that string.
-#
-# It's also worth noting that we're *only* looking at that string if
-# it starts a paragraph on a line of it's own. This is mainly for
-# implementation simplicity, but also helps provide a sane way to
-# split up the markdown. If you want two blockquotes, add a newline to
-# ensure a new paragraph.
-markedRenderer.blockquote = (quote) ->
- quoteTypes =
- "tip": "tip fa fa-check-circle"
- "alert": "alert fa fa-exclamation-circle"
-
- # Blocks is the final list of blockquotes that we're going to return
- blocks = []
- # Split the quote based on `
type:`, since we know that is what
- # starts any quote types. We can then iterate over it, with the
- # knowledge that each item in the array is a potentially blockquote
- for block, i in quote.split "
type:"
- # If block is empty, skip it. This means that
type: was at
- # the beginning of the quote, and we can ignore it
- continue if block == ""
- typeMatch = false
- classes = ""
- for quoteType, _classes of quoteTypes
- # If the blockquote starts with our type, we found it!
- if block.indexOf("#{quoteType}\n") == 0
- typeMatch = true
- classes = _classes
- # Remove the quoteType\n from the block. Eg,
- # `good\nfoo\nbar` becomes `foo\nbar`
- block = block[quoteType.length+1...]
- # Add back the
that we stole, but ignore the type, since
- # we don't want that in the final quote for matches
- block = "
" + quoteType + "" + block
- # If there was no match for any quoteType, then add back the
- #
type: that we stole
- # Note that the zero index (0) wasn't actually split on the type,
- # so make sure not to add type back.
- if not typeMatch and i != 0 then block = "
type:" + block
- # Now add our block to the final list
- blocks.push "
-
- #{block}
-
- "
- # And finally, return our blocks
- blocks.join '\n'
-
-
-# ## build
-#
-# Build our metalsmith project. Exported as a module.
-#
-# - callback(err, files): A function which is given an error
-# or a list of files when metalsmith is done.
-module.exports = build = (callback=->) ->
- metalsmith __dirname
- .source '..'
- .destination 'build'
- # Ignore files from ever entering the stream
- .ignore ['.agignore', '.gitignore', '.git', '.metalsmith', 'legacy']
- .clean false
- # Place before the ignore plugin that removes non-markdown
- # from the stream
- .use metadata
- tagNames: 'categories.yaml'
- # Filename creates meta information about the originalFilename.
- # originalFilename is needed for linking to github for this file.
- .use filename()
- # Remove files from the stream
- .use ignore [
- '**/*'
- '!**/*.md'
- ]
- .use drafts()
- .use markdown
- renderer: markedRenderer
- langPrefix: ''
- highlight: (code, lang) ->
- lang = [lang] if lang?
- highlightjs.highlightAuto(code, lang).value
- .use autoDate()
- .use excerpts()
- .use titleify()
- .use moment()
- .use series()
- .use collections
- faq:
- pattern: 'faq/**/*.html'
- sortBy: 'importance'
- guide:
- pattern: 'guides/**/*.html'
- sortBy: 'date'
- reverse: true
- .use defaultMeta
- collection: 'faq'
- metadata:
- improvable: true
- template: 'faq.toffee'
- .use defaultMeta
- collection: 'guide'
- metadata:
- improvable: true
- template: 'page.toffee'
- .use tags
- metaKey: 'categories'
- sort: 'date'
- reverse: true
- .use videoScraper
- collection: 'video'
- key: 'videoId'
- .use authors()
- .use newPage
- output: 'index'
- metadata: template: 'index.toffee'
- .use newPage
- output: 'search'
- metadata: template: 'search.toffee'
- .use newPage
- output: '404'
- metadata: template: '404.toffee'
- .use newPage
- output: '404-tag'
- metadata: template: '404-tag.toffee'
- .use snapshot collection: 'faq'
- .use snapshot collection: 'guide'
- .use paginateTags
- collectionSource: 'tags'
- perPage: 10
- output: 'categories'
- metadata: template: 'tag.toffee'
- .use paginate
- collection: 'faq'
- limit: 10
- output: 'faq'
- metadata: template: 'faqs.toffee'
- .use paginate
- collection: 'video'
- limit: 30
- output: 'videos'
- metadata: template: 'videos.toffee'
- .use paginate
- collection: 'guide'
- output: 'guides'
- metadata: template: 'guides.toffee'
- # Create our redirects
- .use redirects()
- .use permalinks()
- .use filename()
- .use aboutSchema() # Add itemprop='about' to the first para
- .use descMeta() # Add Description Metatag to each Document
- # Adding the scripts array to all the pages, means that you can
- # Append the script array with some code, and not worry about the
- # execution order.
- .use defaultMeta
- clone: true
- metadata:
- scripts: []
- .use feed
- collections: ['guide', 'faq']
- output: 'rss.xml'
- metadata: template: 'feed.toffee'
- # foo
- .use feed
- collections: ['guide', 'faq']
- output: 'sitemap.xml'
- metadata: template: 'sitemap.toffee'
- # Exposes /api/recent and all variants
- .use recentApi()
- # Exposes /api/popular and all variants
- .use popularApi()
- .use templates 'toffee'
- .build callback
-
-
-
-# If this file is executed directly, run the build script.
-if require.main is module then build()
diff --git a/.metalsmith/package.json b/.metalsmith/package.json
deleted file mode 100644
index 96a4dca57..000000000
--- a/.metalsmith/package.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "private": true,
- "devDependencies": {
- "async": "^0.9.0",
- "cheerio": "^0.17.0",
- "clone": "^0.1.15",
- "coffee-script": "^1.7.1",
- "connect": "^2.14.5",
- "gulp": "3.6.2",
- "gulp-coffee": "^1.4.3",
- "gulp-concat": "^2.3.4",
- "gulp-minify-css": "^0.3.7",
- "gulp-minify-html": "^0.1.4",
- "gulp-sass": "^0.7.1",
- "gulp-uglify": "^0.3.1",
- "gulp-util": "^2.2.14",
- "highlight.js": "^8.0.0",
- "metalsmith-drafts": "0.0.1",
- "js-yaml": "^3.2.2",
- "marked": "^0.3.2",
- "metalsmith": "https://github.com/leeola/metalsmith/tarball/ignores-support-kdlearn",
- "metalsmith-collections": "https://github.com/leeola/metalsmith-collections/tarball/fileName",
- "metalsmith-excerpts": "^1.0.0",
- "metalsmith-ignore": "^0.1.2",
- "metalsmith-markdown": "^0.2.1",
- "metalsmith-metadata": "0.0.1",
- "metalsmith-permalinks": "^0.3.0",
- "metalsmith-templates": "^0.7.0",
- "moment": "^2.6.0",
- "sanitize-html": "^1.1.5",
- "toffee": "^0.1.8"
- },
- "dependencies": {
- "googleapis": "^1.1.3"
- }
-}
diff --git a/.metalsmith/plugins/about-schema.coffee b/.metalsmith/plugins/about-schema.coffee
deleted file mode 100644
index 513a04d6b..000000000
--- a/.metalsmith/plugins/about-schema.coffee
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# # About Schema
-#
-# To add the schema to the about, we need to edit the html of the
-# compile markdown, and inject an atribute into it. This plugin
-# handles that.
-#
-{extname} = require 'path'
-cheerio = require 'cheerio'
-
-
-
-# isHtml(file)
-#
-# Check if the given filename is an html file or not.
-isHtml = (filename) -> /\.html?/.test extname filename
-
-
-
-module.exports = (opts={}) ->
- (files, metalsmith, done) ->
- for filename, file of files
- continue if not isHtml filename
- # This may be subject to too much filtering, hard to say.
- # Why? Well, metalsmith-collections has an issue with files
- # in multiple collections (at the time of this writing).
- continue if file.collection isnt 'guide'
-
- # Create our jquery like object
- $ = cheerio.load file.contents.toString()
- about = $('p').first()
-
- # If there is no
found, move onto the next file.
- #continue if not ?
-
- about.attr('itemprop', 'about')
- file.contents = new Buffer $.html()
-
- # Exit when the loop is done.
- done()
diff --git a/.metalsmith/plugins/authors.coffee b/.metalsmith/plugins/authors.coffee
deleted file mode 100644
index b2d1941b7..000000000
--- a/.metalsmith/plugins/authors.coffee
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-# # Authors
-#
-# The authors plugin will collect all of the authors and create a new page
-# with the author data exposed.
-#
-each = require('async').eachSeries
-newPage = require './new-page'
-
-
-
-module.exports = (opts={}) ->
- opts.metadata ?= {}
- (files, metalsmith, done) ->
- authors = {}
-
- collections = metalsmith.metadata().collections
- if not collections?
- console.warn "Plugin authors() requires the collections() plugin"
- return done()
-
- for file in collections.guide
- if not file.author? then continue
-
- slug = file.username ? file.author.toLowerCase().replace /\W+/g, ''
-
- if authors[slug]?
- author = authors[slug]
- else
- author = authors[slug] =
- name: file.author
- slug: slug
- username: file.username
- guides: []
-
- # Replace the author reference with the useful author object.
- file.author = author
- delete file.username if file.username?
-
- author.guides.push file
-
- # Iterate over the authors, creating each of their pages.
- each Object.keys(authors), (slug, next) ->
- authorOpts =
- output: "authors/#{slug}"
- metadata:
- author: authors[slug]
- template: 'author.toffee'
- # See awkward func call explanation below
- newPage(authorOpts) files, metalsmith, next
-
- opts.metadata.authors = authors
- opts.metadata.template ?= 'authors.toffee'
- opts.output = 'authors'
- # The newPage call is a plugin, effectively to Middleware. This means it
- # is designed as a function to return a function. So, first we call
- # the middleware with opts, then we call the returned function
- newPage(opts) files, metalsmith, done
diff --git a/.metalsmith/plugins/autodate.coffee b/.metalsmith/plugins/autodate.coffee
deleted file mode 100644
index a9daf356d..000000000
--- a/.metalsmith/plugins/autodate.coffee
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# # Autodate
-#
-# Automatically apply the Unix modified timestamp into the `date`
-# variable if not present.
-#
-
-
-###
-# @param {Object} opts
-# @param {Boolean} opts.replaceAll If true, Replace all of the `date`
-# values. If false, add `date` values only if it is null.
-# @param {Boolean} opts.trimTime Remove the hours/minutes/etc from time
-# values if they exist. This is useful to avoid the exact modified time,
-# which might be just seconds ago.
-###
-module.exports = (opts={}) ->
- opts.replaceAll ?= false
- opts.trimTime ?= true
- (files, metalsmith, done) ->
- for _, file of files
- if not file.date? or opts.replaceAll is true
- file.date = new Date file.stats.mtime
- if opts.trimTime is true
- file.date.setHours 0,0,0,0
- done()
-
-
diff --git a/.metalsmith/plugins/defaultmeta.coffee b/.metalsmith/plugins/defaultmeta.coffee
deleted file mode 100644
index bc8fcf034..000000000
--- a/.metalsmith/plugins/defaultmeta.coffee
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# # Default Meta
-#
-clone = require 'clone'
-
-
-
-
-module.exports = (opts={}) ->
- opts.collectionKey ?= 'collections'
- opts.clone ?= false
-
- if not opts.metadata?
- throw new Error 'defaultMeta() requires `metadata` value'
-
- (files, metalsmith, done) ->
- metadata = metalsmith.metadata()
-
- # Get the file list we're going to work on, `targetFiles`
- if opts.collection?
- # If collection is defined, use the collection as the targetFiles
- cols = metadata[opts.collectionKey]
- col = cols?[opts.collection]
-
- if not cols?
- console.warn "The collectionKey '#{opts.collectionKey}
- is not found in metalsmith metadata."
- return done()
-
- if not col?
- console.warn "collection '#{opts.collection}' not found."
- return done()
-
- targetFiles = col
- else
- # If no collection is defined, use all of the files.
- targetFiles = []
- targetFiles.push file for filename, file of files
-
- # Now that we have our target files, add the new meta
- for file in targetFiles
- for key,val of opts.metadata
- val = clone val if opts.clone
- file[key] ?= val
- done()
diff --git a/.metalsmith/plugins/descriptionMeta.coffee b/.metalsmith/plugins/descriptionMeta.coffee
deleted file mode 100644
index cb958a3a6..000000000
--- a/.metalsmith/plugins/descriptionMeta.coffee
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# # Description Meta
-#
-# If the guide has not defined a meta description, this plugin will use its
-# excerpt. If that doesn't exist, it will use a fallback.
-#
-{extname} = require 'path'
-sanitize = require 'sanitize-html'
-
-
-
-
-module.exports = (opts={}) ->
- opts.default = "
- Koding is a feature rich cloud-based development environment complete
- with free VMs, an attractive IDE and sudo level terminal access. Your
- ideal software development playground!
- "
-
- (files, metalsmith, done) ->
- for filename, file of files
- continue if file.description?
- continue if extname(filename) isnt '.html'
- if file.excerpt?
- # Excerpts are html, and we don't want that for the description. So
- # we're ripping that out manually.
- file.description = sanitize file.excerpt,
- allowedTags: []
- else
- file.description = opts.default
- done()
diff --git a/.metalsmith/plugins/feed.coffee b/.metalsmith/plugins/feed.coffee
deleted file mode 100644
index ac3d0e28c..000000000
--- a/.metalsmith/plugins/feed.coffee
+++ /dev/null
@@ -1,48 +0,0 @@
-#
-# # Create Feed
-#
-# Create a feed page
-#
-clone = require 'clone'
-sanitizeHtml = require 'sanitize-html'
-
-
-
-
-module.exports = (opts={}) ->
- opts.collections ?= []
- opts.metadata ?= {}
-
- if opts.collection? then opts.collections.push opts.collection
-
- if not opts.output?
- console.warn 'feed requires output filename'
- return done()
-
- items = []
-
- # When given a file, create a RSS Item object.
- processItem = (file) ->
- items.push
- link: file.httplink
- guid: file.httplink
- pubDate: file.date
- author: file.author ? 'Koding'
- title: file.title
- description: sanitizeHtml file.contents.toString(),
- allowedTags: []
-
- (files, metalsmith, done) ->
- collections = metalsmith.metadata().collections
- if files[opts.output]?
- console.warn "feed cannot write to file '#{opts.output}', already exists"
- return done()
-
- processItem f for f in collections[c] for c in opts.collections
- page = clone opts.metadata
- page.items = items
- page.contents ?= new Buffer ''
- page.mode ?= '0664'
-
- files[opts.output] = page
- done()
diff --git a/.metalsmith/plugins/filename.coffee b/.metalsmith/plugins/filename.coffee
deleted file mode 100644
index 25dbe18f1..000000000
--- a/.metalsmith/plugins/filename.coffee
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# # Filename
-#
-path = require 'path'
-
-
-
-
-linkify = (p) ->
- name = path.basename(p).split('.')[0]
- if name is 'index' then path.join '/', path.dirname p
- else p
-
-
-module.exports = (opts={}) ->
- (files, metalsmith, done) ->
- for name,file of files
- file.originalFilename ?= name
- file.files = files
- file.filename = name
- file.httplink = linkify name
- file.abshttplink = "https://learn.koding.com#{file.httplink}"
- done()
diff --git a/.metalsmith/plugins/moment.coffee b/.metalsmith/plugins/moment.coffee
deleted file mode 100644
index 0dc7e9461..000000000
--- a/.metalsmith/plugins/moment.coffee
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# # Add Moment.js to Metadata
-#
-moment = require 'moment'
-
-
-
-
-module.exports = -> (files, metalsmith, done) ->
- data = metalsmith.metadata()
- data.moment = moment
- metalsmith.metadata data
- done()
diff --git a/.metalsmith/plugins/new-page.coffee b/.metalsmith/plugins/new-page.coffee
deleted file mode 100644
index 837525790..000000000
--- a/.metalsmith/plugins/new-page.coffee
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# # New Page
-#
-# Create a new page, and include
-#
-path = require 'path'
-clone = require 'clone'
-
-
-
-
-module.exports = (opts={}) ->
- opts.collections ?= []
- opts.metadata ?= {}
- if not opts.output?
- return console.warn 'new-page requires output filename'
-
- if path.extname(opts.output) is '' then opts.output += '.html'
-
- (files, metalsmith, done) ->
- if files[opts.output]?
- console.warn "new-page unable to create page '#{opts.output}',
- it already exists."
- return done()
-
- collections = metalsmith.metadata().collections
- if not collections?
- return console.warn 'new-page should be run after collections()'
-
- page = opts.metadata
- page.contents ?= new Buffer('')
- page.mode ?= '0664'
- page.name = opts.output
-
- files[opts.output] = page
- done()
diff --git a/.metalsmith/plugins/paginate.coffee b/.metalsmith/plugins/paginate.coffee
deleted file mode 100644
index 61f3e82a3..000000000
--- a/.metalsmith/plugins/paginate.coffee
+++ /dev/null
@@ -1,96 +0,0 @@
-#
-# # Paginate
-#
-# An early copy of metalsmith-paginate-deux.
-#
-path = require 'path'
-clone = require 'clone'
-
-
-
-module.exports = (opts={}) ->
- # A hard limit on the total number of items to paginate
- opts.limit ?= null
- # The number of items to show per page, within the limit / count
- opts.perPage ?= 10
- # The start page is the number that the pages will start on. For example,
- # - foo, foo-1, foo-2 # startPage of 0
- # - foo, foo-2, foo-3 # startPage of 1
- # - foo, foo-3, foo-4 # startPage of 2
- opts.startPage ?= 1
- opts.metadata ?= {}
- opts.collectionSource ?= 'collections'
-
- if not opts.output?
- console.warn 'paginate-deux requires output filename'
- return done()
-
- prettyOutput = (out, index) ->
- # In the future we'll support multiple styles of output, such as
- # - foo, foo-2, foo-3
- # - foo/index, foo/page2, foo/page3
- # - foo/index, foo/index-2, foo/index-3
- # - foo/index, foo/2/index, foo/3/index
-
- base = path.basename out, '.html'
- dir = path.dirname out
- if index is opts.startPage then return path.join dir, base
- if base is 'index'
- return path.join dir, "page-#{index}"
- else
- return path.join dir, "#{base}-#{index}"
-
- (files, metalsmith, done) ->
- metadata = metalsmith.metadata()
- cols = metadata[opts.collectionSource]
- col = cols?[opts.collection]
-
- if not cols?
- console.warn "The collectionSource '#{opts.collectionSource}
- is not found in metalsmith metadata."
- return done()
-
- if not col?
- console.warn "collection '#{opts.collection}' not found."
- return done()
-
- colCount = col.length
- if opts.limit? and opts.limit < colCount then colCount = opts.limit
- pageCount = Math.ceil colCount / opts.perPage
-
- pages = []
- prevPage = null
- for pageIndex in [0...pageCount]
- colStart = pageIndex * opts.perPage
- if pageIndex is pageCount-1
- pageFiles = col[colStart...colCount]
- else
- pageFiles = col[colStart...colStart+opts.perPage]
-
- page = clone opts.metadata
- page.contents ?= new Buffer('')
- page.mode ?= '0664'
- page.name = prettyOutput opts.output, pageIndex + opts.startPage
- page.paginate =
- pages: pages
- prev: prevPage
- next: null
- total: pageCount
- current: page
- index: pageIndex + opts.startPage
- files: pageFiles
- pageName = "#{page.name}.html"
- pages.push page
-
- if prevPage? then prevPage.paginate.next = page
- prevPage = page
-
- if files[pageName]?
- console.warn "pageinate-deux unable to create page '#{pageName}',
- it already exists."
- return done()
-
- files[pageName] = page
-
- # And finally, call done(). Remember, no async in this plugin.
- done()
diff --git a/.metalsmith/plugins/paginatetags.coffee b/.metalsmith/plugins/paginatetags.coffee
deleted file mode 100644
index 840642953..000000000
--- a/.metalsmith/plugins/paginatetags.coffee
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# # Paginate Tags
-#
-# Rather than creating paginates manually on the tags, this plugin
-# automatically paginates all tags found.
-#
-paginate = require './paginate'
-
-
-
-module.exports = (opts={}) ->
- opts.perPage ?= 10
- opts.collectionSource ?= 'tags'
-
- (files, metalsmith, done) ->
- metadata = metalsmith.metadata()
- tags = metadata[opts.collectionSource]
- tagNames = metadata.tagNames
-
- if not tags
- console.warn "collectionSource '#{opts.collectionSource}' not found in
- paginateTags plugin."
- return done()
-
- tagKeys = Object.keys tags
- do next = (index=0) ->
- if not tagKeys[index]? then return done()
- tagKey = tagKeys[index]
- tag = tags[tagKey]
- fn = paginate
- collection: tagKey
- collectionSource: 'tags'
- limit: opts.limit
- perPage: opts.perPage
- output: "#{opts.output}/#{tagKey}"
- metadata:
- tagKey: tagKey
- tagName: tagNames[tagKey]
- template: 'tag.toffee'
- fn files, metalsmith, -> next ++index
diff --git a/.metalsmith/plugins/popularapi.coffee b/.metalsmith/plugins/popularapi.coffee
deleted file mode 100644
index a0313e078..000000000
--- a/.metalsmith/plugins/popularapi.coffee
+++ /dev/null
@@ -1,176 +0,0 @@
-#
-# # Recent API
-#
-# The recent api bakes the following json API endpoints:
-#
-# /api/popular/.json
-# /api/popular//.json
-#
-# The following arguments are supported:
-#
-#
-# Limited to X guides, where X by default is:
-# - 10
-#
-# All existing tags
-#
-# TODO: Unify recentapi & popular api codebases
-#
-path = require 'path'
-google = require 'googleapis'
-analytics = google.analytics 'v3'
-
-
-
-# Load secrets from the home directory
-secrets = require(path.join process.env.HOME, ".kdlearn", "secret_config.json").analytics
-
-
-# Create a new file in the files object.
-newFile = (files, uri, content) ->
- page = {}
- page.output = uri
- page.contents = new Buffer content
- page.mode = '0664'
- files[page.output] = page
- null
-
-# Return an api friendly representation of a file
-printableFile = (file, opts={}) ->
- opts.baseHttp ?= "http://learn.koding.com/"
- file =
- title: file.title
- url: [opts.baseHttp, file.filename].join ""
- author: file.author.name
- #author:
- # name: file.author.name
- # username: file.author.username
- date: file.date
-
-# Return a sort function that sorts two objects by a key.
-sortByKey = (sortKey) -> (a,b) ->
- return 1 if a[sortKey] < b[sortKey]
- return -1 if a[sortKey] > b[sortKey]
- return 0
-
-
-# Query Google Analytics and callback with there response
-queryAnalytics = (opts={}, callback) ->
- authClient = new google.auth.JWT(
- secrets.email,
- path.join(process.env.HOME, ".kdlearn", secrets["key-file"]),
- secrets.key,
- ['https://www.googleapis.com/auth/analytics.readonly']
- )
-
- authClient.authorize (err, tokens) ->
- # Bail on any errors
- if err? then return callback err, tokens
-
- analytics.data.ga.get
- auth: authClient
- "ids":"ga:#{secrets.id}",
- "start-date":"2015-01-29",
- "end-date":"2015-02-12",
- "metrics":"ga:pageViews",
- "dimensions":"ga:pagePath",
- "sort":"-ga:pageViews",
- "max-results":"25"
- (err, result) ->
- if err? then return callback err, result, tokens
- callback null, result.rows ? []
-
-
-# Query Google Analytics for Page Views and add the
-# returned values to the files.
-addPageViews = (files, opts={}, callback) ->
- if typeof opts is 'function'
- callback = opts
- opts = {}
-
- queryAnalytics null, (err, rows) ->
- if err?
- console.log "[Warning] Google Authorization Failed!"
- console.log "[Warning] Auth Debug:", arguments
- return callback err, rows
-
- # Convery rows to an object (key/value) for easy lookup
- pageViews = {}
- for row in rows
- [page, views] = row
- # Skip if not a /guides/ page
- continue if page[0...8] != '/guides/'
- page += 'index.html'
- pageViews[page] = parseInt(views)
-
- # Now loop through all files, adding page ranks as they exist,
- # and defaulting to zero if they don't.
- for filename, file of files
- filename = "/#{filename}" if filename[0] != "/"
- if pageViews[filename]?
- file.pageViews = pageViews[filename]
- # If the rows list is especially large, we should probably delete
- # the items after use. For now though, not worrying about that.
- #delete pageViews[filename]
- else
- file.pageViews = 0
- callback null
-
-
-addApiFiles = (files, metalsmith, opts={}, callback) ->
- metadata = metalsmith.metadata()
- # The full list of tags
- {tags} = metadata
- guides = metadata.collections.guide ? []
-
- # Create /api/popular/.json
- api = {}
- for count in opts.counts
- cApi = guides[..]
- cApi.sort sortByKey "pageViews"
- cApi = api[count] = cApi[0...count]
- for guide, i in cApi
- cApi[i] = printableFile guide, opts
-
- # Now add our plain count apis
- for count, json of api
- newFile files, "api/popular/#{count}.json",
- #JSON.stringify json
- # Temporarily pretty formatted
- JSON.stringify json, null, 2
-
- # Create /api/popular//.json
- api = {}
- for tagName, tGuides of tags
- tApi = api[tagName] ?= {}
- for count in opts.counts
- cApi = tGuides[..]
- cApi.sort sortByKey "pageViews"
- cApi = tApi[count] = cApi[0...count]
- for guide, i in cApi
- cApi[i] = printableFile guide, opts
-
- # Now add the tag api to the files object
- for tagName, tApi of api
- for count, json of tApi
- newFile files, "api/popular/#{tagName}/#{count}.json",
- #JSON.stringify json
- # Temporarily pretty formatted
- JSON.stringify json, null, 2
-
- callback()
-
-
-module.exports = (opts={}) ->
- opts.counts = [10]
-
- (files, metalsmith, done) ->
- metadata = metalsmith.metadata()
- # The full list of tags
- {tags} = metadata
- guides = metadata.collections.guide ? []
-
- addPageViews files, null, (err) ->
- if err? then return done()
- addApiFiles files, metalsmith, opts, -> done()
-
diff --git a/.metalsmith/plugins/recentapi.coffee b/.metalsmith/plugins/recentapi.coffee
deleted file mode 100644
index 74eb933ec..000000000
--- a/.metalsmith/plugins/recentapi.coffee
+++ /dev/null
@@ -1,93 +0,0 @@
-#
-# # Recent API
-#
-# The recent api bakes the following json API endpoints:
-#
-# /api/recent/.json
-# /api/recent//.json
-#
-# The following arguments are supported:
-#
-#
-# Limited to X guides, where X by default is:
-# - 10
-#
-# All existing tags
-#
-# TODO: Unify recentapi & popular api codebases
-#
-path = require 'path'
-
-
-
-newFile = (files, uri, content) ->
- page = {}
- page.output = uri
- page.contents = new Buffer content
- page.mode = '0664'
- files[page.output] = page
- null
-
-printableFile = (file, opts={}) ->
- opts.baseHttp ?= "https://learn.koding.com/"
- file =
- title: file.title
- url: [opts.baseHttp, file.filename].join ""
- author: file.author.name
- #author:
- # name: file.author.name
- # username: file.author.username
- date: file.date
-
-sortByKey = (sortKey) -> (a,b) ->
- return 1 if a[sortKey] < b[sortKey]
- return -1 if a[sortKey] > b[sortKey]
- return 0
-
-module.exports = (opts={}) ->
- opts.counts = [10]
-
- (files, metalsmith, done) ->
- metadata = metalsmith.metadata()
- # The full list of tags
- {tags} = metadata
- guides = metadata.collections.guide ? []
-
- # Create /api/recent/.json
- api = {}
- for count in opts.counts
- cApi = api[count] ?= []
- for guide in guides
- cApi.push printableFile guide, opts
- # Sort the cApi list by the recentType key value
- cApi.sort sortByKey "date"
- api[count] = cApi[0...count]
-
- # Now add our plain count apis
- for count, json of api
- newFile files, "api/recent/#{count}.json",
- #JSON.stringify json
- # Temporarily pretty formatted
- JSON.stringify json, null, 2
-
- # Create /api/recent//.json
- api = {}
- for tagName, tFiles of tags
- tApi = api[tagName] ?= {}
- for count in opts.counts
- cApi = tApi[count] ?= []
- for file in tFiles
- cApi.push printableFile file, opts
- # Sort the cApi list by the recentType key value
- cApi.sort sortByKey "date"
- tApi[count] = cApi[0...count]
-
- # Now add the tag api to the files object
- for tagName, tApi of api
- for count, json of tApi
- newFile files, "api/recent/#{tagName}/#{count}.json",
- #JSON.stringify json
- # Temporarily pretty formatted
- JSON.stringify json, null, 2
-
- done()
diff --git a/.metalsmith/plugins/redirects.coffee b/.metalsmith/plugins/redirects.coffee
deleted file mode 100644
index fb0bf7c83..000000000
--- a/.metalsmith/plugins/redirects.coffee
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# # Redirect
-#
-# A plugin to create pages based off of a template and source json
-# file.
-#
-fs = require 'fs'
-yaml = require 'js-yaml'
-newPage = require './new-page'
-
-
-
-
-module.exports = (opts={}) ->
- opts.redirects ?= '../redirects.yaml'
- opts.template ?= 'redirect.toffee'
-
- redirects = yaml.safeLoad fs.readFileSync opts.redirects, 'utf8'
-
- (files, metalsmith, done) ->
- redirectKeys = Object.keys redirects
- do next = ->
- rSource = redirectKeys.pop()
- if not rSource? then return done()
- rDestination = redirects[rSource]
-
- output = if rSource[0] is '/' then rSource[1..] else rSource
- pageOpts =
- output: output
- metadata:
- template: opts.template
- source: rSource
- destination: rDestination
- newPage(pageOpts) files, metalsmith, next
-
diff --git a/.metalsmith/plugins/series.coffee b/.metalsmith/plugins/series.coffee
deleted file mode 100644
index ba7a6624f..000000000
--- a/.metalsmith/plugins/series.coffee
+++ /dev/null
@@ -1,70 +0,0 @@
-#
-# # Series
-#
-# The plugin responsible for chaining multiple guides marked as Series
-# together.
-#
-
-
-
-
-module.exports = (opts={}) ->
- opts.prependSeriesTitle ?= true
-
- (files, metalsmith, done) ->
- metadata = metalsmith.metadata()
- metadata.series ?= {}
- #if metalsmith.metadata().collections?
- # return console.warn 'The series plugin must be
- # placed before the collections plugin.'
-
- # First, go through and add all files with a `series` metaattr to the list
- # of pages for that series.
- for filename, file of files
- if not file.series? then continue
-
- if not file['series-index']?
- console.warn "File #{filename} of series #{file.series}
- is missing the `series-index` metadata. Defaulting to 1"
- file['series-index'] = 1
-
- # Get the series list, and create it if needed
- metadata.series[file.series] ?= []
- series = metadata.series[file.series]
- index = file['series-index']
-
- # If the index exists, then the user defined two guides with the
- # same index. Rather than replace them, we splice the overlap guide
- # into the index. If it doesn't exist, we just assign the index
- # manually.
- #
- # This is done to ensure page order for the series, rather than pushing
- # then all and then sorting them after.
- if series[index]? then series.splice index, 0, file
- else series[index] = file
-
- # Now go through and replace the `series` meta attr for each series page
- # with an object for the previous, next, and etc information.
- for seriesName, series of metadata.series
- prev = null
- title = series[0]?.title
- for page, index in series
- if not page?
- console.warn "Error: The Series plugin found a series with
- a missing guide. Check the series '#{title}' for a missing
- guide at the index of '#{index}'."
- throw new Error "Missing Series Guide"
-
- if opts.prependSeriesTitle is true and index isnt 0
- page.title = "#{title}: #{page.title}"
-
- page.series =
- name: seriesName
- pages: series
- pageNumber: index
- prev: prev
- next: null
- if prev? then prev.series.next = page
- prev = page
-
- done()
diff --git a/.metalsmith/plugins/snapshot.coffee b/.metalsmith/plugins/snapshot.coffee
deleted file mode 100644
index 901b11ca5..000000000
--- a/.metalsmith/plugins/snapshot.coffee
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# # Snapshot Contents
-#
-# Add a key to a file's metadata which is a copy of the `contents` value
-# at that point in time. Files are matched by collection.
-#
-# ## Why?
-#
-# The `contents` metadata is intended to be very mutable. Plugins change it,
-# such as rendering markdown or running it through a templating language,
-# and after that you cannot access the original data.
-#
-
-
-
-
-module.exports = (opts={}) ->
- opts.name ?= 'snapshot'
- (files, metalsmith, done) ->
- if opts.collection?
- collections = metalsmith.metadata().collections
- if not collections?
- return console.warn 'snapshot should be run after collections()
- when using the `collection` option.'
- snapshots = collections[opts.collection]
- else
- snapshots = (v for k,v of files)
-
- snapshot[opts.name] = snapshot.contents for snapshot in snapshots
- done()
diff --git a/.metalsmith/plugins/tags.coffee b/.metalsmith/plugins/tags.coffee
deleted file mode 100644
index 06b45082f..000000000
--- a/.metalsmith/plugins/tags.coffee
+++ /dev/null
@@ -1,91 +0,0 @@
-#
-# # Tags
-#
-# Take the `tags` metadata and turn it into collection objects.
-#
-# Two objects are producted with this plugin:
-#
-# 1. tags
-# 2. tagsByUnique
-#
-# `tags` is a collection where key is the tag name, and the value is
-# a list of all files with that tag.
-#
-# `tagsByUnique` is a collection where key is the tag name, and value
-# is a list of files with that tag, **but** each file only shows up
-# once in the *entire collection*.
-#
-
-
-
-
-module.exports = (opts={}) ->
- opts.metaKey ?= 'tags'
- opts.sort ?= 'date'
- opts.reverse ?= false
- # Unique Limit is the maximum size of a tagsByUnique list.
- # Example:
- #
- # Take a guide like: guide{tags: [nodejs, js]}
- # When this guide is added to the tags and tagsByUnique list, if
- # the tagsByUnique['nodejs'] list is already at 5 size, but this
- # guide is added to that list anyway, then it's that guide will
- # not be seen on the rendered page (since the page only displays
- # 5 from each unique tag list). With this option however,
- # this guide will instead be assigned to the `js` list, if it
- # is less than 5. If both lists are larger than 5, well then
- # it won't be seen anywhere.
- opts.uniqueMax ?= 5
-
- (files, metalsmith, done) ->
- metadata = metalsmith.metadata()
- # The full list of tags
- metadata.tags ?= {}
- # Only store each file, once.
- metadata.tagsByUnique ?= {}
- {tags} = metadata
- {tagsByUnique} = metadata
-
- # Go through each file, pulling the tag list from it
- for filename, file of files
- if not file[opts.metaKey]? then continue
-
- if not (file[opts.metaKey] instanceof Array)
- console.warn "The metadata key #{opts.metaKey} requires a list
- of strings but got #{JSON.stringify file[opts.metaKey]} instead."
- continue
-
- uniqueSet = false
- for tag, i in file[opts.metaKey]
- if typeof tag isnt 'string'
- console.warn "The tag '#{tag}' for #{filename} is not a string.
- It is being ignored."
- continue
- tag = tag.toLowerCase()
- tag = tag.replace(/\s+/, "-")
- tags[tag] ?= []
- tags[tag].push file
- # For the tagsByUnique list, only push this file once.
- # Note that this also only pushes the first tag
- # listed in the file's tag list, which is a good thing.
- # Example being, file[nodejs, javascript] will push to
- # nodejs first, and not javascript. Allows you to
- # prioritize the list.
- tagsByUnique[tag] ?= []
- if not uniqueSet and tagsByUnique[tag].length < opts.uniqueMax
- tagsByUnique[tag].push file
- uniqueSet = true
-
- for tagName,tag of tags
- if typeof opts.sort is 'function' then tag.sort opts.sort
- else tag.sort (a, b) ->
- a = a[opts.sort]
- b = b[opts.sort]
- return 0 if not a and not b
- return -1 if not a
- return 1 if not b
- return -1 if b > a
- return 1 if a > b
- return 0
- if opts.reverse then tag.reverse()
- done()
diff --git a/.metalsmith/plugins/titleify.coffee b/.metalsmith/plugins/titleify.coffee
deleted file mode 100644
index 8bb956f4d..000000000
--- a/.metalsmith/plugins/titleify.coffee
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-# # Titleify
-#
-# This plugin allows you to omit the title metadata, and populates it with the
-# first found h1.
-#
-{extname} = require 'path'
-cheerio = require 'cheerio'
-
-
-
-
-# isHtml(file)
-#
-# Check if the given filename is an html file or not.
-isHtml = (filename) -> /\.html?/.test extname filename
-
-
-
-module.exports = (opts={}) ->
- opts.replaceMetaTitle ?= false
- opts.removeFromSource ?= true
-
- (files, metalsmith, done) ->
- for filename,file of files
- # If it's not an html file, ignore it
- if not isHtml filename then continue
-
- # Create our jquery like object
- $ = cheerio.load file.contents.toString()
- domTitle = $('h1').first()
-
- # If there is no h1 found, move onto the next file.
- if not domTitle.text()? then continue
-
- # Set/Replace the file title
- if not file.title? or opts.replaceMetaTitle
- file.title = domTitle
- .text()
- .replace(/^\s+/, '') # Trim opening whitespace
- .replace(/\s+$/, '') # Trim closing whitespace
-
- # Remove the source h1, if needed
- if opts.removeFromSource
- domTitle.remove()
- file.contents = new Buffer $.html()
-
- # And of course, after the loop is done.. go home.
- done()
diff --git a/.metalsmith/plugins/video-scraper.coffee b/.metalsmith/plugins/video-scraper.coffee
deleted file mode 100644
index 3f8995a36..000000000
--- a/.metalsmith/plugins/video-scraper.coffee
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# # Video Scrape
-#
-clone = require 'clone'
-
-
-
-
-module.exports = ({collection, key}) ->
- collection ?= 'videos'
- key ?= 'videoUrl'
- (files, metalsmith, done) ->
- collections = metalsmith.metadata().collections
- if not collections?
- return console.warn 'videoScraper should be run after collections()'
-
- collections[collection] ?= []
- coll = collections[collection]
-
- previous = null
- for name, file of files
- if file[key]?
- file = clone file
- previous.next = file if previous?
- file.previous = previous
- file.next = null
- previous = file
- coll.push file
- done()
-
diff --git a/.metalsmith/sass/_css3.scss b/.metalsmith/sass/_css3.scss
deleted file mode 100644
index 01cbf0cd4..000000000
--- a/.metalsmith/sass/_css3.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-@import "css3/border-radius";
-// @import "css3/inline-block";
-// @import "css3/opacity";
-// @import "css3/box-shadow";
-// @import "css3/text-shadow";
-// @import "css3/columns";
-@import "css3/box-sizing";
-// @import "css3/box";
-// @import "css3/images";
-// @import "css3/background-clip";
-// @import "css3/background-origin";
-// @import "css3/background-size";
-// @import "css3/font-face";
-@import "css3/transform";
-@import "css3/transition";
-// @import "css3/appearance";
-// @import "css3/regions";
-// @import "css3/hyphenation";
-// @import "css3/filter";
-// @import "css3/user-interface";
diff --git a/.metalsmith/sass/_support.scss b/.metalsmith/sass/_support.scss
deleted file mode 100644
index 37b6e1729..000000000
--- a/.metalsmith/sass/_support.scss
+++ /dev/null
@@ -1,40 +0,0 @@
-// Usually compass hacks apply to both ie6 & 7 -- set this to false to disable support for both.
-$legacy-support-for-ie: true !default;
-
-// Setting this to false will result in smaller output, but no support for ie6 hacks
-$legacy-support-for-ie6: $legacy-support-for-ie !default;
-
-// Setting this to false will result in smaller output, but no support for ie7 hacks
-$legacy-support-for-ie7: $legacy-support-for-ie !default;
-
-// Setting this to false will result in smaller output, but no support for legacy ie8 hacks
-$legacy-support-for-ie8: $legacy-support-for-ie !default;
-
-// @private
-// The user can simply set $legacy-support-for-ie and 6, 7, and 8 will be set accordingly,
-// But in case the user set each of those explicitly, we need to sync the value of
-// this combined variable.
-$legacy-support-for-ie: $legacy-support-for-ie6 or $legacy-support-for-ie7 or $legacy-support-for-ie8;
-
-// Whether to output legacy support for mozilla.
-// Usually this means hacks to support Firefox 3.6 or earlier.
-$legacy-support-for-mozilla: true;
-
-// Support for mozilla in experimental css3 properties (-moz).
-$experimental-support-for-mozilla : true !default;
-// Support for webkit in experimental css3 properties (-webkit).
-$experimental-support-for-webkit : true !default;
-// Support for webkit's original (non-standard) gradient syntax.
-$support-for-original-webkit-gradients : true !default;
-// Support for opera in experimental css3 properties (-o).
-$experimental-support-for-opera : true !default;
-// Support for microsoft in experimental css3 properties (-ms).
-$experimental-support-for-microsoft : true !default;
-// Support for khtml in experimental css3 properties (-khtml).
-$experimental-support-for-khtml : false !default;
-// Support for svg in experimental css3 properties.
-// Setting this to true might add significant size to your
-// generated stylesheets.
-$experimental-support-for-svg : false !default;
-// Support for CSS PIE in experimental css3 properties (-pie).
-$experimental-support-for-pie : false !default;
diff --git a/.metalsmith/sass/css3/_appearance.scss b/.metalsmith/sass/css3/_appearance.scss
deleted file mode 100644
index c6e653374..000000000
--- a/.metalsmith/sass/css3/_appearance.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-@import "shared";
-
-// Change the appearance for Mozilla, Webkit and possibly the future.
-// The appearance property is currently not present in any newer CSS specification.
-//
-// There is no official list of accepted values, but you might check these source:
-//
-// * [Mozilla](https://developer.mozilla.org/en/CSS/-moz-appearance)
-// * [Webkit](http://code.google.com/p/webkit-mirror/source/browse/Source/WebCore/css/CSSValueKeywords.in?spec=svnf1aea559dcd025a8946aa7da6e4e8306f5c1b604&r=63c7d1af44430b314233fea342c3ddb2a052e365)
-// (search for 'appearance' within the page)
-
-@mixin appearance($ap) {
- $ap: unquote($ap);
- @include experimental(appearance, $ap,
- -moz, -webkit, not -o, not -ms, not -khtml, official
- );
-}
diff --git a/.metalsmith/sass/css3/_background-clip.scss b/.metalsmith/sass/css3/_background-clip.scss
deleted file mode 100644
index 6ce473f6e..000000000
--- a/.metalsmith/sass/css3/_background-clip.scss
+++ /dev/null
@@ -1,43 +0,0 @@
-@import "shared";
-
-// The default value is `padding-box` -- the box model used by modern browsers.
-//
-// If you wish to do so, you can override the default constant with `border-box`
-//
-// To override to the default border-box model, use this code:
-// $default-background-clip: border-box
-
-$default-background-clip: padding-box !default;
-
-// Clip the background (image and color) at the edge of the padding or border.
-//
-// Legal Values:
-//
-// * padding-box
-// * border-box
-// * text
-
-@mixin background-clip($clip: $default-background-clip) {
- // webkit and mozilla use the deprecated short [border | padding]
- $clip: unquote($clip);
- $deprecated: $clip;
- @if $clip == padding-box { $deprecated: padding; }
- @if $clip == border-box { $deprecated: border; }
- // Support for webkit and mozilla's use of the deprecated short form
- @include experimental(background-clip, $deprecated,
- -moz,
- -webkit,
- not -o,
- not -ms,
- not -khtml,
- not official
- );
- @include experimental(background-clip, $clip,
- not -moz,
- not -webkit,
- not -o,
- not -ms,
- -khtml,
- official
- );
-}
diff --git a/.metalsmith/sass/css3/_background-origin.scss b/.metalsmith/sass/css3/_background-origin.scss
deleted file mode 100644
index bc8eaa8aa..000000000
--- a/.metalsmith/sass/css3/_background-origin.scss
+++ /dev/null
@@ -1,42 +0,0 @@
-// Override `$default-background-origin` to change the default.
-
-@import "shared";
-
-$default-background-origin: content-box !default;
-
-// Position the background off the edge of the padding, border or content
-//
-// * Possible values:
-// * `padding-box`
-// * `border-box`
-// * `content-box`
-// * browser defaults to `padding-box`
-// * mixin defaults to `content-box`
-
-
-@mixin background-origin($origin: $default-background-origin) {
- $origin: unquote($origin);
- // webkit and mozilla use the deprecated short [border | padding | content]
- $deprecated: $origin;
- @if $origin == padding-box { $deprecated: padding; }
- @if $origin == border-box { $deprecated: border; }
- @if $origin == content-box { $deprecated: content; }
-
- // Support for webkit and mozilla's use of the deprecated short form
- @include experimental(background-origin, $deprecated,
- -moz,
- -webkit,
- not -o,
- not -ms,
- not -khtml,
- not official
- );
- @include experimental(background-origin, $origin,
- not -moz,
- not -webkit,
- -o,
- -ms,
- -khtml,
- official
- );
-}
diff --git a/.metalsmith/sass/css3/_background-size.scss b/.metalsmith/sass/css3/_background-size.scss
deleted file mode 100644
index 9d3644702..000000000
--- a/.metalsmith/sass/css3/_background-size.scss
+++ /dev/null
@@ -1,26 +0,0 @@
-@import "shared";
-
-// override to change the default
-$default-background-size: 100% auto !default;
-
-// Set the size of background images using px, width and height, or percentages.
-// Currently supported in: Opera, Gecko, Webkit.
-//
-// * percentages are relative to the background-origin (default = padding-box)
-// * mixin defaults to: `$default-background-size`
-@mixin background-size(
- $size-1: $default-background-size,
- $size-2: false,
- $size-3: false,
- $size-4: false,
- $size-5: false,
- $size-6: false,
- $size-7: false,
- $size-8: false,
- $size-9: false,
- $size-10: false
-) {
- $size-1: if(type-of($size-1) == string, unquote($size-1), $size-1);
- $sizes: compact($size-1, $size-2, $size-3, $size-4, $size-5, $size-6, $size-7, $size-8, $size-9, $size-10);
- @include experimental(background-size, $sizes, -moz, -webkit, -o, not -ms, not -khtml);
-}
diff --git a/.metalsmith/sass/css3/_border-radius.scss b/.metalsmith/sass/css3/_border-radius.scss
deleted file mode 100644
index 2da902269..000000000
--- a/.metalsmith/sass/css3/_border-radius.scss
+++ /dev/null
@@ -1,130 +0,0 @@
-@import "shared";
-
-$default-border-radius: 5px !default;
-
-// Round all corners by a specific amount, defaults to value of `$default-border-radius`.
-//
-// When two values are passed, the first is the horizontal radius
-// and the second is the vertical radius.
-//
-// Note: webkit does not support shorthand syntax for several corners at once.
-// So in the case where you pass several values only the first will be passed to webkit.
-//
-// Examples:
-//
-// .simple { @include border-radius(4px, 4px); }
-// .compound { @include border-radius(2px 5px, 3px 6px); }
-// .crazy { @include border-radius(1px 3px 5px 7px, 2px 4px 6px 8px)}
-//
-// Which generates:
-//
-// .simple {
-// -webkit-border-radius: 4px 4px;
-// -moz-border-radius: 4px / 4px;
-// -khtml-border-radius: 4px / 4px;
-// border-radius: 4px / 4px; }
-//
-// .compound {
-// -webkit-border-radius: 2px 3px;
-// -moz-border-radius: 2px 5px / 3px 6px;
-// -khtml-border-radius: 2px 5px / 3px 6px;
-// border-radius: 2px 5px / 3px 6px; }
-//
-// .crazy {
-// -webkit-border-radius: 1px 2px;
-// -moz-border-radius: 1px 3px 5px 7px / 2px 4px 6px 8px;
-// -khtml-border-radius: 1px 3px 5px 7px / 2px 4px 6px 8px;
-// border-radius: 1px 3px 5px 7px / 2px 4px 6px 8px; }
-
-@mixin border-radius($radius: $default-border-radius, $vertical-radius: false) {
-
- @if $vertical-radius {
- // Webkit doesn't understand the official shorthand syntax for specifying
- // a vertical radius unless so in case there's several we only take the first.
- @include experimental(border-radius, first-value-of($radius) first-value-of($vertical-radius),
- not -moz,
- -webkit,
- not -o,
- not -ms,
- not -khtml,
- not official
- );
- @include experimental("border-radius", $radius unquote("/") $vertical-radius,
- -moz,
- not -webkit,
- not -o,
- not -ms,
- -khtml,
- official
- );
- }
- @else {
- @include experimental(border-radius, $radius);
- }
-}
-
-// Round radius at position by amount.
-//
-// * legal values for `$vert`: `top`, `bottom`
-// * legal values for `$horz`: `left`, `right`
-
-@mixin border-corner-radius($vert, $horz, $radius: $default-border-radius) {
- // Support for mozilla's syntax for specifying a corner
- @include experimental("border-radius-#{$vert}#{$horz}", $radius,
- -moz,
- not -webkit,
- not -o,
- not -ms,
- not -khtml,
- not official
- );
- @include experimental("border-#{$vert}-#{$horz}-radius", $radius,
- not -moz,
- -webkit,
- not -o,
- not -ms,
- -khtml,
- official
- );
-
-}
-
-// Round top-left corner only
-
-@mixin border-top-left-radius($radius: $default-border-radius) {
- @include border-corner-radius(top, left, $radius); }
-
-// Round top-right corner only
-
-@mixin border-top-right-radius($radius: $default-border-radius) {
- @include border-corner-radius(top, right, $radius); }
-
-// Round bottom-left corner only
-
-@mixin border-bottom-left-radius($radius: $default-border-radius) {
- @include border-corner-radius(bottom, left, $radius); }
-
-// Round bottom-right corner only
-
-@mixin border-bottom-right-radius($radius: $default-border-radius) {
- @include border-corner-radius(bottom, right, $radius); }
-
-// Round both top corners by amount
-@mixin border-top-radius($radius: $default-border-radius) {
- @include border-top-left-radius($radius);
- @include border-top-right-radius($radius); }
-
-// Round both right corners by amount
-@mixin border-right-radius($radius: $default-border-radius) {
- @include border-top-right-radius($radius);
- @include border-bottom-right-radius($radius); }
-
-// Round both bottom corners by amount
-@mixin border-bottom-radius($radius: $default-border-radius) {
- @include border-bottom-left-radius($radius);
- @include border-bottom-right-radius($radius); }
-
-// Round both left corners by amount
-@mixin border-left-radius($radius: $default-border-radius) {
- @include border-top-left-radius($radius);
- @include border-bottom-left-radius($radius); }
diff --git a/.metalsmith/sass/css3/_box-shadow.scss b/.metalsmith/sass/css3/_box-shadow.scss
deleted file mode 100644
index ea47dc971..000000000
--- a/.metalsmith/sass/css3/_box-shadow.scss
+++ /dev/null
@@ -1,76 +0,0 @@
-// @doc off
-// These defaults make the arguments optional for this mixin
-// If you like, set different defaults before importing.
-// @doc on
-
-@import "shared";
-
-
-// The default color for box shadows
-$default-box-shadow-color: #333333 !default;
-
-// The default horizontal offset. Positive is to the right.
-$default-box-shadow-h-offset: 0px !default;
-
-// The default vertical offset. Positive is down.
-$default-box-shadow-v-offset: 0px !default;
-
-// The default blur length.
-$default-box-shadow-blur: 5px !default;
-
-// The default spread length.
-$default-box-shadow-spread : false !default;
-
-// The default shadow inset: inset or false (for standard shadow).
-$default-box-shadow-inset : false !default;
-
-// Provides cross-browser for Webkit, Gecko, and CSS3 box shadows when one or more box
-// shadows are needed.
-// Each shadow argument should adhere to the standard css3 syntax for the
-// box-shadow property.
-@mixin box-shadow(
- $shadow-1 : default,
- $shadow-2 : false,
- $shadow-3 : false,
- $shadow-4 : false,
- $shadow-5 : false,
- $shadow-6 : false,
- $shadow-7 : false,
- $shadow-8 : false,
- $shadow-9 : false,
- $shadow-10: false
-) {
- @if $shadow-1 == default {
- $shadow-1 : -compass-space-list(compact(if($default-box-shadow-inset, inset, false), $default-box-shadow-h-offset, $default-box-shadow-v-offset, $default-box-shadow-blur, $default-box-shadow-spread, $default-box-shadow-color));
- }
- $shadow : compact($shadow-1, $shadow-2, $shadow-3, $shadow-4, $shadow-5, $shadow-6, $shadow-7, $shadow-8, $shadow-9, $shadow-10);
- @include experimental(box-shadow, $shadow,
- -moz, -webkit, not -o, not -ms, not -khtml, official
- );
-}
-
-// Provides a single cross-browser CSS box shadow for Webkit, Gecko, and CSS3.
-// Includes default arguments for color, horizontal offset, vertical offset, blur length, spread length, and inset.
-@mixin single-box-shadow(
- $color : $default-box-shadow-color,
- $hoff : $default-box-shadow-h-offset,
- $voff : $default-box-shadow-v-offset,
- $blur : $default-box-shadow-blur,
- $spread : $default-box-shadow-spread,
- $inset : $default-box-shadow-inset
-) {
- @if not ($inset == true or $inset == false or $inset == inset) {
- @warn "$inset expected to be true or the inset keyword. Got #{$inset} instead. Using: inset";
- }
-
- @if $color == none {
- @include box-shadow(none);
- } @else {
- $full : $hoff $voff;
- @if $blur { $full: $full $blur; }
- @if $spread { $full: $full $spread; }
- @if $color { $full: $full $color; }
- @if $inset { $full: inset $full; }
- @include box-shadow($full);
- }
-}
diff --git a/.metalsmith/sass/css3/_box-sizing.scss b/.metalsmith/sass/css3/_box-sizing.scss
deleted file mode 100644
index 93ff8ac08..000000000
--- a/.metalsmith/sass/css3/_box-sizing.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-@import "shared";
-
-// Change the box model for Mozilla, Webkit, IE8 and the future
-//
-// @param $bs
-// [ content-box | border-box ]
-
-@mixin box-sizing($bs) {
- $bs: unquote($bs);
- @include experimental(box-sizing, $bs,
- -moz, -webkit, not -o, not -ms, not -khtml, official
- );
-}
diff --git a/.metalsmith/sass/css3/_box.scss b/.metalsmith/sass/css3/_box.scss
deleted file mode 100644
index 2abeef3b1..000000000
--- a/.metalsmith/sass/css3/_box.scss
+++ /dev/null
@@ -1,111 +0,0 @@
-@import "shared";
-
-// display:box; must be used for any of the other flexbox mixins to work properly
-@mixin display-box {
- @include experimental-value(display, box,
- -moz, -webkit, not -o, -ms, not -khtml, official
- );
-}
-
-// Default box orientation, assuming that the user wants something less block-like
-$default-box-orient: horizontal !default;
-
-// Box orientation [ horizontal | vertical | inline-axis | block-axis | inherit ]
-@mixin box-orient(
- $orientation: $default-box-orient
-) {
- $orientation : unquote($orientation);
- @include experimental(box-orient, $orientation,
- -moz, -webkit, not -o, -ms, not -khtml, official
- );
-}
-
-// Default box-align
-$default-box-align: stretch !default;
-
-// Box align [ start | end | center | baseline | stretch ]
-@mixin box-align(
- $alignment: $default-box-align
-) {
- $alignment : unquote($alignment);
- @include experimental(box-align, $alignment,
- -moz, -webkit, not -o, -ms, not -khtml, official
- );
-}
-
-// Default box flex
-$default-box-flex: 0 !default;
-
-// mixin which takes an int argument for box flex. Apply this to the children inside the box.
-//
-// For example: "div.display-box > div.child-box" would get the box flex mixin.
-@mixin box-flex(
- $flex: $default-box-flex
-) {
- @include experimental(box-flex, $flex,
- -moz, -webkit, not -o, -ms, not -khtml, official
- );
-}
-
-// Default flex group
-$default-box-flex-group: 1 !default;
-
-// mixin which takes an int argument for flexible grouping
-@mixin box-flex-group(
- $group: $default-box-flex-group
-) {
- @include experimental(box-flex-group, $group,
- -moz, -webkit, not -o, -ms, not -khtml, official
- );
-}
-
-// default for ordinal group
-$default-box-ordinal-group: 1 !default;
-
-// mixin which takes an int argument for ordinal grouping and rearranging the order
-@mixin box-ordinal-group(
- $group: $default-box-ordinal-group
-) {
- @include experimental(box-ordinal-group, $group,
- -moz, -webkit, not -o, -ms, not -khtml, official
- );
-}
-
-// Box direction default value
-$default-box-direction: normal !default;
-
-// mixin for box-direction [ normal | reverse | inherit ]
-@mixin box-direction(
- $direction: $default-box-direction
-) {
- $direction: unquote($direction);
- @include experimental(box-direction, $direction,
- -moz, -webkit, not -o, -ms, not -khtml, official
- );
-}
-
-// default for box lines
-$default-box-lines: single !default;
-
-// mixin for box lines [ single | multiple ]
-@mixin box-lines(
- $lines: $default-box-lines
-) {
- $lines: unquote($lines);
- @include experimental(box-lines, $lines,
- -moz, -webkit, not -o, -ms, not -khtml, official
- );
-}
-
-// default for box pack
-$default-box-pack: start !default;
-
-// mixin for box pack [ start | end | center | justify ]
-@mixin box-pack(
- $pack: $default-box-pack
-) {
- $pack: unquote($pack);
- @include experimental(box-pack, $pack,
- -moz, -webkit, not -o, -ms, not -khtml, official
- );
-}
diff --git a/.metalsmith/sass/css3/_columns.scss b/.metalsmith/sass/css3/_columns.scss
deleted file mode 100644
index dc795171f..000000000
--- a/.metalsmith/sass/css3/_columns.scss
+++ /dev/null
@@ -1,157 +0,0 @@
-@import "shared";
-
-// Specify the shorthand `columns` property.
-//
-// Example:
-//
-// @include columns(20em 2)
-@mixin columns($width-and-count) {
- @include experimental(columns, $width-and-count,
- -moz, -webkit, -o, -ms, not -khtml, official
- );
-}
-
-// Specify the number of columns
-@mixin column-count($count) {
- @include experimental(column-count, $count,
- -moz, -webkit, -o, -ms, not -khtml, official
- );
-}
-
-// Specify the gap between columns e.g. `20px`
-@mixin column-gap($width) {
- @include experimental(column-gap, $width,
- -moz, -webkit, -o, -ms, not -khtml, official
- );
-}
-
-// Specify the width of columns e.g. `100px`
-@mixin column-width($width) {
- @include experimental(column-width, $width,
- -moz, -webkit, -o, -ms, not -khtml, official
- );
-}
-
-// Specify how many columns an element should span across.
-//
-// * legal values are 1, all
-@mixin column-span($columns) {
- @include experimental(column-span, $columns,
- -moz, -webkit, -o, -ms, not -khtml, official
- );
-}
-
-// Specify the width of the rule between columns e.g. `1px`
-@mixin column-rule-width($width) {
- @include experimental(column-rule-width, $width,
- -moz, -webkit, -o, -ms, not -khtml, official
- );
-}
-
-// Specify the style of the rule between columns e.g. `dotted`.
-// This works like border-style.
-@mixin column-rule-style($style) {
- @include experimental(column-rule-style, unquote($style),
- -moz, -webkit, -o, -ms, not -khtml, official
- );
-}
-
-// Specify the color of the rule between columns e.g. `blue`.
-// This works like border-color.
-@mixin column-rule-color($color) {
- @include experimental(column-rule-color, $color,
- -moz, -webkit, -o, -ms, not -khtml, official
- );
-}
-
-// Mixin encompassing all column rule properties
-// For example:
-//
-// @include column-rule(1px, solid, #c00)
-//
-// Or the values can be space separated:
-//
-// @include column-rule(1px solid #c00)
-@mixin column-rule($width, $style: false, $color: false) {
- $full : -compass-space-list(compact($width, $style, $color));
- @include experimental(column-rule, $full,
- -moz, -webkit, -o, -ms, not -khtml, official
- );
-}
-
-// Mixin for setting column-break-before
-//
-// * legal values are auto, always, avoid, left, right, page, column, avoid-page, avoid-column
-//
-// Example:
-// h2.before {@include column-break-before(always);}
-//
-// Which generates:
-//
-// h2.before {
-// -webkit-column-break-before: always;
-// column-break-before: always;}
-@mixin column-break-before($value: auto){
- @include experimental(column-break-before, $value, not -moz, -webkit, not -o, not -ms, not -khtml, official );
-}
-
-// Mixin for setting column-break-after
-//
-// * legal values are auto, always, avoid, left, right, page, column, avoid-page, avoid-column
-//
-// Example:
-// h2.after {@include column-break-after(always); }
-//
-// Which generates:
-//
-// h2.after {
-// -webkit-column-break-after: always;
-// column-break-after: always; }
-@mixin column-break-after($value: auto){
- @include experimental(column-break-after, $value, not -moz, -webkit, not -o, not -ms, not -khtml, official );
-}
-
-// Mixin for setting column-break-inside
-//
-// * legal values are auto, avoid, avoid-page, avoid-column
-//
-// Example:
-// h2.inside {@include column-break-inside();}
-// Which generates:
-//
-// h2.inside {
-// -webkit-column-break-inside: auto;
-// column-break-inside: auto;}
-@mixin column-break-inside($value: auto){
- @include experimental(column-break-inside, $value, not -moz, -webkit, not -o, not -ms, not -khtml, official );
-}
-
-// All-purpose mixin for setting column breaks.
-//
-// * legal values for $type : before, after, inside
-// * legal values for '$value' are dependent on $type
-// * when $type = before, legal values are auto, always, avoid, left, right, page, column, avoid-page, avoid-column
-// * when $type = after, legal values are auto, always, avoid, left, right, page, column, avoid-page, avoid-column
-// * when $type = inside, legal values are auto, avoid, avoid-page, avoid-column
-//
-// Examples:
-// h2.before {@include column-break(before, always);}
-// h2.after {@include column-break(after, always); }
-// h2.inside {@include column-break(inside); }
-//
-// Which generates:
-// h2.before {
-// -webkit-column-break-before: always;
-// column-break-before: always;}
-//
-// h2.after {
-// -webkit-column-break-after: always;
-// column-break-after: always; }
-//
-// h2.inside {
-// -webkit-column-break-inside: auto;
-// column-break-inside: auto;}
-
-@mixin column-break($type: before, $value: auto){
- @include experimental("column-break-#{$type}", $value, not -moz, -webkit, not -o, not -ms, not -khtml, official );
-}
\ No newline at end of file
diff --git a/.metalsmith/sass/css3/_filter.scss b/.metalsmith/sass/css3/_filter.scss
deleted file mode 100644
index cd6eb1949..000000000
--- a/.metalsmith/sass/css3/_filter.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-@import "shared";
-
-// Provides cross-browser support for the upcoming (?) css3 filter property.
-//
-// Each filter argument should adhere to the standard css3 syntax for the
-// filter property.
-@mixin filter (
- $filter-1,
- $filter-2 : false,
- $filter-3 : false,
- $filter-4 : false,
- $filter-5 : false,
- $filter-6 : false,
- $filter-7 : false,
- $filter-8 : false,
- $filter-9 : false,
- $filter-10: false
-) {
- $filter : compact($filter-1, $filter-2, $filter-3, $filter-4, $filter-5, $filter-6, $filter-7, $filter-8, $filter-9, $filter-10);
- @include experimental(filter, $filter,
- -moz, -webkit, not -o, not -ms, not -khtml, official
- );
-}
diff --git a/.metalsmith/sass/css3/_font-face.scss b/.metalsmith/sass/css3/_font-face.scss
deleted file mode 100644
index f2a0ecd53..000000000
--- a/.metalsmith/sass/css3/_font-face.scss
+++ /dev/null
@@ -1,48 +0,0 @@
-@import "shared";
-
-// Cross-browser support for @font-face. Supports IE, Gecko, Webkit, Opera.
-//
-// * $name is required, arbitrary, and what you will use in font stacks.
-// * $font-files is required using font-files('relative/location', 'format').
-// for best results use this order: woff, opentype/truetype, svg
-// * $eot is required by IE, and is a relative location of the eot file.
-// * $weight shows if the font is bold, defaults to normal
-// * $style defaults to normal, might be also italic
-// * For android 2.2 Compatiblity, please ensure that your web page has
-// a meta viewport tag.
-// * To support iOS < 4.2, an SVG file must be provided
-//
-// If you need to generate other formats check out the Font Squirrel
-// [font generator](http://www.fontsquirrel.com/fontface/generator)
-//
-
-// In order to refer to a specific style of the font in your stylesheets as
-// e.g. "font-style: italic;", you may add a couple of @font-face includes
-// containing the respective font files for each style and specying
-// respective the $style parameter.
-
-// Order of the includes matters, and it is: normal, bold, italic, bold+italic.
-
-@mixin font-face(
- $name,
- $font-files,
- $eot: false,
- $weight: false,
- $style: false
-) {
- $iefont: unquote("#{$eot}?#iefix");
- @font-face {
- font-family: quote($name);
- @if $eot {
- src: font-url($eot);
- $font-files: font-url($iefont) unquote("format('embedded-opentype')"), $font-files;
- }
- src: $font-files;
- @if $weight {
- font-weight: $weight;
- }
- @if $style {
- font-style: $style;
- }
- }
-}
diff --git a/.metalsmith/sass/css3/_hyphenation.scss b/.metalsmith/sass/css3/_hyphenation.scss
deleted file mode 100644
index a4f58082e..000000000
--- a/.metalsmith/sass/css3/_hyphenation.scss
+++ /dev/null
@@ -1,77 +0,0 @@
-@import "shared";
-
-// Mixins to support specific CSS Text Level 3 elements
-//
-//
-//
-// Mixin for word-break properties
-// http://www.w3.org/css3-text/#word-break
-// * legal values for $type : normal, keep-all, break-all
-//
-// Example:
-// p.wordBreak {@include word-break(break-all);}
-//
-// Which generates:
-// p.wordBreak {
-// -ms-word-break: break-all;
-// word-break: break-all;
-// word-break: break-word;}
-//
-@mixin word-break($value: normal){
- @if $value == break-all {
- //Most browsers handle the break-all case the same...
- @include experimental(word-break, $value,
- not -moz, not -webkit, not -o, -ms, not -khtml, official
- );
- //Webkit handles break-all differently... as break-word
- @include experimental(word-break, break-word,
- not -moz, not -webkit, not -o, not -ms, not -khtml, official
- );
- }
- @else {
- @include experimental(word-break, $value,
- not -moz, not -webkit, not -o, -ms, not -khtml, official
- );
- }
-}
-
-// Mixin for the hyphens property
-//
-// W3C specification: http://www.w3.org/TR/css3-text/#hyphens
-// * legal values for $type : auto, manual, none
-//
-// Example:
-// p {
-// @include hyphens(auto);}
-// Which generates:
-// p {
-// -moz-hyphens: auto;
-// -webkit-hyphens: auto;
-// hyphens: auto;}
-//
-@mixin hyphens($value: auto){
- @include experimental(hyphens, $value,
- -moz, -webkit, not -o, not -ms, not -khtml, official
- );
-}
-
-// Mixin for x-browser hyphenation based on @auchenberg's post:
-// Removes the need for the HTML tag
-// http://blog.kenneth.io/blog/2012/03/04/word-wrapping-hypernation-using-css/
-//
-// Example:
-// div {@include hyphenation;}
-//
-// Which generates:
-// div {
-// -ms-word-break: break-all;
-// word-break: break-all;
-// word-break: break-word;
-// -moz-hyphens: auto;
-// -webkit-hyphens: auto;
-// hyphens: auto;}
-//
-@mixin hyphenation{
- @include word-break(break-all);
- @include hyphens;
-}
diff --git a/.metalsmith/sass/css3/_images.scss b/.metalsmith/sass/css3/_images.scss
deleted file mode 100644
index e241776e7..000000000
--- a/.metalsmith/sass/css3/_images.scss
+++ /dev/null
@@ -1,132 +0,0 @@
-@import "shared";
-@import "compass/utilities/general/hacks";
-
-// Background property support for vendor prefixing within values.
-@mixin background(
- $background-1,
- $background-2: false,
- $background-3: false,
- $background-4: false,
- $background-5: false,
- $background-6: false,
- $background-7: false,
- $background-8: false,
- $background-9: false,
- $background-10: false
-) {
- $backgrounds: compact($background-1, $background-2, $background-3, $background-4, $background-5,
- $background-6, $background-7, $background-8, $background-9, $background-10);
- $mult-bgs: -compass-list-size($backgrounds) > 1;
- $add-pie-bg: prefixed(-pie, $backgrounds) or $mult-bgs;
- @if $experimental-support-for-svg and prefixed(-svg, $backgrounds) { background: -svg($backgrounds); }
- @if $support-for-original-webkit-gradients and prefixed(-owg, $backgrounds) { background: -owg($backgrounds); }
- @if $experimental-support-for-webkit and prefixed(-webkit, $backgrounds) { background: -webkit($backgrounds); }
- @if $experimental-support-for-mozilla and prefixed(-moz, $backgrounds) { background: -moz($backgrounds); }
- @if $experimental-support-for-opera and prefixed(-o, $backgrounds) { background: -o($backgrounds); }
- @if $experimental-support-for-pie and $add-pie-bg { -pie-background: -pie($backgrounds); }
- background: $backgrounds ;
-}
-
-@mixin background-with-css2-fallback(
- $background-1,
- $background-2: false,
- $background-3: false,
- $background-4: false,
- $background-5: false,
- $background-6: false,
- $background-7: false,
- $background-8: false,
- $background-9: false,
- $background-10: false
-) {
- $backgrounds: compact($background-1, $background-2, $background-3, $background-4, $background-5,
- $background-6, $background-7, $background-8, $background-9, $background-10);
- $mult-bgs: -compass-list-size($backgrounds) > 1;
- $simple-background: if($mult-bgs or prefixed(-css2, $backgrounds), -css2(-compass-nth($backgrounds, last)), false);
- @if not blank($simple-background) { background: $simple-background; }
- @include background($background-1, $background-2, $background-3, $background-4, $background-5,
- $background-6, $background-7, $background-8, $background-9, $background-10);
-}
-
-
-// Background image property support for vendor prefixing within values.
-@mixin background-image(
- $image-1,
- $image-2: false,
- $image-3: false,
- $image-4: false,
- $image-5: false,
- $image-6: false,
- $image-7: false,
- $image-8: false,
- $image-9: false,
- $image-10: false
-) {
- $images: compact($image-1, $image-2, $image-3, $image-4, $image-5, $image-6, $image-7, $image-8, $image-9, $image-10);
- $add-pie-bg: prefixed(-pie, $images) or -compass-list-size($images) > 1;
-
- @if $experimental-support-for-svg and prefixed(-svg, $images) { background-image: -svg($images); background-size: 100%; }
- @if $support-for-original-webkit-gradients and prefixed(-owg, $images) { background-image: -owg($images); }
- @if $experimental-support-for-webkit and prefixed(-webkit, $images) { background-image: -webkit($images); }
- @if $experimental-support-for-mozilla and prefixed(-moz, $images) { background-image: -moz($images); }
- @if $experimental-support-for-opera and prefixed(-o, $images) { background-image: -o($images); }
- @if $experimental-support-for-pie and $add-pie-bg { @warn "PIE does not support background-image. Use @include background(#{$images}) instead." }
- background-image: $images ;
-}
-
-// Emit a IE-Specific filters that renders a simple linear gradient.
-// For use in IE 6 - 8. Best practice would have you apply this via a
-// conditional IE stylesheet, but if you must, you should place this before
-// any background-image properties that you have specified.
-//
-// For the `$orientation` parameter, you can pass `vertical` or `horizontal`.
-@mixin filter-gradient($start-color, $end-color, $orientation: vertical) {
- @include has-layout;
- $gradient-type: if($orientation == vertical, 0, 1);
- @if $legacy-support-for-ie6 or $legacy-support-for-ie7 or $legacy-support-for-ie8 {
- filter: progid:DXImageTransform.Microsoft.gradient(gradientType=#{$gradient-type}, startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}');
- }
-}
-
-
-// Border image property support for vendor prefixing properties and values.
-@mixin border-image($value) {
- @if $experimental-support-for-mozilla { -moz-border-image: -moz(reject(-compass-list($value), fill)); }
- @if $support-for-original-webkit-gradients { -webkit-border-image: -owg(reject(-compass-list($value), fill)); }
- @if $experimental-support-for-webkit { -webkit-border-image: -webkit(reject(-compass-list($value), fill)); }
- @if $experimental-support-for-opera { -o-border-image: -o(reject(-compass-list($value), fill)); }
- @if $experimental-support-for-svg { border-image: -svg(reject(-compass-list($value), fill)); }
- border-image: $value;
-}
-
-// List style image property support for vendor prefixing within values.
-@mixin list-style-image($image) {
- @if $experimental-support-for-mozilla and prefixed(-moz, $image) { list-style-image: -moz($image); }
- @if $support-for-original-webkit-gradients and prefixed(-owg, $image) { list-style-image: -owg($image); }
- @if $experimental-support-for-webkit and prefixed(-webkit, $image) { list-style-image: -webkit($image); }
- @if $experimental-support-for-opera and prefixed(-o, $image) { list-style-image: -o($image); }
- @if $experimental-support-for-svg and prefixed(-svg, $image) { list-style-image: -svg($image); }
- list-style-image: $image ;
-}
-
-// List style property support for vendor prefixing within values.
-@mixin list-style($value) {
- $value: -compass-list($value);
- @if $experimental-support-for-mozilla and prefixed(-moz, $value) { list-style-image: -moz($value); }
- @if $support-for-original-webkit-gradients and prefixed(-owg, $value) { list-style-image: -owg($value); }
- @if $experimental-support-for-webkit and prefixed(-webkit, $value) { list-style-image: -webkit($value); }
- @if $experimental-support-for-opera and prefixed(-o, $value) { list-style-image: -o($value); }
- @if $experimental-support-for-svg and prefixed(-svg, $value) { list-style-image: -svg($value); }
- list-style-image: $value ;
-}
-
-// content property support for vendor prefixing within values.
-@mixin content($value) {
- $value: -compass-list($value);
- @if $experimental-support-for-mozilla and prefixed(-moz, $value) { content: -moz($value); }
- @if $support-for-original-webkit-gradients and prefixed(-owg, $value) { content: -owg($value); }
- @if $experimental-support-for-webkit and prefixed(-webkit, $value) { content: -webkit($value); }
- @if $experimental-support-for-opera and prefixed(-o, $value) { content: -o($value); }
- @if $experimental-support-for-svg and prefixed(-svg, $value) { content: -svg($value); }
- content: $value ;
-}
diff --git a/.metalsmith/sass/css3/_inline-block.scss b/.metalsmith/sass/css3/_inline-block.scss
deleted file mode 100644
index 75519b131..000000000
--- a/.metalsmith/sass/css3/_inline-block.scss
+++ /dev/null
@@ -1,22 +0,0 @@
-@import "shared";
-
-// Set `$inline-block-alignment` to `none` or `false` to disable the output
-// of a vertical-align property in the inline-block mixin.
-// Or set it to a legal value for `vertical-align` to change the default.
-$inline-block-alignment: middle !default;
-
-// Provides a cross-browser method to implement `display: inline-block;`
-@mixin inline-block($alignment: $inline-block-alignment) {
- @if $legacy-support-for-mozilla {
- display: -moz-inline-stack;
- }
- display: inline-block;
- @if $alignment and $alignment != none {
- vertical-align: $alignment;
- }
- @if $legacy-support-for-ie {
- *vertical-align: auto;
- zoom: 1;
- *display: inline;
- }
-}
diff --git a/.metalsmith/sass/css3/_opacity.scss b/.metalsmith/sass/css3/_opacity.scss
deleted file mode 100644
index fc497ffe4..000000000
--- a/.metalsmith/sass/css3/_opacity.scss
+++ /dev/null
@@ -1,19 +0,0 @@
-@import "shared";
-
-// Provides cross-browser CSS opacity. Takes a number between 0 and 1 as the argument, e.g. 0.5 for 50% opacity.
-//
-// @param $opacity
-// A number between 0 and 1, where 0 is transparent and 1 is opaque.
-
-@mixin opacity($opacity) {
- @if $legacy-support-for-ie6 or $legacy-support-for-ie7 or $legacy-support-for-ie8 {
- filter: unquote("progid:DXImageTransform.Microsoft.Alpha(Opacity=#{round($opacity * 100)})");
- }
- opacity: $opacity;
-}
-
-// Make an element completely transparent.
-@mixin transparent { @include opacity(0); }
-
-// Make an element completely opaque.
-@mixin opaque { @include opacity(1); }
diff --git a/.metalsmith/sass/css3/_pie.scss b/.metalsmith/sass/css3/_pie.scss
deleted file mode 100644
index 81e2e5167..000000000
--- a/.metalsmith/sass/css3/_pie.scss
+++ /dev/null
@@ -1,73 +0,0 @@
-$experimental-support-for-pie: true;
-
-// It is recommended that you use Sass's @extend directive to apply the behavior
-// to your PIE elements. To assist you, Compass provides this variable.
-// When set, it will cause the `@include pie` mixin to extend this class.
-// The class name you provide should **not** include the `.`.
-$pie-base-class: false !default;
-
-// The default approach to using PIE.
-// Can be one of:
-//
-// * relative (default)
-// * z-index
-// * none
-$pie-default-approach: relative !default;
-
-// The location of your PIE behavior file
-// This should be root-relative to your web server
-// relative assets don't work. It is recommended that
-// you set this yourself.
-$pie-behavior: stylesheet-url("PIE.htc") !default;
-
-// When using the z-index approach, the
-// first ancestor of the PIE element at
-// or before the container's opaque background
-// should have a z-index set as well to ensure
-// propert z-index stacking.
-//
-// The `$position` argument must be some non-static
-// value (absolute, relative, etc.)
-@mixin pie-container($z-index: 0, $position: relative) {
- z-index: $z-index;
- position: $position;
-}
-
-// PIE elements must have this behavior attached to them.
-// IE is broken -- it doesn't think of behavior urls as
-// relative to the stylesheet. It considers them relative
-// to the webpage. As a result, you cannot reliably use
-// compass's relative_assets with PIE.
-//
-// * `$approach` - one of: relative, z-index, or none
-// * `$z-index` - when using the z-index approach, this
-// is the z-index that is applied.
-@mixin pie-element(
- $approach: $pie-default-approach,
- $z-index: 0
-) {
- behavior: $pie-behavior;
- @if $approach == relative {
- position: relative;
- }
- @else if $approach == z-index {
- z-index: $z-index;
- }
-}
-
-// a smart mixin that knows to extend or include pie-element according
-// to your stylesheet's configuration variables.
-@mixin pie($base-class: $pie-base-class) {
- @if $base-class {
- @extend .#{$base-class};
- }
- @else {
- @include pie-element;
- }
-}
-
-// Watch `$n` levels of ancestors for changes to their class attribute
-// So that cascading styles will work correctly on the PIE element.
-@mixin pie-watch-ancestors($n) {
- -pie-watch-ancestors: $n;
-}
\ No newline at end of file
diff --git a/.metalsmith/sass/css3/_regions.scss b/.metalsmith/sass/css3/_regions.scss
deleted file mode 100644
index 9b2f27cd1..000000000
--- a/.metalsmith/sass/css3/_regions.scss
+++ /dev/null
@@ -1,22 +0,0 @@
-@import "shared";
-
-// Webkit, IE10 and future support for [CSS Regions](http://dev.w3.org/csswg/css3-regions/)
-//
-// $target is a value you use to link two regions of your css. Give the source of your content the flow-into property, and give your target container the flow-from property.
-//
-// For a visual explanation, see the diagrams at Chris Coyier's
-// [CSS-Tricks](http://css-tricks.com/content-folding/)
-
-@mixin flow-into($target) {
- $target: unquote($target);
- @include experimental(flow-into, $target,
- not -moz, -webkit, not -o, -ms, not -khtml, not official
- );
-}
-
-@mixin flow-from($target) {
- $target: unquote($target);
- @include experimental(flow-from, $target,
- not -moz, -webkit, not -o, -ms, not -khtml, not official
- );
-}
\ No newline at end of file
diff --git a/.metalsmith/sass/css3/_shared.scss b/.metalsmith/sass/css3/_shared.scss
deleted file mode 100644
index fc5adb6b8..000000000
--- a/.metalsmith/sass/css3/_shared.scss
+++ /dev/null
@@ -1,38 +0,0 @@
-@import "sass/support";
-
-// This mixin provides basic support for CSS3 properties and
-// their corresponding experimental CSS2 properties when
-// the implementations are identical except for the property
-// prefix.
-@mixin experimental($property, $value,
- $moz : $experimental-support-for-mozilla,
- $webkit : $experimental-support-for-webkit,
- $o : $experimental-support-for-opera,
- $ms : $experimental-support-for-microsoft,
- $khtml : $experimental-support-for-khtml,
- $official : true
-) {
- @if $webkit and $experimental-support-for-webkit { -webkit-#{$property} : $value; }
- @if $khtml and $experimental-support-for-khtml { -khtml-#{$property} : $value; }
- @if $moz and $experimental-support-for-mozilla { -moz-#{$property} : $value; }
- @if $ms and $experimental-support-for-microsoft { -ms-#{$property} : $value; }
- @if $o and $experimental-support-for-opera { -o-#{$property} : $value; }
- @if $official { #{$property} : $value; }
-}
-
-// Same as experimental(), but for cases when the property is the same and the value is vendorized
-@mixin experimental-value($property, $value,
- $moz : $experimental-support-for-mozilla,
- $webkit : $experimental-support-for-webkit,
- $o : $experimental-support-for-opera,
- $ms : $experimental-support-for-microsoft,
- $khtml : $experimental-support-for-khtml,
- $official : true
-) {
- @if $webkit and $experimental-support-for-webkit { #{$property} : -webkit-#{$value}; }
- @if $khtml and $experimental-support-for-khtml { #{$property} : -khtml-#{$value}; }
- @if $moz and $experimental-support-for-mozilla { #{$property} : -moz-#{$value}; }
- @if $ms and $experimental-support-for-microsoft { #{$property} : -ms-#{$value}; }
- @if $o and $experimental-support-for-opera { #{$property} : -o-#{$value}; }
- @if $official { #{$property} : #{$value}; }
-}
diff --git a/.metalsmith/sass/css3/_text-shadow.scss b/.metalsmith/sass/css3/_text-shadow.scss
deleted file mode 100644
index eab7636ae..000000000
--- a/.metalsmith/sass/css3/_text-shadow.scss
+++ /dev/null
@@ -1,87 +0,0 @@
-@import "shared";
-
-// These defaults make the arguments optional for this mixin
-// If you like, set different defaults in your project
-
-$default-text-shadow-color: #aaa !default;
-$default-text-shadow-h-offset: 0px !default;
-$default-text-shadow-v-offset: 0px !default;
-$default-text-shadow-blur: 1px !default;
-$default-text-shadow-spread: false !default;
-
-// Provides cross-browser text shadows when one or more shadows are needed.
-// Each shadow argument should adhere to the standard css3 syntax for the
-// text-shadow property.
-//
-// Note: if any shadow has a spread parameter, this will cause the mixin
-// to emit the shadow declaration twice, first without the spread,
-// then with the spread included. This allows you to progressively
-// enhance the browsers that do support the spread parameter.
-@mixin text-shadow(
- $shadow-1 : default,
- $shadow-2 : false,
- $shadow-3 : false,
- $shadow-4 : false,
- $shadow-5 : false,
- $shadow-6 : false,
- $shadow-7 : false,
- $shadow-8 : false,
- $shadow-9 : false,
- $shadow-10: false
-) {
- @if $shadow-1 == default {
- $shadow-1: compact($default-text-shadow-h-offset $default-text-shadow-v-offset $default-text-shadow-blur $default-text-shadow-spread $default-text-shadow-color);
- }
- $shadows-without-spread: join((),(),comma);
- $shadows: join((),(),comma);
- $has-spread: false;
- @each $shadow in compact($shadow-1, $shadow-2, $shadow-3, $shadow-4, $shadow-5,
- $shadow-6, $shadow-7, $shadow-8, $shadow-9, $shadow-10) {
- @if length($shadow) > 4 {
- $has-spread: true;
- $shadows-without-spread: append($shadows-without-spread, nth($shadow,1) nth($shadow,2) nth($shadow,3) nth($shadow,5));
- $shadows: append($shadows, $shadow);
- } else {
- $shadows-without-spread: append($shadows-without-spread, $shadow);
- $shadows: append($shadows, $shadow);
- }
- }
- @if $has-spread {
- text-shadow: $shadows-without-spread;
- }
- text-shadow: $shadows;
-}
-
-// Provides a single cross-browser CSS text shadow.
-//
-// Provides sensible defaults for the color, horizontal offset, vertical offset, blur, and spread
-// according to the configuration defaults above.
-@mixin single-text-shadow(
- $hoff: false,
- $voff: false,
- $blur: false,
- $spread: false,
- $color: false
-) {
- // A lot of people think the color comes first. It doesn't.
- @if type-of($hoff) == color {
- $temp-color: $hoff;
- $hoff: $voff;
- $voff: $blur;
- $blur: $spread;
- $spread: $color;
- $color: $temp-color;
- }
- // Can't rely on default assignment with multiple supported argument orders.
- $hoff: if($hoff, $hoff, $default-text-shadow-h-offset);
- $voff: if($voff, $voff, $default-text-shadow-v-offset);
- $blur: if($blur, $blur, $default-text-shadow-blur );
- $spread: if($spread, $spread, $default-text-shadow-spread );
- $color: if($color, $color, $default-text-shadow-color );
- // We don't need experimental support for this property.
- @if $color == none or $hoff == none {
- @include text-shadow(none);
- } @else {
- @include text-shadow(compact($hoff $voff $blur $spread $color));
- }
-}
diff --git a/.metalsmith/sass/css3/_transform-legacy.scss b/.metalsmith/sass/css3/_transform-legacy.scss
deleted file mode 100644
index ac661da80..000000000
--- a/.metalsmith/sass/css3/_transform-legacy.scss
+++ /dev/null
@@ -1,87 +0,0 @@
-@import "shared";
-
-@warn "This version of the transform module has been deprecated and will be removed.";
-
-// CSS Transform and Transform-Origin
-
-// Apply a transform sent as a complete string.
-
-@mixin apply-transform($transform) {
- @include experimental(transform, $transform,
- -moz, -webkit, -o, not -ms, not -khtml, official
- );
-}
-
-// Apply a transform-origin sent as a complete string.
-
-@mixin apply-origin($origin) {
- @include experimental(transform-origin, $origin,
- -moz, -webkit, -o, not -ms, not -khtml, official
- );
-}
-
-// transform-origin requires x and y coordinates
-//
-// * only applies the coordinates if they are there so that it can be called by scale, rotate and skew safely
-
-@mixin transform-origin($originx: 50%, $originy: 50%) {
- @if $originx or $originy {
- @if $originy {
- @include apply-origin($originx or 50% $originy);
- } @else {
- @include apply-origin($originx);
- }
- }
-}
-
-// A full transform mixin with everything you could want
-//
-// * including origin adjustments if you want them
-// * scale, rotate and skew require units of degrees(deg)
-// * scale takes a multiplier, rotate and skew take degrees
-
-@mixin transform(
- $scale: 1,
- $rotate: 0deg,
- $transx: 0,
- $transy: 0,
- $skewx: 0deg,
- $skewy: 0deg,
- $originx: false,
- $originy: false
-) {
- $transform : scale($scale) rotate($rotate) translate($transx, $transy) skew($skewx, $skewy);
- @include apply-transform($transform);
- @include transform-origin($originx, $originy);
-}
-
-// Transform Partials
-//
-// These work well on their own, but they don't add to each other, they override.
-// Use them with extra origin args, or along side +transform-origin
-
-// Adjust only the scale, with optional origin coordinates
-
-@mixin scale($scale: 1.25, $originx: false, $originy: false) {
- @include apply-transform(scale($scale));
- @include transform-origin($originx, $originy);
-}
-
-// Adjust only the rotation, with optional origin coordinates
-
-@mixin rotate($rotate: 45deg, $originx: false, $originy: false) {
- @include apply-transform(rotate($rotate));
- @include transform-origin($originx, $originy);
-}
-
-// Adjust only the translation
-
-@mixin translate($transx: 0, $transy: 0) {
- @include apply-transform(translate($transx, $transy));
-}
-
-// Adjust only the skew, with optional origin coordinates
-@mixin skew($skewx: 0deg, $skewy: 0deg, $originx: false, $originy: false) {
- @include apply-transform(skew($skewx, $skewy));
- @include transform-origin($originx, $originy);
-}
diff --git a/.metalsmith/sass/css3/_transform.scss b/.metalsmith/sass/css3/_transform.scss
deleted file mode 100644
index ecd50b7d2..000000000
--- a/.metalsmith/sass/css3/_transform.scss
+++ /dev/null
@@ -1,598 +0,0 @@
-@import "shared";
-
-// @doc off
-// Note ----------------------------------------------------------------------
-// Safari, Chrome, and Firefox all support 3D transforms. However,
-// only in the most recent builds. You should also provide fallback 2d support for
-// Opera and IE. IE10 is slated to have 3d enabled, but is currently unreleased.
-// To make that easy, all 2D transforms include an browser-targeting toggle ($only3d)
-// to switch between the two support lists. The toggle defaults to 'false' (2D),
-// and also accepts 'true' (3D). Currently the lists are as follows:
-// 2D: Mozilla, Webkit, Opera, Official
-// 3D: Webkit, Firefox.
-
-// Available Transforms ------------------------------------------------------
-// - Scale (2d and 3d)
-// - Rotate (2d and 3d)
-// - Translate (2d and 3d)
-// - Skew (2d only)
-
-// Transform Parameters ------------------------------------------------------
-// - Transform Origin (2d and 3d)
-// - Perspective (3d)
-// - Perspective Origin (3d)
-// - Transform Style (3d)
-// - Backface Visibility (3d)
-
-// Mixins --------------------------------------------------------------------
-// transform-origin
-// - shortcuts: transform-origin2d, transform-origin3d
-// - helpers: apply-origin
-// transform
-// - shortcuts: transform2d, transform3d
-// - helpers: simple-transform, create-transform
-// perspective
-// - helpers: perspective-origin
-// transform-style
-// backface-visibility
-// scale
-// - shortcuts: scaleX, scaleY, scaleZ, scale3d
-// rotate
-// - shortcuts: rotateX, rotateY, rotate3d
-// translate
-// - shortcuts: translateX, translateY, translateZ, translate3d
-// skew
-// - shortcuts: skewX, skewY
-
-// Defaults ------------------------------------------------------------------
-// @doc on
-
-// The default x-origin for transforms
-$default-origin-x : 50% !default;
-// The default y-origin for transforms
-$default-origin-y : 50% !default;
-// The default z-origin for transforms
-$default-origin-z : 50% !default;
-
-
-// The default x-multiplier for scaling
-$default-scale-x : 1.25 !default;
-// The default y-multiplier for scaling
-$default-scale-y : $default-scale-x !default;
-// The default z-multiplier for scaling
-$default-scale-z : $default-scale-x !default;
-
-
-// The default angle for rotations
-$default-rotate : 45deg !default;
-
-
-// The default x-vector for the axis of 3d rotations
-$default-vector-x : 1 !default;
-// The default y-vector for the axis of 3d rotations
-$default-vector-y : 1 !default;
-// The default z-vector for the axis of 3d rotations
-$default-vector-z : 1 !default;
-
-
-// The default x-length for translations
-$default-translate-x : 1em !default;
-// The default y-length for translations
-$default-translate-y : $default-translate-x !default;
-// The default z-length for translations
-$default-translate-z : $default-translate-x !default;
-
-
-// The default x-angle for skewing
-$default-skew-x : 5deg !default;
-// The default y-angle for skewing
-$default-skew-y : 5deg !default;
-
-
-// **Transform-origin**
-// Transform-origin sent as a complete string
-//
-// @include apply-origin( origin [, 3D-only ] )
-//
-// where 'origin' is a space separated list containing 1-3 (x/y/z) coordinates
-// in percentages, absolute (px, cm, in, em etc..) or relative
-// (left, top, right, bottom, center) units
-//
-// @param only3d Set this to true to only apply this
-// mixin where browsers have 3D support.
-@mixin apply-origin($origin, $only3d) {
- $only3d: $only3d or -compass-list-size(-compass-list($origin)) > 2;
- @if $only3d {
- @include experimental(transform-origin, $origin,
- -moz, -webkit, -o, -ms, not -khtml, official
- );
- } @else {
- @include experimental(transform-origin, $origin,
- -moz, -webkit, -o, -ms, not -khtml, official
- );
- }
-}
-
-// Transform-origin sent as individual arguments:
-//
-// @include transform-origin( [ origin-x, origin-y, origin-z, 3D-only ] )
-//
-// where the 3 'origin-' arguments represent x/y/z coordinates.
-//
-// **NOTE:** setting z coordinates triggers 3D support list, leave false for 2D support
-@mixin transform-origin(
- $origin-x: $default-origin-x,
- $origin-y: $default-origin-y,
- $origin-z: false,
- $only3d: if($origin-z, true, false)
-) {
- $origin: unquote('');
- @if $origin-x or $origin-y or $origin-z {
- @if $origin-x { $origin: $origin-x; } @else { $origin: 50%; }
- @if $origin-y { $origin: $origin $origin-y; } @else { @if $origin-z { $origin: $origin 50%; }}
- @if $origin-z { $origin: $origin $origin-z; }
- @include apply-origin($origin, $only3d);
- }
-}
-
-
-// Transform sent as a complete string:
-//
-// @include transform( transforms [, 3D-only ] )
-//
-// where 'transforms' is a space separated list of all the transforms to be applied.
-@mixin transform(
- $transform,
- $only3d: false
-) {
- @if $only3d {
- @include experimental(transform, $transform,
- -moz, -webkit, -o, -ms, not -khtml, official
- );
- } @else {
- @include experimental(transform, $transform,
- -moz, -webkit, -o, -ms, not -khtml, official
- );
- }
-}
-
-// Shortcut to target all browsers with 2D transform support
-@mixin transform2d($trans) {
- @include transform($trans, false);
-}
-
-// Shortcut to target only browsers with 3D transform support
-@mixin transform3d($trans) {
- @include transform($trans, true);
-}
-
-// @doc off
-// 3D Parameters -------------------------------------------------------------
-// @doc on
-
-// Set the perspective of 3D transforms on the children of an element:
-//
-// @include perspective( perspective )
-//
-// where 'perspective' is a unitless number representing the depth of the
-// z-axis. The higher the perspective, the more exaggerated the foreshortening.
-// values from 500 to 1000 are more-or-less "normal" - a good starting-point.
-@mixin perspective($p) {
- @include experimental(perspective, $p,
- -moz, -webkit, -o, -ms, not -khtml, official
- );
-}
-
-// Set the origin position for the perspective
-//
-// @include perspective-origin(origin-x [origin-y])
-//
-// where the two arguments represent x/y coordinates
-@mixin perspective-origin($origin: 50%) {
- @include experimental(perspective-origin, $origin,
- -moz, -webkit, -o, -ms, not -khtml, official
- );
-}
-
-// Determine whether a 3D objects children also live in the given 3D space
-//
-// @include transform-style( [ style ] )
-//
-// where `style` can be either `flat` or `preserve-3d`.
-// Browsers default to `flat`, mixin defaults to `preserve-3d`.
-@mixin transform-style($style: preserve-3d) {
- @include experimental(transform-style, $style,
- -moz, -webkit, -o, -ms, not -khtml, official
- );
-}
-
-// Determine the visibility of an element when it's back is turned
-//
-// @include backface-visibility( [ visibility ] )
-//
-// where `visibility` can be either `visible` or `hidden`.
-// Browsers default to visible, mixin defaults to hidden
-@mixin backface-visibility($visibility: hidden) {
- @include experimental(backface-visibility, $visibility,
- -moz, -webkit, -o, -ms, not -khtml, official
- );
-}
-
-// @doc off
-// Transform Partials --------------------------------------------------------
-// These work well on their own, but they don't add to each other, they override.
-// Use along with transform parameter mixins to adjust origin, perspective and style
-// ---------------------------------------------------------------------------
-
-
-// Scale ---------------------------------------------------------------------
-// @doc on
-
-// Scale an object along the x and y axis:
-//
-// @include scale( [ scale-x, scale-y, perspective, 3D-only ] )
-//
-// where the 'scale-' arguments are unitless multipliers of the x and y dimensions
-// and perspective, which works the same as the stand-alone perspective property/mixin
-// but applies to the individual element (multiplied with any parent perspective)
-//
-// **Note** This mixin cannot be combined with other transform mixins.
-@mixin scale(
- $scale-x: $default-scale-x,
- $scale-y: $scale-x,
- $perspective: false,
- $only3d: false
-) {
- $trans: scale($scale-x, $scale-y);
- @if $perspective { $trans: perspective($perspective) $trans; }
- @include transform($trans, $only3d);
-}
-
-// Scale an object along the x axis
-// @include scaleX( [ scale-x, perspective, 3D-only ] )
-//
-// **Note** This mixin cannot be combined with other transform mixins.
-@mixin scaleX(
- $scale: $default-scale-x,
- $perspective: false,
- $only3d: false
-) {
- $trans: scaleX($scale);
- @if $perspective { $trans: perspective($perspective) $trans; }
- @include transform($trans, $only3d);
-}
-
-// Scale an object along the y axis
-// @include scaleY( [ scale-y, perspective, 3D-only ] )
-//
-// **Note** This mixin cannot be combined with other transform mixins.
-@mixin scaleY(
- $scale: $default-scale-y,
- $perspective: false,
- $only3d: false
-) {
- $trans: scaleY($scale);
- @if $perspective { $trans: perspective($perspective) $trans; }
- @include transform($trans, $only3d);
-}
-
-// Scale an object along the z axis
-// @include scaleZ( [ scale-z, perspective ] )
-//
-// **Note** This mixin cannot be combined with other transform mixins.
-@mixin scaleZ(
- $scale: $default-scale-z,
- $perspective: false
-) {
- $trans: scaleZ($scale);
- @if $perspective { $trans: perspective($perspective) $trans; }
- @include transform3d($trans);
-}
-
-// Scale and object along all three axis
-// @include scale3d( [ scale-x, scale-y, scale-z, perspective ] )
-//
-// **Note** This mixin cannot be combined with other transform mixins.
-@mixin scale3d(
- $scale-x: $default-scale-x,
- $scale-y: $default-scale-y,
- $scale-z: $default-scale-z,
- $perspective: false
-) {
- $trans: scale3d($scale-x, $scale-y, $scale-z);
- @if $perspective { $trans: perspective($perspective) $trans; }
- @include transform3d($trans);
-}
-
-// @doc off
-// Rotate --------------------------------------------------------------------
-// @doc on
-
-// Rotate an object around the z axis (2D)
-// @include rotate( [ rotation, perspective, 3D-only ] )
-// where 'rotation' is an angle set in degrees (deg) or radian (rad) units
-//
-// **Note** This mixin cannot be combined with other transform mixins.
-@mixin rotate(
- $rotate: $default-rotate,
- $perspective: false,
- $only3d: false
-) {
- $trans: rotate($rotate);
- @if $perspective { $trans: perspective($perspective) $trans; }
- @include transform($trans, $only3d);
-}
-
-// A longcut for 'rotate' in case you forget that 'z' is implied
-//
-// **Note** This mixin cannot be combined with other transform mixins.
-@mixin rotateZ(
- $rotate: $default-rotate,
- $perspective: false,
- $only3d: false
-) {
- @include rotate($rotate, $perspective, $only3d);
-}
-
-// Rotate an object around the x axis (3D)
-// @include rotateX( [ rotation, perspective ] )
-//
-// **Note** This mixin cannot be combined with other transform mixins.
-@mixin rotateX(
- $rotate: $default-rotate,
- $perspective: false
-) {
- $trans: rotateX($rotate);
- @if $perspective { $trans: perspective($perspective) $trans; }
- @include transform3d($trans);
-}
-
-// Rotate an object around the y axis (3D)
-// @include rotate( [ rotation, perspective ] )
-//
-// **Note** This mixin cannot be combined with other transform mixins.
-@mixin rotateY(
- $rotate: $default-rotate,
- $perspective: false
-) {
- $trans: rotateY($rotate);
- @if $perspective { $trans: perspective($perspective) $trans; }
- @include transform3d($trans);
-}
-
-// Rotate an object around an arbitrary axis (3D)
-// @include rotate( [ vector-x, vector-y, vector-z, rotation, perspective ] )
-// where the 'vector-' arguments accept unitless numbers.
-// These numbers are not important on their own, but in relation to one another
-// creating an axis from your transform-origin, along the axis of Xx = Yy = Zz.
-//
-// **Note** This mixin cannot be combined with other transform mixins.
-@mixin rotate3d(
- $vector-x: $default-vector-x,
- $vector-y: $default-vector-y,
- $vector-z: $default-vector-z,
- $rotate: $default-rotate,
- $perspective: false
-) {
- $trans: rotate3d($vector-x, $vector-y, $vector-z, $rotate);
- @if $perspective { $trans: perspective($perspective) $trans; }
- @include transform3d($trans);
-}
-
-// @doc off
-// Translate -----------------------------------------------------------------
-// @doc on
-
-// Move an object along the x or y axis (2D)
-// @include translate( [ translate-x, translate-y, perspective, 3D-only ] )
-// where the 'translate-' arguments accept any distance in percentages or absolute (px, cm, in, em etc..) units.
-//
-// **Note** This mixin cannot be combined with other transform mixins.
-@mixin translate(
- $translate-x: $default-translate-x,
- $translate-y: $default-translate-y,
- $perspective: false,
- $only3d: false
-) {
- $trans: translate($translate-x, $translate-y);
- @if $perspective { $trans: perspective($perspective) $trans; }
- @include transform($trans, $only3d);
-}
-
-// Move an object along the x axis (2D)
-// @include translate( [ translate-x, perspective, 3D-only ] )
-//
-// **Note** This mixin cannot be combined with other transform mixins.
-@mixin translateX(
- $trans-x: $default-translate-x,
- $perspective: false,
- $only3d: false
-) {
- $trans: translateX($trans-x);
- @if $perspective { $trans: perspective($perspective) $trans; }
- @include transform($trans, $only3d);
-}
-
-// Move an object along the y axis (2D)
-// @include translate( [ translate-y, perspective, 3D-only ] )
-//
-// **Note** This mixin cannot be combined with other transform mixins.
-@mixin translateY(
- $trans-y: $default-translate-y,
- $perspective: false,
- $only3d: false
-) {
- $trans: translateY($trans-y);
- @if $perspective { $trans: perspective($perspective) $trans; }
- @include transform($trans, $only3d);
-}
-
-// Move an object along the z axis (3D)
-// @include translate( [ translate-z, perspective ] )
-//
-// **Note** This mixin cannot be combined with other transform mixins.
-@mixin translateZ(
- $trans-z: $default-translate-z,
- $perspective: false
-) {
- $trans: translateZ($trans-z);
- @if $perspective { $trans: perspective($perspective) $trans; }
- @include transform3d($trans);
-}
-
-// Move an object along the x, y and z axis (3D)
-// @include translate( [ translate-x, translate-y, translate-z, perspective ] )
-//
-// **Note** This mixin cannot be combined with other transform mixins.
-@mixin translate3d(
- $translate-x: $default-translate-x,
- $translate-y: $default-translate-y,
- $translate-z: $default-translate-z,
- $perspective: false
-) {
- $trans: translate3d($translate-x, $translate-y, $translate-z);
- @if $perspective { $trans: perspective($perspective) $trans; }
- @include transform3d($trans);
-}
-
-// @doc off
-// Skew ----------------------------------------------------------------------
-// @doc on
-
-// Skew an element:
-//
-// @include skew( [ skew-x, skew-y, 3D-only ] )
-//
-// where the 'skew-' arguments accept css angles in degrees (deg) or radian (rad) units.
-//
-// **Note** This mixin cannot be combined with other transform mixins.
-@mixin skew(
- $skew-x: $default-skew-x,
- $skew-y: $default-skew-y,
- $only3d: false
-) {
- $trans: skew($skew-x, $skew-y);
- @include transform($trans, $only3d);
-}
-
-// Skew an element along the x axiz
-//
-// @include skew( [ skew-x, 3D-only ] )
-//
-// **Note** This mixin cannot be combined with other transform mixins.
-@mixin skewX(
- $skew-x: $default-skew-x,
- $only3d: false
-) {
- $trans: skewX($skew-x);
- @include transform($trans, $only3d);
-}
-
-// Skew an element along the y axis
-//
-// @include skew( [ skew-y, 3D-only ] )
-//
-// **Note** This mixin cannot be combined with other transform mixins.
-@mixin skewY(
- $skew-y: $default-skew-y,
- $only3d: false
-) {
- $trans: skewY($skew-y);
- @include transform($trans, $only3d);
-}
-
-
-// Full transform mixins
-// For settings any combination of transforms as arguments
-// These are complex and not highly recommended for daily use. They are mainly
-// here for backward-compatibility purposes.
-//
-// * they include origin adjustments
-// * scale takes a multiplier (unitless), rotate and skew take degrees (deg)
-//
-// **Note** This mixin cannot be combined with other transform mixins.
-@mixin create-transform(
- $perspective: false,
- $scale-x: false,
- $scale-y: false,
- $scale-z: false,
- $rotate-x: false,
- $rotate-y: false,
- $rotate-z: false,
- $rotate3d: false,
- $trans-x: false,
- $trans-y: false,
- $trans-z: false,
- $skew-x: false,
- $skew-y: false,
- $origin-x: false,
- $origin-y: false,
- $origin-z: false,
- $only3d: false
-) {
- $trans: unquote("");
-
- // perspective
- @if $perspective { $trans: perspective($perspective) ; }
-
- // scale
- @if $scale-x and $scale-y {
- @if $scale-z { $trans: $trans scale3d($scale-x, $scale-y, $scale-z); }
- @else { $trans: $trans scale($scale-x, $scale-y); }
- } @else {
- @if $scale-x { $trans: $trans scaleX($scale-x); }
- @if $scale-y { $trans: $trans scaleY($scale-y); }
- @if $scale-z { $trans: $trans scaleZ($scale-z); }
- }
-
- // rotate
- @if $rotate-x { $trans: $trans rotateX($rotate-x); }
- @if $rotate-y { $trans: $trans rotateY($rotate-y); }
- @if $rotate-z { $trans: $trans rotateZ($rotate-z); }
- @if $rotate3d { $trans: $trans rotate3d($rotate3d); }
-
- // translate
- @if $trans-x and $trans-y {
- @if $trans-z { $trans: $trans translate3d($trans-x, $trans-y, $trans-z); }
- @else { $trans: $trans translate($trans-x, $trans-y); }
- } @else {
- @if $trans-x { $trans: $trans translateX($trans-x); }
- @if $trans-y { $trans: $trans translateY($trans-y); }
- @if $trans-z { $trans: $trans translateZ($trans-z); }
- }
-
- // skew
- @if $skew-x and $skew-y { $trans: $trans skew($skew-x, $skew-y); }
- @else {
- @if $skew-x { $trans: $trans skewX($skew-x); }
- @if $skew-y { $trans: $trans skewY($skew-y); }
- }
-
- // apply it!
- @include transform($trans, $only3d);
- @include transform-origin($origin-x, $origin-y, $origin-z, $only3d);
-}
-
-
-// A simplified set of options
-// backwards-compatible with the previous version of the 'transform' mixin
-@mixin simple-transform(
- $scale: false,
- $rotate: false,
- $trans-x: false,
- $trans-y: false,
- $skew-x: false,
- $skew-y: false,
- $origin-x: false,
- $origin-y: false
-) {
- @include create-transform(
- false,
- $scale, $scale, false,
- false, false, $rotate, false,
- $trans-x, $trans-y, false,
- $skew-x, $skew-y,
- $origin-x, $origin-y, false,
- false
- );
-}
diff --git a/.metalsmith/sass/css3/_transition.scss b/.metalsmith/sass/css3/_transition.scss
deleted file mode 100644
index 4c4cb8c69..000000000
--- a/.metalsmith/sass/css3/_transition.scss
+++ /dev/null
@@ -1,221 +0,0 @@
-@import "shared";
-
-// CSS Transitions
-// Currently only works in Webkit.
-//
-// * expected in CSS3, FireFox 3.6/7 and Opera Presto 2.3
-// * We'll be prepared.
-//
-// Including this submodule sets following defaults for the mixins:
-//
-// $default-transition-property : all
-// $default-transition-duration : 1s
-// $default-transition-function : false
-// $default-transition-delay : false
-//
-// Override them if you like. Timing-function and delay are set to false for browser defaults (ease, 0s).
-
-$default-transition-property: all !default;
-
-$default-transition-duration: 1s !default;
-
-$default-transition-function: false !default;
-
-$default-transition-delay: false !default;
-
-$transitionable-prefixed-values: transform, transform-origin !default;
-
-// One or more properties to transition
-//
-// * for multiple, use a comma-delimited list
-// * also accepts "all" or "none"
-
-@mixin transition-property($property-1: $default-transition-property,
- $property-2 : false,
- $property-3 : false,
- $property-4 : false,
- $property-5 : false,
- $property-6 : false,
- $property-7 : false,
- $property-8 : false,
- $property-9 : false,
- $property-10: false
-) {
- @if type-of($property-1) == string { $property-1: unquote($property-1); }
- $properties: compact($property-1, $property-2, $property-3, $property-4, $property-5, $property-6, $property-7, $property-8, $property-9, $property-10);
- @if $experimental-support-for-webkit { -webkit-transition-property : prefixed-for-transition(-webkit, $properties); }
- @if $experimental-support-for-mozilla { -moz-transition-property : prefixed-for-transition(-moz, $properties); }
- @if $experimental-support-for-opera { -o-transition-property : prefixed-for-transition(-o, $properties); }
- transition-property : $properties;
-}
-
-// One or more durations in seconds
-//
-// * for multiple, use a comma-delimited list
-// * these durations will affect the properties in the same list position
-
-@mixin transition-duration($duration-1: $default-transition-duration,
- $duration-2 : false,
- $duration-3 : false,
- $duration-4 : false,
- $duration-5 : false,
- $duration-6 : false,
- $duration-7 : false,
- $duration-8 : false,
- $duration-9 : false,
- $duration-10: false
-) {
- @if type-of($duration-1) == string { $duration-1: unquote($duration-1); }
- $durations: compact($duration-1, $duration-2, $duration-3, $duration-4, $duration-5, $duration-6, $duration-7, $duration-8, $duration-9, $duration-10);
- @include experimental(transition-duration, $durations,
- -moz, -webkit, -o, not -ms, not -khtml, official
- );
-}
-
-// One or more timing functions
-//
-// * [ ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(x1, y1, x2, y2)]
-// * For multiple, use a comma-delimited list
-// * These functions will effect the properties in the same list position
-
-@mixin transition-timing-function($function-1: $default-transition-function,
- $function-2 : false,
- $function-3 : false,
- $function-4 : false,
- $function-5 : false,
- $function-6 : false,
- $function-7 : false,
- $function-8 : false,
- $function-9 : false,
- $function-10: false
-) {
- $function-1: unquote($function-1);
- $functions: compact($function-1, $function-2, $function-3, $function-4, $function-5, $function-6, $function-7, $function-8, $function-9, $function-10);
- @include experimental(transition-timing-function, $functions,
- -moz, -webkit, -o, not -ms, not -khtml, official
- );
-}
-
-// One or more transition-delays in seconds
-//
-// * for multiple, use a comma-delimited list
-// * these delays will effect the properties in the same list position
-
-@mixin transition-delay($delay-1: $default-transition-delay,
- $delay-2 : false,
- $delay-3 : false,
- $delay-4 : false,
- $delay-5 : false,
- $delay-6 : false,
- $delay-7 : false,
- $delay-8 : false,
- $delay-9 : false,
- $delay-10: false
-) {
- @if type-of($delay-1) == string { $delay-1: unquote($delay-1); }
- $delays: compact($delay-1, $delay-2, $delay-3, $delay-4, $delay-5, $delay-6, $delay-7, $delay-8, $delay-9, $delay-10);
- @include experimental(transition-delay, $delays,
- -moz, -webkit, -o, not -ms, not -khtml, official
- );
-}
-
-// Transition all-in-one shorthand
-
-@mixin single-transition(
- $property: $default-transition-property,
- $duration: $default-transition-duration,
- $function: $default-transition-function,
- $delay: $default-transition-delay
-) {
- @include transition(compact($property $duration $function $delay));
-}
-
-@mixin transition(
- $transition-1 : default,
- $transition-2 : false,
- $transition-3 : false,
- $transition-4 : false,
- $transition-5 : false,
- $transition-6 : false,
- $transition-7 : false,
- $transition-8 : false,
- $transition-9 : false,
- $transition-10: false
-) {
- @if $transition-1 == default {
- $transition-1 : compact($default-transition-property $default-transition-duration $default-transition-function $default-transition-delay);
- }
- $transitions: false;
- @if type-of($transition-1) == list and type-of(nth($transition-1,1)) == list {
- $transitions: join($transition-1, compact($transition-2, $transition-3, $transition-4, $transition-5, $transition-6, $transition-7, $transition-8, $transition-9, $transition-10), comma);
- } @else {
- $transitions : compact($transition-1, $transition-2, $transition-3, $transition-4, $transition-5, $transition-6, $transition-7, $transition-8, $transition-9, $transition-10);
- }
- $delays: comma-list();
- $has-delays: false;
- $webkit-value: comma-list();
- $moz-value: comma-list();
- $o-value: comma-list();
-
- // This block can be made considerably simpler at the point in time that
- // we no longer need to deal with the differences in how delays are treated.
- @each $transition in $transitions {
- // Extract the values from the list
- // (this would be cleaner if nth took a 3rd argument to provide a default value).
- $property: nth($transition, 1);
- $duration: false;
- $timing-function: false;
- $delay: false;
- @if length($transition) > 1 { $duration: nth($transition, 2); }
- @if length($transition) > 2 { $timing-function: nth($transition, 3); }
- @if length($transition) > 3 { $delay: nth($transition, 4); $has-delays: true; }
-
- // If a delay is provided without a timing function
- @if is-time($timing-function) and not $delay { $delay: $timing-function; $timing-function: false; $has-delays: true; }
-
- // Keep a list of delays in case one is specified
- $delays: append($delays, if($delay, $delay, 0s));
-
- $webkit-value: append($webkit-value, compact(prefixed-for-transition(-webkit, $property) $duration $timing-function));
- $moz-value: append( $moz-value, compact(prefixed-for-transition( -moz, $property) $duration $timing-function $delay));
- $o-value: append( $o-value, compact(prefixed-for-transition( -o, $property) $duration $timing-function $delay));
- }
-
- @if $experimental-support-for-webkit { -webkit-transition : $webkit-value;
- // old webkit doesn't support the delay parameter in the shorthand so we progressively enhance it.
- @if $has-delays { -webkit-transition-delay : $delays; } }
- @if $experimental-support-for-mozilla { -moz-transition : $moz-value; }
- @if $experimental-support-for-opera { -o-transition : $o-value; }
- transition : $transitions;
-}
-
-// coerce a list to be comma delimited or make a new, empty comma delimited list.
-@function comma-list($list: ()) {
- @return join((), $list, comma);
-}
-
-// Returns `$property` with the given prefix if it is found in `$transitionable-prefixed-values`.
-@function prefixed-for-transition($prefix, $property) {
- @if type-of($property) == list {
- $new-list: comma-list();
- @each $v in $property {
- $new-list: append($new-list, prefixed-for-transition($prefix, $v));
- }
- @return $new-list;
- } @else {
- @if index($transitionable-prefixed-values, $property) {
- @return #{$prefix}-#{$property};
- } @else {
- @return $property;
- }
- }
-}
-
-// Checks if the value given is a unit of time.
-@function is-time($value) {
- @if type-of($value) == number {
- @return not not index(s ms, unit($value));
- } @else {
- @return false;
- }
-}
diff --git a/.metalsmith/sass/css3/_user-interface.scss b/.metalsmith/sass/css3/_user-interface.scss
deleted file mode 100644
index e78b2fe04..000000000
--- a/.metalsmith/sass/css3/_user-interface.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-// User Interface ------------------------------------------------------------
-// This file can be expanded to handle all the user interface properties as
-// they become available in browsers:
-// http://www.w3.org/TR/2000/WD-css3-userint-20000216
-@import "shared";
-
-
-// This property controls the selection model and granularity of an element.
-//
-// @param $select
-// [ none | text | toggle | element | elements | all | inherit ]
-@mixin user-select($select) {
- $select: unquote($select);
- @include experimental(user-select, $select,
- -moz, -webkit, not -o, not -ms, -khtml, official
- );
-}
diff --git a/.metalsmith/sass/main.scss b/.metalsmith/sass/main.scss
deleted file mode 100644
index e28f627cc..000000000
--- a/.metalsmith/sass/main.scss
+++ /dev/null
@@ -1,1981 +0,0 @@
-@import "css3";
-
-//-------------------------
-// $color_0: #444;
-// $color_1: #fff;
-// $color_2: #eee;
-// $color_3: #ccc;
-// $color_4: #00BA65;
-// $color_5: #47b5e2;
-$color_6: #999;
-$color_7: #27637e;
-$color_8: #222;
-$color_9: #007eb2;
-$color_10: #f5f5f5;
-
-
-$color_0: #2c3134;
-$color_1: #b3b3b3;
-$color_2: #858585;
-$color_3: #c5c5c5;
-$color_4: #838485;
-$color_5: #525658;
-
-$white: #fff;
-$light-black: #2c3134;
-$dark-grey: #5c656d;
-$grey: #555;
-$light-grey: #eee;
-$light-grey2: #838485;
-$green: #27ae61;
-$kd-green: #00B057;
-
-//colors footer
-$color_gallery_approx: #f0f0f0;
-$color_gray_nurse_approx: #e8e8e8;
-$color_tapa_approx: #747474;
-$color_pumice_approx: #cacaca;
-$color_picton_blue_approx: #55acee;
-$color_azure_approx: #3b5998;
-
-$normal_font: 15px;
-//--------------------------
-
-%extend_3 {
- margin: 0;
- padding: 0;
- list-style: none;
-}
-%extend_4 {
- font-family: "Ubuntu", Helvetica, Arial, "Lucida Grande", sans-serif;
- font-weight: 300;
-}
-
-@font-face {
- font-family: "Open Sans";
- font-weight: 300;
- font-style: normal;
- src: url("../fonts/OpenSans-Light.woff")
-}
-@font-face {
- font-family: "Open Sans";
- font-weight: 400;
- font-style: normal;
- src: url("../fonts/OpenSans-Regular.woff")
-}
-@font-face {
- font-family: "Open Sans";
- font-weight: 600;
- font-style: normal;
- src: url("../fonts/OpenSans-Semibold.woff")
-}
-
-body {
- margin: 0;
- padding: 0;
- font-family: 'Open Sans', 'Proxima Nova', 'Helvetica Neue', Helvetica, Arial;
- font-size: $normal_font;
- text-rendering: optimizelegibility;
- line-height: 2;
- color: $grey;
- background-image: url(../img/bg.png);
- background-repeat: no-repeat;
- background-position: top center;
- background-size: 100%;
-}
-html {
- margin: 0;
- padding: 0;
-}
-input {
- display: inline-block;
- vertical-align: middle;
- line-height: 30px;
- margin: 0 auto;
- width: 100%;
- max-width: 400px;
- @include box-sizing(border-box);
- @include transition(all linear 0.2s);
- /* (11) display was set before: old value: block - new value inline-block */;
- &:focus {
-// border-color: $color_9;
- outline: 0;
- }
-}
-
-h1, h2, h3, h4, h5, h6 {
- margin-top: 26px;
- margin-bottom: 10px;
- font-family: 'Open Sans', 'Proxima Nova', 'Helvetica Neue', Helvetica, Arial;
- font-weight: bold;
- text-rendering: optimizelegibility;
-}
-h1 {
- font-size: 25px;
-}
-h2 {
- font-size: 22px;
- line-height: 28px;
-}
-h3 {
- font-size: 22px;
- line-height: 28px;
- font-weight: normal;
-}
-h2,h3 {
- margin-top: 26px;
- margin-bottom: 26px;
-}
-h4 {
- font-size: 18px;
- line-height: 24px;
- font-weight: normal;
-}
-h5, h6 {
- font-size: 16px;
- line-height: 22px;
- font-weight: normal;
-}
-h6 {
- margin-top: 10px;
-}
-
-p {
- margin: 12px 0;
- line-height: 22px;
-}
-
-img {
- display: block;
- height: auto;
- margin: 0 auto;
-}
-.docs-content{
- img {
- max-width: 600px;
- max-height: 400px;
- cursor: pointer;
- }
- a {
- color: $grey;
- border-bottom-style: dotted;
- border-color: $grey;
- border-width: 1px;
- &:hover {
- text-decoration: none;
- }
- }
- .guide-button a {
- border: none;
- }
- .tag-list {
- a {
- border: none;
- &:hover {
- border-bottom-style: dotted;
- border-color: $grey;
- border-width: 1px;
- }
- }
- }
-}
-iframe {
- max-width: 100%;
- max-height: 100%;
- border: 0 !important;
-}
-header {
- width: 100%;
- overflow: hidden;
- padding: 0 0 222px 0;
- text-align: center;
- color: $color_1;
- *zoom: 1;
- /* (7) padding was set before: old value: 2em 0 2em 0 - new value 4em 0 4em 0 */;
- h2 {
- margin: 0 0 1em 0;
- &.docs-header {
- margin: 0;
- }
- }
- &:before {
- content: " ";
- display: table;
- }
- &:after {
- content: " ";
- display: table;
- clear: both;
- }
- nav {
- background: none;
- position: relative;
- text-align: left;
- .topSearchBox {
- position: absolute;
- top: 70px;
- left: 50%;
- width: 1090px;
- margin-left: -645px;
- padding: 0;
- }
- }
-}
-.container {
- width: 95%;
- max-width: 1090px;
- margin: 0 auto;
- position: relative;
- padding: 0 20px;
- /* (8) max-width was set before: old value: 650px - new value 1000px */;
-}
-section:not(.page) .container {
- min-height: 500px;
-}
-strong {
- font-weight: 700;
-}
-dt {
- font-weight: 700;
-}
-hr {
- background: $color_2;
- border: 0;
- height: 1px;
- margin: 40px 0 40px;
-}
-blockquote {
- margin: 1em 0;
- border-left: 3px solid $color_3;
- padding-left: 20px;
- text-align: left;
-}
-.tip,
-.alert {
- display: block;
- border-radius: 3px;
- border: 1px solid #ededed;
- border-left-width: 10px;
- position: relative;
- &:before {
- position: absolute;
- top: 17px;
- left: 13px;
- }
- p {
- display: inline-block;
- padding: 0 15px;
- margin: 12px 0 !important;
- word-break: break-word;
- width: 93%;
- vertical-align: middle;
- font-family: 'Open Sans','Proxima Nova','Helvetica Neue',Helvetica,Arial;
- .label {
- text-transform: uppercase;
- display: block;
- font-size: 12px;
- font-weight: bold;
- margin: 2px 0 0;
- }
- }
-}
-.tip {
- background-color: #f3f8f3;
- border-left-color: #50af51;
- .label { color: #4D844D; }
-}
-.alert {
- background-color: #fdf7f7;
- border-left-color: #d9534f;
- .label { color: #CF3F3F; }
-}
-dd {
- padding: 0;
- margin: 0 0 25px 0;
-}
-a {
- @include transition(all ease 150ms);
- text-decoration: none;
- color: $color_4;
- &:hover {
- text-decoration: underline;
- }
- &:active {
- color: $color_5;
- }
-}
-footer.main-footer {
- padding: 56px 0;
- font-family: Open Sans, Proxima Nova, Helvetica Neue, Helvetica, Arial;
- font-weight: 400;
- background: $color_gallery_approx;
- border-top: 1px solid $color_gray_nurse_approx;
- height: auto;
- .inner-container {
- max-width: 1090px;
- padding: 0 45px;
- margin: 0 auto;
- display: block;
- position: relative;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- nav {
- background-color: transparent;
- }
- }
- .footer-block {
- width: 50%;
- font-size: 0;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- display: block;
- float: left;
- &:last-child {
- text-align: right;
- }
- a {
- vertical-align: middle;
- font-size: 14px;
- line-height: 22px;
- color: $color_tapa_approx;
- display: inline;
- margin-right: 12px;
- text-decoration: none;
- &:hover {
- text-decoration: none;
- }
- }
- }
- a.social {
- display: inline-block;
- margin-right: 8px;
- width: 32px;
- height: 32px;
- background: $color_pumice_approx;
- -webkit-border-radius: 50%;
- -moz-border-radius: 50%;
- border-radius: 50%;
- text-align: center;
- padding: 8px 0 0;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- &:after {
- content: '';
- display: inline-block;
- width: 16px;
- height: 16px;
- }
- &.tw {
- &:hover {
- background: $color_picton_blue_approx;
- }
- &:after {
- background: url(../img/app.sprite.png) 0 -2934px;
- width: 16px;
- height: 16px;
- }
- }
- &.fb {
- &:hover {
- background: $color_azure_approx;
- }
- &:after {
- background: url(../img/app.sprite.png) 0 -2908px;
- width: 16px;
- height: 16px;
- }
- }
- }
-}
-h1#logo {
- margin: 10px 0;
-}
-// .hasHeader {
-// #logo {
-// span.img {
-// width: 185px;
-// }
-// }
-// }
-.noHeader {
- #logo {
- span.img {
- // width: 185px;
- margin-left: 15px;
- }
- }
- .hiring {
- left: 220px;
- }
-}
-#logo {
- span.img {
- display: inline-block;
- background-image: url(../img/logo.header.png);
- background-size: 185px;
- background-position: 0;
- background-repeat: no-repeat;
- width: 185px;
- height: 23px;
- vertical-align: middle;
- margin-bottom: 10px;
- }
-
- a, a:hover {
- text-decoration: none;
- }
-}
-.hiring {
- background-color: #F7E747 !important;
- border-radius: 3px;
- // text-transform: uppercase;
- position: absolute;
- top: 36px;
- left: 205px;
- &:before {
- content: '';
- top: 6px;
- left: -5px;
- position: absolute;
- width: 0;
- height: 0;
- border-style: solid;
- border-width: 8px 8px 8px 0;
- border-color: transparent #f7e847 transparent transparent;
- }
- a {
- color: #535353 !important;
- font-size: 12px;
- padding: 0 10px;
- &:hover {
- text-decoration: none;
- }
- }
-}
-nav {
- background: $dark-grey;
-
- #menu {
- float: right;
- a {
- color: $light-grey;
- &:hover {
- text-decoration: none;
- }
- }
- > .toplinks {
- > li {
- display: inline-block;
- margin-right: 10px;
- padding: 1px 10px;
- position: relative;
- cursor: pointer;
- &:hover {
- border-radius: 4px;
- background: rgba(0,0,0,.2);
- .submenu { display: block; }
- }
- .icon {
- vertical-align: middle;
- font-size: 1.2em;
- color: $light-grey;
- padding-left: 7px;
- }
- .submenu {
- display: none;
- position: absolute;
- width: 740px;
- background: $white;
- color: $grey;
- box-shadow: 0px 0px 0px 5px rgba(0,0,0,0.2);
- border-radius: 4px;
- top: 45px;
- left: -355px;
- z-index: 30;
- cursor: initial;
- &:before {
- content: "";
- display: block;
- height: 20px;
- width: 740px;
- position: absolute;
- top: -20px;
- left: 0;
- }
- a {
- width: 95%;
- color: $grey;
- display: inline-block;
- vertical-align: middle;
- &:hover {
- text-decoration: underline;
- cursor: pointer;
- }
- }
- .column {
- display: inline-block;
- vertical-align: top;
- padding: 0 0 0 10px;
- margin: 10px 0;
- border-right: 1px solid $light-grey;
- min-height: 110px;
- }
- .col-2 { width: 31.5%; }
- .col-2:first-child,
- .col-2:last-child { border: none; }
- .col-2:last-child { padding: 0 0 0 10px; }
- .submenu-header {
- font-weight: bold;
- font-size: 14px;
- line-height: 16px;
- display: block;
- position: relative;
- overflow: hidden;
- text-transform: uppercase;
- }
- .submenu-item {
- font-size: 12px;
- line-height: 20px;
- padding-left: 10px;
- display: block;
- position: relative;
- overflow: hidden;
- &:hover .sub-icon { display: block; }
- + .submenu-header { margin-top: 20px; }
- }
- .submenu-desc {
- font-size: 12px;
- line-height: 19px;
- display: none;
- padding-right: 10px;
- }
- .sub-icon {
- display: none;
- font-size: 22px;
- position: absolute;
- top: 2px;
- left: 0;
- color: $kd-green;
- }
- .sub-desc-icon {
- font-size: 8em;
- display: block;
- text-align: center;
- color: $light-grey;
- margin-bottom: 18px;
- }
- }
- }
- }
-
- #mobile-menu {
- display: none;
- position: absolute;
- padding-left: 1.25em;
- font-size: 1.6em;
- border: 1px solid #ccc;
- border-radius: 4px;
- height: 30px;
- top: 1.45em;
- right: .6em;
- &:before {
- content: "";
- position: absolute;
- top: .3em;
- left: .24em;
- width: .8em;
- height: .125em;
- border-top: 0.375em double $light-grey;
- border-bottom: 0.135em solid $light-grey;
- }
- }
- }
- .container {
- padding: 20px 0;
-
- &:after {
- content: " ";
- display: table;
- clear: both;
- }
- .topSearchButton {
- float: right;
- cursor: pointer;
- padding: 5px 15px;
- border: 1px solid #ccc;
- border-radius: 4px;
- margin: 14px 0;
- .searchIcon {
- // background-image: url(../img/sprite.png);
- // background-position: -6px -2px;
- // background-repeat: no-repeat;
- height: 20px;
- width: 20px;
- display: block;
- font-size: 18px;
- text-align: center;
- color: $white;
- }
- }
- }
- .topSearchBox {
- display: none;
- max-width: 1090px;
- padding: 0 0 20px 0;
- margin: 0 auto;
- position: relative;
- input {
- width: 100%;
- display: block;
- max-width: 100%;
- padding: 15px 10px;
- background: 0;
- border: 0;
- border-bottom: 1px solid $color_3;
- color: $color_1;
- font-size: 18px;
- line-height: 18px;
- }
- }
-}
-section {
- padding: 3em 0;
- text-align: left;
- background-color: $white;
- *zoom: 1;
- /* (9) padding was set before: old value: 1em 0 3em - new value 3em 0 */;
- /* (10) text-align was set before: old value: center - new value left */;
- &.vibrant {
- background: $color_8;
- color: $color_1;
- }
- &:before {
- content: " ";
- display: table;
- }
- &:after {
- content: " ";
- display: table;
- clear: both;
- }
- &.centered {
- text-align: center;
- }
-}
-#left-nav {
- background-color: $white;
- list-style: none;
- margin: 0 50px 120px 15px;
- padding: 0;
- font-size: 15px;
- float: left;
- width: 240px;
- a {
- // display: block;
- // margin: 0 -20px;
- // padding: 0 20px;
- text-decoration: none;
- // border-right: 2px solid transparent;
- color: #818181;
- line-height: 18px;
- }
- h5 {
- line-height: 20px;
- text-transform: uppercase;
- a {
- color: $grey;
- text-transform: uppercase;
- }
- }
- .active {
- //background: $color_2;
- //border-right: 2px solid $color_3;
- }
- li {
- list-style: none;
-
- &.zactive {
- h5 {
- margin-left: -14px;
- padding-left: 10px;
- border-left: 4px $dark-grey solid;
- }
- li.zactive a {
- border-bottom-style: dotted;
- border-width: 1px;
- border-color: $grey;
- // background-color: $light-grey;
- }
-
- }
-
- ul {
- padding: 0;
- font-size: 14px;
- }
- h5 {
- margin: 10px 0;
- font-size: 16px;
- font-weight: 600;
- }
- li {
- padding: 3px 0 3px 10px;
- line-height: 14px;
- margin-bottom: 4px;
- &:hover a {
- border-bottom-style: dotted;
- border-width: 1px;
- border-color: $grey;
- // background-color: $light-grey;
- }
- }
- }
-}
-#left-nav + .docs-content {
- position: relative;
- margin-left: 310px;
- min-height: 500px;
- h1 {
- color: $color_0;
- float: none;
- }
-}
-
-//--------------------------
-%extend_5 {
- margin-bottom: 50px;
-}
-%extend_6 {
- list-style-type: none;
- padding: 0;
- margin: 0;
-}
-%extend_7 {
- vertical-align: top;
-}
-%extend_8 {
- text-decoration: none;
- text-transform: capitalize;
- color: $color_0;
-}
-%extend_9 {
- position: absolute;
- right: 40%;
- top: 34%;
- font-size: 48px;
- color: $green;
- height: 40px;
- line-height: 42px;
- border: 2px $white solid;
- background-color: darken($green, 10%);
- @include border-radius(50px);
- @include transition(all ease 150ms);
-}
-%extend_10 {
- display: inline-block;
- padding: 10px 10px 30px 10px;
-}
-.main-icons {
- @extend %extend_5;
- padding-bottom: 50px;
- border-bottom: 1px solid $color_3;
- h1 {
- color: $color_0;
- font-weight: normal;
- text-transform: capitalize;
- text-align: center;
- float: none;
- margin: 50px 0;
- }
- .icons {
- display: inline-block;
- width: 33%;
- text-align: center;
- span {
- font-size: 5em;
- padding-bottom: 30px;
- }
- h2 {
- margin: 0;
- font-size: 1.7em;
- }
- p {
- width: 285px;
- margin: 0 auto;
- }
- }
-}
-.search-box {
- position: relative;
- margin-top: -90px;
- margin-bottom: 50px;
- text-align: center;
- #search {
- max-width: 80%;
- padding: 20px !important;
- @include border-radius(0);
- }
- #search-icon {
- width: 28px;
- height: 28px;
- position: absolute;
- top: 14px;
- right: 120px;
- font-size: 28px;
- line-height: 45px;
- text-align: center;
- cursor: pointer;
- }
-}
-.listing {
- @extend %extend_5;
- .latest-guides {
- @extend %extend_7;
- display: inline-block;
- width: 49%;
- margin-right: 1.3%;
- ul {
- @extend %extend_6;
- li {
- border-bottom: 1px solid $color_3;
- padding: 10px 10px 30px 10px;
- &:hover {
- background: $color_2;
- }
- .title {
- display: block;
- }
- a {
- @extend %extend_8;
- }
- .meta {
- font-style: italic;
- font-size: 12px;
- .author {
- font-weight: bold;
- }
- .date {
- font-weight: bold;
- }
- }
- }
- }
- }
- .latest-videos {
- @extend %extend_7;
- display: inline-block;
- width: 49%;
- ul {
- @extend %extend_6;
- li {
- @extend %extend_10;
- width: 45%;
- .title {
- display: block;
- text-align: center;
- min-height: 75px;
- }
- a {
- @extend %extend_8;
- position: relative;
- display: block;
- overflow: hidden;
- height: 125px;
- border: 1px solid $color_0;
- }
- img {
- width: 300px;
- height: 170px;
- margin-top: -22px;
- }
- .youtube-play {
- @extend %extend_9;
- &:hover {
- color: $color_0;
- }
- }
- }
- }
- }
- #page-videos {
- @extend %extend_7;
- h2 {
- color: $green;
- font-size: 26px;
- padding-left: 56px;
- margin-bottom: 50px;
-
- span {
- display: inline-block;
- background: url(/img/sprite.png) -2px -62px;
- background-size: 47px 100px;
- width: 44px;
- height: 36px;
- position: absolute;
- left: 20px;
- top: -2px;
- }
- }
-
- ul {
- @extend %extend_6;
- &:after {
- content: " ";
- display: table;
- clear: both;
- }
- li:nth-child(4n) {
- padding-right: 0;
- }
- li {
- display: inline-block;
- padding: 10px 40px 30px 0;
- width: 22%;
- height: 160px;
- float: left;
-
- .title {
- display: block;
- margin-top: 8px;
- }
- a {
- @extend %extend_8;
- color: $grey;
- position: relative;
- // display: block;
- border-bottom-style: dotted;
- border-color: $grey;
- border-width: 1px;
- }
- img {
- width: 300px;
- height: 169px;
- }
- .youtube-play {
- @extend %extend_9;
- &:hover {
- color: $color_0;
- }
- }
- }
- }
- }
-}
-.video {
- margin-bottom: 50px;
- a {
- @extend %extend_8;
- position: relative;
- display: block;
- }
- img {
- width: 460px;
- height: 340px;
- margin: 0 auto;
- display: block;
- }
- .youtube-play {
- top: 40%;
- right: 45%;
- @extend %extend_9;
- &:hover {
- color: $color_0;
- }
- }
-}
-#page-search {
- #search-results .result {
- padding-bottom: 30px;
- margin-bottom: 20px;
- border-bottom: solid 1px #ccc;
- h3 {
- margin: 0;
- }
- p {
- margin: 0;
- font-size: 13px;
- }
- }
- #search-results .result:last-child {
- padding: 0;
- margin: 0;
- border: none;
- }
-}
-
-
-#page-404 h2,
-#page-404 p {
- text-align: center;
-}
-
-#page-faq {
- > ul {
- list-style-type: none;
- padding: 0;
- margin: 0;
- > li:last-child {
- border-bottom: none;
- }
- > li {
- border-bottom: 1px solid #e4e4e4;
- @include transition(all ease 150ms);
- &:hover .readmore a {
- padding-left: 20px;
- }
- .title {
- display: block;
- }
- a {
- color: $grey;
- border-bottom-style: dotted;
- border-color: $grey;
- border-width: 1px;
- text-decoration: none;
- }
- .meta {
- font-style: italic;
- font-size: 12px;
- .author,
- .date {
- font-weight: bold;
- }
- }
- }
- }
- .pagination {
- li {
- display: inline-block;
- margin: 10px;
- padding: 0;
- border: 0;
- cursor: pointer;
- a {
- padding: 5px;
- }
- .currentPage {
- background: $color_4;
- color: $color_1;
- }
- }
- }
- .excerpt {
- font-size: 16px;
- p {
- width: 85%;
- float: left;
- }
- .readmore {
- float: left;
- width: 8%;
- text-align: center;
- padding: 20px 0;
- margin-left: 7%;
- a {
- color: $color_4;
- font-size: 2em;
- }
- }
- overflow: hidden;
- }
- > ul > li:last-child {
- margin-bottom: 0;
- padding-bottom: 0;
- }
- > ul > li {
- margin-bottom: 30px;
- padding-bottom: 36px;
- }
- .question {
- line-height: 30px;
- margin-top: 0;
- margin-bottom: 10px;
- a {
- color: $grey;
- font-weight: 600;
- font-size: 18px;
- text-transform: capitalize;
- }
- }
- .answer {
- line-height: 22px;
- }
- .answer p:last-child {
- margin-bottom: 0;
- }
-}
-
-//
-// ## Sane Section
-// The following section is considered "sane". Above is converted
-// CSS->SCSS, below is hand written.
-//
-
-body > header {
- color: $white;
- h2 {
- line-height: 64px;
- margin-top: 10px;
- margin-bottom: 10px;
- font-size: 32px;
- }
-}
-body > header > .container {
- font-size: 16px;
-}
-
-body > header h1,
-body > nav h1 {
- float: left;
-}
-
-body > .page {
- padding-top: 60px;
-}
-
-.docs-content > h1:first-of-type {
- text-align: center;
- margin: 0;
-}
-
-// ## Guides Page
-#page-guides {
- > ul {
- margin-top: -6px;
- padding: 0;
-
- -webkit-column-count: 2;
- -moz-column-count: 2;
- column-count: 2;
- }
- > ul > li {
- display: inline-block;
- min-width: 250px;
- list-style: none;
- }
-}
-#page-category {
- h1 {
- margin-bottom: 20px;
- }
- .verbose-guide-list {
- padding: 0;
- margin: 0 0 0 15px;
- }
-}
-
-
-.fancy-youtube-highlight {
- //margin: 100px auto 60px;
- // Experimenting with the video overlapping header
- margin: -275px auto 55px;
-
- .video-shadow {
- margin: 80px 54px 50px;
- height: 300px;
- // background-color: darken($light-grey, 10%);
- border-radius: 10px;
- position: relative;
- #shadow-left {
- position: absolute;
- left: 0;
- top: 0;
- z-index: 10;
- height: 300px;
- @include border-radius(10px);
- }
- #shadow-right {
- position: absolute;
- top: 0;
- right: 0;
- z-index: 10;
- height: 300px;
- @include border-radius(10px);
- }
- }
-
- .main {
- position: relative;
- top: -50px;
- margin: 0 auto;
- width: 700px;
- height: 390px;
- @include border-radius(10px);
- background-color: $light-black;
- z-index: 20;
- -webkit-box-shadow: 0px 0px 10px 0px rgba(50, 50, 50, 1);
- -moz-box-shadow: 0px 0px 10px 0px rgba(50, 50, 50, 1);
- box-shadow: 0px 0px 10px 0px rgba(50, 50, 50, 1);
- .youtube-mini {
- border: none;
- height: 100%;
-
- img {
- margin-top: 0;
- height: 100%;
- width: 100%;
- }
-
- .youtube-play {
- top: 40%;
- right: 44%;
- font-size: 94px;
- height: 80px;
- line-height: 82px;
- }
- }
-
- .title {
- display: block;
- padding: 16px 10px 10px;
- color: $white;
- font-size: 16px;
- text-align: center;
-
- a {
- border-bottom: none;
- color: inherit;
- }
- }
- }
-
- > .title {
- margin-bottom: 15px;
- font-size: 18px;
- text-align: center;
- }
-
- ul {
- width: 700px;
- margin: 0 auto;
- padding: 0;
-
- &:after {
- content: " ";
- display: table;
- clear: both;
- }
- }
- li {
- list-style: none;
- width: 22%;
- margin-left: 4%;
- float: left;
- }
- li:first-child {
- margin-left: 0;
- }
- li .youtube-mini {
- height: 86px;
- }
- li .title {
- display: block;
- color: lighten($grey, 5%);
- font-size: 13px;
- line-height: 16px;
- vertical-align: top;
- text-align: center;
- }
-}
-
-a.youtube-mini {
- position: relative;
- display: block;
- overflow: hidden;
- height: 125px;
- border: 1px solid $dark-grey;
- border-radius: 6px;
-
- img {
- width: 300px;
- height: 170px;
- margin-top: -22px;
- }
-
- .youtube-play {
- top: 25%;
- right: 35%;
- @extend %extend_9;
- &:hover {
- color: $color_0;
- }
- // This rule lost the battle to %extend_9, so for now i'm just editing
- // extend_9 manually, until we refactor the wtf-ness.
- }
-}
-
-// # Large videos
-.video .youtube-mini {
- height: auto;
- border-radius: 0;
-}
-.video .youtube-mini img {
- width: auto;
- height: auto;
- max-width: inherit;
- margin: 0;
-}
-.video .youtube-mini .youtube-play {
- top: 36%;
- right: 40%;
- font-size: 94px;
- height: 80px;
- line-height: 82px;
-}
-
-.content-previews {
- margin-top: 60px;
- padding: 0;
-
- &:after {
- content: " ";
- display: table;
- clear: both;
- }
-}
-.content-previews li {
- float: left;
- width: 47%;
- height: 200px;
- font-size: 16px;
- padding: 10px;
- list-style: none;
-}
-.content-preview {
- a {
- border-bottom: 1px $grey solid;
- }
- a:hover {
- text-decoration: none;
- }
-
- h4 {
- font-size: 16px;
- }
-
- p {
- font-size: 14px;
- margin-top: 0;
- }
-}
-.content-preview.custom {
- text-align: center;
- h4 {
- font-size: 26px;
- font-weight: normal;
- }
- p {
- font-size: 16px;
- }
-}
-
-
-.series-nav {
- margin-top: 40px;
- padding: 0;
- li {
- width: 85px;
- list-style: none;
- text-align: center;
- line-height: 28px;
- font-size: 12px;
- color: #000;
- background-color: $light-grey;
- border: 1px $light-grey solid;
- border-radius: 4px;
- }
- a {
- display: block;
- border: none;
- }
- a:hover {
- text-decoration: none;
- }
- li:hover {
- border: 1px $green solid;
- }
- &:after {
- content: " ";
- display: table;
- clear: both;
- }
-}
-// ORDER IS IMPORTANT
-// If there is only one child, it is set to float right first, and then left.
-// which is what we want.
-.series-nav li:last-child {
- float: right;
-}
-.series-nav li:first-child {
- float: left;
-}
-
-.pagination {
- margin-top: 40px;
- padding-left: 15px;
- li {
- display: inline-block;
- width: 28px;
- list-style: none;
- text-align: center;
- line-height: 28px;
- font-size: 12px;
- color: #000;
- background-color: $light-grey;
- border: 1px $light-grey solid;
- border-radius: 4px;
- margin-right: 5px;
- }
- .previous,
- .next {
- width: 85px;
- }
- .currentPage {
- background-color: $green;
- a { color: $white; }
- }
- a {
- display: block;
- border: none;
- }
- a:hover {
- text-decoration: none;
- }
- li:hover {
- border: 1px $green solid;
- }
-}
-
-
-.koding-linkback {
- margin-top: 30px;
- padding-left: 0;
- text-align: center;
-
- li {
- display: inline-block;
- width: 110px;
- padding: 1px;
- margin-right: 2px;
- list-style: none;
-
- background-color: $green;
- border-radius: 4px;
- text-transform: capitalize;
-
- color: $white;
- font-weight: bold;
- font-size: 11px;
- line-height: 28px;
-
- a, a:hover {
- display: block;
- color: inherit;
- text-decoration: none;
- }
-
- &:hover {
- color: $light-grey;
- background-color: $dark-grey;
- border-radius: 4px;
- }
- }
-
- li:last-child {
- margin-right: 0;
- }
-}
-
-.koding-linkback .signup { }
-.koding-linkback .signin {
- background-color: $white;
- color: $green;
- padding: 0;
- &:hover a {
- border-color: $dark-grey;
- }
- a {
- border: 1px $green solid;
- border-radius: 4px;
- }
-}
-.koding-linkback .large {
- width: auto;
- padding-left: 8px;
- padding-right: 8px;
- text-transform: none;
-}
-.koding-linkback .discuss {
- color: $dark-grey;
- background-color: $light-grey;
-}
-
-
-.guides-intro {
- margin-bottom: 60px;
-
- h1, p {
- text-align: center;
- }
- h1 {
- margin-bottom: 0px;
- }
- h2 {
- margin-left: 0;
- font-weight: normal;
- }
- p {
- margin: 0 auto;
- width: 550px;
- line-height: 21px;
- }
- ul {
- padding: 0;
- }
- li {
- list-style: none;
- }
- &:after {
- content: " ";
- display: table;
- clear: both;
- }
-}
-.guides-intro .favorites,
-.guides-intro .recent {
- margin: 60px 5%;
- width: 40%
-}
-.guides-intro .favorites {
- float: left;
-}
-.guides-intro .recent {
- float: right;
-}
-.guides-intro .tags {
- text-align: center;
- li {
- display: inline-block;
- margin-right: 6px;
- text-transform: capitalize;
- &:after {
- content: ","
- }
- }
- li:last-child {
- margin-right: 0;
- &:after {
- content: ""
- }
- }
-}
-
-
-// ## TAGLIST
-.tag-list {
- padding: 6px;
-// font-size: 14px;
- ul {
- padding: 0;
- }
- li {
- line-height: 16px;
- list-style: none;
- margin-bottom: 10px;
- }
- li:last-child {
- margin-bottom: 0;
- }
-}
-.tag-list .tag-name {
- margin: 0;
- font-size: 15px;
- font-weight: bold;
-
- &:before {
- content: "#";
- }
-}
-.tag-list .view-all {
- font-size: 12px;
- margin-top: 6px;
-}
-
-
-// # PAGE-VIDEOS
-#page-videos > .category {
- border-bottom: 2px solid $light-grey;
- padding-bottom: 10px;
- margin-bottom: 40px;
-}
-#page-videos > .category:last-child {
- border-bottom: none;
- padding-bottom: 0;
- margin-bottom: 0;
-}
-#page-videos > .category .title {
- display: block;
- color: lighten($grey, 5%);
- font-size: 13px;
- line-height: 16px;
- vertical-align: top;
- text-align: center;
-}
-#page-videos > .category > .title {
- margin-left: 0;
- font-size: 18px;
- font-weight: bold;
- line-height: inherit;
- vertical-align: inherit;
- text-align: inherit;
-}
-
-
-// ## SHARE BUTTONS
-#share-buttons {
-}
-.rrssb-buttons {
- height: 30px;
- width: 600px;
- margin: 0 auto;
-}
-.rrssb-buttons li a {
- padding-top: 8px;
-}
-.rrssb-buttons li a .icon {
- padding-top: 6px;
-}
-// The svg items
-.rrssb-buttons li a .icon svg path,
-.rrssb-buttons li a .icon svg polygon {
- fill: #777;
-}
-.rrssb-buttons li a .text {
- color: $dark-grey;
- text-transform: capitalize;
-}
-.rrssb-buttons li.email a,
-.rrssb-buttons li.facebook a,
-.rrssb-buttons li.linkedin a,
-.rrssb-buttons li.twitter a,
-.rrssb-buttons li.reddit a,
-.rrssb-buttons li.googleplus a {
- background-color: white;
- border: 1px solid $light-grey;
- border-radius: 3px;
- box-shadow: 0 1px 0 rgba(0,0,0, 0.08);
-
- &:hover {
- background-color: inherit;
- border-color: lighten($grey, 25%);
- }
-}
-
-// ## Page/Series Content Meta
-.guide-content .meta {
- margin: 0 0 12px;
- padding: 0;
- width: 100%;
- text-align: center;
-}
-.guide-content .meta li {
- display: inline-block;
- padding: 0;
- color: #afb1b2;
-}
-.guide-content .meta li a,
-.guide-content .meta li a:hover {
- color: #afb1b2;
-}
-.guide-content .meta li:before {
- content: "\2022";
- margin: 0 10px 0 6px;
-}
-.guide-content .meta li:first-child:before {
- content: none;
-}
-
-
-code {
- padding: 1px 6px;
- border-radius: 3px;
- background-color: $light-grey;
- font-size: 13px;
-}
-pre {
- max-height: 1000px;
- padding: 6px 12px;
- border-radius: 3px;
- background-color: $light-grey;
- overflow: scroll;
- line-height: 1.5;
-}
-pre code {
- padding: 0;
- border-radius: 0;
- background: none;
-}
-
-table {
- width: 100%;
- padding: 6px 12px;
- border-radius: 3px;
- background-color: $light-grey;
-}
-
-.two-pane-list {
- -webkit-column-count: 2;
- -moz-column-count: 2;
- column-count: 2;
-}
-.two-pane-list > li {
- display: inline-block;
- min-width: 250px;
- margin-bottom: 16px;
-}
-
-
-#authors-page ul {
- padding: 0;
-}
-#authors-page ul ul {
- padding-left: 6px;
-}
-#authors-page li {
- list-style: none;
-}
-#authors-page li li {
- font-size: 14px;
- line-height: 16px;
- margin-bottom: 8px;
-}
-#authors-page li li:last-child {
- margin-bottom: 0;
-}
-#authors-page h2 {
- margin: 0;
- font-size: 15px;
- font-weight: 600;
- line-height: 20px;
-}
-#authors-page span {
- display: inline-block;
- margin-bottom: 6px;
-}
-#authors-page h2 a,
-#authors-page h2 a:hover,
-#authors-page h2 a:visited {
- color: inherit;
-}
-#authors-page .view-all {
- font-size: 12px;
-}
-
-
-#author-page h1,
-#authors-page h1 {
- margin-bottom: 20px;
-}
-
-
-// Verbose Guide list. Ie, many guides with meta and possible description
-.verbose-guide-list ul {
- padding: 0;
-}
-.verbose-guide-list li {
- list-style: none;
- margin-bottom: 12px;
- border-bottom: 1px solid $light-grey;
-}
-.verbose-guide-list li:last-child {
- margin-bottom: 0px;
-}
-.verbose-guide-list .title {
- font-size: 16px;
- color: $light-black;
- a { border-bottom: none; }
- a:hover {
- border-bottom: 1px dotted $grey;
- }
-}
-.verbose-guide-list .meta {
- line-height: 18px;
- font-size: 13px;
- font-style: italic;
- color: $light-grey2;
- a { color: $color_4; }
-}
-.verbose-guide-list .title {
- margin: 0;
- color: $light-black;
- a { color: inherit }
-}
-.verbose-guide-list .meta ul {
- display: inline-block;
-}
-.verbose-guide-list .meta li {
- display: inline-block;
- padding-right: 5px;
- margin-bottom: 12px;
-}
-.verbose-guide-list .meta li:after {
- content: ",";
-}
-.verbose-guide-list .meta li:last-child:after {
- content: "";
-}
-
-
-// Anchor Links
-.heading {
- position: relative;
- margin-left: -20px;
- padding-left: 20px;
-}
-.heading:hover .anchor:before {
- content: '#';
- position: absolute;
- left: 0px;
-}
-
-
-// Edit on Github Button
-.editongithub {
- display: inline-block;
- position: absolute;
- top: -32px;
- right: 0;
-
- border: 1px solid $light-grey;
- border-radius: 3px;
- box-shadow: 0 1px 0 rgba(0,0,0, 0.08);
-
- font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
- font-size: 11px;
- font-weight: bold;
-
- cursor: pointer;
-}
-.editongithub a {
- display: block;
- padding: 4px 10px;
-}
-.editongithub:hover {
- border-color: $grey;
-}
-.editongithub a:hover {
- text-decoration: none;
-}
-
-// Guide Footer
-.guide-footer {
- margin-top: 30px;
-// margin-bottom: 60px;
- height: 80px;
- padding: 0;
- text-align: center;
-}
-.guide-footer ul {
- padding-left: 0;
-}
-
-// Guide buttons
-
-.guide-button {
- display: inline-block;
- min-width: 106px;
-
- margin: 0 2px;
-
- border: 1px solid $light-grey;
- border-radius: 3px;
- box-shadow: 0 1px 0 rgba(0,0,0, 0.08);
-
- font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
- font-size: 11px;
- font-weight: bold;
- color: $dark-grey;
- text-align: center;
-
- cursor: pointer;
-}
-.guide-button a {
- display: block;
- padding: 4px 10px;
- color: inherit;
-}
-.guide-button:hover {
- border-color: $grey;
-}
-.guide-button a:hover {
- text-decoration: none;
-}
-
-.guide-button.github {
- padding-left: 20px;
- background-image: url("/img/github-32.png");
- background-repeat: no-repeat;
- background-position: 8px 7px;
- background-size: 16px;
-}
-
-
-// CREATIVE COMMONS
-
-footer.main-footer a.cclicense {
- margin-right: 0px;
-}
-footer.main-footer .cclicense img {
- display: inline-block;
- margin-bottom: -3px;
-}
-
-
-//--------------------------
-
-#disqus_thread {
- position: relative;
- &:after {
- content: "";
- display: block;
- height: 55px;
- width: 100%;
- position: absolute;
- bottom: 0;
- background: white;
- }
-}
-
-//--------------------------
-
-.back-to-top {
- margin: 0;
- position: fixed;
- bottom: 135px;
- right: 0;
- width: 70px;
- height: 70px;
- z-index: 100;
- display: none;
- text-decoration: none;
- text-align: center;
- color: #434343;
- i {
- font-size: 50px;
- }
- &:hover {
- text-decoration: none;
- color: #a2a2a2;
- }
-}
-
-.tip:before {
- color: #50af51;
-}
-
-.alert:before {
- color: #d9534f;
-}
diff --git a/.metalsmith/sass/rwd.scss b/.metalsmith/sass/rwd.scss
deleted file mode 100644
index 293bdc31c..000000000
--- a/.metalsmith/sass/rwd.scss
+++ /dev/null
@@ -1,332 +0,0 @@
-/* Landscape phones and down */
-@media only screen and (max-width: 480px) {
- body {
- background-color: #5c656d !important;
- background-image: none !important;
- }
- nav {
- .container {
- .topSearchButton {
- margin-right: 55px;
- padding: 5px;
- }
- .toplinks {
- margin: 0;
- padding: 0 12px;
- display: none;
- }
- #menu {
- padding-top: 20px;
- li {
- width: 55%;
- display: inline-block;
- margin-right: 0;
- padding-bottom: 10px;
- .icon {
- float: right;
- margin-top: 7px;
- }
- }
- #mobile-menu {
- display: block;
- }
- > .toplinks {
- > li {
- .submenu {
- width: 280px;
- left: -10px;
- .column {
- width: 100% !important;
- min-height: auto;
- display: block;
- }
- }
- }
- }
- }
- }
- .topSearchBox {
- position: absolute;
- top: 70px;
- left: 50%;
- width: 280px;
- margin-left: -140px;
- z-index: 10;
- input {
- padding: 5px 10px;
- }
- }
- }
- header {
- nav {
- .topSearchBox {
- width: 280px;
- margin-left: -140px;
- z-index: 10;
- input {
- padding: 5px 10px;
- }
- }
- }
- >.container {
- width: 280px;
- }
- }
- .noHeader #logo span.img {
- margin-left: 0;
- }
- .hiring {
- display: none;
- }
- .container {
- max-width: 280px;
- }
- .page {
- >.container {
- width: 280px;
- .video-shadow {
- margin: 80px 0 50px;
- height: 120px;
- #shadow-right,
- #shadow-left {
- display: none;
- }
- .main {
- width: 280px;
- height: 167px;
- .youtube-mini .youtube-play {
- top: 30%;
- right: 35%;
- }
- }
- }
- }
- }
- section {
- padding: 1em 0;
- >.container {
- width: 280px;
- #left-nav {
- width: 100%;
- margin: 0;
- float: none;
- +.docs-content {
- margin-top: 20px;
- margin-left: 0;
- }
- a {
- font-size: 1.2em;
- }
- }
- .docs-content {
- img {
- max-width: 240px;
- }
- .tag-list {
- li {
- margin-bottom: 20px;
- }
- }
- }
- }
- }
- .guides-intro {
- margin-bottom: 30px;
- p {
- width: 280px;
- }
- }
- #page-guides,
- #authors-page {
- >ul {
- -webkit-column-count: 1;
- -moz-column-count: 1;
- column-count: 1;
- margin-top: 0;
- font-size: 1em;
- }
- }
- .listing #page-videos ul li {
- display: block;
- width: 240px;
- padding: 10px 0 30px 0;
- margin: 0 20px;
- }
- .guide-footer {
- height: auto !important;
- }
- .guide-button {
- display: block;
- margin-bottom: 10px;
- font-size: 1em;
- }
- .rrssb-buttons {
- width: 280px;
- height: auto;
- }
- #disqus_thread {
- margin-bottom: -205px;
- &:after {
- height: 230px !important;
- }
- }
- footer.main-footer {
- z-index: 20;
- position: relative;
- }
-}
-
-/* Landscape phone to portrait tablet */
-@media (min-width: 480px) and (max-width: 768px) {
- body {
- background-color: #5c656d !important;
- background-image: none !important;
- }
- nav {
- .container {
- .topSearchButton {
- margin-right: 55px;
- padding: 5px;
- }
- .toplinks {
- margin: 0;
- padding: 0 12px;
- display: none;
- }
- #menu {
- padding-top: 20px;
- width: 100%;
- li {
- width: 50%;
- display: inline-block;
- margin-right: 0;
- padding-bottom: 10px;
- }
- #mobile-menu {
- display: block;
- }
- }
- }
- .topSearchBox {
- position: absolute;
- top: 70px;
- left: 50%;
- width: 440px;
- margin-left: -220px;
- z-index: 10;
- input {
- padding: 5px 10px;
- }
- }
- }
- header {
- nav {
- .topSearchBox {
- width: 440px;
- margin-left: -220px;
- z-index: 10;
- input {
- padding: 5px 10px;
- }
- }
- }
- >.container {
- width: 400px;
- }
- }
- .hiring {
- display: none;
- }
- .page {
- >.container {
- width: 400px;
- .video-shadow {
- margin: 80px 0 50px;
- height: 200px;
- #shadow-right,
- #shadow-left {
- display: none;
- }
- .main {
- width: 400px;
- height: 239px;
- .youtube-mini .youtube-play {
- top: 30%;
- right: 35%;
- }
- }
- }
- }
- }
- section {
- padding: 1em 0;
- >.container {
- width: 400px;
- #left-nav {
- width: 100%;
- margin: 0;
- float: none;
- +.docs-content {
- margin-top: 20px;
- margin-left: 0;
- }
- a {
- font-size: 1.2em;
- }
- }
- .docs-content {
- img {
- max-width: 240px;
- }
- .tag-list {
- li {
- margin-bottom: 20px;
- }
- }
- }
- }
- }
- .guides-intro {
- margin-bottom: 30px;
- p {
- width: 400px;
- }
- }
- #page-guides,
- #authors-page {
- >ul {
- -webkit-column-count: 1;
- -moz-column-count: 1;
- column-count: 1;
- margin-top: 0;
- font-size: 1em;
- }
- }
- .listing #page-videos ul li {
- width: 190px;
- padding: 10px 0 30px;
- margin: 0 5px;
- }
- .guide-footer {
- height: auto !important;
- }
- .guide-button {
- display: block;
- margin-bottom: 10px;
- font-size: 1em;
- }
- .rrssb-buttons {
- width: 400px;
- height: auto;
- }
- #disqus_thread {
- margin-bottom: -180px;
- &:after {
- height: 230px !important;
- }
- }
- footer.main-footer {
- z-index: 20;
- position: relative;
- }
-}
diff --git a/.metalsmith/templates/404-tag.toffee b/.metalsmith/templates/404-tag.toffee
deleted file mode 100644
index 1166e5f06..000000000
--- a/.metalsmith/templates/404-tag.toffee
+++ /dev/null
@@ -1,18 +0,0 @@
-#{partial 'head.toffee'}
-#{partial 'topnav.toffee'}
-
-
-
-#{partial 'sidebar.toffee'}
-
-
-
No guides for this category yet!
-
- Sorry, no guides have been created for this categoy yet. If you think there's a specific guide you would want to see under this
- section then you can always request a new guide by contacting us or checkout how you can contribute one on your own!
-