├── .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 | 
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 |
10 | {% else %}
11 |
14 |
15 | {{ post.date | date: "%b %-d, %Y" }}{% if post.category %} | {{ post.category }}{% endif %}
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 |
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 | Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
16 | Aliquam tincidunt mauris eu risus.
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 |
24 | Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
25 | Aliquam tincidunt mauris eu risus.
26 |
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 |
--------------------------------------------------------------------------------