├── .gitignore ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── README.md ├── Rakefile ├── _config.yml ├── screenshot.png └── source ├── _includes ├── article.html ├── comments.html ├── footer.html ├── github-corner.html ├── head.html ├── header.html ├── pagination.html └── search.html ├── _layouts ├── default.html ├── page.html └── post.html ├── _plugins └── strip.rb ├── _posts ├── 2015-11-12-a-wonderful-serenity-has-taken-possession-of-my-entire-soul.md ├── 2015-11-12-far-far-away-behind-the-word-mountains-far-from-the-countries-vokalia-and-consonantia.md ├── 2015-11-12-lorem-ipsum-dolor-sit-amet-consectetuer-adipiscing-elit.md ├── 2015-11-12-lorem.markdown ├── 2015-11-12-the-quick-brown-fox-jumps-over-a-lazy-dog.md ├── 2015-11-12-welcome-to-jekyll.markdown └── 2015-11-16-test-external-url---google.md ├── _scss ├── _base.scss ├── _icons.scss ├── _layout.scss ├── _mixins.scss ├── _placeholders.scss ├── _reset.scss ├── _syntax-highlighting.scss ├── _variables.scss ├── base │ ├── _base.scss │ ├── _buttons.scss │ ├── _forms.scss │ ├── _grid-settings.scss │ ├── _lists.scss │ ├── _tables.scss │ ├── _typography.scss │ └── _variables.scss └── bourbon │ ├── _bourbon-deprecated-upcoming.scss │ ├── _bourbon.scss │ ├── addons │ ├── _border-color.scss │ ├── _border-radius.scss │ ├── _border-style.scss │ ├── _border-width.scss │ ├── _buttons.scss │ ├── _clearfix.scss │ ├── _ellipsis.scss │ ├── _font-stacks.scss │ ├── _hide-text.scss │ ├── _margin.scss │ ├── _padding.scss │ ├── _position.scss │ ├── _prefixer.scss │ ├── _retina-image.scss │ ├── _size.scss │ ├── _text-inputs.scss │ ├── _timing-functions.scss │ ├── _triangle.scss │ └── _word-wrap.scss │ ├── css3 │ ├── _animation.scss │ ├── _appearance.scss │ ├── _backface-visibility.scss │ ├── _background-image.scss │ ├── _background.scss │ ├── _border-image.scss │ ├── _calc.scss │ ├── _columns.scss │ ├── _filter.scss │ ├── _flex-box.scss │ ├── _font-face.scss │ ├── _font-feature-settings.scss │ ├── _hidpi-media-query.scss │ ├── _hyphens.scss │ ├── _image-rendering.scss │ ├── _keyframes.scss │ ├── _linear-gradient.scss │ ├── _perspective.scss │ ├── _placeholder.scss │ ├── _radial-gradient.scss │ ├── _selection.scss │ ├── _text-decoration.scss │ ├── _transform.scss │ ├── _transition.scss │ └── _user-select.scss │ ├── functions │ ├── _assign-inputs.scss │ ├── _contains-falsy.scss │ ├── _contains.scss │ ├── _is-length.scss │ ├── _is-light.scss │ ├── _is-number.scss │ ├── _is-size.scss │ ├── _modular-scale.scss │ ├── _px-to-em.scss │ ├── _px-to-rem.scss │ ├── _shade.scss │ ├── _strip-units.scss │ ├── _tint.scss │ ├── _transition-property-name.scss │ └── _unpack.scss │ ├── helpers │ ├── _convert-units.scss │ ├── _directional-values.scss │ ├── _font-source-declaration.scss │ ├── _gradient-positions-parser.scss │ ├── _linear-angle-parser.scss │ ├── _linear-gradient-parser.scss │ ├── _linear-positions-parser.scss │ ├── _linear-side-corner-parser.scss │ ├── _radial-arg-parser.scss │ ├── _radial-gradient-parser.scss │ ├── _radial-positions-parser.scss │ ├── _render-gradients.scss │ ├── _shape-size-stripper.scss │ └── _str-to-num.scss │ └── settings │ ├── _asset-pipeline.scss │ ├── _prefixer.scss │ └── _px-to-em.scss ├── about.md ├── css └── main.scss ├── feed.xml ├── fonts ├── mugicons.eot ├── mugicons.svg ├── mugicons.ttf └── mugicons.woff ├── images └── author.jpg ├── index.html ├── js ├── jekyll-search.min.js ├── jquery.min.js └── main.js └── search.json /.gitignore: -------------------------------------------------------------------------------- 1 | _site 2 | .sass-cache 3 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | # If you have OpenSSL installed, we recommend updating 2 | # the following line to use "https" 3 | source 'http://rubygems.org' 4 | 5 | group :development do 6 | gem 'rake', '~> 10.4.2' 7 | gem 'sass', '~> 3.4.10' 8 | gem 'jekyll', '~> 2.5.3' 9 | end 10 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: http://rubygems.org/ 3 | specs: 4 | blankslate (2.1.2.4) 5 | classifier-reborn (2.0.4) 6 | fast-stemmer (~> 1.0) 7 | coffee-script (2.4.1) 8 | coffee-script-source 9 | execjs 10 | coffee-script-source (1.10.0) 11 | colorator (0.1) 12 | execjs (2.6.0) 13 | fast-stemmer (1.0.2) 14 | ffi (1.9.10) 15 | jekyll (2.5.3) 16 | classifier-reborn (~> 2.0) 17 | colorator (~> 0.1) 18 | jekyll-coffeescript (~> 1.0) 19 | jekyll-gist (~> 1.0) 20 | jekyll-paginate (~> 1.0) 21 | jekyll-sass-converter (~> 1.0) 22 | jekyll-watch (~> 1.1) 23 | kramdown (~> 1.3) 24 | liquid (~> 2.6.1) 25 | mercenary (~> 0.3.3) 26 | pygments.rb (~> 0.6.0) 27 | redcarpet (~> 3.1) 28 | safe_yaml (~> 1.0) 29 | toml (~> 0.1.0) 30 | jekyll-coffeescript (1.0.1) 31 | coffee-script (~> 2.2) 32 | jekyll-gist (1.3.5) 33 | jekyll-paginate (1.1.0) 34 | jekyll-sass-converter (1.3.0) 35 | sass (~> 3.2) 36 | jekyll-watch (1.3.0) 37 | listen (~> 3.0) 38 | kramdown (1.9.0) 39 | liquid (2.6.3) 40 | listen (3.0.5) 41 | rb-fsevent (>= 0.9.3) 42 | rb-inotify (>= 0.9) 43 | mercenary (0.3.5) 44 | parslet (1.5.0) 45 | blankslate (~> 2.0) 46 | posix-spawn (0.3.11) 47 | pygments.rb (0.6.3) 48 | posix-spawn (~> 0.3.6) 49 | yajl-ruby (~> 1.3.1) 50 | rake (10.4.2) 51 | rb-fsevent (0.9.6) 52 | rb-inotify (0.9.5) 53 | ffi (>= 0.5.0) 54 | redcarpet (3.3.3) 55 | safe_yaml (1.0.4) 56 | sass (3.4.19) 57 | toml (0.1.2) 58 | parslet (~> 1.5.0) 59 | yajl-ruby (1.3.1) 60 | 61 | PLATFORMS 62 | ruby 63 | 64 | DEPENDENCIES 65 | jekyll (~> 2.5.3) 66 | rake (~> 10.4.2) 67 | sass (~> 3.4.10) 68 | 69 | BUNDLED WITH 70 | 1.10.6 71 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Fernando Moreira 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # mug 2 | 3 | Jekyll theme 4 | 5 | > :warning: 6 | This theme requires ruby and rubygems installed 7 | 8 | * [x] Clean layout 9 | * [x] Resposive layout 10 | * [x] Preprocessor SASS 11 | * [x] CSS minified 12 | * [x] Search posts 13 | * [x] Pagination 14 | * [x] Syntax highlight 15 | * [x] Author config 16 | * [x] Share posts 17 | * [x] Comments with Disqus 18 | 19 | --- 20 | 21 | ### Start in 4 steps 22 | 23 | 1. Download or clone repo `git clone git@github.com:nandomoreirame/mug.git` 24 | 2. Enter the folder: `cd mug/` 25 | 3. Install Ruby gems: `bundle install` 26 | 4. Start Jekyll server: `jekyll serve` 27 | 28 | Access, [localhost:4000/mug](http://localhost:4000/mug) 29 | 30 | ### Deploy in Github pages in 2 steps 31 | 32 | 1. Change the variables `GITHUB_REPONAME` and `GITHUB_REPO_BRANCH` in `Rakefile` 33 | 2. Run `rake` or `rake publish` for build and publish on Github 34 | 35 | --- 36 | 37 | ### Using Rake tasks 38 | 39 | * Create a new page: `rake page name="contact.md"` 40 | * Create a new post: `rake post title="TITLE OF THE POST"` 41 | 42 | --- 43 | 44 | ### Demo and Download 45 | 46 | [Demo](https://nandomoreirame.github.io/mug/) 47 | [Download](https://github.com/nandomoreirame/mug/archive/master.zip) 48 | 49 | ![mug - free Jekyll theme](/screenshot.png) 50 | 51 | --- 52 | 53 | ### Copyright and license 54 | 55 | It is under [the MIT license](/LICENSE). 56 | 57 | > :warning: 58 | Please remove metas `` and `` in `_layouts/default.html` 59 | 60 | Enjoy :yum: 61 | 62 | 63 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | # encoding: UTF-8 2 | require "rubygems" 3 | require "tmpdir" 4 | require "bundler/setup" 5 | require "jekyll" 6 | 7 | # Change your GitHub reponame 8 | GITHUB_REPONAME = "nandomoreirame/mug" 9 | GITHUB_REPO_BRANCH = "gh-pages" 10 | 11 | SOURCE = "source/" 12 | DEST = "_site" 13 | CONFIG = { 14 | 'layouts' => File.join(SOURCE, "_layouts"), 15 | 'posts' => File.join(SOURCE, "_posts"), 16 | 'post_ext' => "md", 17 | 'categories' => File.join(SOURCE, "categories"), 18 | 'tags' => File.join(SOURCE, "tags") 19 | } 20 | 21 | task default: %w[publish] 22 | 23 | desc "Generate blog files" 24 | task :generate do 25 | Jekyll::Site.new(Jekyll.configuration({ 26 | "source" => "source/", 27 | "destination" => "_site", 28 | "config" => "_config.yml" 29 | })).process 30 | end 31 | 32 | desc "Generate and publish blog to gh-pages" 33 | task :publish => [:generate] do 34 | Dir.mktmpdir do |tmp| 35 | cp_r "_site/.", tmp 36 | 37 | pwd = Dir.pwd 38 | Dir.chdir tmp 39 | 40 | system "git init" 41 | system "git checkout --orphan #{GITHUB_REPO_BRANCH}" 42 | system "git add ." 43 | message = "Site updated at #{Time.now.utc}" 44 | system "git commit -am #{message.inspect}" 45 | system "git remote add origin git@github.com:#{GITHUB_REPONAME}.git" 46 | system "git push origin #{GITHUB_REPO_BRANCH} --force" 47 | 48 | Dir.chdir pwd 49 | end 50 | end 51 | 52 | desc "Begin a new post in #{CONFIG['posts']}" 53 | task :post do 54 | abort("rake aborted: '#{CONFIG['posts']}' directory not found.") unless FileTest.directory?(CONFIG['posts']) 55 | title = ENV["title"] || "Novo post" 56 | 57 | tags = "" 58 | categories = "" 59 | 60 | # tags 61 | env_tags = ENV["tags"] || "" 62 | tags = strtag(env_tags) 63 | 64 | # categorias 65 | env_cat = ENV["category"] || "" 66 | categories = strtag(env_cat) 67 | 68 | # slug do post 69 | slug = mount_slug(title) 70 | 71 | begin 72 | date = (ENV['date'] ? Time.parse(ENV['date']) : Time.now).strftime('%Y-%m-%d') 73 | time = (ENV['date'] ? Time.parse(ENV['date']) : Time.now).strftime('%T') 74 | rescue => e 75 | puts "Error - date format must be YYYY-MM-DD, please check you typed it correctly!" 76 | exit -1 77 | end 78 | 79 | filename = File.join(CONFIG['posts'], "#{date}-#{slug}.#{CONFIG['post_ext']}") 80 | if File.exist?(filename) 81 | abort("rake aborted!") if ask("#{filename} already exists. Do you want to overwrite?", ['y', 'n']) == 'n' 82 | end 83 | 84 | puts "Creating new post: #{filename}" 85 | open(filename, 'w') do |post| 86 | post.puts "---" 87 | post.puts "layout: post" 88 | post.puts "title: \"#{title.gsub(/-/,' ')}\"" 89 | post.puts "permalink: #{slug}" 90 | post.puts "date: #{date} #{time}" 91 | post.puts "comments: true" 92 | post.puts "description: \"#{title}\"" 93 | post.puts 'keywords: ""' 94 | post.puts "categories:" 95 | post.puts "#{categories}" 96 | post.puts "tags:" 97 | post.puts "#{tags}" 98 | post.puts "---" 99 | end 100 | end # task :post 101 | 102 | 103 | desc "Create a new page." 104 | task :page do 105 | name = ENV["name"] || "new-page.md" 106 | filename = File.join(SOURCE, "#{name}") 107 | filename = File.join(filename, "index.html") if File.extname(filename) == "" 108 | title = File.basename(filename, File.extname(filename)).gsub(/[\W\_]/, " ").gsub(/\b\w/){$&.upcase} 109 | if File.exist?(filename) 110 | abort("rake aborted!") if ask("#{filename} already exists. Do you want to overwrite?", ['y', 'n']) == 'n' 111 | end 112 | 113 | slug = mount_slug(title) 114 | 115 | mkdir_p File.dirname(filename) 116 | puts "Creating new page: #{filename}" 117 | open(filename, 'w') do |post| 118 | post.puts "---" 119 | post.puts "layout: page" 120 | post.puts "title: \"#{title}\"" 121 | post.puts 'description: ""' 122 | post.puts 'keywords: ""' 123 | post.puts "permalink: \"#{slug}\"" 124 | post.puts "slug: \"#{slug}\"" 125 | post.puts "---" 126 | post.puts "{% include JB/setup %}" 127 | end 128 | end # task :page 129 | 130 | def mount_slug(title) 131 | slug = str_clean(title) 132 | slug = slug.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '') 133 | 134 | return slug 135 | end 136 | 137 | def str_clean(title) 138 | return title.tr("ÀÁÂÃÄÅàáâãäåĀāĂ㥹ÇçĆćĈĉĊċČčÐðĎďĐđÈÉÊËèéêëĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħÌÍÎÏìíîïĨĩĪīĬĭĮįİıĴĵĶķĸĹĺĻļĽľĿŀŁłÑñŃńŅņŇňʼnŊŋÒÓÔÕÖØòóôõöøŌōŎŏŐőŔŕŖŗŘřŚśŜŝŞşŠšſŢţŤťŦŧÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųŴŵÝýÿŶŷŸŹźŻżŽž", "AAAAAAaaaaaaAaAaAaCcCcCcCcCcDdDdDdEEEEeeeeEeEeEeEeEeGgGgGgGgHhHhIIIIiiiiIiIiIiIiIiJjKkkLlLlLlLlLlNnNnNnNnnNnOOOOOOooooooOoOoOoRrRrRrSsSsSsSssTtTtTtUUUUuuuuUuUuUuUuUuUuWwYyyYyYZzZzZz") 139 | end 140 | 141 | def strtag(str_tags) 142 | tags = ""; 143 | 144 | if !str_tags.nil? 145 | arr_tags = str_tags.split(",") 146 | arr_tags.each do |t| 147 | tags = tags + "- " + t.delete(' ') + "\n" 148 | end 149 | end 150 | 151 | return tags 152 | end 153 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | permalink : /:categories/:year/:title/ 2 | markdown : kramdown 3 | highlighter : pygments 4 | 5 | paginate: 2 #6 6 | comments: true 7 | paginate_path: "/page/:num" 8 | 9 | source: source 10 | destination: _site 11 | sass: 12 | sass_dir: _scss 13 | style: compressed 14 | 15 | cover: /assets/images/default-cover.png 16 | 17 | # site title, description, meta_description, meta_keywords 18 | # Details for the RSS feed generator 19 | name: Mug Jekyll theme 20 | title: Mug 21 | description: "A free Jekyll theme for download" 22 | keywords: "Jekyll, theme, mug, free, download, SEO, blog, web" 23 | url: http://nandomoreira.me 24 | baseurl: "/mug" 25 | domain_name: nandomoreira.me 26 | # google_analytics: UA-52446115-1 27 | repo: http://github.com/nandomoreirame/mug 28 | disqus_shortname: "nandothemes" 29 | 30 | author: 31 | name : Fernando Moreira 32 | image : /assets/images/author.jpg 33 | email : nandomoreira.me@gmail.com 34 | url : http://nandomoreira.me 35 | facebook : http://facebook.com/fernando.dev 36 | twitter : http://twitter.com/nandomoreirame 37 | instagram : http://instagram.com/nandomoreira.me 38 | github : http://github.com/nandomoreirame 39 | linkedin : http://linkedin.com/in/nandomoreirame 40 | bio : "Desenvolvedor Front-end/Wordpress entusiasta de performance, design responsivo e usabilidade, sempre em busca do melhor projeto e de um bom café." 41 | 42 | exclude: ["gulp", "node_modules", "bower", "bower_components", "config.rb", "src", "Gemfile", "Gemfile.lock", ".rvmrc", ".rbenv-version", "package.json", "gulpfile.js", "README.md", "Rakefile", "changelog.md"] 43 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nandomoreirame/mug/8cd8987569511b7f9c4ff2545435f949ba2efa63/screenshot.png -------------------------------------------------------------------------------- /source/_includes/article.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | {% if post.external_url %} 5 |
6 |

7 | {{ post.title }} 8 |

9 |
10 | {% else %} 11 |

12 | {{ post.title }} 13 |

14 | 15 | 16 | 17 |

{{ post.content | strip_html | truncatewords: 30 }}

18 | {% endif %} 19 | 20 | 21 |
-------------------------------------------------------------------------------- /source/_includes/comments.html: -------------------------------------------------------------------------------- 1 | {% if page.comments %} 2 |
3 | 4 | 30 | {% endif %} -------------------------------------------------------------------------------- /source/_includes/footer.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | 19 | -------------------------------------------------------------------------------- /source/_includes/github-corner.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /source/_includes/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | {% comment %}==================== page_title ========================{% endcomment %} 9 | {% assign page_title = '' %} 10 | {% if page.title == "Home" %}{% capture page_title %}{{ site.title }} | {{ site.description }}{%if paginator and paginator.page != 1 %} - Página {{ paginator.page }}{% endif %}{% endcapture %}{% else %}{% capture page_title %}{%if page.slug == 'category' %}Categoria: {% endif %}{%if page.slug == 'tag' %}Tag: {% endif %} {{ page.title }} | {{ site.title }}{% endcapture %}{% endif %} 11 | {% capture page_title %}{{ page_title | strip | rstrip | lstrip | escape | strip_newlines }}{% endcapture %} 12 | {{ page_title }} 13 | 14 | {% comment %}===================== ṕage_description ============================{% endcomment %} 15 | {% assign page_description = '' %} 16 | {% capture page_description %}{% if page.description %}{{ page.description | strip_html | strip | rstrip | strip_newlines | truncate: 160 }}{% else %}{{ site.description }}{% endif %}{%if paginator and paginator.page != 1 %} - Página {{ paginator.page }} {% endif %}{%if page.slug == 'category' %} Categoria: {{ page.title }}{% endif %}{%if page.slug == 'tag' %} Tag: {{ page.title }}{% endif %}{% endcapture %} 17 | {% capture page_description %}{{ page_description | strip | rstrip | lstrip | escape | strip_newlines }}{% endcapture %} 18 | 19 | 20 | {% comment %}======================= meta keywords ============================{% endcomment %} 21 | 22 | 23 | 24 | {% comment %}===================== stylesheet main.css ======================{% endcomment %} 25 | 26 | 27 | {% comment %}===================== rel paginator previous page =========================={% endcomment %} 28 | {% if paginator.previous_page %} 29 | 30 | {% endif %} 31 | 32 | {% comment %}====================== rel paginator next page =========================={% endcomment %} 33 | {% if paginator.next_page %} 34 | 35 | {% endif %} 36 | 37 | 38 | {% comment %}==================== rel canonical and rel alternate ======================={% endcomment %} 39 | 40 | 41 | 42 | {% comment %}=========================== Google Analytics ========================={% endcomment %} 43 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /source/_includes/header.html: -------------------------------------------------------------------------------- 1 | 38 | -------------------------------------------------------------------------------- /source/_includes/pagination.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /source/_includes/search.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /source/_layouts/default.html: -------------------------------------------------------------------------------- 1 | {% strip %} 2 | 3 | 4 | {% include head.html %} 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | {% include header.html %} 14 | 15 |
16 | {{ content }} 17 |
18 | 19 | {% include footer.html %} 20 | 21 |
22 | 23 | {% include github-corner.html %} 24 | 25 | 26 | 27 | 28 | 29 | {% endstrip %} 30 | -------------------------------------------------------------------------------- /source/_layouts/page.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | bodyclass: page 4 | --- 5 | 6 |
7 | 8 |
9 | 10 |
11 | {{ content }} 12 |
13 | 14 |
15 | 16 |
17 | -------------------------------------------------------------------------------- /source/_layouts/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | bodyclass: single 4 | --- 5 | 6 |
7 | 8 |
9 | {{ content }} 10 | 11 | 26 |
27 | 28 | {% include comments.html %} 29 | 30 |
31 | -------------------------------------------------------------------------------- /source/_plugins/strip.rb: -------------------------------------------------------------------------------- 1 | # Replaces multiple newlines and whitespace 2 | # between them with one newline 3 | 4 | module Jekyll 5 | class StripTag < Liquid::Block 6 | 7 | def render(context) 8 | super.gsub /\n\s*\n/, "\n" 9 | end 10 | 11 | end 12 | end 13 | 14 | Liquid::Template.register_tag('strip', Jekyll::StripTag) -------------------------------------------------------------------------------- /source/_posts/2015-11-12-a-wonderful-serenity-has-taken-possession-of-my-entire-soul.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "A wonderful serenity has taken possession of my entire soul" 4 | description: "I am so happy, my dear friend, so absorbed in the exquisite sense of mere tranquil existence, that I neglect my talents." 5 | date: 2015-11-12 16:39:18 6 | comments: true 7 | description: "A wonderful serenity has taken possession of my entire soul" 8 | keywords: "welcome, wonderful, jekyll, friend" 9 | category: welcome 10 | tags: 11 | - welcome 12 | --- 13 | 14 | A wonderful serenity has taken possession of my entire soul, like these sweet mornings of spring which I enjoy with my whole heart. I am alone, and feel the charm of existence in this spot, which was created for the bliss of souls like mine. 15 | 16 | I am so happy, my dear friend, so absorbed in the exquisite sense of mere tranquil existence, that I neglect my talents. 17 | 18 | I should be incapable of drawing a single stroke at the present moment; and yet I feel that I never was a greater artist than now. 19 | 20 | When, while the lovely valley teems with vapour around me, and the meridian sun strikes the upper surface of the impenetrable foliage of my trees, and but a few stray gleams steal into the inner sanctuary, I throw myself down among the tall grass by the trickling stream; and, as I lie close to the earth, a thousand unknown plants are noticed by me: when I hear the buzz of the little world among the stalks, and grow familiar with the countless indescribable forms of the insects and flies, then I feel the presence of the Almighty, who formed us in his own image, and the breath of that universal love which bears and sustains us, as it floats around us in an eternity of bliss; and then, my friend, when darkness overspreads my eyes, and heaven and earth seem to dwell in my soul and absorb its power, like the form of a beloved mistress, then I often think with longing, Oh, would I could describe these conceptions, could impress upon paper all that is living so full and warm within me, that it might be the mirror of my soul, as my soul is the mirror of the infinite God! 21 | 22 | O my friend -- but it is too much for my strength -- I sink under the weight of the splendour of these visions! 23 | 24 | A wonderful serenity has taken possession of my entire soul, like these sweet mornings of spring which I enjoy with my whole heart. 25 | 26 | I am alone, and feel the charm of existence in this spot, which was created for the bliss of souls like mine. 27 | 28 | I am so happy, my dear friend, so absorbed in the exquisite sense of mere tranquil existence, that I neglect my talents. 29 | 30 | I should be incapable of drawing a single stroke at the present moment; and yet I feel that I never was a greater artist than now. 31 | 32 | When, while the lovely valley teems with vapour around me, and the meridian sun strikes the upper surface of the impenetrable foliage of my trees, and but a few stray gleams steal into the inner sanctuary, I throw myself down among the tall grass by the trickling stream; and, as I lie close to the earth, a thousand unknown plants are noticed by me: when I hear the buzz of the little world among the stalks, and grow familiar with the countless indescribable forms of the insects and -------------------------------------------------------------------------------- /source/_posts/2015-11-12-far-far-away-behind-the-word-mountains-far-from-the-countries-vokalia-and-consonantia.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Far far away, behind the word mountains, far from the countries Vokalia and Consonantia" 4 | description: "A small river named Duden flows by their place and supplies it with the necessary regelialia." 5 | date: 2015-11-12 16:38:20 6 | comments: true 7 | keywords: "welcome, Far, far, away" 8 | category: welcome 9 | tags: 10 | - welcome 11 | --- 12 | 13 | Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean. 14 | 15 | A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth. 16 | 17 | Even the all-powerful Pointing has no control about the blind texts it is an almost unorthographic life One day however a small line of blind text by the name of Lorem Ipsum decided to leave for the far World of Grammar. 18 | 19 | The Big Oxmox advised her not to do so, because there were thousands of bad Commas, wild Question Marks and devious Semikoli, but the Little Blind Text didn’t listen. She packed her seven versalia, put her initial into the belt and made herself on the way. 20 | 21 | When she reached the first hills of the Italic Mountains, she had a last view back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet Village and the subline of her own road, the Line Lane. 22 | 23 | Pityful a rethoric question ran over her cheek, then she continued her way. On her way she met a copy. 24 | 25 | The copy warned the Little Blind Text, that where it came from it would have been rewritten a thousand times and everything that was left from its origin would be the word "and" and the Little Blind Text should turn around and return to its own, safe country. 26 | 27 | But nothing the copy said could convince her and so it didn’t take long until a few insidious Copy Writers ambushed her, made her drunk with Longe and Parole and dragged her into their agency, where they abused her for their projects again and again. And if she hasn’t been rewritten, then they are still using her. 28 | 29 | Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean. A small river named Duden flows by their place and supplies it with the necessary regelialia. 30 | 31 | It is a paradisematic country, in which roasted parts of sentences fly into your mouth. Even the all-powerful Pointing has no control about the blind texts it is an almost unorthographic life One day however a small line of blind text by the name of Lorem Ipsum decided to leave for the far World of Grammar. 32 | 33 | The Big Oxmox advised her not to do so, because there were thousands of bad Commas, wild Question Marks and devious Semikoli, but the Little Blind Text didn’t listen. She packed her seven versalia, put her initial into the belt and made herself on the way. When she reached the first hills of the Italic Mountains, she had a last view back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet Village and the subline -------------------------------------------------------------------------------- /source/_posts/2015-11-12-lorem-ipsum-dolor-sit-amet-consectetuer-adipiscing-elit.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Lorem ipsum dolor sit amet, consectetuer adipiscing elit" 4 | description: "Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec." 5 | date: 2015-11-12 16:41:50 6 | comments: true 7 | keywords: "welcome, Lorem, ipsum, dolor" 8 | category: welcome 9 | tags: 10 | - welcome 11 | --- 12 | 13 | Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. 14 | 15 | Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. 16 | 17 | Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. 18 | 19 | Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. 20 | 21 | Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. 22 | 23 | Fusce vulputate eleifend sapien. Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus. Nullam accumsan lorem in dui. Cras ultricies mi eu turpis hendrerit fringilla. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In ac dui quis mi consectetuer lacinia. 24 | 25 | Nam pretium turpis et arcu. Duis arcu tortor, suscipit eget, imperdiet nec, imperdiet iaculis, ipsum. Sed aliquam ultrices mauris. Integer ante arcu, accumsan a, consectetuer eget, posuere ut, mauris. Praesent adipiscing. Phasellus ullamcorper ipsum rutrum nunc. Nunc nonummy metus. 26 | 27 | Vestibulum volutpat pretium libero. Cras id dui. Aenean ut eros et nisl sagittis vestibulum. Nullam nulla eros, ultricies sit amet, nonummy id, imperdiet feugiat, pede. Sed lectus. Donec mollis hendrerit risus. Phasellus nec sem in justo pellentesque facilisis. Etiam imperdiet imperdiet orci. 28 | 29 | Nunc nec neque. Phasellus leo dolor, tempus non, auctor et, hendrerit quis, nisi. Curabitur ligula sapien, tincidunt non, euismod vitae, posuere imperdiet, leo. Maecenas malesuada. Praesent congue erat at massa. Sed cursus turpis vitae tortor. Donec posuere vulputate arcu. Phasellus accumsan cursus velit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed aliquam, nisi quis porttitor congue, elit erat euismod orci. -------------------------------------------------------------------------------- /source/_posts/2015-11-12-lorem.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Lorem ipsum dolor sit amet" 4 | description: "Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui." 5 | date: 2015-11-12 19:19:43 6 | keywords: "welcome, Aenean, fermentum, Lorem, ipsum" 7 | category: welcome 8 | --- 9 | 10 |

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis.

11 | 12 |

Header Level 2

13 | 14 |
    15 |
  1. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
  2. 16 |
  3. Aliquam tincidunt mauris eu risus.
  4. 17 |
18 | 19 |

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus magna. Cras in mi at felis aliquet congue. Ut a est eget ligula molestie gravida. Curabitur massa. Donec eleifend, libero at sagittis mollis, tellus est malesuada tellus, at luctus turpis elit sit amet quam. Vivamus pretium ornare est.

20 | 21 |

Header Level 3

22 | 23 | 27 | 28 |

Header Level 4

29 | 30 |
Header Level 5
31 | 32 |
Header Level 6
33 | 34 | {% highlight css %} 35 | #header h1 a { 36 | display: block; 37 | width: 300px; 38 | height: 80px; 39 | } 40 | {% endhighlight %} -------------------------------------------------------------------------------- /source/_posts/2015-11-12-the-quick-brown-fox-jumps-over-a-lazy-dog.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "The quick, brown fox jumps over a lazy dog" 4 | date: 2015-11-12 16:42:24 5 | comments: true 6 | description: "The quick, brown fox jumps over a lazy dog" 7 | keywords: "" 8 | category: welcome 9 | tags: 10 | - welcome 11 | --- 12 | 13 | The quick, brown fox jumps over a lazy dog. DJs flock by when MTV ax quiz prog. Junk MTV quiz graced by fox whelps. Bawds jog, flick quartz, vex nymphs. Waltz, bad nymph, for quick jigs vex! Fox nymphs grab quick-jived waltz. 14 | 15 | Brick quiz whangs jumpy veldt fox. Bright vixens jump; dozy fowl quack. Quick wafting zephyrs vex bold Jim. Quick zephyrs blow, vexing daft Jim. Sex-charged fop blew my junk TV quiz. How quickly daft jumping zebras vex. 16 | 17 | Two driven jocks help fax my big quiz. Quick, Baz, get my woven flax jodhpurs! "Now fax quiz Jack! " my brave ghost pled. Five quacking zephyrs jolt my wax bed. Flummoxed by job, kvetching W. zaps Iraq. Cozy sphinx waves quart jug of bad milk. 18 | 19 | A very bad quack might jinx zippy fowls. Few quips galvanized the mock jury box. Quick brown dogs jump over the lazy fox. The jay, pig, fox, zebra, and my wolves quack! Blowzy red vixens fight for a quick jump. 20 | 21 | Joaquin Phoenix was gazed by MTV for luck. A wizard’s job is to vex chumps quickly in fog. Watch "Jeopardy! ", Alex Trebek's fun TV quiz game. Woven silk pyjamas exchanged for blue quartz. Brawny gods just flocked up to quiz and vex him. 22 | 23 | Adjusting quiver and bow, Zompyc[1] killed the fox. My faxed joke won a pager in the cable TV quiz show. Amazingly few discotheques provide jukeboxes. My girl wove six dozen plaid jackets before she quit. Six big devils from Japan quickly forgot how to waltz. 24 | 25 | Big July earthquakes confound zany experimental vow. Foxy parsons quiz and cajole the lovably dim wiki-girl. Have a pick: twenty six letters - no forcing a jumbled quiz! Crazy Fredericka bought many very exquisite opal jewels. 26 | 27 | Sixty zippers were quickly picked from the woven jute bag. A quick movement of the enemy will jeopardize six gunboats. All questions asked by five watch experts amazed the judge. Jack quietly moved up front and seized the big ball of wax. 28 | 29 | The quick, brown fox jumps over a lazy dog. DJs flock by when MTV ax quiz prog. Junk MTV quiz graced by fox whelps. Bawds jog, flick quartz, vex nymphs. Waltz, bad nymph, for quick jigs vex! Fox nymphs grab quick-jived waltz. Brick quiz whangs jumpy veldt fox. 30 | 31 | Bright vixens jump; dozy fowl quack. Quick wafting zephyrs vex bold Jim. Quick zephyrs blow, vexing daft Jim. Sex-charged fop blew my junk TV quiz. How quickly daft jumping zebras vex. Two driven jocks help fax my big quiz. Quick, Baz, get my woven flax jodhpurs! 32 | 33 | "Now fax quiz Jack! " my brave ghost pled. Five quacking zephyrs jolt my wax bed. Flummoxed by job, kvetching W. zaps Iraq. Cozy sphinx waves quart jug of bad milk. A very bad quack might jinx zippy fowls. Few quips galvanized the mock jury box. Quick brown dogs jump over the lazy fox. The jay, pig, fox, zebra, and my wolves quack! Blowzy red vixens fight for a quick jump. Joaquin Phoenix was gazed by MTV -------------------------------------------------------------------------------- /source/_posts/2015-11-12-welcome-to-jekyll.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Welcome to Jekyll!" 4 | description: "You’ll find this post in your _posts directory. Go ahead and edit it and re-build the site to see your changes." 5 | date: 2015-11-12 19:19:43 6 | keywords: "welcome, update, Jekyll" 7 | category: jekyll update 8 | comments: true 9 | --- 10 | 11 | You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. 12 | 13 | To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. 14 | 15 | Jekyll also offers powerful support for code snippets: 16 | 17 | {% highlight ruby %} 18 | def print_hi(name) 19 | puts "Hi, #{name}" 20 | end 21 | print_hi('Tom') 22 | #=> prints 'Hi, Tom' to STDOUT. 23 | {% endhighlight %} 24 | 25 | Check out the [Jekyll docs][jekyll] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll’s dedicated Help repository][jekyll-help]. 26 | 27 | [jekyll]: http://jekyllrb.com 28 | [jekyll-gh]: https://github.com/jekyll/jekyll 29 | [jekyll-help]: https://github.com/jekyll/jekyll-help 30 | -------------------------------------------------------------------------------- /source/_posts/2015-11-16-test-external-url---google.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Test external url" 4 | permalink: test-external-url 5 | date: 2015-11-16 15:51:23 6 | comments: true 7 | external_url: http://nandomoreira.me/ 8 | description: "Test external-url" 9 | keywords: "test, external, url" 10 | category: jekyll 11 | tags: 12 | - text 13 | - jekyll 14 | - external-url 15 | --- 16 | -------------------------------------------------------------------------------- /source/_scss/_base.scss: -------------------------------------------------------------------------------- 1 | /*================================== 2 | = Base style = 3 | ==================================*/ 4 | 5 | @import url("//fonts.googleapis.com/css?family=Ubuntu:400,300,500,700"); 6 | 7 | * { 8 | &, 9 | &:before, 10 | &:after { 11 | box-sizing: border-box; 12 | } 13 | } 14 | 15 | html, 16 | body { 17 | height: 100%; 18 | min-height: 100%; 19 | } 20 | 21 | html { 22 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 23 | } 24 | 25 | body { 26 | background: $bg-color; 27 | -webkit-font-smoothing: antialiased; 28 | -moz-osx-font-smoothing: grayscale; 29 | letter-spacing: .01em; 30 | } 31 | 32 | body, 33 | input, 34 | select, 35 | textarea { 36 | color: $txt-color; 37 | font-family: $font-family-base; 38 | font-size: $font-size-base; 39 | font-weight: $font-weight-base; 40 | line-height: $line-height-base; 41 | } 42 | 43 | a { 44 | color: $link-color; 45 | text-decoration: underline; 46 | 47 | &:hover { 48 | transition: color .2s linear; 49 | text-decoration: none; 50 | color: $link-hover-color; 51 | } 52 | } 53 | 54 | strong { 55 | font-weight: $font-weight-bold; 56 | } 57 | 58 | em { 59 | font-style: italic; 60 | } 61 | 62 | p { 63 | margin: 0 0 1em 0; 64 | } 65 | 66 | img { 67 | display: block; 68 | margin: 0 0 .6em; 69 | vertical-align: middle; 70 | max-width: 100%; 71 | } 72 | 73 | h1, 74 | h2, 75 | h3, 76 | h4, 77 | h5, 78 | h6 { 79 | font-weight: 300; 80 | line-height: 1em; 81 | margin: 0 0 1em 0; 82 | 83 | a { 84 | color: inherit; 85 | text-decoration: none; 86 | } 87 | 88 | small { 89 | font-size: 60%; 90 | } 91 | } 92 | 93 | h1 { 94 | font-size: 2.2rem; 95 | } 96 | 97 | h2 { 98 | font-size: 1.8rem; 99 | } 100 | 101 | h3 { 102 | font-size: 1.4rem; 103 | } 104 | 105 | h4 { 106 | font-size: 1.2rem; 107 | } 108 | 109 | h5 { 110 | font-size: 1rem; 111 | } 112 | 113 | h6 { 114 | font-size: .9rem; 115 | } 116 | 117 | sub { 118 | font-size: 0.8em; 119 | position: relative; 120 | top: 0.5em; 121 | } 122 | 123 | sup { 124 | font-size: 0.8em; 125 | position: relative; 126 | top: -0.5em; 127 | } 128 | 129 | hr { 130 | border: 0; 131 | border-bottom: solid 1px rgba(144, 144, 144, 0.25); 132 | margin: 2em 0; 133 | 134 | &.major { 135 | margin: 3em 0; 136 | } 137 | } 138 | 139 | blockquote { 140 | border-left: solid 4px $primary-color; 141 | font-style: italic; 142 | margin: 0 0 2em 0; 143 | padding: 0.5em 0 0.5em 2em; 144 | } 145 | 146 | q, blockquote { 147 | small { 148 | font-size: 60%; 149 | } 150 | } 151 | 152 | q { 153 | quotes: "«" "»"; 154 | 155 | &:before { 156 | content: open-quote; 157 | } 158 | &:after { 159 | content: close-quote; 160 | } 161 | } 162 | 163 | code { 164 | background: none; 165 | border-radius: 0; 166 | border: none; 167 | font-family: "Courier New", monospace; 168 | font-size: 0.9em; 169 | margin: 0; 170 | padding: 0 5px; 171 | background-color: #dedede; 172 | } 173 | 174 | 175 | pre { 176 | -webkit-overflow-scrolling: touch; 177 | font-family: "Courier New", monospace; 178 | font-size: 0.9em; 179 | margin: 0; 180 | 181 | code { 182 | line-height: 1.75em; 183 | } 184 | } 185 | 186 | .clearfix { 187 | @extend %clearfix; 188 | } 189 | 190 | .dot { 191 | border-radius: 50%; 192 | } 193 | 194 | .txt-center { 195 | text-align: center; 196 | } -------------------------------------------------------------------------------- /source/_scss/_icons.scss: -------------------------------------------------------------------------------- 1 | 2 | $icon-font-family: 'mugicons'; 3 | $icon-path: '../fonts/'; 4 | 5 | $icon-category: "\e900"; 6 | $icon-tags: "\e901"; 7 | $icon-comments: "\e902"; 8 | $icon-comment-o: "\e903"; 9 | $icon-comments-o: "\e905"; 10 | $icon-search: "\e906"; 11 | $icon-star-o: "\e907"; 12 | $icon-heart: "\e908"; 13 | $icon-share: "\e909"; 14 | $icon-facebook: "\e90a"; 15 | $icon-facebook-rounded: "\e90b"; 16 | $icon-twitter: "\e90c"; 17 | $icon-twitter-rounded: "\e90d"; 18 | $icon-feed: "\e90e"; 19 | $icon-github: "\e90f"; 20 | 21 | @font-face { 22 | font-family: $icon-font-family; 23 | src: url('#{$icon-path}#{$icon-font-family}.eot?pfzr1n'); 24 | src: url('#{$icon-path}#{$icon-font-family}.eot?pfzr1n#iefix') format('embedded-opentype'), 25 | url('#{$icon-path}#{$icon-font-family}.ttf?pfzr1n') format('truetype'), 26 | url('#{$icon-path}#{$icon-font-family}.woff?pfzr1n') format('woff'), 27 | url('#{$icon-path}#{$icon-font-family}.svg?pfzr1n##{$icon-font-family}') format('svg'); 28 | font-weight: normal; 29 | font-style: normal; 30 | } 31 | 32 | .icon { 33 | font-family: $icon-font-family; 34 | speak: none; 35 | font-style: normal; 36 | font-weight: normal; 37 | font-variant: normal; 38 | text-transform: none; 39 | line-height: 1; 40 | -webkit-font-smoothing: antialiased; 41 | -moz-osx-font-smoothing: grayscale; 42 | } 43 | 44 | .icon-category:before { content: $icon-category; } 45 | .icon-tags:before { content: $icon-tags; } 46 | .icon-comments:before { content: $icon-comments; } 47 | .icon-comments-o:before { content: $icon-comments-o; } 48 | .icon-comment-o:before { content: $icon-comment-o; } 49 | .icon-search:before { content: $icon-search; } 50 | .icon-star-o:before { content: $icon-star-o; } 51 | .icon-heart:before { content: $icon-heart; } 52 | .icon-share:before { content: $icon-share; } 53 | .icon-facebook:before { content: $icon-facebook; } 54 | .icon-facebook-rounded:before { content: $icon-facebook-rounded; } 55 | .icon-twitter:before { content: $icon-twitter; } 56 | .icon-twitter-rounded:before { content: $icon-twitter-rounded; } 57 | .icon-feed:before { content: $icon-feed; } 58 | .icon-github:before { content: $icon-github; } 59 | 60 | -------------------------------------------------------------------------------- /source/_scss/_layout.scss: -------------------------------------------------------------------------------- 1 | /*===================================== 2 | = Layout Styles = 3 | =====================================*/ 4 | 5 | /** 6 | * Container 7 | */ 8 | 9 | .container { 10 | max-width: $container-width; 11 | 12 | padding: { 13 | left: $gutter-padding; 14 | right: $gutter-padding; 15 | }; 16 | 17 | margin: { 18 | left: auto; 19 | right: auto; 20 | }; 21 | } 22 | 23 | .hr { 24 | display: block; 25 | width: 60px; 26 | height: 3px; 27 | background-color: darken($silver-color, 5%); 28 | margin: 3em auto; 29 | border: none; 30 | } 31 | 32 | .input { 33 | border-radius: 4px; 34 | box-shadow: none; 35 | border: 2px solid lighten($silver-color, 6%); 36 | color: $txt-color; 37 | display: inline-block; 38 | width: 100%; 39 | 40 | &:focus, 41 | &:active { 42 | outline: none; 43 | border-color: lighten($silver-color, 3%); 44 | } 45 | } 46 | 47 | .btn { 48 | appearance: none; 49 | transition: background-color .2s linear, color .2s linear, border-color .2s linear; 50 | border-radius: 4px; 51 | box-shadow: none; 52 | background-color: $primary-color; 53 | border: 2px solid lighten($primary-color, 4%); 54 | color: $white-color; 55 | cursor: pointer; 56 | display: inline-block; 57 | font-weight: 700; 58 | line-height: 2.6em; 59 | padding: 0 1.6em; 60 | text-align: center; 61 | text-decoration: none; 62 | white-space: nowrap; 63 | 64 | &:hover, 65 | &:active { 66 | background-color: lighten($primary-color, 5%); 67 | border-color: lighten($primary-color, 7%); 68 | color: darken($white-color, 5%); 69 | } 70 | 71 | &.ghost { 72 | background-color: transparent; 73 | border-color: rgba($white-color, .7); 74 | 75 | &:hover, 76 | &:active { 77 | background-color: rgba($white-color, .1); 78 | border-color: $white-color; 79 | } 80 | } 81 | } 82 | 83 | .search { 84 | position: relative; 85 | 86 | .input { 87 | text-align: center; 88 | font-weight: 400; 89 | line-height: 2.5em; 90 | padding: 0 2.4em; 91 | } 92 | 93 | .icon { 94 | position: absolute; 95 | color: rgba($primary-color, .7); 96 | right: 20px; 97 | top: 15px; 98 | } 99 | 100 | .no-results { 101 | color: #f00; 102 | } 103 | } 104 | 105 | .dropdown { 106 | background-color: $white-color; 107 | box-shadow: 0px 2px 2px rgba($black-color, .2); 108 | position: absolute; 109 | top: 100%; 110 | margin-top: 1px; 111 | 112 | &, li, a { 113 | display: block; 114 | width: 100%; 115 | } 116 | 117 | li { 118 | border-bottom: 1px solid $silver-color; 119 | display: block; 120 | } 121 | 122 | a, .no-results { 123 | font-size: $font-size-base; 124 | padding: .6em 1.2em; 125 | text-decoration: none; 126 | transition: background-color .2s ease, color .2s ease; 127 | } 128 | 129 | a:hover, 130 | a:focus, 131 | a:active { 132 | background-color: $primary-color; 133 | color: $white-color; 134 | } 135 | } 136 | 137 | .pagination { 138 | @extend %clearfix; 139 | 140 | text-align: center; 141 | margin: 2em 0; 142 | 143 | li { 144 | padding: 0 .4em; 145 | } 146 | 147 | li, a, span { 148 | display: inline-block; 149 | } 150 | 151 | a, span { 152 | line-height: 1.2em; 153 | font-size: .7em; 154 | } 155 | 156 | span { 157 | color: #aaa; 158 | font-style: italic; 159 | } 160 | } 161 | 162 | /** 163 | * Site Header 164 | */ 165 | .site-header, 166 | .site-footer { 167 | background: url("https://raw.githubusercontent.com/thoughtbot/refills/master/source/images/mountains.png"), linear-gradient(10deg, #20392B, #7F99BE), no-repeat #7F99BE scroll; 168 | background-color: $secondary-color; 169 | background-repeat: no-repeat; 170 | background-size: cover; 171 | } 172 | 173 | .site-header { 174 | border-top: 5px solid $black-color; 175 | padding: { 176 | top: 1.4em; 177 | bottom: 3em; 178 | }; 179 | margin-bottom: 1.4em; 180 | 181 | h1 { 182 | margin-top: 1em; 183 | color: rgba($white-color, .75); 184 | } 185 | } 186 | 187 | .author-thumb { 188 | opacity: .7; 189 | display: inline-block; 190 | transition: opacity .2s ease; 191 | padding: 5px; 192 | border: 1px solid $white-color; 193 | 194 | img { 195 | width: 100px; 196 | display: inline; 197 | margin: 0; 198 | } 199 | 200 | &:hover, 201 | &:focus, 202 | &:active { 203 | opacity: .9; 204 | } 205 | } 206 | 207 | $sliding-panel-background: lighten($black-color, 5%); 208 | $sliding-panel-color: #fff; 209 | $sliding-panel-border: 1px solid $black-color; 210 | $sliding-panel-color-hover: #fff; 211 | $sliding-panel-background-focus: lighten($sliding-panel-background, 5%); 212 | 213 | .sliding-panel-content { 214 | @include position(fixed, 0px auto 0px 0px); 215 | padding-top: 5px; 216 | @include size(220px 100%); 217 | @include transform(translateX(-220px)); 218 | @include transition(all 0.25s linear); 219 | background: $sliding-panel-background; 220 | z-index: 999999; 221 | overflow-y: auto; 222 | -webkit-overflow-scrolling: touch; 223 | 224 | ul { 225 | list-style: none; 226 | padding: 0; 227 | margin: 0; 228 | } 229 | 230 | li a { 231 | border-bottom: $sliding-panel-border; 232 | color: $sliding-panel-color; 233 | display: block; 234 | font-weight: bold; 235 | padding: 1em; 236 | text-decoration: none; 237 | 238 | &:focus, 239 | &:hover { 240 | background-color: $primary-color; 241 | color: $sliding-panel-color-hover; 242 | } 243 | } 244 | 245 | &.is-visible { 246 | @include transform(translateX(0)); 247 | } 248 | } 249 | 250 | .sliding-panel-fade-screen { 251 | @include position(fixed, 0px 0px 0px 0px); 252 | @include transition; 253 | background: black; 254 | opacity: 0; 255 | visibility: hidden; 256 | z-index: 999998; 257 | 258 | &.is-visible { 259 | opacity: 0.4; 260 | visibility: visible; 261 | } 262 | } 263 | 264 | .sliding-panel-button { 265 | padding: 10px 16px; 266 | display: inline-block; 267 | cursor: pointer; 268 | position: relative; 269 | outline: none; 270 | 271 | img { 272 | height: 1.3em; 273 | } 274 | } 275 | 276 | .nav-toogle { 277 | position: absolute; 278 | top: 2.5em; 279 | left: 2em; 280 | height: 50px; 281 | width: 50px; 282 | border: 1px solid rgba($white-color, .75); 283 | border-radius: 50%; 284 | cursor: pointer; 285 | display: inline-block; 286 | font-size: 1em; 287 | padding: .9em .7em; 288 | margin-bottom: 1.5em; 289 | transition: all .2s ease-in-out; 290 | z-index: 9999; 291 | 292 | span { 293 | height: 2px; 294 | width: 100%; 295 | display: block; 296 | margin-bottom: 5px; 297 | background-color: rgba($white-color, .75); 298 | } 299 | } 300 | 301 | /** 302 | * .posts 303 | */ 304 | 305 | .post { 306 | margin: 3em 0; 307 | 308 | h1 { 309 | margin-bottom: .3em; 310 | } 311 | 312 | a { 313 | text-decoration: none; 314 | 315 | &:hover, 316 | &:focus { 317 | color: lighten($primary-color, 10%); 318 | } 319 | } 320 | 321 | .post-meta { 322 | display: block; 323 | margin-bottom: 1em; 324 | } 325 | 326 | &:after { 327 | content: ''; 328 | @extend .hr; 329 | } 330 | } 331 | 332 | .post-title { 333 | margin-bottom: .5em; 334 | color: #aaa; 335 | } 336 | 337 | .post-meta { 338 | font-style: italic; 339 | color: #aaa; 340 | } 341 | 342 | .posts { 343 | .post { 344 | h1 { 345 | font-size: 1.6rem; 346 | } 347 | } 348 | } 349 | 350 | .read-more { 351 | font-size: 1rem; 352 | padding: 0 .8em; 353 | } 354 | 355 | .site-footer { 356 | padding: 0 0 2em; 357 | margin-top: 1.5em; 358 | 359 | small, a { 360 | color: rgba($white-color, .75); 361 | } 362 | 363 | small { 364 | font-size: .8em; 365 | display: block; 366 | } 367 | } 368 | 369 | .share { 370 | padding: 1.2em 0 0; 371 | width: 100%; 372 | text-align: right; 373 | 374 | span, a { 375 | display: inline-block; 376 | color: #787878; 377 | text-decoration: none; 378 | padding-left: 5px; 379 | } 380 | } 381 | 382 | .social { 383 | text-align: center; 384 | margin: 2em 0; 385 | 386 | li { 387 | display: inline-block; 388 | padding: 0 .6em; 389 | } 390 | 391 | a { 392 | color: #999; 393 | text-decoration: none; 394 | font-size: 1.2em; 395 | } 396 | } 397 | 398 | .github-corner { 399 | &:hover .octo-arm { 400 | animation: octocat-wave 560ms ease-in-out; 401 | } 402 | } 403 | 404 | @keyframes octocat-wave { 405 | 0%,100% { 406 | transform: rotate(0); 407 | } 408 | 409 | 20%,60% { 410 | transform: rotate(-25deg); 411 | } 412 | 413 | 40%,80% { 414 | transform: rotate(10deg); 415 | } 416 | } 417 | 418 | @media (max-width: 500px) { 419 | .github-corner:hover .octo-arm { 420 | animation: none; 421 | } 422 | 423 | .github-corner .octo-arm { 424 | animation: octocat-wave 560ms ease-in-out; 425 | } 426 | } -------------------------------------------------------------------------------- /source/_scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | //================================= 2 | //= Mixins = 3 | //================================= 4 | 5 | // 6 | // # mixin for media-query 7 | @mixin media($query: $feature $value) { 8 | @if length($query) == 1 { 9 | @media ($default-feature: nth($query, 1)) { 10 | @content; 11 | } 12 | } 13 | 14 | @else { 15 | $loop-to: length($query); 16 | $media-query: 'screen and '; 17 | 18 | @if length($query) % 2 != 0 { 19 | $loop-to: $loop-to - 1; 20 | } 21 | 22 | $i: 1; 23 | @while $i <= $loop-to { 24 | $media-query: $media-query + '(' + nth($query, $i) + ': ' + nth($query, $i + 1) + ') '; 25 | 26 | @if ($i + 1) != $loop-to { 27 | $media-query: $media-query + 'and '; 28 | } 29 | 30 | $i: $i + 2; 31 | } 32 | 33 | @media #{$media-query} { 34 | @content; 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /source/_scss/_placeholders.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Placeholders 3 | // 4 | 5 | %clearfix { 6 | &:before { 7 | content: " "; 8 | display: table; 9 | } 10 | 11 | &:after { 12 | content: " "; 13 | display: table; 14 | clear: both; 15 | } 16 | 17 | *zoom: 1; 18 | } -------------------------------------------------------------------------------- /source/_scss/_reset.scss: -------------------------------------------------------------------------------- 1 | /* http://meyerweb.com/eric/tools/css/reset/ 2 | v2.0 | 20110126 3 | License: none (public domain) 4 | */ 5 | 6 | html, body, div, span, applet, object, iframe, 7 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 8 | a, abbr, acronym, address, big, cite, code, 9 | del, dfn, em, img, ins, kbd, q, s, samp, 10 | small, strike, strong, sub, sup, tt, var, 11 | b, u, i, center, 12 | dl, dt, dd, ol, ul, li, 13 | fieldset, form, label, legend, 14 | table, caption, tbody, tfoot, thead, tr, th, td, 15 | article, aside, canvas, details, embed, 16 | figure, figcaption, footer, header, hgroup, 17 | menu, nav, output, ruby, section, summary, 18 | time, mark, audio, video { 19 | margin: 0; 20 | padding: 0; 21 | border: 0; 22 | font-size: 100%; 23 | font: inherit; 24 | vertical-align: baseline; 25 | } 26 | /* HTML5 display-role reset for older browsers */ 27 | article, aside, details, figcaption, figure, 28 | footer, header, hgroup, menu, nav, section { 29 | display: block; 30 | } 31 | body { 32 | line-height: 1; 33 | } 34 | ol, ul { 35 | list-style: none; 36 | } 37 | blockquote, q { 38 | quotes: none; 39 | } 40 | blockquote:before, blockquote:after, 41 | q:before, q:after { 42 | content: ''; 43 | content: none; 44 | } 45 | table { 46 | border-collapse: collapse; 47 | border-spacing: 0; 48 | } -------------------------------------------------------------------------------- /source/_scss/_syntax-highlighting.scss: -------------------------------------------------------------------------------- 1 | .highlight { 2 | @extend %clearfix; 3 | padding: 0; 4 | margin: { 5 | top: 1.2em; 6 | bottom: 1.2em; 7 | }; 8 | 9 | &, .hll, pre, code { 10 | background-color: #272822 !important; 11 | border: none; 12 | } 13 | 14 | pre { 15 | margin: 0; 16 | padding: 1.3em; 17 | white-space: pre; 18 | line-height: 23px; 19 | overflow-x: auto; 20 | margin-bottom: 0; 21 | word-break: inherit; 22 | word-wrap: inherit; 23 | 24 | &, code { 25 | color: #eeffdd; 26 | } 27 | 28 | code { 29 | white-space: pre; 30 | padding: 0 !important; 31 | 32 | * { 33 | white-space: nowrap; // this sets all children inside to nowrap 34 | } 35 | } 36 | } 37 | 38 | 39 | .c { color: #75715e } /* Comment */ 40 | .err { color: #f2f1f2 } /* Error */ 41 | .k { color: #66d9ef } /* Keyword */ 42 | .l { color: #ae81ff } /* Literal */ 43 | .n { color: #f8f8f2 } /* Name */ 44 | .o { color: #f92672 } /* Operator */ 45 | .p { color: #f8f8f2 } /* Punctuation */ 46 | .cm { color: #75715e } /* Comment.Multiline */ 47 | .cp { color: #75715e } /* Comment.Preproc */ 48 | .c1 { color: #75715e } /* Comment.Single */ 49 | .cs { color: #75715e } /* Comment.Special */ 50 | .ge { font-style: italic } /* Generic.Emph */ 51 | .gs { font-weight: bold } /* Generic.Strong */ 52 | .kc { color: #66d9ef } /* Keyword.Constant */ 53 | .kd { color: #66d9ef } /* Keyword.Declaration */ 54 | .kn { color: #f92672 } /* Keyword.Namespace */ 55 | .kp { color: #66d9ef } /* Keyword.Pseudo */ 56 | .kr { color: #66d9ef } /* Keyword.Reserved */ 57 | .kt { color: #66d9ef } /* Keyword.Type */ 58 | .ld { color: #e6db74 } /* Literal.Date */ 59 | .m { color: #ae81ff } /* Literal.Number */ 60 | .s { color: #e6db74 } /* Literal.String */ 61 | .na { color: #a6e22e } /* Name.Attribute */ 62 | .nb { color: #f8f8f2 } /* Name.Builtin */ 63 | .nc { color: #a6e22e } /* Name.Class */ 64 | .no { color: #66d9ef } /* Name.Constant */ 65 | .nd { color: #a6e22e } /* Name.Decorator */ 66 | .ni { color: #f8f8f2 } /* Name.Entity */ 67 | .ne { color: #a6e22e } /* Name.Exception */ 68 | .nf { color: #a6e22e } /* Name.Function */ 69 | .nl { color: #f8f8f2 } /* Name.Label */ 70 | .nn { color: #f8f8f2 } /* Name.Namespace */ 71 | .nx { color: #a6e22e } /* Name.Other */ 72 | .py { color: #f8f8f2 } /* Name.Property */ 73 | .nt { color: #f92672 } /* Name.Tag */ 74 | .nv { color: #f8f8f2 } /* Name.Variable */ 75 | .ow { color: #f92672 } /* Operator.Word */ 76 | .w { color: #f8f8f2 } /* Text.Whitespace */ 77 | .mf { color: #ae81ff } /* Literal.Number.Float */ 78 | .mh { color: #ae81ff } /* Literal.Number.Hex */ 79 | .mi { color: #ae81ff } /* Literal.Number.Integer */ 80 | .mo { color: #ae81ff } /* Literal.Number.Oct */ 81 | .sb { color: #e6db74 } /* Literal.String.Backtick */ 82 | .sc { color: #e6db74 } /* Literal.String.Char */ 83 | .sd { color: #e6db74 } /* Literal.String.Doc */ 84 | .s2 { color: #e6db74 } /* Literal.String.Double */ 85 | .se { color: #ae81ff } /* Literal.String.Escape */ 86 | .sh { color: #e6db74 } /* Literal.String.Heredoc */ 87 | .si { color: #e6db74 } /* Literal.String.Interpol */ 88 | .sx { color: #e6db74 } /* Literal.String.Other */ 89 | .sr { color: #e6db74 } /* Literal.String.Regex */ 90 | .s1 { color: #e6db74 } /* Literal.String.Single */ 91 | .ss { color: #e6db74 } /* Literal.String.Symbol */ 92 | .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ 93 | .vc { color: #f8f8f2 } /* Name.Variable.Class */ 94 | .vg { color: #f8f8f2 } /* Name.Variable.Global */ 95 | .vi { color: #f8f8f2 } /* Name.Variable.Instance */ 96 | .il { color: #ae81ff } /* Literal.Number.Integer.Long */ 97 | 98 | // .gh { } /* Generic Heading & Diff Header */ 99 | .gu { color: #75715e; } /* Generic.Subheading & Diff Unified/Comment? */ 100 | .gd { color: #f92672; } /* Generic.Deleted & Diff Deleted */ 101 | .gi { color: #a6e22e; } /* Generic.Inserted & Diff Inserted */ 102 | } -------------------------------------------------------------------------------- /source/_scss/_variables.scss: -------------------------------------------------------------------------------- 1 | //================================= 2 | //= Variables = 3 | //================================= 4 | 5 | $primary-color: #34495e !default; 6 | $secondary-color: #22313f !default; 7 | 8 | $black-color: #000 !default; 9 | $silver-color: #eee !default; 10 | $white-color: #fff !default; 11 | 12 | $bg-color: #f7f8f9 !default; 13 | $txt-color: rgba($black-color, .8) !default; 14 | 15 | $font-family-base: "Ubuntu", Helvetica, sans-serif !default; 16 | $font-size-base: 18px !default; 17 | $line-height-base: 1.6 !default; 18 | $font-weight-base: 400 !default; 19 | $font-weight-bold: 700 !default; 20 | 21 | $link-color: $primary-color !default; 22 | $link-hover-color: darken($link-color, 10%) !default; 23 | 24 | $default-feature: min-width !default; 25 | $container-width: 38em !default; 26 | $gutter-width: 30px !default; 27 | $gutter-padding: ($gutter-width / 2) !default; 28 | 29 | $screen-phone : 30em !default; 30 | $screen-tablet : 37em !default; 31 | $screen-desktop : 56em !default; -------------------------------------------------------------------------------- /source/_scss/base/_base.scss: -------------------------------------------------------------------------------- 1 | // Bitters 1.1.0 2 | // http://bitters.bourbon.io 3 | // Copyright 2013-2015 thoughtbot, inc. 4 | // MIT License 5 | 6 | @import "variables"; 7 | 8 | // Neat Settings -- uncomment if using Neat -- must be imported before Neat 9 | // @import "grid-settings"; 10 | 11 | @import "buttons"; 12 | @import "forms"; 13 | @import "lists"; 14 | @import "tables"; 15 | @import "typography"; 16 | -------------------------------------------------------------------------------- /source/_scss/base/_buttons.scss: -------------------------------------------------------------------------------- 1 | #{$all-buttons} { 2 | appearance: none; 3 | background-color: $action-color; 4 | border: 0; 5 | border-radius: $base-border-radius; 6 | color: #fff; 7 | cursor: pointer; 8 | display: inline-block; 9 | font-family: $base-font-family; 10 | font-size: $base-font-size; 11 | -webkit-font-smoothing: antialiased; 12 | font-weight: 600; 13 | line-height: 1; 14 | padding: $small-spacing $base-spacing; 15 | text-decoration: none; 16 | transition: background-color $base-duration $base-timing; 17 | user-select: none; 18 | vertical-align: middle; 19 | white-space: nowrap; 20 | 21 | &:hover, 22 | &:focus { 23 | background-color: shade($action-color, 20%); 24 | color: #fff; 25 | } 26 | 27 | &:disabled { 28 | cursor: not-allowed; 29 | opacity: 0.5; 30 | 31 | &:hover { 32 | background-color: $action-color; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /source/_scss/base/_forms.scss: -------------------------------------------------------------------------------- 1 | fieldset { 2 | background-color: $secondary-background-color; 3 | border: $base-border; 4 | margin: 0 0 $small-spacing; 5 | padding: $base-spacing; 6 | } 7 | 8 | input, 9 | label, 10 | select { 11 | display: block; 12 | font-family: $base-font-family; 13 | font-size: $base-font-size; 14 | } 15 | 16 | label { 17 | font-weight: 600; 18 | margin-bottom: $small-spacing / 2; 19 | 20 | &.required::after { 21 | content: "*"; 22 | } 23 | 24 | abbr { 25 | display: none; 26 | } 27 | } 28 | 29 | #{$all-text-inputs}, 30 | select[multiple=multiple] { 31 | background-color: $base-background-color; 32 | border: $base-border; 33 | border-radius: $base-border-radius; 34 | box-shadow: $form-box-shadow; 35 | box-sizing: border-box; 36 | font-family: $base-font-family; 37 | font-size: $base-font-size; 38 | margin-bottom: $small-spacing; 39 | padding: $base-spacing / 3; 40 | transition: border-color $base-duration $base-timing; 41 | width: 100%; 42 | 43 | &:hover { 44 | border-color: shade($base-border-color, 20%); 45 | } 46 | 47 | &:focus { 48 | border-color: $action-color; 49 | box-shadow: $form-box-shadow-focus; 50 | outline: none; 51 | } 52 | 53 | &:disabled { 54 | background-color: shade($base-background-color, 5%); 55 | cursor: not-allowed; 56 | 57 | &:hover { 58 | border: $base-border; 59 | } 60 | } 61 | } 62 | 63 | textarea { 64 | resize: vertical; 65 | } 66 | 67 | input[type="search"] { 68 | appearance: none; 69 | } 70 | 71 | input[type="checkbox"], 72 | input[type="radio"] { 73 | display: inline; 74 | margin-right: $small-spacing / 2; 75 | 76 | + label { 77 | display: inline-block; 78 | } 79 | } 80 | 81 | input[type="file"] { 82 | margin-bottom: $small-spacing; 83 | width: 100%; 84 | } 85 | 86 | select { 87 | margin-bottom: $base-spacing; 88 | max-width: 100%; 89 | width: auto; 90 | } 91 | -------------------------------------------------------------------------------- /source/_scss/base/_grid-settings.scss: -------------------------------------------------------------------------------- 1 | @import "neat-helpers"; // or "../neat/neat-helpers" when not in Rails 2 | 3 | // Neat Overrides 4 | // $column: 90px; 5 | // $gutter: 30px; 6 | // $grid-columns: 12; 7 | // $max-width: 1200px; 8 | 9 | // Neat Breakpoints 10 | $medium-screen: 600px; 11 | $large-screen: 900px; 12 | 13 | $medium-screen-up: new-breakpoint(min-width $medium-screen 4); 14 | $large-screen-up: new-breakpoint(min-width $large-screen 8); 15 | -------------------------------------------------------------------------------- /source/_scss/base/_lists.scss: -------------------------------------------------------------------------------- 1 | ul, 2 | ol { 3 | list-style-type: none; 4 | margin: 0; 5 | padding: 0; 6 | 7 | &%default-ul { 8 | list-style-type: disc; 9 | margin-bottom: $small-spacing; 10 | padding-left: $base-spacing; 11 | } 12 | 13 | &%default-ol { 14 | list-style-type: decimal; 15 | margin-bottom: $small-spacing; 16 | padding-left: $base-spacing; 17 | } 18 | } 19 | 20 | dl { 21 | margin-bottom: $small-spacing; 22 | 23 | dt { 24 | font-weight: bold; 25 | margin-top: $small-spacing; 26 | } 27 | 28 | dd { 29 | margin: 0; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /source/_scss/base/_tables.scss: -------------------------------------------------------------------------------- 1 | table { 2 | border-collapse: collapse; 3 | font-feature-settings: "kern", "liga", "tnum"; 4 | margin: $small-spacing 0; 5 | table-layout: fixed; 6 | width: 100%; 7 | } 8 | 9 | th { 10 | border-bottom: 1px solid shade($base-border-color, 25%); 11 | font-weight: 600; 12 | padding: $small-spacing 0; 13 | text-align: left; 14 | } 15 | 16 | td { 17 | border-bottom: $base-border; 18 | padding: $small-spacing 0; 19 | } 20 | 21 | tr, 22 | td, 23 | th { 24 | vertical-align: middle; 25 | } 26 | -------------------------------------------------------------------------------- /source/_scss/base/_typography.scss: -------------------------------------------------------------------------------- 1 | body { 2 | color: $base-font-color; 3 | font-family: $base-font-family; 4 | font-feature-settings: "kern", "liga", "pnum"; 5 | font-size: $base-font-size; 6 | line-height: $base-line-height; 7 | } 8 | 9 | h1, 10 | h2, 11 | h3, 12 | h4, 13 | h5, 14 | h6 { 15 | font-family: $heading-font-family; 16 | font-size: $base-font-size; 17 | line-height: $heading-line-height; 18 | margin: 0 0 $small-spacing; 19 | } 20 | 21 | p { 22 | margin: 0 0 $small-spacing; 23 | } 24 | 25 | a { 26 | color: $action-color; 27 | text-decoration: none; 28 | transition: color $base-duration $base-timing; 29 | 30 | &:active, 31 | &:focus, 32 | &:hover { 33 | color: shade($action-color, 25%); 34 | } 35 | } 36 | 37 | hr { 38 | border-bottom: $base-border; 39 | border-left: 0; 40 | border-right: 0; 41 | border-top: 0; 42 | margin: $base-spacing 0; 43 | } 44 | 45 | img, 46 | picture { 47 | margin: 0; 48 | max-width: 100%; 49 | } 50 | -------------------------------------------------------------------------------- /source/_scss/base/_variables.scss: -------------------------------------------------------------------------------- 1 | // Typography 2 | $base-font-family: $helvetica; 3 | $heading-font-family: $base-font-family; 4 | 5 | // Font Sizes 6 | $base-font-size: 1em; 7 | 8 | // Line height 9 | $base-line-height: 1.5; 10 | $heading-line-height: 1.2; 11 | 12 | // Other Sizes 13 | $base-border-radius: 3px; 14 | $base-spacing: $base-line-height * 1em; 15 | $small-spacing: $base-spacing / 2; 16 | $base-z-index: 0; 17 | 18 | // Colors 19 | $blue: #477dca; 20 | $dark-gray: #333; 21 | $medium-gray: #999; 22 | $light-gray: #ddd; 23 | 24 | // Font Colors 25 | $base-font-color: $dark-gray; 26 | $action-color: $blue; 27 | 28 | // Border 29 | $base-border-color: $light-gray; 30 | $base-border: 1px solid $base-border-color; 31 | 32 | // Background Colors 33 | $base-background-color: #fff; 34 | $secondary-background-color: tint($base-border-color, 75%); 35 | 36 | // Forms 37 | $form-box-shadow: inset 0 1px 3px rgba(#000, 0.06); 38 | $form-box-shadow-focus: $form-box-shadow, 0 0 5px adjust-color($action-color, $lightness: -5%, $alpha: -0.3); 39 | 40 | // Animations 41 | $base-duration: 150ms; 42 | $base-timing: ease; 43 | -------------------------------------------------------------------------------- /source/_scss/bourbon/_bourbon-deprecated-upcoming.scss: -------------------------------------------------------------------------------- 1 | // The following features have been deprecated and will be removed in the next MAJOR version release 2 | 3 | @mixin inline-block { 4 | display: inline-block; 5 | 6 | @warn "The inline-block mixin is deprecated and will be removed in the next major version release"; 7 | } 8 | 9 | @mixin button ($style: simple, $base-color: #4294f0, $text-size: inherit, $padding: 7px 18px) { 10 | 11 | @if type-of($style) == string and type-of($base-color) == color { 12 | @include buttonstyle($style, $base-color, $text-size, $padding); 13 | } 14 | 15 | @if type-of($style) == string and type-of($base-color) == number { 16 | $padding: $text-size; 17 | $text-size: $base-color; 18 | $base-color: #4294f0; 19 | 20 | @if $padding == inherit { 21 | $padding: 7px 18px; 22 | } 23 | 24 | @include buttonstyle($style, $base-color, $text-size, $padding); 25 | } 26 | 27 | @if type-of($style) == color and type-of($base-color) == color { 28 | $base-color: $style; 29 | $style: simple; 30 | @include buttonstyle($style, $base-color, $text-size, $padding); 31 | } 32 | 33 | @if type-of($style) == color and type-of($base-color) == number { 34 | $padding: $text-size; 35 | $text-size: $base-color; 36 | $base-color: $style; 37 | $style: simple; 38 | 39 | @if $padding == inherit { 40 | $padding: 7px 18px; 41 | } 42 | 43 | @include buttonstyle($style, $base-color, $text-size, $padding); 44 | } 45 | 46 | @if type-of($style) == number { 47 | $padding: $base-color; 48 | $text-size: $style; 49 | $base-color: #4294f0; 50 | $style: simple; 51 | 52 | @if $padding == #4294f0 { 53 | $padding: 7px 18px; 54 | } 55 | 56 | @include buttonstyle($style, $base-color, $text-size, $padding); 57 | } 58 | 59 | &:disabled { 60 | cursor: not-allowed; 61 | opacity: 0.5; 62 | } 63 | 64 | @warn "The button mixin is deprecated and will be removed in the next major version release"; 65 | } 66 | 67 | // Selector Style Button 68 | @mixin buttonstyle($type, $b-color, $t-size, $pad) { 69 | // Grayscale button 70 | @if $type == simple and $b-color == grayscale($b-color) { 71 | @include simple($b-color, true, $t-size, $pad); 72 | } 73 | 74 | @if $type == shiny and $b-color == grayscale($b-color) { 75 | @include shiny($b-color, true, $t-size, $pad); 76 | } 77 | 78 | @if $type == pill and $b-color == grayscale($b-color) { 79 | @include pill($b-color, true, $t-size, $pad); 80 | } 81 | 82 | @if $type == flat and $b-color == grayscale($b-color) { 83 | @include flat($b-color, true, $t-size, $pad); 84 | } 85 | 86 | // Colored button 87 | @if $type == simple { 88 | @include simple($b-color, false, $t-size, $pad); 89 | } 90 | 91 | @else if $type == shiny { 92 | @include shiny($b-color, false, $t-size, $pad); 93 | } 94 | 95 | @else if $type == pill { 96 | @include pill($b-color, false, $t-size, $pad); 97 | } 98 | 99 | @else if $type == flat { 100 | @include flat($b-color, false, $t-size, $pad); 101 | } 102 | } 103 | 104 | // Simple Button 105 | @mixin simple($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) { 106 | $color: hsl(0, 0, 100%); 107 | $border: adjust-color($base-color, $saturation: 9%, $lightness: -14%); 108 | $inset-shadow: adjust-color($base-color, $saturation: -8%, $lightness: 15%); 109 | $stop-gradient: adjust-color($base-color, $saturation: 9%, $lightness: -11%); 110 | $text-shadow: adjust-color($base-color, $saturation: 15%, $lightness: -18%); 111 | 112 | @if is-light($base-color) { 113 | $color: hsl(0, 0, 20%); 114 | $text-shadow: adjust-color($base-color, $saturation: 10%, $lightness: 4%); 115 | } 116 | 117 | @if $grayscale == true { 118 | $border: grayscale($border); 119 | $inset-shadow: grayscale($inset-shadow); 120 | $stop-gradient: grayscale($stop-gradient); 121 | $text-shadow: grayscale($text-shadow); 122 | } 123 | 124 | border: 1px solid $border; 125 | border-radius: 3px; 126 | box-shadow: inset 0 1px 0 0 $inset-shadow; 127 | color: $color; 128 | display: inline-block; 129 | font-size: $textsize; 130 | font-weight: bold; 131 | @include linear-gradient ($base-color, $stop-gradient); 132 | padding: $padding; 133 | text-decoration: none; 134 | text-shadow: 0 1px 0 $text-shadow; 135 | background-clip: padding-box; 136 | 137 | &:hover:not(:disabled) { 138 | $base-color-hover: adjust-color($base-color, $saturation: -4%, $lightness: -5%); 139 | $inset-shadow-hover: adjust-color($base-color, $saturation: -7%, $lightness: 5%); 140 | $stop-gradient-hover: adjust-color($base-color, $saturation: 8%, $lightness: -14%); 141 | 142 | @if $grayscale == true { 143 | $base-color-hover: grayscale($base-color-hover); 144 | $inset-shadow-hover: grayscale($inset-shadow-hover); 145 | $stop-gradient-hover: grayscale($stop-gradient-hover); 146 | } 147 | 148 | @include linear-gradient ($base-color-hover, $stop-gradient-hover); 149 | 150 | box-shadow: inset 0 1px 0 0 $inset-shadow-hover; 151 | cursor: pointer; 152 | } 153 | 154 | &:active:not(:disabled), 155 | &:focus:not(:disabled) { 156 | $border-active: adjust-color($base-color, $saturation: 9%, $lightness: -14%); 157 | $inset-shadow-active: adjust-color($base-color, $saturation: 7%, $lightness: -17%); 158 | 159 | @if $grayscale == true { 160 | $border-active: grayscale($border-active); 161 | $inset-shadow-active: grayscale($inset-shadow-active); 162 | } 163 | 164 | border: 1px solid $border-active; 165 | box-shadow: inset 0 0 8px 4px $inset-shadow-active, inset 0 0 8px 4px $inset-shadow-active; 166 | } 167 | } 168 | 169 | // Shiny Button 170 | @mixin shiny($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) { 171 | $color: hsl(0, 0, 100%); 172 | $border: adjust-color($base-color, $red: -117, $green: -111, $blue: -81); 173 | $border-bottom: adjust-color($base-color, $red: -126, $green: -127, $blue: -122); 174 | $fourth-stop: adjust-color($base-color, $red: -79, $green: -70, $blue: -46); 175 | $inset-shadow: adjust-color($base-color, $red: 37, $green: 29, $blue: 12); 176 | $second-stop: adjust-color($base-color, $red: -56, $green: -50, $blue: -33); 177 | $text-shadow: adjust-color($base-color, $red: -140, $green: -141, $blue: -114); 178 | $third-stop: adjust-color($base-color, $red: -86, $green: -75, $blue: -48); 179 | 180 | @if is-light($base-color) { 181 | $color: hsl(0, 0, 20%); 182 | $text-shadow: adjust-color($base-color, $saturation: 10%, $lightness: 4%); 183 | } 184 | 185 | @if $grayscale == true { 186 | $border: grayscale($border); 187 | $border-bottom: grayscale($border-bottom); 188 | $fourth-stop: grayscale($fourth-stop); 189 | $inset-shadow: grayscale($inset-shadow); 190 | $second-stop: grayscale($second-stop); 191 | $text-shadow: grayscale($text-shadow); 192 | $third-stop: grayscale($third-stop); 193 | } 194 | 195 | @include linear-gradient(top, $base-color 0%, $second-stop 50%, $third-stop 50%, $fourth-stop 100%); 196 | 197 | border: 1px solid $border; 198 | border-bottom: 1px solid $border-bottom; 199 | border-radius: 5px; 200 | box-shadow: inset 0 1px 0 0 $inset-shadow; 201 | color: $color; 202 | display: inline-block; 203 | font-size: $textsize; 204 | font-weight: bold; 205 | padding: $padding; 206 | text-align: center; 207 | text-decoration: none; 208 | text-shadow: 0 -1px 1px $text-shadow; 209 | 210 | &:hover:not(:disabled) { 211 | $first-stop-hover: adjust-color($base-color, $red: -13, $green: -15, $blue: -18); 212 | $second-stop-hover: adjust-color($base-color, $red: -66, $green: -62, $blue: -51); 213 | $third-stop-hover: adjust-color($base-color, $red: -93, $green: -85, $blue: -66); 214 | $fourth-stop-hover: adjust-color($base-color, $red: -86, $green: -80, $blue: -63); 215 | 216 | @if $grayscale == true { 217 | $first-stop-hover: grayscale($first-stop-hover); 218 | $second-stop-hover: grayscale($second-stop-hover); 219 | $third-stop-hover: grayscale($third-stop-hover); 220 | $fourth-stop-hover: grayscale($fourth-stop-hover); 221 | } 222 | 223 | @include linear-gradient(top, $first-stop-hover 0%, 224 | $second-stop-hover 50%, 225 | $third-stop-hover 50%, 226 | $fourth-stop-hover 100%); 227 | cursor: pointer; 228 | } 229 | 230 | &:active:not(:disabled), 231 | &:focus:not(:disabled) { 232 | $inset-shadow-active: adjust-color($base-color, $red: -111, $green: -116, $blue: -122); 233 | 234 | @if $grayscale == true { 235 | $inset-shadow-active: grayscale($inset-shadow-active); 236 | } 237 | 238 | box-shadow: inset 0 0 20px 0 $inset-shadow-active; 239 | } 240 | } 241 | 242 | // Pill Button 243 | @mixin pill($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) { 244 | $color: hsl(0, 0, 100%); 245 | $border-bottom: adjust-color($base-color, $hue: 8, $saturation: -11%, $lightness: -26%); 246 | $border-sides: adjust-color($base-color, $hue: 4, $saturation: -21%, $lightness: -21%); 247 | $border-top: adjust-color($base-color, $hue: -1, $saturation: -30%, $lightness: -15%); 248 | $inset-shadow: adjust-color($base-color, $hue: -1, $saturation: -1%, $lightness: 7%); 249 | $stop-gradient: adjust-color($base-color, $hue: 8, $saturation: 14%, $lightness: -10%); 250 | $text-shadow: adjust-color($base-color, $hue: 5, $saturation: -19%, $lightness: -15%); 251 | 252 | @if is-light($base-color) { 253 | $color: hsl(0, 0, 20%); 254 | $text-shadow: adjust-color($base-color, $saturation: 10%, $lightness: 4%); 255 | } 256 | 257 | @if $grayscale == true { 258 | $border-bottom: grayscale($border-bottom); 259 | $border-sides: grayscale($border-sides); 260 | $border-top: grayscale($border-top); 261 | $inset-shadow: grayscale($inset-shadow); 262 | $stop-gradient: grayscale($stop-gradient); 263 | $text-shadow: grayscale($text-shadow); 264 | } 265 | 266 | border: 1px solid $border-top; 267 | border-color: $border-top $border-sides $border-bottom; 268 | border-radius: 16px; 269 | box-shadow: inset 0 1px 0 0 $inset-shadow; 270 | color: $color; 271 | display: inline-block; 272 | font-size: $textsize; 273 | font-weight: normal; 274 | line-height: 1; 275 | @include linear-gradient ($base-color, $stop-gradient); 276 | padding: $padding; 277 | text-align: center; 278 | text-decoration: none; 279 | text-shadow: 0 -1px 1px $text-shadow; 280 | background-clip: padding-box; 281 | 282 | &:hover:not(:disabled) { 283 | $base-color-hover: adjust-color($base-color, $lightness: -4.5%); 284 | $border-bottom: adjust-color($base-color, $hue: 8, $saturation: 13.5%, $lightness: -32%); 285 | $border-sides: adjust-color($base-color, $hue: 4, $saturation: -2%, $lightness: -27%); 286 | $border-top: adjust-color($base-color, $hue: -1, $saturation: -17%, $lightness: -21%); 287 | $inset-shadow-hover: adjust-color($base-color, $saturation: -1%, $lightness: 3%); 288 | $stop-gradient-hover: adjust-color($base-color, $hue: 8, $saturation: -4%, $lightness: -15.5%); 289 | $text-shadow-hover: adjust-color($base-color, $hue: 5, $saturation: -5%, $lightness: -22%); 290 | 291 | @if $grayscale == true { 292 | $base-color-hover: grayscale($base-color-hover); 293 | $border-bottom: grayscale($border-bottom); 294 | $border-sides: grayscale($border-sides); 295 | $border-top: grayscale($border-top); 296 | $inset-shadow-hover: grayscale($inset-shadow-hover); 297 | $stop-gradient-hover: grayscale($stop-gradient-hover); 298 | $text-shadow-hover: grayscale($text-shadow-hover); 299 | } 300 | 301 | @include linear-gradient ($base-color-hover, $stop-gradient-hover); 302 | 303 | background-clip: padding-box; 304 | border: 1px solid $border-top; 305 | border-color: $border-top $border-sides $border-bottom; 306 | box-shadow: inset 0 1px 0 0 $inset-shadow-hover; 307 | cursor: pointer; 308 | text-shadow: 0 -1px 1px $text-shadow-hover; 309 | } 310 | 311 | &:active:not(:disabled), 312 | &:focus:not(:disabled) { 313 | $active-color: adjust-color($base-color, $hue: 4, $saturation: -12%, $lightness: -10%); 314 | $border-active: adjust-color($base-color, $hue: 6, $saturation: -2.5%, $lightness: -30%); 315 | $border-bottom-active: adjust-color($base-color, $hue: 11, $saturation: 6%, $lightness: -31%); 316 | $inset-shadow-active: adjust-color($base-color, $hue: 9, $saturation: 2%, $lightness: -21.5%); 317 | $text-shadow-active: adjust-color($base-color, $hue: 5, $saturation: -12%, $lightness: -21.5%); 318 | 319 | @if $grayscale == true { 320 | $active-color: grayscale($active-color); 321 | $border-active: grayscale($border-active); 322 | $border-bottom-active: grayscale($border-bottom-active); 323 | $inset-shadow-active: grayscale($inset-shadow-active); 324 | $text-shadow-active: grayscale($text-shadow-active); 325 | } 326 | 327 | background: $active-color; 328 | border: 1px solid $border-active; 329 | border-bottom: 1px solid $border-bottom-active; 330 | box-shadow: inset 0 0 6px 3px $inset-shadow-active; 331 | text-shadow: 0 -1px 1px $text-shadow-active; 332 | } 333 | } 334 | 335 | // Flat Button 336 | @mixin flat($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) { 337 | $color: hsl(0, 0, 100%); 338 | 339 | @if is-light($base-color) { 340 | $color: hsl(0, 0, 20%); 341 | } 342 | 343 | background-color: $base-color; 344 | border-radius: 3px; 345 | border: 0; 346 | color: $color; 347 | display: inline-block; 348 | font-size: $textsize; 349 | font-weight: bold; 350 | padding: $padding; 351 | text-decoration: none; 352 | background-clip: padding-box; 353 | 354 | &:hover:not(:disabled){ 355 | $base-color-hover: adjust-color($base-color, $saturation: 4%, $lightness: 5%); 356 | 357 | @if $grayscale == true { 358 | $base-color-hover: grayscale($base-color-hover); 359 | } 360 | 361 | background-color: $base-color-hover; 362 | cursor: pointer; 363 | } 364 | 365 | &:active:not(:disabled), 366 | &:focus:not(:disabled) { 367 | $base-color-active: adjust-color($base-color, $saturation: -4%, $lightness: -5%); 368 | 369 | @if $grayscale == true { 370 | $base-color-active: grayscale($base-color-active); 371 | } 372 | 373 | background-color: $base-color-active; 374 | cursor: pointer; 375 | } 376 | } 377 | 378 | // Flexible grid 379 | @function flex-grid($columns, $container-columns: $fg-max-columns) { 380 | $width: $columns * $fg-column + ($columns - 1) * $fg-gutter; 381 | $container-width: $container-columns * $fg-column + ($container-columns - 1) * $fg-gutter; 382 | @return percentage($width / $container-width); 383 | 384 | @warn "The flex-grid function is deprecated and will be removed in the next major version release"; 385 | } 386 | 387 | // Flexible gutter 388 | @function flex-gutter($container-columns: $fg-max-columns, $gutter: $fg-gutter) { 389 | $container-width: $container-columns * $fg-column + ($container-columns - 1) * $fg-gutter; 390 | @return percentage($gutter / $container-width); 391 | 392 | @warn "The flex-gutter function is deprecated and will be removed in the next major version release"; 393 | } 394 | 395 | @function grid-width($n) { 396 | @return $n * $gw-column + ($n - 1) * $gw-gutter; 397 | 398 | @warn "The grid-width function is deprecated and will be removed in the next major version release"; 399 | } 400 | 401 | @function golden-ratio($value, $increment) { 402 | @return modular-scale($increment, $value, $ratio: $golden); 403 | 404 | @warn "The golden-ratio function is deprecated and will be removed in the next major version release. Please use the modular-scale function, instead."; 405 | } 406 | 407 | @mixin box-sizing($box) { 408 | @include prefixer(box-sizing, $box, webkit moz spec); 409 | 410 | @warn "The box-sizing mixin is deprecated and will be removed in the next major version release. This property can now be used un-prefixed."; 411 | } 412 | -------------------------------------------------------------------------------- /source/_scss/bourbon/_bourbon.scss: -------------------------------------------------------------------------------- 1 | // Bourbon 4.2.6 2 | // http://bourbon.io 3 | // Copyright 2011-2015 thoughtbot, inc. 4 | // MIT License 5 | 6 | @import "settings/prefixer"; 7 | @import "settings/px-to-em"; 8 | @import "settings/asset-pipeline"; 9 | 10 | @import "functions/assign-inputs"; 11 | @import "functions/contains"; 12 | @import "functions/contains-falsy"; 13 | @import "functions/is-length"; 14 | @import "functions/is-light"; 15 | @import "functions/is-number"; 16 | @import "functions/is-size"; 17 | @import "functions/px-to-em"; 18 | @import "functions/px-to-rem"; 19 | @import "functions/shade"; 20 | @import "functions/strip-units"; 21 | @import "functions/tint"; 22 | @import "functions/transition-property-name"; 23 | @import "functions/unpack"; 24 | @import "functions/modular-scale"; 25 | 26 | @import "helpers/convert-units"; 27 | @import "helpers/directional-values"; 28 | @import "helpers/font-source-declaration"; 29 | @import "helpers/gradient-positions-parser"; 30 | @import "helpers/linear-angle-parser"; 31 | @import "helpers/linear-gradient-parser"; 32 | @import "helpers/linear-positions-parser"; 33 | @import "helpers/linear-side-corner-parser"; 34 | @import "helpers/radial-arg-parser"; 35 | @import "helpers/radial-positions-parser"; 36 | @import "helpers/radial-gradient-parser"; 37 | @import "helpers/render-gradients"; 38 | @import "helpers/shape-size-stripper"; 39 | @import "helpers/str-to-num"; 40 | 41 | @import "css3/animation"; 42 | @import "css3/appearance"; 43 | @import "css3/backface-visibility"; 44 | @import "css3/background"; 45 | @import "css3/background-image"; 46 | @import "css3/border-image"; 47 | @import "css3/calc"; 48 | @import "css3/columns"; 49 | @import "css3/filter"; 50 | @import "css3/flex-box"; 51 | @import "css3/font-face"; 52 | @import "css3/font-feature-settings"; 53 | @import "css3/hidpi-media-query"; 54 | @import "css3/hyphens"; 55 | @import "css3/image-rendering"; 56 | @import "css3/keyframes"; 57 | @import "css3/linear-gradient"; 58 | @import "css3/perspective"; 59 | @import "css3/placeholder"; 60 | @import "css3/radial-gradient"; 61 | @import "css3/selection"; 62 | @import "css3/text-decoration"; 63 | @import "css3/transform"; 64 | @import "css3/transition"; 65 | @import "css3/user-select"; 66 | 67 | @import "addons/border-color"; 68 | @import "addons/border-radius"; 69 | @import "addons/border-style"; 70 | @import "addons/border-width"; 71 | @import "addons/buttons"; 72 | @import "addons/clearfix"; 73 | @import "addons/ellipsis"; 74 | @import "addons/font-stacks"; 75 | @import "addons/hide-text"; 76 | @import "addons/margin"; 77 | @import "addons/padding"; 78 | @import "addons/position"; 79 | @import "addons/prefixer"; 80 | @import "addons/retina-image"; 81 | @import "addons/size"; 82 | @import "addons/text-inputs"; 83 | @import "addons/timing-functions"; 84 | @import "addons/triangle"; 85 | @import "addons/word-wrap"; 86 | 87 | @import "bourbon-deprecated-upcoming"; 88 | -------------------------------------------------------------------------------- /source/_scss/bourbon/addons/_border-color.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Provides a quick method for targeting `border-color` on specific sides of a box. Use a `null` value to “skip” a side. 4 | /// 5 | /// @param {Arglist} $vals 6 | /// List of arguments 7 | /// 8 | /// @example scss - Usage 9 | /// .element { 10 | /// @include border-color(#a60b55 #76cd9c null #e8ae1a); 11 | /// } 12 | /// 13 | /// @example css - CSS Output 14 | /// .element { 15 | /// border-left-color: #e8ae1a; 16 | /// border-right-color: #76cd9c; 17 | /// border-top-color: #a60b55; 18 | /// } 19 | /// 20 | /// @require {mixin} directional-property 21 | /// 22 | /// @output `border-color` 23 | 24 | @mixin border-color($vals...) { 25 | @include directional-property(border, color, $vals...); 26 | } 27 | -------------------------------------------------------------------------------- /source/_scss/bourbon/addons/_border-radius.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Provides a quick method for targeting `border-radius` on both corners on the side of a box. 4 | /// 5 | /// @param {Number} $radii 6 | /// List of arguments 7 | /// 8 | /// @example scss - Usage 9 | /// .element-one { 10 | /// @include border-top-radius(5px); 11 | /// } 12 | /// 13 | /// .element-two { 14 | /// @include border-left-radius(3px); 15 | /// } 16 | /// 17 | /// @example css - CSS Output 18 | /// .element-one { 19 | /// border-top-left-radius: 5px; 20 | /// border-top-right-radius: 5px; 21 | /// } 22 | /// 23 | /// .element-two { 24 | /// border-bottom-left-radius: 3px; 25 | /// border-top-left-radius: 3px; 26 | /// } 27 | /// 28 | /// @output `border-radius` 29 | 30 | @mixin border-top-radius($radii) { 31 | border-top-left-radius: $radii; 32 | border-top-right-radius: $radii; 33 | } 34 | 35 | @mixin border-right-radius($radii) { 36 | border-bottom-right-radius: $radii; 37 | border-top-right-radius: $radii; 38 | } 39 | 40 | @mixin border-bottom-radius($radii) { 41 | border-bottom-left-radius: $radii; 42 | border-bottom-right-radius: $radii; 43 | } 44 | 45 | @mixin border-left-radius($radii) { 46 | border-bottom-left-radius: $radii; 47 | border-top-left-radius: $radii; 48 | } 49 | -------------------------------------------------------------------------------- /source/_scss/bourbon/addons/_border-style.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Provides a quick method for targeting `border-style` on specific sides of a box. Use a `null` value to “skip” a side. 4 | /// 5 | /// @param {Arglist} $vals 6 | /// List of arguments 7 | /// 8 | /// @example scss - Usage 9 | /// .element { 10 | /// @include border-style(dashed null solid); 11 | /// } 12 | /// 13 | /// @example css - CSS Output 14 | /// .element { 15 | /// border-bottom-style: solid; 16 | /// border-top-style: dashed; 17 | /// } 18 | /// 19 | /// @require {mixin} directional-property 20 | /// 21 | /// @output `border-style` 22 | 23 | @mixin border-style($vals...) { 24 | @include directional-property(border, style, $vals...); 25 | } 26 | -------------------------------------------------------------------------------- /source/_scss/bourbon/addons/_border-width.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Provides a quick method for targeting `border-width` on specific sides of a box. Use a `null` value to “skip” a side. 4 | /// 5 | /// @param {Arglist} $vals 6 | /// List of arguments 7 | /// 8 | /// @example scss - Usage 9 | /// .element { 10 | /// @include border-width(1em null 20px); 11 | /// } 12 | /// 13 | /// @example css - CSS Output 14 | /// .element { 15 | /// border-bottom-width: 20px; 16 | /// border-top-width: 1em; 17 | /// } 18 | /// 19 | /// @require {mixin} directional-property 20 | /// 21 | /// @output `border-width` 22 | 23 | @mixin border-width($vals...) { 24 | @include directional-property(border, width, $vals...); 25 | } 26 | -------------------------------------------------------------------------------- /source/_scss/bourbon/addons/_buttons.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Generates variables for all buttons. Please note that you must use interpolation on the variable: `#{$all-buttons}`. 4 | /// 5 | /// @example scss - Usage 6 | /// #{$all-buttons} { 7 | /// background-color: #f00; 8 | /// } 9 | /// 10 | /// #{$all-buttons-focus}, 11 | /// #{$all-buttons-hover} { 12 | /// background-color: #0f0; 13 | /// } 14 | /// 15 | /// #{$all-buttons-active} { 16 | /// background-color: #00f; 17 | /// } 18 | /// 19 | /// @example css - CSS Output 20 | /// button, 21 | /// input[type="button"], 22 | /// input[type="reset"], 23 | /// input[type="submit"] { 24 | /// background-color: #f00; 25 | /// } 26 | /// 27 | /// button:focus, 28 | /// input[type="button"]:focus, 29 | /// input[type="reset"]:focus, 30 | /// input[type="submit"]:focus, 31 | /// button:hover, 32 | /// input[type="button"]:hover, 33 | /// input[type="reset"]:hover, 34 | /// input[type="submit"]:hover { 35 | /// background-color: #0f0; 36 | /// } 37 | /// 38 | /// button:active, 39 | /// input[type="button"]:active, 40 | /// input[type="reset"]:active, 41 | /// input[type="submit"]:active { 42 | /// background-color: #00f; 43 | /// } 44 | /// 45 | /// @require assign-inputs 46 | /// 47 | /// @type List 48 | /// 49 | /// @todo Remove double assigned variables (Lines 59–62) in v5.0.0 50 | 51 | $buttons-list: 'button', 52 | 'input[type="button"]', 53 | 'input[type="reset"]', 54 | 'input[type="submit"]'; 55 | 56 | $all-buttons: assign-inputs($buttons-list); 57 | $all-buttons-active: assign-inputs($buttons-list, active); 58 | $all-buttons-focus: assign-inputs($buttons-list, focus); 59 | $all-buttons-hover: assign-inputs($buttons-list, hover); 60 | 61 | $all-button-inputs: $all-buttons; 62 | $all-button-inputs-active: $all-buttons-active; 63 | $all-button-inputs-focus: $all-buttons-focus; 64 | $all-button-inputs-hover: $all-buttons-hover; 65 | -------------------------------------------------------------------------------- /source/_scss/bourbon/addons/_clearfix.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Provides an easy way to include a clearfix for containing floats. 4 | /// 5 | /// @link http://cssmojo.com/latest_new_clearfix_so_far/ 6 | /// 7 | /// @example scss - Usage 8 | /// .element { 9 | /// @include clearfix; 10 | /// } 11 | /// 12 | /// @example css - CSS Output 13 | /// .element::after { 14 | /// clear: both; 15 | /// content: ""; 16 | /// display: table; 17 | /// } 18 | 19 | @mixin clearfix { 20 | &::after { 21 | clear: both; 22 | content: ""; 23 | display: table; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /source/_scss/bourbon/addons/_ellipsis.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Truncates text and adds an ellipsis to represent overflow. 4 | /// 5 | /// @param {Number} $width [100%] 6 | /// Max-width for the string to respect before being truncated 7 | /// 8 | /// @example scss - Usage 9 | /// .element { 10 | /// @include ellipsis; 11 | /// } 12 | /// 13 | /// @example css - CSS Output 14 | /// .element { 15 | /// display: inline-block; 16 | /// max-width: 100%; 17 | /// overflow: hidden; 18 | /// text-overflow: ellipsis; 19 | /// white-space: nowrap; 20 | /// word-wrap: normal; 21 | /// } 22 | 23 | @mixin ellipsis($width: 100%) { 24 | display: inline-block; 25 | max-width: $width; 26 | overflow: hidden; 27 | text-overflow: ellipsis; 28 | white-space: nowrap; 29 | word-wrap: normal; 30 | } 31 | -------------------------------------------------------------------------------- /source/_scss/bourbon/addons/_font-stacks.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Georgia font stack. 4 | /// 5 | /// @type List 6 | 7 | $georgia: "Georgia", "Cambria", "Times New Roman", "Times", serif; 8 | 9 | /// Helvetica font stack. 10 | /// 11 | /// @type List 12 | 13 | $helvetica: "Helvetica Neue", "Helvetica", "Roboto", "Arial", sans-serif; 14 | 15 | /// Lucida Grande font stack. 16 | /// 17 | /// @type List 18 | 19 | $lucida-grande: "Lucida Grande", "Tahoma", "Verdana", "Arial", sans-serif; 20 | 21 | /// Monospace font stack. 22 | /// 23 | /// @type List 24 | 25 | $monospace: "Bitstream Vera Sans Mono", "Consolas", "Courier", monospace; 26 | 27 | /// Verdana font stack. 28 | /// 29 | /// @type List 30 | 31 | $verdana: "Verdana", "Geneva", sans-serif; 32 | -------------------------------------------------------------------------------- /source/_scss/bourbon/addons/_hide-text.scss: -------------------------------------------------------------------------------- 1 | /// Hides the text in an element, commonly used to show an image. Some elements will need block-level styles applied. 2 | /// 3 | /// @link http://zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement 4 | /// 5 | /// @example scss - Usage 6 | /// .element { 7 | /// @include hide-text; 8 | /// } 9 | /// 10 | /// @example css - CSS Output 11 | /// .element { 12 | /// overflow: hidden; 13 | /// text-indent: 101%; 14 | /// white-space: nowrap; 15 | /// } 16 | /// 17 | /// @todo Remove height argument in v5.0.0 18 | 19 | @mixin hide-text($height: null) { 20 | overflow: hidden; 21 | text-indent: 101%; 22 | white-space: nowrap; 23 | 24 | @if $height { 25 | @warn "The `hide-text` mixin has changed and no longer requires a height. The height argument will no longer be accepted in v5.0.0"; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /source/_scss/bourbon/addons/_margin.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Provides a quick method for targeting `margin` on specific sides of a box. Use a `null` value to “skip” a side. 4 | /// 5 | /// @param {Arglist} $vals 6 | /// List of arguments 7 | /// 8 | /// @example scss - Usage 9 | /// .element { 10 | /// @include margin(null 10px 3em 20vh); 11 | /// } 12 | /// 13 | /// @example css - CSS Output 14 | /// .element { 15 | /// margin-bottom: 3em; 16 | /// margin-left: 20vh; 17 | /// margin-right: 10px; 18 | /// } 19 | /// 20 | /// @require {mixin} directional-property 21 | /// 22 | /// @output `margin` 23 | 24 | @mixin margin($vals...) { 25 | @include directional-property(margin, false, $vals...); 26 | } 27 | -------------------------------------------------------------------------------- /source/_scss/bourbon/addons/_padding.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Provides a quick method for targeting `padding` on specific sides of a box. Use a `null` value to “skip” a side. 4 | /// 5 | /// @param {Arglist} $vals 6 | /// List of arguments 7 | /// 8 | /// @example scss - Usage 9 | /// .element { 10 | /// @include padding(12vh null 10px 5%); 11 | /// } 12 | /// 13 | /// @example css - CSS Output 14 | /// .element { 15 | /// padding-bottom: 10px; 16 | /// padding-left: 5%; 17 | /// padding-top: 12vh; 18 | /// } 19 | /// 20 | /// @require {mixin} directional-property 21 | /// 22 | /// @output `padding` 23 | 24 | @mixin padding($vals...) { 25 | @include directional-property(padding, false, $vals...); 26 | } 27 | -------------------------------------------------------------------------------- /source/_scss/bourbon/addons/_position.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Provides a quick method for setting an element’s position. Use a `null` value to “skip” a side. 4 | /// 5 | /// @param {Position} $position [relative] 6 | /// A CSS position value 7 | /// 8 | /// @param {Arglist} $coordinates [null null null null] 9 | /// List of values that correspond to the 4-value syntax for the edges of a box 10 | /// 11 | /// @example scss - Usage 12 | /// .element { 13 | /// @include position(absolute, 0 null null 10em); 14 | /// } 15 | /// 16 | /// @example css - CSS Output 17 | /// .element { 18 | /// left: 10em; 19 | /// position: absolute; 20 | /// top: 0; 21 | /// } 22 | /// 23 | /// @require {function} is-length 24 | /// @require {function} unpack 25 | 26 | @mixin position($position: relative, $coordinates: null null null null) { 27 | @if type-of($position) == list { 28 | $coordinates: $position; 29 | $position: relative; 30 | } 31 | 32 | $coordinates: unpack($coordinates); 33 | 34 | $offsets: ( 35 | top: nth($coordinates, 1), 36 | right: nth($coordinates, 2), 37 | bottom: nth($coordinates, 3), 38 | left: nth($coordinates, 4) 39 | ); 40 | 41 | position: $position; 42 | 43 | @each $offset, $value in $offsets { 44 | @if is-length($value) { 45 | #{$offset}: $value; 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /source/_scss/bourbon/addons/_prefixer.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// A mixin for generating vendor prefixes on non-standardized properties. 4 | /// 5 | /// @param {String} $property 6 | /// Property to prefix 7 | /// 8 | /// @param {*} $value 9 | /// Value to use 10 | /// 11 | /// @param {List} $prefixes 12 | /// Prefixes to define 13 | /// 14 | /// @example scss - Usage 15 | /// .element { 16 | /// @include prefixer(border-radius, 10px, webkit ms spec); 17 | /// } 18 | /// 19 | /// @example css - CSS Output 20 | /// .element { 21 | /// -webkit-border-radius: 10px; 22 | /// -moz-border-radius: 10px; 23 | /// border-radius: 10px; 24 | /// } 25 | /// 26 | /// @require {variable} $prefix-for-webkit 27 | /// @require {variable} $prefix-for-mozilla 28 | /// @require {variable} $prefix-for-microsoft 29 | /// @require {variable} $prefix-for-opera 30 | /// @require {variable} $prefix-for-spec 31 | 32 | @mixin prefixer($property, $value, $prefixes) { 33 | @each $prefix in $prefixes { 34 | @if $prefix == webkit { 35 | @if $prefix-for-webkit { 36 | -webkit-#{$property}: $value; 37 | } 38 | } @else if $prefix == moz { 39 | @if $prefix-for-mozilla { 40 | -moz-#{$property}: $value; 41 | } 42 | } @else if $prefix == ms { 43 | @if $prefix-for-microsoft { 44 | -ms-#{$property}: $value; 45 | } 46 | } @else if $prefix == o { 47 | @if $prefix-for-opera { 48 | -o-#{$property}: $value; 49 | } 50 | } @else if $prefix == spec { 51 | @if $prefix-for-spec { 52 | #{$property}: $value; 53 | } 54 | } @else { 55 | @warn "Unrecognized prefix: #{$prefix}"; 56 | } 57 | } 58 | } 59 | 60 | @mixin disable-prefix-for-all() { 61 | $prefix-for-webkit: false !global; 62 | $prefix-for-mozilla: false !global; 63 | $prefix-for-microsoft: false !global; 64 | $prefix-for-opera: false !global; 65 | $prefix-for-spec: false !global; 66 | } 67 | -------------------------------------------------------------------------------- /source/_scss/bourbon/addons/_retina-image.scss: -------------------------------------------------------------------------------- 1 | @mixin retina-image($filename, $background-size, $extension: png, $retina-filename: null, $retina-suffix: _2x, $asset-pipeline: $asset-pipeline) { 2 | @if $asset-pipeline { 3 | background-image: image-url("#{$filename}.#{$extension}"); 4 | } @else { 5 | background-image: url("#{$filename}.#{$extension}"); 6 | } 7 | 8 | @include hidpi { 9 | @if $asset-pipeline { 10 | @if $retina-filename { 11 | background-image: image-url("#{$retina-filename}.#{$extension}"); 12 | } @else { 13 | background-image: image-url("#{$filename}#{$retina-suffix}.#{$extension}"); 14 | } 15 | } @else { 16 | @if $retina-filename { 17 | background-image: url("#{$retina-filename}.#{$extension}"); 18 | } @else { 19 | background-image: url("#{$filename}#{$retina-suffix}.#{$extension}"); 20 | } 21 | } 22 | 23 | background-size: $background-size; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /source/_scss/bourbon/addons/_size.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Sets the `width` and `height` of the element. 4 | /// 5 | /// @param {List} $size 6 | /// A list of at most 2 size values. 7 | /// 8 | /// If there is only a single value in `$size` it is used for both width and height. All units are supported. 9 | /// 10 | /// @example scss - Usage 11 | /// .first-element { 12 | /// @include size(2em); 13 | /// } 14 | /// 15 | /// .second-element { 16 | /// @include size(auto 10em); 17 | /// } 18 | /// 19 | /// @example css - CSS Output 20 | /// .first-element { 21 | /// width: 2em; 22 | /// height: 2em; 23 | /// } 24 | /// 25 | /// .second-element { 26 | /// width: auto; 27 | /// height: 10em; 28 | /// } 29 | /// 30 | /// @todo Refactor in 5.0.0 to use a comma-separated argument 31 | 32 | @mixin size($value) { 33 | $width: nth($value, 1); 34 | $height: $width; 35 | 36 | @if length($value) > 1 { 37 | $height: nth($value, 2); 38 | } 39 | 40 | @if is-size($height) { 41 | height: $height; 42 | } @else { 43 | @warn "`#{$height}` is not a valid length for the `$height` parameter in the `size` mixin."; 44 | } 45 | 46 | @if is-size($width) { 47 | width: $width; 48 | } @else { 49 | @warn "`#{$width}` is not a valid length for the `$width` parameter in the `size` mixin."; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /source/_scss/bourbon/addons/_text-inputs.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Generates variables for all text-based inputs. Please note that you must use interpolation on the variable: `#{$all-text-inputs}`. 4 | /// 5 | /// @example scss - Usage 6 | /// #{$all-text-inputs} { 7 | /// border: 1px solid #f00; 8 | /// } 9 | /// 10 | /// #{$all-text-inputs-focus}, 11 | /// #{$all-text-inputs-hover} { 12 | /// border: 1px solid #0f0; 13 | /// } 14 | /// 15 | /// #{$all-text-inputs-active} { 16 | /// border: 1px solid #00f; 17 | /// } 18 | /// 19 | /// @example css - CSS Output 20 | /// input[type="color"], 21 | /// input[type="date"], 22 | /// input[type="datetime"], 23 | /// input[type="datetime-local"], 24 | /// input[type="email"], 25 | /// input[type="month"], 26 | /// input[type="number"], 27 | /// input[type="password"], 28 | /// input[type="search"], 29 | /// input[type="tel"], 30 | /// input[type="text"], 31 | /// input[type="time"], 32 | /// input[type="url"], 33 | /// input[type="week"], 34 | /// textarea { 35 | /// border: 1px solid #f00; 36 | /// } 37 | /// 38 | /// input[type="color"]:focus, 39 | /// input[type="date"]:focus, 40 | /// input[type="datetime"]:focus, 41 | /// input[type="datetime-local"]:focus, 42 | /// input[type="email"]:focus, 43 | /// input[type="month"]:focus, 44 | /// input[type="number"]:focus, 45 | /// input[type="password"]:focus, 46 | /// input[type="search"]:focus, 47 | /// input[type="tel"]:focus, 48 | /// input[type="text"]:focus, 49 | /// input[type="time"]:focus, 50 | /// input[type="url"]:focus, 51 | /// input[type="week"]:focus, 52 | /// textarea:focus, 53 | /// input[type="color"]:hover, 54 | /// input[type="date"]:hover, 55 | /// input[type="datetime"]:hover, 56 | /// input[type="datetime-local"]:hover, 57 | /// input[type="email"]:hover, 58 | /// input[type="month"]:hover, 59 | /// input[type="number"]:hover, 60 | /// input[type="password"]:hover, 61 | /// input[type="search"]:hover, 62 | /// input[type="tel"]:hover, 63 | /// input[type="text"]:hover, 64 | /// input[type="time"]:hover, 65 | /// input[type="url"]:hover, 66 | /// input[type="week"]:hover, 67 | /// textarea:hover { 68 | /// border: 1px solid #0f0; 69 | /// } 70 | /// 71 | /// input[type="color"]:active, 72 | /// input[type="date"]:active, 73 | /// input[type="datetime"]:active, 74 | /// input[type="datetime-local"]:active, 75 | /// input[type="email"]:active, 76 | /// input[type="month"]:active, 77 | /// input[type="number"]:active, 78 | /// input[type="password"]:active, 79 | /// input[type="search"]:active, 80 | /// input[type="tel"]:active, 81 | /// input[type="text"]:active, 82 | /// input[type="time"]:active, 83 | /// input[type="url"]:active, 84 | /// input[type="week"]:active, 85 | /// textarea:active { 86 | /// border: 1px solid #00f; 87 | /// } 88 | /// 89 | /// @require assign-inputs 90 | /// 91 | /// @type List 92 | 93 | $text-inputs-list: 'input[type="color"]', 94 | 'input[type="date"]', 95 | 'input[type="datetime"]', 96 | 'input[type="datetime-local"]', 97 | 'input[type="email"]', 98 | 'input[type="month"]', 99 | 'input[type="number"]', 100 | 'input[type="password"]', 101 | 'input[type="search"]', 102 | 'input[type="tel"]', 103 | 'input[type="text"]', 104 | 'input[type="time"]', 105 | 'input[type="url"]', 106 | 'input[type="week"]', 107 | 'input:not([type])', 108 | 'textarea'; 109 | 110 | $all-text-inputs: assign-inputs($text-inputs-list); 111 | $all-text-inputs-active: assign-inputs($text-inputs-list, active); 112 | $all-text-inputs-focus: assign-inputs($text-inputs-list, focus); 113 | $all-text-inputs-hover: assign-inputs($text-inputs-list, hover); 114 | -------------------------------------------------------------------------------- /source/_scss/bourbon/addons/_timing-functions.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// CSS cubic-bezier timing functions. Timing functions courtesy of jquery.easie (github.com/jaukia/easie) 4 | /// 5 | /// Timing functions are the same as demoed here: http://jqueryui.com/resources/demos/effect/easing.html 6 | /// 7 | /// @type cubic-bezier 8 | 9 | $ease-in-quad: cubic-bezier(0.550, 0.085, 0.680, 0.530); 10 | $ease-in-cubic: cubic-bezier(0.550, 0.055, 0.675, 0.190); 11 | $ease-in-quart: cubic-bezier(0.895, 0.030, 0.685, 0.220); 12 | $ease-in-quint: cubic-bezier(0.755, 0.050, 0.855, 0.060); 13 | $ease-in-sine: cubic-bezier(0.470, 0.000, 0.745, 0.715); 14 | $ease-in-expo: cubic-bezier(0.950, 0.050, 0.795, 0.035); 15 | $ease-in-circ: cubic-bezier(0.600, 0.040, 0.980, 0.335); 16 | $ease-in-back: cubic-bezier(0.600, -0.280, 0.735, 0.045); 17 | 18 | $ease-out-quad: cubic-bezier(0.250, 0.460, 0.450, 0.940); 19 | $ease-out-cubic: cubic-bezier(0.215, 0.610, 0.355, 1.000); 20 | $ease-out-quart: cubic-bezier(0.165, 0.840, 0.440, 1.000); 21 | $ease-out-quint: cubic-bezier(0.230, 1.000, 0.320, 1.000); 22 | $ease-out-sine: cubic-bezier(0.390, 0.575, 0.565, 1.000); 23 | $ease-out-expo: cubic-bezier(0.190, 1.000, 0.220, 1.000); 24 | $ease-out-circ: cubic-bezier(0.075, 0.820, 0.165, 1.000); 25 | $ease-out-back: cubic-bezier(0.175, 0.885, 0.320, 1.275); 26 | 27 | $ease-in-out-quad: cubic-bezier(0.455, 0.030, 0.515, 0.955); 28 | $ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1.000); 29 | $ease-in-out-quart: cubic-bezier(0.770, 0.000, 0.175, 1.000); 30 | $ease-in-out-quint: cubic-bezier(0.860, 0.000, 0.070, 1.000); 31 | $ease-in-out-sine: cubic-bezier(0.445, 0.050, 0.550, 0.950); 32 | $ease-in-out-expo: cubic-bezier(1.000, 0.000, 0.000, 1.000); 33 | $ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.150, 0.860); 34 | $ease-in-out-back: cubic-bezier(0.680, -0.550, 0.265, 1.550); 35 | -------------------------------------------------------------------------------- /source/_scss/bourbon/addons/_triangle.scss: -------------------------------------------------------------------------------- 1 | @mixin triangle($size, $color, $direction) { 2 | $width: nth($size, 1); 3 | $height: nth($size, length($size)); 4 | $foreground-color: nth($color, 1); 5 | $background-color: if(length($color) == 2, nth($color, 2), transparent); 6 | height: 0; 7 | width: 0; 8 | 9 | @if ($direction == up) or ($direction == down) or ($direction == right) or ($direction == left) { 10 | $width: $width / 2; 11 | $height: if(length($size) > 1, $height, $height/2); 12 | 13 | @if $direction == up { 14 | border-bottom: $height solid $foreground-color; 15 | border-left: $width solid $background-color; 16 | border-right: $width solid $background-color; 17 | } @else if $direction == right { 18 | border-bottom: $width solid $background-color; 19 | border-left: $height solid $foreground-color; 20 | border-top: $width solid $background-color; 21 | } @else if $direction == down { 22 | border-left: $width solid $background-color; 23 | border-right: $width solid $background-color; 24 | border-top: $height solid $foreground-color; 25 | } @else if $direction == left { 26 | border-bottom: $width solid $background-color; 27 | border-right: $height solid $foreground-color; 28 | border-top: $width solid $background-color; 29 | } 30 | } @else if ($direction == up-right) or ($direction == up-left) { 31 | border-top: $height solid $foreground-color; 32 | 33 | @if $direction == up-right { 34 | border-left: $width solid $background-color; 35 | } @else if $direction == up-left { 36 | border-right: $width solid $background-color; 37 | } 38 | } @else if ($direction == down-right) or ($direction == down-left) { 39 | border-bottom: $height solid $foreground-color; 40 | 41 | @if $direction == down-right { 42 | border-left: $width solid $background-color; 43 | } @else if $direction == down-left { 44 | border-right: $width solid $background-color; 45 | } 46 | } @else if ($direction == inset-up) { 47 | border-color: $background-color $background-color $foreground-color; 48 | border-style: solid; 49 | border-width: $height $width; 50 | } @else if ($direction == inset-down) { 51 | border-color: $foreground-color $background-color $background-color; 52 | border-style: solid; 53 | border-width: $height $width; 54 | } @else if ($direction == inset-right) { 55 | border-color: $background-color $background-color $background-color $foreground-color; 56 | border-style: solid; 57 | border-width: $width $height; 58 | } @else if ($direction == inset-left) { 59 | border-color: $background-color $foreground-color $background-color $background-color; 60 | border-style: solid; 61 | border-width: $width $height; 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /source/_scss/bourbon/addons/_word-wrap.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Provides an easy way to change the `word-wrap` property. 4 | /// 5 | /// @param {String} $wrap [break-word] 6 | /// Value for the `word-break` property. 7 | /// 8 | /// @example scss - Usage 9 | /// .wrapper { 10 | /// @include word-wrap(break-word); 11 | /// } 12 | /// 13 | /// @example css - CSS Output 14 | /// .wrapper { 15 | /// overflow-wrap: break-word; 16 | /// word-break: break-all; 17 | /// word-wrap: break-word; 18 | /// } 19 | 20 | @mixin word-wrap($wrap: break-word) { 21 | overflow-wrap: $wrap; 22 | word-wrap: $wrap; 23 | 24 | @if $wrap == break-word { 25 | word-break: break-all; 26 | } @else { 27 | word-break: $wrap; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /source/_scss/bourbon/css3/_animation.scss: -------------------------------------------------------------------------------- 1 | // http://www.w3.org/TR/css3-animations/#the-animation-name-property- 2 | // Each of these mixins support comma separated lists of values, which allows different transitions for individual properties to be described in a single style rule. Each value in the list corresponds to the value at that same position in the other properties. 3 | 4 | @mixin animation($animations...) { 5 | @include prefixer(animation, $animations, webkit moz spec); 6 | } 7 | 8 | @mixin animation-name($names...) { 9 | @include prefixer(animation-name, $names, webkit moz spec); 10 | } 11 | 12 | @mixin animation-duration($times...) { 13 | @include prefixer(animation-duration, $times, webkit moz spec); 14 | } 15 | 16 | @mixin animation-timing-function($motions...) { 17 | // ease | linear | ease-in | ease-out | ease-in-out 18 | @include prefixer(animation-timing-function, $motions, webkit moz spec); 19 | } 20 | 21 | @mixin animation-iteration-count($values...) { 22 | // infinite | 23 | @include prefixer(animation-iteration-count, $values, webkit moz spec); 24 | } 25 | 26 | @mixin animation-direction($directions...) { 27 | // normal | alternate 28 | @include prefixer(animation-direction, $directions, webkit moz spec); 29 | } 30 | 31 | @mixin animation-play-state($states...) { 32 | // running | paused 33 | @include prefixer(animation-play-state, $states, webkit moz spec); 34 | } 35 | 36 | @mixin animation-delay($times...) { 37 | @include prefixer(animation-delay, $times, webkit moz spec); 38 | } 39 | 40 | @mixin animation-fill-mode($modes...) { 41 | // none | forwards | backwards | both 42 | @include prefixer(animation-fill-mode, $modes, webkit moz spec); 43 | } 44 | -------------------------------------------------------------------------------- /source/_scss/bourbon/css3/_appearance.scss: -------------------------------------------------------------------------------- 1 | @mixin appearance($value) { 2 | @include prefixer(appearance, $value, webkit moz ms o spec); 3 | } 4 | -------------------------------------------------------------------------------- /source/_scss/bourbon/css3/_backface-visibility.scss: -------------------------------------------------------------------------------- 1 | @mixin backface-visibility($visibility) { 2 | @include prefixer(backface-visibility, $visibility, webkit spec); 3 | } 4 | -------------------------------------------------------------------------------- /source/_scss/bourbon/css3/_background-image.scss: -------------------------------------------------------------------------------- 1 | //************************************************************************// 2 | // Background-image property for adding multiple background images with 3 | // gradients, or for stringing multiple gradients together. 4 | //************************************************************************// 5 | 6 | @mixin background-image($images...) { 7 | $webkit-images: (); 8 | $spec-images: (); 9 | 10 | @each $image in $images { 11 | $webkit-image: (); 12 | $spec-image: (); 13 | 14 | @if (type-of($image) == string) { 15 | $url-str: str-slice($image, 1, 3); 16 | $gradient-type: str-slice($image, 1, 6); 17 | 18 | @if $url-str == "url" { 19 | $webkit-image: $image; 20 | $spec-image: $image; 21 | } 22 | 23 | @else if $gradient-type == "linear" { 24 | $gradients: _linear-gradient-parser($image); 25 | $webkit-image: map-get($gradients, webkit-image); 26 | $spec-image: map-get($gradients, spec-image); 27 | } 28 | 29 | @else if $gradient-type == "radial" { 30 | $gradients: _radial-gradient-parser($image); 31 | $webkit-image: map-get($gradients, webkit-image); 32 | $spec-image: map-get($gradients, spec-image); 33 | } 34 | } 35 | 36 | $webkit-images: append($webkit-images, $webkit-image, comma); 37 | $spec-images: append($spec-images, $spec-image, comma); 38 | } 39 | 40 | background-image: $webkit-images; 41 | background-image: $spec-images; 42 | } 43 | -------------------------------------------------------------------------------- /source/_scss/bourbon/css3/_background.scss: -------------------------------------------------------------------------------- 1 | //************************************************************************// 2 | // Background property for adding multiple backgrounds using shorthand 3 | // notation. 4 | //************************************************************************// 5 | 6 | @mixin background($backgrounds...) { 7 | $webkit-backgrounds: (); 8 | $spec-backgrounds: (); 9 | 10 | @each $background in $backgrounds { 11 | $webkit-background: (); 12 | $spec-background: (); 13 | $background-type: type-of($background); 14 | 15 | @if $background-type == string or $background-type == list { 16 | $background-str: if($background-type == list, nth($background, 1), $background); 17 | 18 | $url-str: str-slice($background-str, 1, 3); 19 | $gradient-type: str-slice($background-str, 1, 6); 20 | 21 | @if $url-str == "url" { 22 | $webkit-background: $background; 23 | $spec-background: $background; 24 | } 25 | 26 | @else if $gradient-type == "linear" { 27 | $gradients: _linear-gradient-parser("#{$background}"); 28 | $webkit-background: map-get($gradients, webkit-image); 29 | $spec-background: map-get($gradients, spec-image); 30 | } 31 | 32 | @else if $gradient-type == "radial" { 33 | $gradients: _radial-gradient-parser("#{$background}"); 34 | $webkit-background: map-get($gradients, webkit-image); 35 | $spec-background: map-get($gradients, spec-image); 36 | } 37 | 38 | @else { 39 | $webkit-background: $background; 40 | $spec-background: $background; 41 | } 42 | } 43 | 44 | @else { 45 | $webkit-background: $background; 46 | $spec-background: $background; 47 | } 48 | 49 | $webkit-backgrounds: append($webkit-backgrounds, $webkit-background, comma); 50 | $spec-backgrounds: append($spec-backgrounds, $spec-background, comma); 51 | } 52 | 53 | background: $webkit-backgrounds; 54 | background: $spec-backgrounds; 55 | } 56 | -------------------------------------------------------------------------------- /source/_scss/bourbon/css3/_border-image.scss: -------------------------------------------------------------------------------- 1 | @mixin border-image($borders...) { 2 | $webkit-borders: (); 3 | $spec-borders: (); 4 | 5 | @each $border in $borders { 6 | $webkit-border: (); 7 | $spec-border: (); 8 | $border-type: type-of($border); 9 | 10 | @if $border-type == string or list { 11 | $border-str: if($border-type == list, nth($border, 1), $border); 12 | 13 | $url-str: str-slice($border-str, 1, 3); 14 | $gradient-type: str-slice($border-str, 1, 6); 15 | 16 | @if $url-str == "url" { 17 | $webkit-border: $border; 18 | $spec-border: $border; 19 | } 20 | 21 | @else if $gradient-type == "linear" { 22 | $gradients: _linear-gradient-parser("#{$border}"); 23 | $webkit-border: map-get($gradients, webkit-image); 24 | $spec-border: map-get($gradients, spec-image); 25 | } 26 | 27 | @else if $gradient-type == "radial" { 28 | $gradients: _radial-gradient-parser("#{$border}"); 29 | $webkit-border: map-get($gradients, webkit-image); 30 | $spec-border: map-get($gradients, spec-image); 31 | } 32 | 33 | @else { 34 | $webkit-border: $border; 35 | $spec-border: $border; 36 | } 37 | } 38 | 39 | @else { 40 | $webkit-border: $border; 41 | $spec-border: $border; 42 | } 43 | 44 | $webkit-borders: append($webkit-borders, $webkit-border, comma); 45 | $spec-borders: append($spec-borders, $spec-border, comma); 46 | } 47 | 48 | -webkit-border-image: $webkit-borders; 49 | border-image: $spec-borders; 50 | border-style: solid; 51 | } 52 | 53 | //Examples: 54 | // @include border-image(url("image.png")); 55 | // @include border-image(url("image.png") 20 stretch); 56 | // @include border-image(linear-gradient(45deg, orange, yellow)); 57 | // @include border-image(linear-gradient(45deg, orange, yellow) stretch); 58 | // @include border-image(linear-gradient(45deg, orange, yellow) 20 30 40 50 stretch round); 59 | // @include border-image(radial-gradient(top, cover, orange, yellow, orange)); 60 | -------------------------------------------------------------------------------- /source/_scss/bourbon/css3/_calc.scss: -------------------------------------------------------------------------------- 1 | @mixin calc($property, $value) { 2 | #{$property}: -webkit-calc(#{$value}); 3 | #{$property}: calc(#{$value}); 4 | } 5 | -------------------------------------------------------------------------------- /source/_scss/bourbon/css3/_columns.scss: -------------------------------------------------------------------------------- 1 | @mixin columns($arg: auto) { 2 | // || 3 | @include prefixer(columns, $arg, webkit moz spec); 4 | } 5 | 6 | @mixin column-count($int: auto) { 7 | // auto || integer 8 | @include prefixer(column-count, $int, webkit moz spec); 9 | } 10 | 11 | @mixin column-gap($length: normal) { 12 | // normal || length 13 | @include prefixer(column-gap, $length, webkit moz spec); 14 | } 15 | 16 | @mixin column-fill($arg: auto) { 17 | // auto || length 18 | @include prefixer(column-fill, $arg, webkit moz spec); 19 | } 20 | 21 | @mixin column-rule($arg) { 22 | // || || 23 | @include prefixer(column-rule, $arg, webkit moz spec); 24 | } 25 | 26 | @mixin column-rule-color($color) { 27 | @include prefixer(column-rule-color, $color, webkit moz spec); 28 | } 29 | 30 | @mixin column-rule-style($style: none) { 31 | // none | hidden | dashed | dotted | double | groove | inset | inset | outset | ridge | solid 32 | @include prefixer(column-rule-style, $style, webkit moz spec); 33 | } 34 | 35 | @mixin column-rule-width ($width: none) { 36 | @include prefixer(column-rule-width, $width, webkit moz spec); 37 | } 38 | 39 | @mixin column-span($arg: none) { 40 | // none || all 41 | @include prefixer(column-span, $arg, webkit moz spec); 42 | } 43 | 44 | @mixin column-width($length: auto) { 45 | // auto || length 46 | @include prefixer(column-width, $length, webkit moz spec); 47 | } 48 | -------------------------------------------------------------------------------- /source/_scss/bourbon/css3/_filter.scss: -------------------------------------------------------------------------------- 1 | @mixin filter($function: none) { 2 | // [ 3 | @include prefixer(perspective, $depth, webkit moz spec); 4 | } 5 | 6 | @mixin perspective-origin($value: 50% 50%) { 7 | @include prefixer(perspective-origin, $value, webkit moz spec); 8 | } 9 | -------------------------------------------------------------------------------- /source/_scss/bourbon/css3/_placeholder.scss: -------------------------------------------------------------------------------- 1 | @mixin placeholder { 2 | $placeholders: ":-webkit-input" ":-moz" "-moz" "-ms-input"; 3 | @each $placeholder in $placeholders { 4 | &:#{$placeholder}-placeholder { 5 | @content; 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /source/_scss/bourbon/css3/_radial-gradient.scss: -------------------------------------------------------------------------------- 1 | // Requires Sass 3.1+ 2 | @mixin radial-gradient($g1, $g2, 3 | $g3: null, $g4: null, 4 | $g5: null, $g6: null, 5 | $g7: null, $g8: null, 6 | $g9: null, $g10: null, 7 | $pos: null, 8 | $shape-size: null, 9 | $fallback: null) { 10 | 11 | $data: _radial-arg-parser($g1, $g2, $pos, $shape-size); 12 | $g1: nth($data, 1); 13 | $g2: nth($data, 2); 14 | $pos: nth($data, 3); 15 | $shape-size: nth($data, 4); 16 | 17 | $full: $g1, $g2, $g3, $g4, $g5, $g6, $g7, $g8, $g9, $g10; 18 | 19 | // Strip deprecated cover/contain for spec 20 | $shape-size-spec: _shape-size-stripper($shape-size); 21 | 22 | // Set $g1 as the default fallback color 23 | $first-color: nth($full, 1); 24 | $fallback-color: nth($first-color, 1); 25 | 26 | @if (type-of($fallback) == color) or ($fallback == "transparent") { 27 | $fallback-color: $fallback; 28 | } 29 | 30 | // Add Commas and spaces 31 | $shape-size: if($shape-size, "#{$shape-size}, ", null); 32 | $pos: if($pos, "#{$pos}, ", null); 33 | $pos-spec: if($pos, "at #{$pos}", null); 34 | $shape-size-spec: if(($shape-size-spec != " ") and ($pos == null), "#{$shape-size-spec}, ", "#{$shape-size-spec} "); 35 | 36 | background-color: $fallback-color; 37 | background-image: -webkit-radial-gradient(unquote(#{$pos}#{$shape-size}#{$full})); 38 | background-image: unquote("radial-gradient(#{$shape-size-spec}#{$pos-spec}#{$full})"); 39 | } 40 | -------------------------------------------------------------------------------- /source/_scss/bourbon/css3/_selection.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Outputs the spec and prefixed versions of the `::selection` pseudo-element. 4 | /// 5 | /// @param {Bool} $current-selector [false] 6 | /// If set to `true`, it takes the current element into consideration. 7 | /// 8 | /// @example scss - Usage 9 | /// .element { 10 | /// @include selection(true) { 11 | /// background-color: #ffbb52; 12 | /// } 13 | /// } 14 | /// 15 | /// @example css - CSS Output 16 | /// .element::-moz-selection { 17 | /// background-color: #ffbb52; 18 | /// } 19 | /// 20 | /// .element::selection { 21 | /// background-color: #ffbb52; 22 | /// } 23 | 24 | @mixin selection($current-selector: false) { 25 | @if $current-selector { 26 | &::-moz-selection { 27 | @content; 28 | } 29 | 30 | &::selection { 31 | @content; 32 | } 33 | } @else { 34 | ::-moz-selection { 35 | @content; 36 | } 37 | 38 | ::selection { 39 | @content; 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /source/_scss/bourbon/css3/_text-decoration.scss: -------------------------------------------------------------------------------- 1 | @mixin text-decoration($value) { 2 | // || || 3 | @include prefixer(text-decoration, $value, moz); 4 | } 5 | 6 | @mixin text-decoration-line($line: none) { 7 | // none || underline || overline || line-through 8 | @include prefixer(text-decoration-line, $line, moz); 9 | } 10 | 11 | @mixin text-decoration-style($style: solid) { 12 | // solid || double || dotted || dashed || wavy 13 | @include prefixer(text-decoration-style, $style, moz webkit); 14 | } 15 | 16 | @mixin text-decoration-color($color: currentColor) { 17 | // currentColor || 18 | @include prefixer(text-decoration-color, $color, moz); 19 | } 20 | -------------------------------------------------------------------------------- /source/_scss/bourbon/css3/_transform.scss: -------------------------------------------------------------------------------- 1 | @mixin transform($property: none) { 2 | // none | 3 | @include prefixer(transform, $property, webkit moz ms o spec); 4 | } 5 | 6 | @mixin transform-origin($axes: 50%) { 7 | // x-axis - left | center | right | length | % 8 | // y-axis - top | center | bottom | length | % 9 | // z-axis - length 10 | @include prefixer(transform-origin, $axes, webkit moz ms o spec); 11 | } 12 | 13 | @mixin transform-style($style: flat) { 14 | @include prefixer(transform-style, $style, webkit moz ms o spec); 15 | } 16 | -------------------------------------------------------------------------------- /source/_scss/bourbon/css3/_transition.scss: -------------------------------------------------------------------------------- 1 | // Shorthand mixin. Supports multiple parentheses-deliminated values for each variable. 2 | // Example: @include transition (all 2s ease-in-out); 3 | // @include transition (opacity 1s ease-in 2s, width 2s ease-out); 4 | // @include transition-property (transform, opacity); 5 | 6 | @mixin transition($properties...) { 7 | // Fix for vendor-prefix transform property 8 | $needs-prefixes: false; 9 | $webkit: (); 10 | $moz: (); 11 | $spec: (); 12 | 13 | // Create lists for vendor-prefixed transform 14 | @each $list in $properties { 15 | @if nth($list, 1) == "transform" { 16 | $needs-prefixes: true; 17 | $list1: -webkit-transform; 18 | $list2: -moz-transform; 19 | $list3: (); 20 | 21 | @each $var in $list { 22 | $list3: join($list3, $var); 23 | 24 | @if $var != "transform" { 25 | $list1: join($list1, $var); 26 | $list2: join($list2, $var); 27 | } 28 | } 29 | 30 | $webkit: append($webkit, $list1); 31 | $moz: append($moz, $list2); 32 | $spec: append($spec, $list3); 33 | } @else { 34 | $webkit: append($webkit, $list, comma); 35 | $moz: append($moz, $list, comma); 36 | $spec: append($spec, $list, comma); 37 | } 38 | } 39 | 40 | @if $needs-prefixes { 41 | -webkit-transition: $webkit; 42 | -moz-transition: $moz; 43 | transition: $spec; 44 | } @else { 45 | @if length($properties) >= 1 { 46 | @include prefixer(transition, $properties, webkit moz spec); 47 | } @else { 48 | $properties: all 0.15s ease-out 0s; 49 | @include prefixer(transition, $properties, webkit moz spec); 50 | } 51 | } 52 | } 53 | 54 | @mixin transition-property($properties...) { 55 | -webkit-transition-property: transition-property-names($properties, "webkit"); 56 | -moz-transition-property: transition-property-names($properties, "moz"); 57 | transition-property: transition-property-names($properties, false); 58 | } 59 | 60 | @mixin transition-duration($times...) { 61 | @include prefixer(transition-duration, $times, webkit moz spec); 62 | } 63 | 64 | @mixin transition-timing-function($motions...) { 65 | // ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier() 66 | @include prefixer(transition-timing-function, $motions, webkit moz spec); 67 | } 68 | 69 | @mixin transition-delay($times...) { 70 | @include prefixer(transition-delay, $times, webkit moz spec); 71 | } 72 | -------------------------------------------------------------------------------- /source/_scss/bourbon/css3/_user-select.scss: -------------------------------------------------------------------------------- 1 | @mixin user-select($value: none) { 2 | @include prefixer(user-select, $value, webkit moz ms spec); 3 | } 4 | -------------------------------------------------------------------------------- /source/_scss/bourbon/functions/_assign-inputs.scss: -------------------------------------------------------------------------------- 1 | @function assign-inputs($inputs, $pseudo: null) { 2 | $list: (); 3 | 4 | @each $input in $inputs { 5 | $input: unquote($input); 6 | $input: if($pseudo, $input + ":" + $pseudo, $input); 7 | $list: append($list, $input, comma); 8 | } 9 | 10 | @return $list; 11 | } 12 | -------------------------------------------------------------------------------- /source/_scss/bourbon/functions/_contains-falsy.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Checks if a list does not contains a value. 4 | /// 5 | /// @access private 6 | /// 7 | /// @param {List} $list 8 | /// The list to check against. 9 | /// 10 | /// @return {Bool} 11 | 12 | @function contains-falsy($list) { 13 | @each $item in $list { 14 | @if not $item { 15 | @return true; 16 | } 17 | } 18 | 19 | @return false; 20 | } 21 | -------------------------------------------------------------------------------- /source/_scss/bourbon/functions/_contains.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Checks if a list contains a value(s). 4 | /// 5 | /// @access private 6 | /// 7 | /// @param {List} $list 8 | /// The list to check against. 9 | /// 10 | /// @param {List} $values 11 | /// A single value or list of values to check for. 12 | /// 13 | /// @example scss - Usage 14 | /// contains($list, $value) 15 | /// 16 | /// @return {Bool} 17 | 18 | @function contains($list, $values...) { 19 | @each $value in $values { 20 | @if type-of(index($list, $value)) != "number" { 21 | @return false; 22 | } 23 | } 24 | 25 | @return true; 26 | } 27 | -------------------------------------------------------------------------------- /source/_scss/bourbon/functions/_is-length.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Checks for a valid CSS length. 4 | /// 5 | /// @param {String} $value 6 | 7 | @function is-length($value) { 8 | @return type-of($value) != "null" and (str-slice($value + "", 1, 4) == "calc" 9 | or index(auto inherit initial 0, $value) 10 | or (type-of($value) == "number" and not(unitless($value)))); 11 | } 12 | -------------------------------------------------------------------------------- /source/_scss/bourbon/functions/_is-light.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Programatically determines whether a color is light or dark. 4 | /// 5 | /// @link http://robots.thoughtbot.com/closer-look-color-lightness 6 | /// 7 | /// @param {Color (Hex)} $color 8 | /// 9 | /// @example scss - Usage 10 | /// is-light($color) 11 | /// 12 | /// @return {Bool} 13 | 14 | @function is-light($hex-color) { 15 | $-local-red: red(rgba($hex-color, 1)); 16 | $-local-green: green(rgba($hex-color, 1)); 17 | $-local-blue: blue(rgba($hex-color, 1)); 18 | $-local-lightness: ($-local-red * 0.2126 + $-local-green * 0.7152 + $-local-blue * 0.0722) / 255; 19 | 20 | @return $-local-lightness > 0.6; 21 | } 22 | -------------------------------------------------------------------------------- /source/_scss/bourbon/functions/_is-number.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Checks for a valid number. 4 | /// 5 | /// @param {Number} $value 6 | /// 7 | /// @require {function} contains 8 | 9 | @function is-number($value) { 10 | @return contains("0" "1" "2" "3" "4" "5" "6" "7" "8" "9" 0 1 2 3 4 5 6 7 8 9, $value); 11 | } 12 | -------------------------------------------------------------------------------- /source/_scss/bourbon/functions/_is-size.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Checks for a valid CSS size. 4 | /// 5 | /// @param {String} $value 6 | /// 7 | /// @require {function} contains 8 | /// @require {function} is-length 9 | 10 | @function is-size($value) { 11 | @return is-length($value) 12 | or contains("fill" "fit-content" "min-content" "max-content", $value); 13 | } 14 | -------------------------------------------------------------------------------- /source/_scss/bourbon/functions/_modular-scale.scss: -------------------------------------------------------------------------------- 1 | // Scaling Variables 2 | $golden: 1.618; 3 | $minor-second: 1.067; 4 | $major-second: 1.125; 5 | $minor-third: 1.2; 6 | $major-third: 1.25; 7 | $perfect-fourth: 1.333; 8 | $augmented-fourth: 1.414; 9 | $perfect-fifth: 1.5; 10 | $minor-sixth: 1.6; 11 | $major-sixth: 1.667; 12 | $minor-seventh: 1.778; 13 | $major-seventh: 1.875; 14 | $octave: 2; 15 | $major-tenth: 2.5; 16 | $major-eleventh: 2.667; 17 | $major-twelfth: 3; 18 | $double-octave: 4; 19 | 20 | $modular-scale-ratio: $perfect-fourth !default; 21 | $modular-scale-base: em($em-base) !default; 22 | 23 | @function modular-scale($increment, $value: $modular-scale-base, $ratio: $modular-scale-ratio) { 24 | $v1: nth($value, 1); 25 | $v2: nth($value, length($value)); 26 | $value: $v1; 27 | 28 | // scale $v2 to just above $v1 29 | @while $v2 > $v1 { 30 | $v2: ($v2 / $ratio); // will be off-by-1 31 | } 32 | @while $v2 < $v1 { 33 | $v2: ($v2 * $ratio); // will fix off-by-1 34 | } 35 | 36 | // check AFTER scaling $v2 to prevent double-counting corner-case 37 | $double-stranded: $v2 > $v1; 38 | 39 | @if $increment > 0 { 40 | @for $i from 1 through $increment { 41 | @if $double-stranded and ($v1 * $ratio) > $v2 { 42 | $value: $v2; 43 | $v2: ($v2 * $ratio); 44 | } @else { 45 | $v1: ($v1 * $ratio); 46 | $value: $v1; 47 | } 48 | } 49 | } 50 | 51 | @if $increment < 0 { 52 | // adjust $v2 to just below $v1 53 | @if $double-stranded { 54 | $v2: ($v2 / $ratio); 55 | } 56 | 57 | @for $i from $increment through -1 { 58 | @if $double-stranded and ($v1 / $ratio) < $v2 { 59 | $value: $v2; 60 | $v2: ($v2 / $ratio); 61 | } @else { 62 | $v1: ($v1 / $ratio); 63 | $value: $v1; 64 | } 65 | } 66 | } 67 | 68 | @return $value; 69 | } 70 | -------------------------------------------------------------------------------- /source/_scss/bourbon/functions/_px-to-em.scss: -------------------------------------------------------------------------------- 1 | // Convert pixels to ems 2 | // eg. for a relational value of 12px write em(12) when the parent is 16px 3 | // if the parent is another value say 24px write em(12, 24) 4 | 5 | @function em($pxval, $base: $em-base) { 6 | @if not unitless($pxval) { 7 | $pxval: strip-units($pxval); 8 | } 9 | @if not unitless($base) { 10 | $base: strip-units($base); 11 | } 12 | @return ($pxval / $base) * 1em; 13 | } 14 | -------------------------------------------------------------------------------- /source/_scss/bourbon/functions/_px-to-rem.scss: -------------------------------------------------------------------------------- 1 | // Convert pixels to rems 2 | // eg. for a relational value of 12px write rem(12) 3 | // Assumes $em-base is the font-size of 4 | 5 | @function rem($pxval) { 6 | @if not unitless($pxval) { 7 | $pxval: strip-units($pxval); 8 | } 9 | 10 | $base: $em-base; 11 | @if not unitless($base) { 12 | $base: strip-units($base); 13 | } 14 | @return ($pxval / $base) * 1rem; 15 | } 16 | -------------------------------------------------------------------------------- /source/_scss/bourbon/functions/_shade.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Mixes a color with black. 4 | /// 5 | /// @param {Color} $color 6 | /// 7 | /// @param {Number (Percentage)} $percent 8 | /// The amount of black to be mixed in. 9 | /// 10 | /// @example scss - Usage 11 | /// .element { 12 | /// background-color: shade(#ffbb52, 60%); 13 | /// } 14 | /// 15 | /// @example css - CSS Output 16 | /// .element { 17 | /// background-color: #664a20; 18 | /// } 19 | /// 20 | /// @return {Color} 21 | 22 | @function shade($color, $percent) { 23 | @return mix(#000, $color, $percent); 24 | } 25 | -------------------------------------------------------------------------------- /source/_scss/bourbon/functions/_strip-units.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Strips the unit from a number. 4 | /// 5 | /// @param {Number (With Unit)} $value 6 | /// 7 | /// @example scss - Usage 8 | /// $dimension: strip-units(10em); 9 | /// 10 | /// @example css - CSS Output 11 | /// $dimension: 10; 12 | /// 13 | /// @return {Number (Unitless)} 14 | 15 | @function strip-units($value) { 16 | @return ($value / ($value * 0 + 1)); 17 | } 18 | -------------------------------------------------------------------------------- /source/_scss/bourbon/functions/_tint.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Mixes a color with white. 4 | /// 5 | /// @param {Color} $color 6 | /// 7 | /// @param {Number (Percentage)} $percent 8 | /// The amount of white to be mixed in. 9 | /// 10 | /// @example scss - Usage 11 | /// .element { 12 | /// background-color: tint(#6ecaa6, 40%); 13 | /// } 14 | /// 15 | /// @example css - CSS Output 16 | /// .element { 17 | /// background-color: #a8dfc9; 18 | /// } 19 | /// 20 | /// @return {Color} 21 | 22 | @function tint($color, $percent) { 23 | @return mix(#fff, $color, $percent); 24 | } 25 | -------------------------------------------------------------------------------- /source/_scss/bourbon/functions/_transition-property-name.scss: -------------------------------------------------------------------------------- 1 | // Return vendor-prefixed property names if appropriate 2 | // Example: transition-property-names((transform, color, background), moz) -> -moz-transform, color, background 3 | //************************************************************************// 4 | @function transition-property-names($props, $vendor: false) { 5 | $new-props: (); 6 | 7 | @each $prop in $props { 8 | $new-props: append($new-props, transition-property-name($prop, $vendor), comma); 9 | } 10 | 11 | @return $new-props; 12 | } 13 | 14 | @function transition-property-name($prop, $vendor: false) { 15 | // put other properties that need to be prefixed here aswell 16 | @if $vendor and $prop == transform { 17 | @return unquote('-'+$vendor+'-'+$prop); 18 | } 19 | @else { 20 | @return $prop; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /source/_scss/bourbon/functions/_unpack.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Converts shorthand to the 4-value syntax. 4 | /// 5 | /// @param {List} $shorthand 6 | /// 7 | /// @example scss - Usage 8 | /// .element { 9 | /// margin: unpack(1em 2em); 10 | /// } 11 | /// 12 | /// @example css - CSS Output 13 | /// .element { 14 | /// margin: 1em 2em 1em 2em; 15 | /// } 16 | 17 | @function unpack($shorthand) { 18 | @if length($shorthand) == 1 { 19 | @return nth($shorthand, 1) nth($shorthand, 1) nth($shorthand, 1) nth($shorthand, 1); 20 | } @else if length($shorthand) == 2 { 21 | @return nth($shorthand, 1) nth($shorthand, 2) nth($shorthand, 1) nth($shorthand, 2); 22 | } @else if length($shorthand) == 3 { 23 | @return nth($shorthand, 1) nth($shorthand, 2) nth($shorthand, 3) nth($shorthand, 2); 24 | } @else { 25 | @return $shorthand; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /source/_scss/bourbon/helpers/_convert-units.scss: -------------------------------------------------------------------------------- 1 | //************************************************************************// 2 | // Helper function for str-to-num fn. 3 | // Source: http://sassmeister.com/gist/9647408 4 | //************************************************************************// 5 | @function _convert-units($number, $unit) { 6 | $strings: "px", "cm", "mm", "%", "ch", "pica", "in", "em", "rem", "pt", "pc", "ex", "vw", "vh", "vmin", "vmax", "deg", "rad", "grad", "turn"; 7 | $units: 1px, 1cm, 1mm, 1%, 1ch, 1pica, 1in, 1em, 1rem, 1pt, 1pc, 1ex, 1vw, 1vh, 1vmin, 1vmax, 1deg, 1rad, 1grad, 1turn; 8 | $index: index($strings, $unit); 9 | 10 | @if not $index { 11 | @warn "Unknown unit `#{$unit}`."; 12 | @return false; 13 | } 14 | 15 | @if type-of($number) != "number" { 16 | @warn "`#{$number} is not a number`"; 17 | @return false; 18 | } 19 | 20 | @return $number * nth($units, $index); 21 | } 22 | -------------------------------------------------------------------------------- /source/_scss/bourbon/helpers/_directional-values.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Directional-property mixins are shorthands for writing properties like the following 4 | /// 5 | /// @ignore You can also use `false` instead of `null`. 6 | /// 7 | /// @param {List} $vals 8 | /// List of directional values 9 | /// 10 | /// @example scss - Usage 11 | /// .element { 12 | /// @include border-style(dotted null); 13 | /// @include margin(null 0 10px); 14 | /// } 15 | /// 16 | /// @example css - CSS Output 17 | /// .element { 18 | /// border-bottom-style: dotted; 19 | /// border-top-style: dotted; 20 | /// margin-bottom: 10px; 21 | /// margin-left: 0; 22 | /// margin-right: 0; 23 | /// } 24 | /// 25 | /// @require {function} contains-falsy 26 | /// 27 | /// @return {List} 28 | 29 | @function collapse-directionals($vals) { 30 | $output: null; 31 | 32 | $a: nth($vals, 1); 33 | $b: if(length($vals) < 2, $a, nth($vals, 2)); 34 | $c: if(length($vals) < 3, $a, nth($vals, 3)); 35 | $d: if(length($vals) < 2, $a, nth($vals, if(length($vals) < 4, 2, 4))); 36 | 37 | @if $a == 0 { $a: 0; } 38 | @if $b == 0 { $b: 0; } 39 | @if $c == 0 { $c: 0; } 40 | @if $d == 0 { $d: 0; } 41 | 42 | @if $a == $b and $a == $c and $a == $d { $output: $a; } 43 | @else if $a == $c and $b == $d { $output: $a $b; } 44 | @else if $b == $d { $output: $a $b $c; } 45 | @else { $output: $a $b $c $d; } 46 | 47 | @return $output; 48 | } 49 | 50 | /// Output directional properties, for instance `margin`. 51 | /// 52 | /// @access private 53 | /// 54 | /// @param {String} $pre 55 | /// Prefix to use 56 | /// @param {String} $suf 57 | /// Suffix to use 58 | /// @param {List} $vals 59 | /// List of values 60 | /// 61 | /// @require {function} collapse-directionals 62 | /// @require {function} contains-falsy 63 | 64 | @mixin directional-property($pre, $suf, $vals) { 65 | // Property Names 66 | $top: $pre + "-top" + if($suf, "-#{$suf}", ""); 67 | $bottom: $pre + "-bottom" + if($suf, "-#{$suf}", ""); 68 | $left: $pre + "-left" + if($suf, "-#{$suf}", ""); 69 | $right: $pre + "-right" + if($suf, "-#{$suf}", ""); 70 | $all: $pre + if($suf, "-#{$suf}", ""); 71 | 72 | $vals: collapse-directionals($vals); 73 | 74 | @if contains-falsy($vals) { 75 | @if nth($vals, 1) { #{$top}: nth($vals, 1); } 76 | 77 | @if length($vals) == 1 { 78 | @if nth($vals, 1) { #{$right}: nth($vals, 1); } 79 | } @else { 80 | @if nth($vals, 2) { #{$right}: nth($vals, 2); } 81 | } 82 | 83 | @if length($vals) == 2 { 84 | @if nth($vals, 1) { #{$bottom}: nth($vals, 1); } 85 | @if nth($vals, 2) { #{$left}: nth($vals, 2); } 86 | } @else if length($vals) == 3 { 87 | @if nth($vals, 3) { #{$bottom}: nth($vals, 3); } 88 | @if nth($vals, 2) { #{$left}: nth($vals, 2); } 89 | } @else if length($vals) == 4 { 90 | @if nth($vals, 3) { #{$bottom}: nth($vals, 3); } 91 | @if nth($vals, 4) { #{$left}: nth($vals, 4); } 92 | } 93 | } @else { 94 | #{$all}: $vals; 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /source/_scss/bourbon/helpers/_font-source-declaration.scss: -------------------------------------------------------------------------------- 1 | // Used for creating the source string for fonts using @font-face 2 | // Reference: http://goo.gl/Ru1bKP 3 | 4 | @function font-url-prefixer($asset-pipeline) { 5 | @if $asset-pipeline == true { 6 | @return font-url; 7 | } @else { 8 | @return url; 9 | } 10 | } 11 | 12 | @function font-source-declaration( 13 | $font-family, 14 | $file-path, 15 | $asset-pipeline, 16 | $file-formats, 17 | $font-url) { 18 | 19 | $src: (); 20 | 21 | $formats-map: ( 22 | eot: "#{$file-path}.eot?#iefix" format("embedded-opentype"), 23 | woff2: "#{$file-path}.woff2" format("woff2"), 24 | woff: "#{$file-path}.woff" format("woff"), 25 | ttf: "#{$file-path}.ttf" format("truetype"), 26 | svg: "#{$file-path}.svg##{$font-family}" format("svg") 27 | ); 28 | 29 | @each $key, $values in $formats-map { 30 | @if contains($file-formats, $key) { 31 | $file-path: nth($values, 1); 32 | $font-format: nth($values, 2); 33 | 34 | @if $asset-pipeline == true { 35 | $src: append($src, font-url($file-path) $font-format, comma); 36 | } @else { 37 | $src: append($src, url($file-path) $font-format, comma); 38 | } 39 | } 40 | } 41 | 42 | @return $src; 43 | } 44 | -------------------------------------------------------------------------------- /source/_scss/bourbon/helpers/_gradient-positions-parser.scss: -------------------------------------------------------------------------------- 1 | @function _gradient-positions-parser($gradient-type, $gradient-positions) { 2 | @if $gradient-positions 3 | and ($gradient-type == linear) 4 | and (type-of($gradient-positions) != color) { 5 | $gradient-positions: _linear-positions-parser($gradient-positions); 6 | } 7 | @else if $gradient-positions 8 | and ($gradient-type == radial) 9 | and (type-of($gradient-positions) != color) { 10 | $gradient-positions: _radial-positions-parser($gradient-positions); 11 | } 12 | @return $gradient-positions; 13 | } 14 | -------------------------------------------------------------------------------- /source/_scss/bourbon/helpers/_linear-angle-parser.scss: -------------------------------------------------------------------------------- 1 | // Private function for linear-gradient-parser 2 | @function _linear-angle-parser($image, $first-val, $prefix, $suffix) { 3 | $offset: null; 4 | $unit-short: str-slice($first-val, str-length($first-val) - 2, str-length($first-val)); 5 | $unit-long: str-slice($first-val, str-length($first-val) - 3, str-length($first-val)); 6 | 7 | @if ($unit-long == "grad") or 8 | ($unit-long == "turn") { 9 | $offset: if($unit-long == "grad", -100grad * 3, -0.75turn); 10 | } 11 | 12 | @else if ($unit-short == "deg") or 13 | ($unit-short == "rad") { 14 | $offset: if($unit-short == "deg", -90 * 3, 1.6rad); 15 | } 16 | 17 | @if $offset { 18 | $num: _str-to-num($first-val); 19 | 20 | @return ( 21 | webkit-image: -webkit- + $prefix + ($offset - $num) + $suffix, 22 | spec-image: $image 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /source/_scss/bourbon/helpers/_linear-gradient-parser.scss: -------------------------------------------------------------------------------- 1 | @function _linear-gradient-parser($image) { 2 | $image: unquote($image); 3 | $gradients: (); 4 | $start: str-index($image, "("); 5 | $end: str-index($image, ","); 6 | $first-val: str-slice($image, $start + 1, $end - 1); 7 | 8 | $prefix: str-slice($image, 1, $start); 9 | $suffix: str-slice($image, $end, str-length($image)); 10 | 11 | $has-multiple-vals: str-index($first-val, " "); 12 | $has-single-position: unquote(_position-flipper($first-val) + ""); 13 | $has-angle: is-number(str-slice($first-val, 1, 1)); 14 | 15 | @if $has-multiple-vals { 16 | $gradients: _linear-side-corner-parser($image, $first-val, $prefix, $suffix, $has-multiple-vals); 17 | } 18 | 19 | @else if $has-single-position != "" { 20 | $pos: unquote($has-single-position + ""); 21 | 22 | $gradients: ( 23 | webkit-image: -webkit- + $image, 24 | spec-image: $prefix + "to " + $pos + $suffix 25 | ); 26 | } 27 | 28 | @else if $has-angle { 29 | // Rotate degree for webkit 30 | $gradients: _linear-angle-parser($image, $first-val, $prefix, $suffix); 31 | } 32 | 33 | @else { 34 | $gradients: ( 35 | webkit-image: -webkit- + $image, 36 | spec-image: $image 37 | ); 38 | } 39 | 40 | @return $gradients; 41 | } 42 | -------------------------------------------------------------------------------- /source/_scss/bourbon/helpers/_linear-positions-parser.scss: -------------------------------------------------------------------------------- 1 | @function _linear-positions-parser($pos) { 2 | $type: type-of(nth($pos, 1)); 3 | $spec: null; 4 | $degree: null; 5 | $side: null; 6 | $corner: null; 7 | $length: length($pos); 8 | // Parse Side and corner positions 9 | @if ($length > 1) { 10 | @if nth($pos, 1) == "to" { // Newer syntax 11 | $side: nth($pos, 2); 12 | 13 | @if $length == 2 { // eg. to top 14 | // Swap for backwards compatibility 15 | $degree: _position-flipper(nth($pos, 2)); 16 | } 17 | @else if $length == 3 { // eg. to top left 18 | $corner: nth($pos, 3); 19 | } 20 | } 21 | @else if $length == 2 { // Older syntax ("top left") 22 | $side: _position-flipper(nth($pos, 1)); 23 | $corner: _position-flipper(nth($pos, 2)); 24 | } 25 | 26 | @if ("#{$side} #{$corner}" == "left top") or ("#{$side} #{$corner}" == "top left") { 27 | $degree: _position-flipper(#{$side}) _position-flipper(#{$corner}); 28 | } 29 | @else if ("#{$side} #{$corner}" == "right top") or ("#{$side} #{$corner}" == "top right") { 30 | $degree: _position-flipper(#{$side}) _position-flipper(#{$corner}); 31 | } 32 | @else if ("#{$side} #{$corner}" == "right bottom") or ("#{$side} #{$corner}" == "bottom right") { 33 | $degree: _position-flipper(#{$side}) _position-flipper(#{$corner}); 34 | } 35 | @else if ("#{$side} #{$corner}" == "left bottom") or ("#{$side} #{$corner}" == "bottom left") { 36 | $degree: _position-flipper(#{$side}) _position-flipper(#{$corner}); 37 | } 38 | $spec: to $side $corner; 39 | } 40 | @else if $length == 1 { 41 | // Swap for backwards compatibility 42 | @if $type == string { 43 | $degree: $pos; 44 | $spec: to _position-flipper($pos); 45 | } 46 | @else { 47 | $degree: -270 - $pos; //rotate the gradient opposite from spec 48 | $spec: $pos; 49 | } 50 | } 51 | $degree: unquote($degree + ","); 52 | $spec: unquote($spec + ","); 53 | @return $degree $spec; 54 | } 55 | 56 | @function _position-flipper($pos) { 57 | @return if($pos == left, right, null) 58 | if($pos == right, left, null) 59 | if($pos == top, bottom, null) 60 | if($pos == bottom, top, null); 61 | } 62 | -------------------------------------------------------------------------------- /source/_scss/bourbon/helpers/_linear-side-corner-parser.scss: -------------------------------------------------------------------------------- 1 | // Private function for linear-gradient-parser 2 | @function _linear-side-corner-parser($image, $first-val, $prefix, $suffix, $has-multiple-vals) { 3 | $val-1: str-slice($first-val, 1, $has-multiple-vals - 1); 4 | $val-2: str-slice($first-val, $has-multiple-vals + 1, str-length($first-val)); 5 | $val-3: null; 6 | $has-val-3: str-index($val-2, " "); 7 | 8 | @if $has-val-3 { 9 | $val-3: str-slice($val-2, $has-val-3 + 1, str-length($val-2)); 10 | $val-2: str-slice($val-2, 1, $has-val-3 - 1); 11 | } 12 | 13 | $pos: _position-flipper($val-1) _position-flipper($val-2) _position-flipper($val-3); 14 | $pos: unquote($pos + ""); 15 | 16 | // Use old spec for webkit 17 | @if $val-1 == "to" { 18 | @return ( 19 | webkit-image: -webkit- + $prefix + $pos + $suffix, 20 | spec-image: $image 21 | ); 22 | } 23 | 24 | // Bring the code up to spec 25 | @else { 26 | @return ( 27 | webkit-image: -webkit- + $image, 28 | spec-image: $prefix + "to " + $pos + $suffix 29 | ); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /source/_scss/bourbon/helpers/_radial-arg-parser.scss: -------------------------------------------------------------------------------- 1 | @function _radial-arg-parser($g1, $g2, $pos, $shape-size) { 2 | @each $value in $g1, $g2 { 3 | $first-val: nth($value, 1); 4 | $pos-type: type-of($first-val); 5 | $spec-at-index: null; 6 | 7 | // Determine if spec was passed to mixin 8 | @if type-of($value) == list { 9 | $spec-at-index: if(index($value, at), index($value, at), false); 10 | } 11 | @if $spec-at-index { 12 | @if $spec-at-index > 1 { 13 | @for $i from 1 through ($spec-at-index - 1) { 14 | $shape-size: $shape-size nth($value, $i); 15 | } 16 | @for $i from ($spec-at-index + 1) through length($value) { 17 | $pos: $pos nth($value, $i); 18 | } 19 | } 20 | @else if $spec-at-index == 1 { 21 | @for $i from ($spec-at-index + 1) through length($value) { 22 | $pos: $pos nth($value, $i); 23 | } 24 | } 25 | $g1: null; 26 | } 27 | 28 | // If not spec calculate correct values 29 | @else { 30 | @if ($pos-type != color) or ($first-val != "transparent") { 31 | @if ($pos-type == number) 32 | or ($first-val == "center") 33 | or ($first-val == "top") 34 | or ($first-val == "right") 35 | or ($first-val == "bottom") 36 | or ($first-val == "left") { 37 | 38 | $pos: $value; 39 | 40 | @if $pos == $g1 { 41 | $g1: null; 42 | } 43 | } 44 | 45 | @else if 46 | ($first-val == "ellipse") 47 | or ($first-val == "circle") 48 | or ($first-val == "closest-side") 49 | or ($first-val == "closest-corner") 50 | or ($first-val == "farthest-side") 51 | or ($first-val == "farthest-corner") 52 | or ($first-val == "contain") 53 | or ($first-val == "cover") { 54 | 55 | $shape-size: $value; 56 | 57 | @if $value == $g1 { 58 | $g1: null; 59 | } 60 | 61 | @else if $value == $g2 { 62 | $g2: null; 63 | } 64 | } 65 | } 66 | } 67 | } 68 | @return $g1, $g2, $pos, $shape-size; 69 | } 70 | -------------------------------------------------------------------------------- /source/_scss/bourbon/helpers/_radial-gradient-parser.scss: -------------------------------------------------------------------------------- 1 | @function _radial-gradient-parser($image) { 2 | $image: unquote($image); 3 | $gradients: (); 4 | $start: str-index($image, "("); 5 | $end: str-index($image, ","); 6 | $first-val: str-slice($image, $start + 1, $end - 1); 7 | 8 | $prefix: str-slice($image, 1, $start); 9 | $suffix: str-slice($image, $end, str-length($image)); 10 | 11 | $is-spec-syntax: str-index($first-val, "at"); 12 | 13 | @if $is-spec-syntax and $is-spec-syntax > 1 { 14 | $keyword: str-slice($first-val, 1, $is-spec-syntax - 2); 15 | $pos: str-slice($first-val, $is-spec-syntax + 3, str-length($first-val)); 16 | $pos: append($pos, $keyword, comma); 17 | 18 | $gradients: ( 19 | webkit-image: -webkit- + $prefix + $pos + $suffix, 20 | spec-image: $image 21 | ); 22 | } 23 | 24 | @else if $is-spec-syntax == 1 { 25 | $pos: str-slice($first-val, $is-spec-syntax + 3, str-length($first-val)); 26 | 27 | $gradients: ( 28 | webkit-image: -webkit- + $prefix + $pos + $suffix, 29 | spec-image: $image 30 | ); 31 | } 32 | 33 | @else if str-index($image, "cover") or str-index($image, "contain") { 34 | @warn "Radial-gradient needs to be updated to conform to latest spec."; 35 | 36 | $gradients: ( 37 | webkit-image: null, 38 | spec-image: $image 39 | ); 40 | } 41 | 42 | @else { 43 | $gradients: ( 44 | webkit-image: -webkit- + $image, 45 | spec-image: $image 46 | ); 47 | } 48 | 49 | @return $gradients; 50 | } 51 | -------------------------------------------------------------------------------- /source/_scss/bourbon/helpers/_radial-positions-parser.scss: -------------------------------------------------------------------------------- 1 | @function _radial-positions-parser($gradient-pos) { 2 | $shape-size: nth($gradient-pos, 1); 3 | $pos: nth($gradient-pos, 2); 4 | $shape-size-spec: _shape-size-stripper($shape-size); 5 | 6 | $pre-spec: unquote(if($pos, "#{$pos}, ", null)) 7 | unquote(if($shape-size, "#{$shape-size},", null)); 8 | $pos-spec: if($pos, "at #{$pos}", null); 9 | 10 | $spec: "#{$shape-size-spec} #{$pos-spec}"; 11 | 12 | // Add comma 13 | @if ($spec != " ") { 14 | $spec: "#{$spec},"; 15 | } 16 | 17 | @return $pre-spec $spec; 18 | } 19 | -------------------------------------------------------------------------------- /source/_scss/bourbon/helpers/_render-gradients.scss: -------------------------------------------------------------------------------- 1 | // User for linear and radial gradients within background-image or border-image properties 2 | 3 | @function _render-gradients($gradient-positions, $gradients, $gradient-type, $vendor: false) { 4 | $pre-spec: null; 5 | $spec: null; 6 | $vendor-gradients: null; 7 | @if $gradient-type == linear { 8 | @if $gradient-positions { 9 | $pre-spec: nth($gradient-positions, 1); 10 | $spec: nth($gradient-positions, 2); 11 | } 12 | } 13 | @else if $gradient-type == radial { 14 | $pre-spec: nth($gradient-positions, 1); 15 | $spec: nth($gradient-positions, 2); 16 | } 17 | 18 | @if $vendor { 19 | $vendor-gradients: -#{$vendor}-#{$gradient-type}-gradient(#{$pre-spec} $gradients); 20 | } 21 | @else if $vendor == false { 22 | $vendor-gradients: "#{$gradient-type}-gradient(#{$spec} #{$gradients})"; 23 | $vendor-gradients: unquote($vendor-gradients); 24 | } 25 | @return $vendor-gradients; 26 | } 27 | -------------------------------------------------------------------------------- /source/_scss/bourbon/helpers/_shape-size-stripper.scss: -------------------------------------------------------------------------------- 1 | @function _shape-size-stripper($shape-size) { 2 | $shape-size-spec: null; 3 | @each $value in $shape-size { 4 | @if ($value == "cover") or ($value == "contain") { 5 | $value: null; 6 | } 7 | $shape-size-spec: "#{$shape-size-spec} #{$value}"; 8 | } 9 | @return $shape-size-spec; 10 | } 11 | -------------------------------------------------------------------------------- /source/_scss/bourbon/helpers/_str-to-num.scss: -------------------------------------------------------------------------------- 1 | //************************************************************************// 2 | // Helper function for linear/radial-gradient-parsers. 3 | // Source: http://sassmeister.com/gist/9647408 4 | //************************************************************************// 5 | @function _str-to-num($string) { 6 | // Matrices 7 | $strings: "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"; 8 | $numbers: 0 1 2 3 4 5 6 7 8 9; 9 | 10 | // Result 11 | $result: 0; 12 | $divider: 0; 13 | $minus: false; 14 | 15 | // Looping through all characters 16 | @for $i from 1 through str-length($string) { 17 | $character: str-slice($string, $i, $i); 18 | $index: index($strings, $character); 19 | 20 | @if $character == "-" { 21 | $minus: true; 22 | } 23 | 24 | @else if $character == "." { 25 | $divider: 1; 26 | } 27 | 28 | @else { 29 | @if not $index { 30 | $result: if($minus, $result * -1, $result); 31 | @return _convert-units($result, str-slice($string, $i)); 32 | } 33 | 34 | $number: nth($numbers, $index); 35 | 36 | @if $divider == 0 { 37 | $result: $result * 10; 38 | } 39 | 40 | @else { 41 | // Move the decimal dot to the left 42 | $divider: $divider * 10; 43 | $number: $number / $divider; 44 | } 45 | 46 | $result: $result + $number; 47 | } 48 | } 49 | @return if($minus, $result * -1, $result); 50 | } 51 | -------------------------------------------------------------------------------- /source/_scss/bourbon/settings/_asset-pipeline.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// A global setting to enable or disable the `$asset-pipeline` variable for all functions that accept it. 4 | /// 5 | /// @type Bool 6 | 7 | $asset-pipeline: false !default; 8 | -------------------------------------------------------------------------------- /source/_scss/bourbon/settings/_prefixer.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /// Global variables to enable or disable vendor prefixes 4 | 5 | $prefix-for-webkit: true !default; 6 | $prefix-for-mozilla: true !default; 7 | $prefix-for-microsoft: true !default; 8 | $prefix-for-opera: true !default; 9 | $prefix-for-spec: true !default; 10 | -------------------------------------------------------------------------------- /source/_scss/bourbon/settings/_px-to-em.scss: -------------------------------------------------------------------------------- 1 | $em-base: 16px !default; 2 | -------------------------------------------------------------------------------- /source/about.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | title: About 4 | permalink: /about/ 5 | --- 6 | 7 | This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at [jekyllrb.com](http://jekyllrb.com/) 8 | 9 | You can find the source code for the Jekyll new theme at: [github.com/jglovier/jekyll-new](https://github.com/jglovier/jekyll-new) 10 | 11 | You can find the source code for Jekyll at [github.com/jekyll/jekyll](https://github.com/jekyll/jekyll) 12 | -------------------------------------------------------------------------------- /source/css/main.scss: -------------------------------------------------------------------------------- 1 | --- 2 | # Only the main Sass file needs front matter (the dashes are enough) 3 | --- 4 | @charset "utf-8"; 5 | 6 | @import "placeholders"; 7 | @import "reset"; 8 | @import "bourbon/bourbon"; 9 | @import "base/base"; 10 | 11 | @import "variables"; 12 | @import "mixins"; 13 | 14 | @import "base"; 15 | @import "layout"; 16 | @import "icons"; 17 | @import "syntax-highlighting"; -------------------------------------------------------------------------------- /source/feed.xml: -------------------------------------------------------------------------------- 1 | --- 2 | layout: null 3 | --- 4 | 5 | 6 | 7 | {{ site.title | xml_escape }} 8 | {{ site.description | xml_escape }} 9 | {{ site.url }}{{ site.baseurl }}/ 10 | 11 | {{ site.time | date_to_rfc822 }} 12 | {{ site.time | date_to_rfc822 }} 13 | Jekyll v{{ jekyll.version }} 14 | {% for post in site.posts limit:10 %} 15 | 16 | {{ post.title | xml_escape }} 17 | {{ post.content | xml_escape }} 18 | {{ post.date | date_to_rfc822 }} 19 | {{ post.url | prepend: site.baseurl | prepend: site.url }} 20 | {{ post.url | prepend: site.baseurl | prepend: site.url }} 21 | {% for tag in post.tags %} 22 | {{ tag | xml_escape }} 23 | {% endfor %} 24 | {% for cat in post.categories %} 25 | {{ cat | xml_escape }} 26 | {% endfor %} 27 | 28 | {% endfor %} 29 | 30 | 31 | -------------------------------------------------------------------------------- /source/fonts/mugicons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nandomoreirame/mug/8cd8987569511b7f9c4ff2545435f949ba2efa63/source/fonts/mugicons.eot -------------------------------------------------------------------------------- /source/fonts/mugicons.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Generated by IcoMoon 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /source/fonts/mugicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nandomoreirame/mug/8cd8987569511b7f9c4ff2545435f949ba2efa63/source/fonts/mugicons.ttf -------------------------------------------------------------------------------- /source/fonts/mugicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nandomoreirame/mug/8cd8987569511b7f9c4ff2545435f949ba2efa63/source/fonts/mugicons.woff -------------------------------------------------------------------------------- /source/images/author.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nandomoreirame/mug/8cd8987569511b7f9c4ff2545435f949ba2efa63/source/images/author.jpg -------------------------------------------------------------------------------- /source/index.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Home 4 | bodyclass: home 5 | --- 6 | 7 |
8 | 9 | {% for post in paginator.posts %} 10 | {% include article.html %} 11 | {% endfor %} 12 | 13 | {% include pagination.html %} 14 | 15 |
16 | 17 | -------------------------------------------------------------------------------- /source/js/jekyll-search.min.js: -------------------------------------------------------------------------------- 1 | !function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o=0}this.matches=function(string,crit){return"string"!=typeof string?!1:(string=string.trim(),matchesString(string,crit))}}module.exports=new LiteralSearchStrategy},{}],6:[function(require,module,exports){"use strict";function setOptions(_options){options.pattern=_options.pattern||options.pattern,options.template=_options.template||options.template,"function"==typeof _options.middleware&&(options.middleware=_options.middleware)}function compile(data){return options.template.replace(options.pattern,function(match,prop){var value=options.middleware(prop,data[prop],options.template);return void 0!==value?value:data[prop]||match})}module.exports={compile:compile,setOptions:setOptions};var options={};options.pattern=/\{(.*?)\}/g,options.template="",options.middleware=function(){}},{}],7:[function(require,module,exports){!function(window,document,undefined){"use strict";function initWithJSON(json){repository.put(json),registerInput()}function initWithURL(url){jsonLoader.load(url,function(err,json){err&&throwError("failed to get JSON ("+url+")"),initWithJSON(json)})}function emptyResultsContainer(){options.resultsContainer.innerHTML=""}function appendToResultsContainer(text){options.resultsContainer.innerHTML+=text}function registerInput(){options.searchInput.addEventListener("keyup",function(e){emptyResultsContainer(),e.target.value.length>0&&render(repository.search(e.target.value))})}function render(results){if(0===results.length)return appendToResultsContainer(options.noResultsText);for(var i=0;i{title}',templateMiddleware:function(){},noResultsText:"No results found",limit:10,fuzzy:!1,exclude:[]},requiredOptions=["searchInput","resultsContainer","json"],templater=require("./Templater"),repository=require("./Repository"),jsonLoader=require("./JSONLoader"),optionsValidator=require("./OptionsValidator")({required:requiredOptions}),utils=require("./utils");window.SimpleJekyllSearch=function(_options){var errors=optionsValidator.validate(_options);errors.length>0&&throwError("You must specify the following required options: "+requiredOptions),options=utils.merge(options,_options),templater.setOptions({template:options.searchResultTemplate,middleware:options.templateMiddleware}),repository.setOptions({fuzzy:options.fuzzy,limit:options.limit}),utils.isJSON(options.json)?initWithJSON(options.json):initWithURL(options.json)},window.SimpleJekyllSearch.init=window.SimpleJekyllSearch}(window,document)},{"./JSONLoader":1,"./OptionsValidator":2,"./Repository":3,"./Templater":6,"./utils":8}],8:[function(require,module,exports){"use strict";function merge(defaultParams,mergeParams){var mergedOptions={};for(var option in defaultParams)mergedOptions[option]=defaultParams[option],void 0!==mergeParams[option]&&(mergedOptions[option]=mergeParams[option]);return mergedOptions}function isJSON(json){try{return json instanceof Object&&JSON.parse(JSON.stringify(json))?!0:!1}catch(e){return!1}}module.exports={merge:merge,isJSON:isJSON}},{}]},{},[7]); -------------------------------------------------------------------------------- /source/js/main.js: -------------------------------------------------------------------------------- 1 | SimpleJekyllSearch({ 2 | searchInput: document.getElementById('search-input'), 3 | resultsContainer: document.getElementById('results-container'), 4 | json: base_url + '/search.json', 5 | searchResultTemplate: '
  • {title}
  • ', 6 | noResultsText: '
  • No results found :(
  • ', 7 | limit: 10, 8 | fuzzy: false 9 | }); 10 | 11 | $(document).ready(function() { 12 | $('.sliding-panel-button,.sliding-panel-fade-screen,.sliding-panel-close').on('click touchstart',function (e) { 13 | $('.sliding-panel-content,.sliding-panel-fade-screen').toggleClass('is-visible'); 14 | e.preventDefault(); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /source/search.json: -------------------------------------------------------------------------------- 1 | --- 2 | layout: null 3 | --- 4 | [ 5 | {% for post in site.posts %} 6 | { 7 | "title" : "{{ post.title | escape }}", 8 | "category" : "{{ post.category }}", 9 | "tags" : "{{ post.tags | array_to_sentence_string }}", 10 | "url" : "{{ site.baseurl }}{{ post.url }}", 11 | "date" : "{{ post.date }}" 12 | } {% unless forloop.last %},{% endunless %} 13 | {% endfor %} 14 | ] 15 | --------------------------------------------------------------------------------