├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── config.yml │ └── feature_request.md ├── release-drafter.yml └── workflows │ ├── ci-master.yml │ ├── ci.yml │ └── publish.yml ├── .gitignore ├── .prettierignore ├── .prettierrc ├── .stylelintrc.json ├── 404.html ├── ACKNOWLEDGEMENTS.md ├── CODE_OF_CONDUCT.md ├── Gemfile ├── LICENSE.txt ├── README.md ├── Rakefile ├── _config.yml ├── _includes ├── active.html ├── archive-single.html ├── crumbs.html ├── css │ ├── custom.scss.liquid │ └── just-the-docs.scss.liquid ├── documents-collection.html ├── figure ├── head.html ├── head_custom.html ├── js │ └── custom.js ├── nav.html ├── sidebar.html ├── title.html ├── toc ├── toc-mm.html ├── toc.html └── vendor │ └── anchor_headings.html ├── _layouts ├── about.html ├── archive.html ├── default.html ├── home.html ├── page.html ├── post.html ├── single.html ├── table_wrappers.html └── vendor │ └── compress.html ├── _sass ├── _portal.scss ├── base.scss ├── buttons.scss ├── code.scss ├── color_schemes │ ├── dark.scss │ └── light.scss ├── content.scss ├── custom │ └── custom.scss ├── labels.scss ├── layout.scss ├── minimal-mistakes │ ├── _animations.scss │ ├── _archive.scss │ ├── _base.scss │ ├── _buttons.scss │ ├── _footer.scss │ ├── _forms.scss │ ├── _masthead.scss │ ├── _mixins.scss │ ├── _navigation.scss │ ├── _notices.scss │ ├── _page.scss │ ├── _print.scss │ ├── _reset.scss │ ├── _search.scss │ ├── _sidebar.scss │ ├── _syntax.scss │ ├── _tables.scss │ ├── _utilities.scss │ ├── _variables.scss │ ├── skins │ │ ├── _air.scss │ │ ├── _aqua.scss │ │ ├── _contrast.scss │ │ ├── _dark.scss │ │ ├── _default.scss │ │ ├── _dirt.scss │ │ ├── _mint.scss │ │ ├── _neon.scss │ │ ├── _plum.scss │ │ └── _sunrise.scss │ └── vendor │ │ ├── breakpoint │ │ ├── _breakpoint.scss │ │ ├── _context.scss │ │ ├── _helpers.scss │ │ ├── _legacy-settings.scss │ │ ├── _no-query.scss │ │ ├── _parsers.scss │ │ ├── _respond-to.scss │ │ ├── _settings.scss │ │ └── parsers │ │ │ ├── _double.scss │ │ │ ├── _query.scss │ │ │ ├── _resolution.scss │ │ │ ├── _single.scss │ │ │ ├── _triple.scss │ │ │ ├── double │ │ │ ├── _default-pair.scss │ │ │ ├── _default.scss │ │ │ └── _double-string.scss │ │ │ ├── resolution │ │ │ └── _resolution.scss │ │ │ ├── single │ │ │ └── _default.scss │ │ │ └── triple │ │ │ └── _default.scss │ │ ├── magnific-popup │ │ ├── _magnific-popup.scss │ │ └── _settings.scss │ │ └── susy │ │ ├── _su.scss │ │ ├── _susy-prefix.scss │ │ ├── _susy.scss │ │ ├── plugins │ │ ├── _svg-grid.scss │ │ └── svg-grid │ │ │ ├── _prefix.scss │ │ │ ├── _svg-api.scss │ │ │ ├── _svg-grid-math.scss │ │ │ ├── _svg-settings.scss │ │ │ ├── _svg-unprefix.scss │ │ │ └── _svg-utilities.scss │ │ └── susy │ │ ├── _api.scss │ │ ├── _normalize.scss │ │ ├── _parse.scss │ │ ├── _settings.scss │ │ ├── _su-math.scss │ │ ├── _su-validate.scss │ │ ├── _syntax-helpers.scss │ │ ├── _unprefix.scss │ │ └── _utilities.scss ├── modules.scss ├── navigation.scss ├── print.scss ├── search.scss ├── support │ ├── _functions.scss │ ├── _variables.scss │ ├── mixins │ │ ├── _buttons.scss │ │ ├── _layout.scss │ │ ├── _typography.scss │ │ └── mixins.scss │ └── support.scss ├── tables.scss ├── typography.scss ├── utilities │ ├── _colors.scss │ ├── _layout.scss │ ├── _lists.scss │ ├── _spacing.scss │ ├── _typography.scss │ └── utilities.scss └── vendor │ └── normalize.scss │ ├── README.md │ ├── normalize.scss │ └── package.json ├── assets ├── css │ ├── just-the-docs-dark.scss │ ├── just-the-docs-default.scss │ └── just-the-docs-light.scss ├── images │ ├── just-the-docs.png │ └── search.svg └── js │ ├── just-the-docs.js │ ├── vendor │ └── lunr.min.js │ └── zzzz-search-data.json ├── bin └── just-the-docs ├── docs-local └── sample.md ├── docs └── foo.md ├── favicon.ico ├── index.md ├── just-the-docs.gemspec ├── lib └── tasks │ └── search.rake ├── package-lock.json ├── package.json └── script └── build.sh /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Ask a question 4 | url: https://github.com/pmarsceill/just-the-docs/discussions 5 | about: Ask questions and discuss with other community members 6 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/release-drafter.yml: -------------------------------------------------------------------------------- 1 | references: 2 | - v+ 3 | name-template: 'v$RESOLVED_VERSION 🌈' 4 | tag-template: 'v$RESOLVED_VERSION' 5 | categories: 6 | - title: '🚀 Features' 7 | labels: 8 | - 'feature' 9 | - 'enhancement' 10 | - title: '🐛 Bug Fixes' 11 | labels: 12 | - 'fix' 13 | - 'bugfix' 14 | - 'bug' 15 | - title: '🧰 Maintenance' 16 | label: 17 | - 'chore' 18 | - 'dependencies' 19 | change-template: '- $TITLE @$AUTHOR (#$NUMBER)' 20 | version-resolver: 21 | major: 22 | labels: 23 | - 'next-major-release' 24 | minor: 25 | labels: 26 | - 'next-minor-release' 27 | patch: 28 | labels: 29 | - 'patch' 30 | default: minor 31 | template: | 32 | ## Changes 33 | 34 | $CHANGES 35 | -------------------------------------------------------------------------------- /.github/workflows/ci-master.yml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | branches: 4 | - master 5 | 6 | name: Master branch CI 7 | 8 | jobs: 9 | 10 | jekyll-latest: 11 | name: Build Jekyll site (latest) 12 | runs-on: ubuntu-latest 13 | steps: 14 | 15 | - uses: actions/checkout@master 16 | 17 | - name: Build the site in the jekyll/builder container 18 | run: | 19 | docker run --rm \ 20 | --volume="${{ github.workspace }}:/srv/jekyll" \ 21 | jekyll/builder:latest /bin/bash -c "gem install bundler && chmod -R 777 /srv/jekyll && bundle install && bundle exec jekyll build && bundle exec rake search:init" 22 | jekyll-3-8-5: 23 | name: Build Jekyll site (v3.8.5) 24 | runs-on: ubuntu-latest 25 | steps: 26 | 27 | - uses: actions/checkout@master 28 | 29 | - name: Build the site in the jekyll/builder container 30 | run: | 31 | docker run --rm \ 32 | --volume="${{ github.workspace }}:/srv/jekyll" \ 33 | jekyll/builder:3.8.5 /bin/bash -c "gem install bundler && chmod -R 777 /srv/jekyll && bundle install && bundle exec jekyll build && bundle exec rake search:init" 34 | assets: 35 | name: Format and test CSS and JS 36 | runs-on: ubuntu-latest 37 | 38 | steps: 39 | - uses: actions/checkout@v2 40 | - name: Use Node.js 12.x 41 | uses: actions/setup-node@v1 42 | with: 43 | node-version: '12.x' 44 | - run: npm install 45 | - run: npm test 46 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | on: [pull_request] 2 | 3 | name: CI 4 | 5 | jobs: 6 | 7 | jekyll-latest: 8 | name: Build Jekyll site (latest) 9 | runs-on: ubuntu-latest 10 | steps: 11 | 12 | - uses: actions/checkout@v2 13 | 14 | - name: Build the site in the jekyll/builder container 15 | run: | 16 | docker run --rm \ 17 | --volume="${{ github.workspace }}:/srv/jekyll" \ 18 | jekyll/builder:latest /bin/bash -c "gem install bundler && chmod -R 777 /srv/jekyll && bundle install && bundle exec jekyll build && bundle exec rake search:init" 19 | 20 | jekyll-3-8-5: 21 | name: Build Jekyll site (v3.8.5) 22 | runs-on: ubuntu-latest 23 | steps: 24 | 25 | - uses: actions/checkout@v2 26 | 27 | - name: Build the site in the jekyll/builder container 28 | run: | 29 | docker run --rm \ 30 | --volume="${{ github.workspace }}:/srv/jekyll" \ 31 | jekyll/builder:3.8.5 /bin/bash -c "gem install bundler && chmod -R 777 /srv/jekyll && bundle install && bundle exec jekyll build && bundle exec rake search:init" 32 | 33 | assets: 34 | name: Test CSS and JS 35 | runs-on: ubuntu-latest 36 | 37 | steps: 38 | - uses: actions/checkout@v2 39 | - name: Use Node.js 12.x 40 | uses: actions/setup-node@v1 41 | with: 42 | node-version: '12.x' 43 | - run: npm install 44 | - run: npm test 45 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: Publish Gem 2 | 3 | on: [release] 4 | 5 | jobs: 6 | build: 7 | name: Build + Publish 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - uses: actions/checkout@master 12 | - name: Set up Ruby 2.6 13 | uses: actions/setup-ruby@v1 14 | with: 15 | version: 2.6.x 16 | 17 | - name: Publish to GPR 18 | run: | 19 | mkdir -p $HOME/.gem 20 | touch $HOME/.gem/credentials 21 | chmod 0600 $HOME/.gem/credentials 22 | printf -- "---\n:github: Bearer ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials 23 | gem build just-the-docs.gemspec 24 | gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem 25 | env: 26 | GEM_HOST_API_KEY: ${{secrets.GPR_AUTH_TOKEN}} 27 | OWNER: pmarsceill 28 | 29 | - name: Publish to RubyGems 30 | run: | 31 | mkdir -p $HOME/.gem 32 | touch $HOME/.gem/credentials 33 | chmod 0600 $HOME/.gem/credentials 34 | printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials 35 | gem build just-the-docs.gemspec 36 | gem push *.gem 37 | env: 38 | GEM_HOST_API_KEY: ${{secrets.RUBYGEMS_AUTH_TOKEN}} 39 | 40 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.gem 2 | .bundle 3 | .ruby-version 4 | .jekyll-cache 5 | .sass-cache 6 | _site 7 | Gemfile.lock 8 | node_modules 9 | .vscode 10 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | package.json 2 | package-lock.json 3 | _site 4 | assets/css/just-the-docs-default.scss 5 | assets/css/just-the-docs-light.scss 6 | assets/css/just-the-docs-dark.scss 7 | assets/js/vendor/lunr.min.js 8 | assets/js/search-data.json 9 | assets/js/just-the-docs.js 10 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "endOfLine": "lf", 3 | "semi": false, 4 | "singleQuote": false, 5 | "tabWidth": 2, 6 | "trailingComma": "es5" 7 | } 8 | 9 | -------------------------------------------------------------------------------- /.stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "ignoreFiles": [ 3 | "assets/css/just-the-docs-default.scss", 4 | "assets/css/just-the-docs-light.scss", 5 | "assets/css/just-the-docs-dark.scss", 6 | "_sass/vendor/**/*.scss" 7 | ], 8 | "extends": ["stylelint-config-primer", "stylelint-config-prettier"], 9 | "plugins": ["stylelint-prettier"], 10 | "rules": { 11 | "prettier/prettier": true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /404.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Page not found 4 | permalink: /404 5 | nav_exclude: true 6 | search_exclude: true 7 | --- 8 | 9 |

Page not found

10 | 11 |

The page you requested could not be found. Try using the navigation {% if site.search_enabled != false %}or search {% endif %}to find what you're looking for or go to this site's home page.

12 | -------------------------------------------------------------------------------- /ACKNOWLEDGEMENTS.md: -------------------------------------------------------------------------------- 1 | The dendron-jekyll theme is made from a fork of the [just-the-docs](https://github.com/pmarsceill/just-the-docs) theme which is available under the MIT license, the full text of which is included below: 2 | 3 | ``` 4 | The MIT License (MIT) 5 | 6 | Copyright (c) 2016 Patrick Marsceill 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | ``` -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at patrick.marsceill@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | gemspec 3 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Patrick Marsceill 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 13 | all 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 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 |

Dendron Jekyll

3 |

4 | 5 | This is the Jekyll theme used by Dendron. It is a fork of [just-the-docs](https://pmarsceill.github.io/just-the-docs/) theme with custom changes to allow for deep hierarchies, lookups and unique ids. It also borrows many elements from the [minimal mistakes](https://mmistakes.github.io/minimal-mistakes/). 6 | 7 | 12 | 13 | ![dendron-jekyll](https://foundation-prod-assetspublic53c57cce-8cpvgjldwysl.s3-us-west-2.amazonaws.com/assets/images/site-lookup.gif) 14 | 15 | 16 | ## Installation 17 | 18 | Add this line to your Jekyll site's Gemfile: 19 | 20 | ```ruby 21 | gem "dendron-jekyll" 22 | ``` 23 | 24 | And add this line to your Jekyll site's `_config.yml`: 25 | 26 | ```yaml 27 | theme: dendron-jekyll 28 | ``` 29 | 30 | And then execute: 31 | 32 | $ bundle 33 | 34 | Or install it yourself as: 35 | 36 | $ gem install dendron-jekyll 37 | 38 | ## Usage 39 | 40 | [View the documentation](https://pmarsceill.github.io/just-the-docs/) for usage information. 41 | 42 | ## Contributing 43 | 44 | Bug reports and pull requests are welcome on GitHub at https://github.com/pmarsceill/just-the-docs. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. 45 | 46 | ### Submitting code changes: 47 | 48 | - Open a [Pull Request](https://github.com/pmarsceill/just-the-docs/pulls) 49 | - Ensure all CI tests pass 50 | - Await code review 51 | - Bump the version number in `just-the-docs.gemspec` and `package.json` according to [semantic versioning](https://semver.org/). 52 | 53 | ### Design and development principles of this theme: 54 | 55 | 1. As few dependencies as possible 56 | 2. No build script needed 57 | 3. First class mobile experience 58 | 4. Make the content shine 59 | 60 | ## Development 61 | 62 | To set up your environment to develop this theme, run `bundle install`. 63 | 64 | Your theme is set up just like a normal Jekyll site! To test your theme, run `bundle exec jekyll serve` and open your browser at `http://localhost:4000`. This starts a Jekyll server using your theme. Add pages, documents, data, etc. like normal to test your theme's contents. As you make modifications to your theme and to your content, your site will regenerate and you should see the changes in the browser after a refresh, just like normal. 65 | 66 | When the theme is released, only the files in `_layouts`, `_includes`, and `_sass` tracked with Git will be released. 67 | 68 | ## License 69 | 70 | The theme is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT). 71 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | Dir.glob('lib/tasks/*.rake').each {|r| import r} 2 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # Welcome to Jekyll! 2 | # 3 | # This config file is meant for settings that affect your whole site, values 4 | # which you are expected to set up once and rarely edit after that. If you find 5 | # yourself editing these this file very often, consider using Jekyll's data files 6 | # feature for the data you need to update frequently. 7 | # 8 | # For technical reasons, this file is *NOT* reloaded automatically when you use 9 | # 'jekyll serve'. If you change this file, please restart the server process. 10 | 11 | # Site settings 12 | # These are used to personalize your new site. If you look in the HTML files, 13 | # you will see them accessed via {{ site.title }}, {{ site.github_repo }}, and so on. 14 | # You can create any custom variable you would like, and they will be accessible 15 | # in the templates via {{ site.myvariable }}. 16 | title: Just the Docs 17 | description: A Jekyll theme for documentation 18 | baseurl: "" # the subpath of your site, e.g. /blog 19 | url: "https://pmarsceill.github.io" # the base hostname & protocol for your site, e.g. http://example.com 20 | 21 | enable_mathjax: true 22 | kramdown: 23 | math_engine: mathjax 24 | 25 | 26 | permalink: pretty 27 | exclude: ["node_modules/", "*.gemspec", "*.gem", "Gemfile", "Gemfile.lock", "package.json", "package-lock.json", "script/", "LICENSE.txt", "lib/", "bin/", "README.md", "Rakefile"] 28 | 29 | # Set a path/url to a logo that will be displayed instead of the title 30 | #logo: "/assets/images/just-the-docs.png" 31 | 32 | # Enable or disable the site search 33 | # Supports true (default) or false 34 | search_enabled: true 35 | search: 36 | # Split pages into sections that can be searched individually 37 | # Supports 1 - 6, default: 2 38 | heading_level: 2 39 | # Maximum amount of previews per search result 40 | # Default: 3 41 | previews: 3 42 | # Maximum amount of words to display before a matched word in the preview 43 | # Default: 5 44 | preview_words_before: 5 45 | # Maximum amount of words to display after a matched word in the preview 46 | # Default: 10 47 | preview_words_after: 10 48 | # Set the search token separator 49 | # Default: /[\s\-/]+/ 50 | # Example: enable support for hyphenated search words 51 | tokenizer_separator: /[\s/]+/ 52 | # Display the relative url in search results 53 | # Supports true (default) or false 54 | rel_url: true 55 | # Enable or disable the search button that appears in the bottom right corner of every page 56 | # Supports true or false (default) 57 | button: false 58 | 59 | # Enable or disable heading anchors 60 | heading_anchors: true 61 | 62 | # Aux links for the upper right navigation 63 | aux_links: 64 | "Dendron on Github": 65 | - "https://github.com/dendronhq/dendron" 66 | 67 | # Makes Aux links open in a new tab. Default is true 68 | aux_links_new_tab: true 69 | 70 | # Sort order for navigation links 71 | nav_sort: case_insensitive # default, equivalent to nil 72 | # nav_sort: case_sensitive # Capital letters sorted before lowercase 73 | 74 | # Footer content 75 | # appears at the bottom of every page's main content 76 | 77 | # Back to top link 78 | back_to_top: true 79 | back_to_top_text: "Back to top" 80 | 81 | footer_content: "Copyright © 2017-2020 Patrick Marsceill. Distributed by an MIT license." 82 | 83 | # Footer last edited timestamp 84 | last_edit_timestamp: true # show or hide edit time - page must have `last_modified_date` defined in the frontmatter 85 | last_edit_time_format: "%b %e %Y at %I:%M %p" # uses ruby's time format: https://ruby-doc.org/stdlib-2.7.0/libdoc/time/rdoc/Time.html 86 | 87 | dendron_vault_path: "vault" 88 | 89 | # Footer "Edit this page on GitHub" link text 90 | gh_edit_link: true # show or hide edit this page link 91 | gh_edit_link_text: "Edit this page on GitHub" 92 | gh_edit_repository: "https://github.com/pmarsceill/just-the-docs" # the github URL for your repo 93 | gh_edit_branch: "master" # the branch that your docs is served from 94 | gh_root: "docs/" # doc root 95 | gh_edit_view_mode: "edit" # "tree" or "edit" if you want the user to jump into the editor immediately 96 | 97 | # Color scheme currently only supports "dark", "light"/nil (default), or a custom scheme that you define 98 | color_scheme: nil 99 | 100 | # Google Analytics Tracking (optional) 101 | # e.g, UA-1234567-89 102 | ga_tracking: UA-2709176-10 103 | ga_tracking_anonymize_ip: true # Use GDPR compliant Google Analytics settings (true/nil by default) 104 | 105 | plugins: 106 | - jekyll-seo-tag 107 | 108 | compress_html: 109 | clippings: all 110 | comments: all 111 | endings: all 112 | startings: [] 113 | blanklines: false 114 | profile: false 115 | 116 | defaults: 117 | - 118 | scope: 119 | path: "docs" # an empty string here means all files in the project 120 | values: 121 | layout: "default" 122 | image: "/assets/images/logo.png" 123 | -------------------------------------------------------------------------------- /_includes/active.html: -------------------------------------------------------------------------------- 1 | {%- if page.url == include.node.url -%} 2 | {%- assign active = true -%} 3 | {%- else -%} 4 | {%- assign activityChildren = hierarchy | where_exp:"item", "item.name == include.node.id" | map: "items" | first -%} 5 | {%- for activityNode in activityChildren -%} 6 | {%- include active.html node=activityNode -%} 7 | {%- endfor -%} 8 | {%- endif -%} 9 | -------------------------------------------------------------------------------- /_includes/archive-single.html: -------------------------------------------------------------------------------- 1 | {% if post.header.teaser %} 2 | {% capture teaser %}{{ post.header.teaser }}{% endcapture %} 3 | {% else %} 4 | {% assign teaser = site.teaser %} 5 | {% endif %} 6 | 7 | {% if post.id %} 8 | {% assign title = post.title | markdownify | remove: "

" | remove: "

" %} 9 | {% else %} 10 | {% assign title = post.title %} 11 | {% endif %} 12 | 13 |
14 |
15 | {% if include.type == "grid" and teaser %} 16 |
17 | 18 |
19 | {% endif %} 20 |

21 | {% if post.link %} 22 | {{ title }} Permalink 23 | {% else %} 24 | {{ title }} 25 | {% endif %} 26 |

27 |

{{post.date | date_to_string }}

28 | {% if post.read_time %} 29 |

{% include read-time.html %}

30 | {% endif %} 31 | {% if post.excerpt %}

{{ post.excerpt | markdownify | strip_html | truncate: 160 }}

{% endif %} 32 |
33 |
34 | -------------------------------------------------------------------------------- /_includes/crumbs.html: -------------------------------------------------------------------------------- 1 | {%- for crumbsNode in include.nodes -%} 2 | {%- include active.html node=crumbsNode -%} 3 | {%- if active -%} 4 | {%- assign active = false -%} 5 | 12 | {%- assign crumbsChildren = hierarchy | where_exp:"item", "item.name == crumbsNode.id" | map: "items" | first -%} 13 | {%- include crumbs.html nodes=crumbsChildren -%} 14 | {%- endif -%} 15 | {%- endfor -%} 16 | -------------------------------------------------------------------------------- /_includes/css/custom.scss.liquid: -------------------------------------------------------------------------------- 1 | @import "./custom/custom"; 2 | -------------------------------------------------------------------------------- /_includes/css/just-the-docs.scss.liquid: -------------------------------------------------------------------------------- 1 | {% if site.logo %} 2 | $logo: "{{ site.logo | absolute_url }}"; 3 | {% endif %} 4 | @import "./support/support"; 5 | @import "./color_schemes/{{ include.color_scheme }}"; 6 | @import "./modules"; 7 | {% include css/custom.scss.liquid %} 8 | -------------------------------------------------------------------------------- /_includes/documents-collection.html: -------------------------------------------------------------------------------- 1 | {% comment %} 2 | {% assign entries = site[include.collection] %} 3 | {% endcomment %} 4 | 5 | {%- assign entries = hierarchy | where_exp:"item", "item.name == page.id" | map: "items" | first -%} 6 | 7 | {% if include.sort_by == 'title' %} 8 | {% if include.sort_order == 'reverse' %} 9 | {% assign entries = entries | sort: 'title' | reverse %} 10 | {% else %} 11 | {% assign entries = entries | sort: 'title' %} 12 | {% endif %} 13 | {% elsif include.sort_by == 'date' %} 14 | {% if include.sort_order == 'reverse' %} 15 | {% assign entries = entries | sort: 'date' | reverse %} 16 | {% else %} 17 | {% assign entries = entries | sort: 'date' %} 18 | {% endif %} 19 | {% endif %} 20 | 21 | {%- for post in entries -%} 22 | {%- unless post.hidden -%} 23 | {% include archive-single.html %} 24 | {%- endunless -%} 25 | {%- endfor -%} 26 | -------------------------------------------------------------------------------- /_includes/figure: -------------------------------------------------------------------------------- 1 |
2 | {% if include.alt %}{{ include.alt }}{% endif %} 4 | {% if include.caption %} 5 |
6 | {{ include.caption | markdownify | remove: "

" | remove: "

" }} 7 |
8 | {% endif %} 9 |
10 | -------------------------------------------------------------------------------- /_includes/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {% unless site.plugins contains "jekyll-seo-tag" %} 6 | {{ page.title }} - {{ site.title }} 7 | 8 | {% if page.description %} 9 | 10 | {% endif %} 11 | {% endunless %} 12 | 13 | 14 | 15 | 16 | 17 | {% if site.ga_tracking != nil %} 18 | 19 | 26 | 27 | {% endif %} 28 | 29 | {% if site.search_enabled != false %} 30 | 31 | {% endif %} 32 | 33 | 34 | 35 | 36 | {% if page.noindex %} 37 | 38 | {% endif %} 39 | 40 | 41 | {% seo %} 42 | 43 | {% include head_custom.html %} 44 | 45 | -------------------------------------------------------------------------------- /_includes/head_custom.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dendronhq/dendron-jekyll/ae4bf760140461a64d7290e87f04b59bde2afa72/_includes/head_custom.html -------------------------------------------------------------------------------- /_includes/js/custom.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dendronhq/dendron-jekyll/ae4bf760140461a64d7290e87f04b59bde2afa72/_includes/js/custom.js -------------------------------------------------------------------------------- /_includes/nav.html: -------------------------------------------------------------------------------- 1 | {%- assign groups = include.nodes | group_by:"category" | sort:"name" -%} 2 | 3 | {%- if groups.size > 0 -%} 4 | 39 | {%- endif -%} 40 | -------------------------------------------------------------------------------- /_includes/sidebar.html: -------------------------------------------------------------------------------- 1 | {% if page.author_profile or layout.author_profile or page.sidebar %} 2 | 19 | {% endif %} 20 | -------------------------------------------------------------------------------- /_includes/title.html: -------------------------------------------------------------------------------- 1 | {% if site.logo %} 2 | 3 | {% else %} 4 | {{ site.title }} 5 | {% endif %} 6 | -------------------------------------------------------------------------------- /_includes/toc: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /_includes/toc-mm.html: -------------------------------------------------------------------------------- 1 | {% capture tocWorkspace %} 2 | {% comment %} 3 | Version 1.0.8 4 | https://github.com/allejo/jekyll-toc 5 | 6 | "...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe 7 | 8 | Usage: 9 | {% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %} 10 | 11 | Parameters: 12 | * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll 13 | 14 | Optional Parameters: 15 | * sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC 16 | * class (string) : '' - a CSS class assigned to the TOC 17 | * id (string) : '' - an ID to assigned to the TOC 18 | * h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored 19 | * h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored 20 | * ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list 21 | * item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level 22 | * baseurl (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content 23 | * anchor_class (string) : '' - add custom class(es) for each anchor element 24 | 25 | Output: 26 | An ordered or unordered list representing the table of contents of a markdown block. This snippet will only 27 | generate the table of contents and will NOT output the markdown given to it 28 | {% endcomment %} 29 | 30 | {% capture my_toc %}{% endcapture %} 31 | {% assign orderedList = include.ordered | default: false %} 32 | {% assign minHeader = include.h_min | default: 1 %} 33 | {% assign maxHeader = include.h_max | default: 6 %} 34 | {% assign nodes = include.html | split: ' maxHeader %} 47 | {% continue %} 48 | {% endif %} 49 | 50 | {% if firstHeader %} 51 | {% assign firstHeader = false %} 52 | {% assign minHeader = headerLevel %} 53 | {% endif %} 54 | 55 | {% assign indentAmount = headerLevel | minus: minHeader %} 56 | {% assign _workspace = node | split: '' | first }}>{% endcapture %} 71 | {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %} 72 | 73 | {% assign space = '' %} 74 | {% for i in (1..indentAmount) %} 75 | {% assign space = space | prepend: ' ' %} 76 | {% endfor %} 77 | 78 | {% unless include.item_class == blank %} 79 | {% capture listItemClass %}{:.{{ include.item_class | replace: '%level%', headerLevel }}}{% endcapture %} 80 | {% endunless %} 81 | 82 | {% capture heading_body %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% endcapture %} 83 | {% capture my_toc %}{{ my_toc }} 84 | {{ space }}{{ listModifier }} {{ listItemClass }} [{{ heading_body | replace: "|", "\|" }}]({% if include.baseurl %}{{ include.baseurl }}{% endif %}#{{ html_id }}){% if include.anchor_class %}{:.{{ include.anchor_class }}}{% endif %}{% endcapture %} 85 | {% endfor %} 86 | 87 | {% if include.class %} 88 | {% capture my_toc %}{:.{{ include.class }}} 89 | {{ my_toc | lstrip }}{% endcapture %} 90 | {% endif %} 91 | 92 | {% if include.id %} 93 | {% capture my_toc %}{: #{{ include.id }}} 94 | {{ my_toc | lstrip }}{% endcapture %} 95 | {% endif %} 96 | {% endcapture %}{% assign tocWorkspace = '' %}{{ my_toc | markdownify | strip }} 97 | -------------------------------------------------------------------------------- /_includes/toc.html: -------------------------------------------------------------------------------- 1 | {%- assign tocNodes = hierarchy | where_exp:"item", "item.name == page.id" | map: "items" | first -%} 2 | {%- if tocNodes.size > 0 -%} 3 |
4 |

Table of contents

5 | {%- assign sorted_nodes = tocNodes | sort_natural:"nav_order" -%} 6 | 17 | {%- endif -%} 18 | -------------------------------------------------------------------------------- /_includes/vendor/anchor_headings.html: -------------------------------------------------------------------------------- 1 | {% capture headingsWorkspace %} 2 | {% comment %} 3 | Version 1.0.3 4 | https://github.com/allejo/jekyll-anchor-headings 5 | 6 | "Be the pull request you wish to see in the world." ~Ben Balter 7 | 8 | Usage: 9 | {% include anchor_headings.html html=content %} 10 | 11 | Parameters: 12 | * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll 13 | 14 | Optional Parameters: 15 | * beforeHeading (bool) : false - Set to true if the anchor should be placed _before_ the heading's content 16 | * anchorBody (string) : '' - The content that will be placed inside the anchor; the `%heading%` placeholder is available 17 | * anchorClass (string) : '' - The class(es) that will be used for each anchor. Separate multiple classes with a space 18 | * anchorTitle (string) : '' - The `title` attribute that will be used for anchors 19 | * h_min (int) : 1 - The minimum header level to build an anchor for; any header lower than this value will be ignored 20 | * h_max (int) : 6 - The maximum header level to build an anchor for; any header greater than this value will be ignored 21 | * bodyPrefix (string) : '' - Anything that should be inserted inside of the heading tag _before_ its anchor and content 22 | * bodySuffix (string) : '' - Anything that should be inserted inside of the heading tag _after_ its anchor and content 23 | 24 | Output: 25 | The original HTML with the addition of anchors inside of all of the h1-h6 headings. 26 | {% endcomment %} 27 | 28 | {% assign minHeader = include.h_min | default: 1 %} 29 | {% assign maxHeader = include.h_max | default: 6 %} 30 | {% assign beforeHeading = include.beforeHeading %} 31 | {% assign nodes = include.html | split: ' 46 | {% if headerLevel == 0 %} 47 | {% if nextChar != '<' and nextChar != '' %} 48 | {% capture node %}' | first }}>{% endcapture %} 61 | {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %} 62 | 63 | 64 | {% capture anchor %}{% endcapture %} 65 | 66 | {% if html_id and headerLevel >= minHeader and headerLevel <= maxHeader %} 67 | {% capture anchor %}href="#{{ html_id}}" aria-labelledby="{{ html_id}}"{% endcapture %} 68 | 69 | {% if include.anchorClass %} 70 | {% capture anchor %}{{ anchor }} class="{{ include.anchorClass }}"{% endcapture %} 71 | {% endif %} 72 | 73 | {% if include.anchorTitle %} 74 | {% capture anchor %}{{ anchor }} title="{{ include.anchorTitle | replace: '%heading%', header }}"{% endcapture %} 75 | {% endif %} 76 | 77 | {% capture anchor %}{{ include.anchorBody | replace: '%heading%', header | default: '' }}{% endcapture %} 78 | 79 | 80 | {% if beforeHeading %} 81 | {% capture anchor %}{{ anchor }} {% endcapture %} 82 | {% else %} 83 | {% capture anchor %} {{ anchor }}{% endcapture %} 84 | {% endif %} 85 | {% endif %} 86 | 87 | {% capture new_heading %} 88 | 23 | 24 |
25 | {% unless page.header.overlay_color or page.header.overlay_image %} 26 |

{{ page.title }}

27 | {% endunless %} 28 | {{ content }} 29 |
30 | -------------------------------------------------------------------------------- /_layouts/home.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | {{ content }} 6 | -------------------------------------------------------------------------------- /_layouts/page.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | {{ content }} 6 | -------------------------------------------------------------------------------- /_layouts/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | {{ content }} 6 | -------------------------------------------------------------------------------- /_layouts/single.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | {% if page.header.overlay_color or page.header.overlay_image or page.header.image %} 6 | {% include page__hero.html %} 7 | {% elsif page.header.video.id and page.header.video.provider %} 8 | {% include page__hero_video.html %} 9 | {% endif %} 10 | 11 | {% if page.url != "/" and site.breadcrumbs %} 12 | {% unless paginator %} 13 | {% include breadcrumbs.html %} 14 | {% endunless %} 15 | {% endif %} 16 | 17 |
18 | {% include sidebar.html %} 19 | 20 |
21 | {% if page.title %}{% endif %} 22 | {% if page.excerpt %}{% endif %} 23 | {% if page.date %}{% endif %} 24 | {% if page.last_modified_at %}{% endif %} 25 | 26 |
27 | {% unless page.header.overlay_color or page.header.overlay_image %} 28 |
29 | {% if page.title %}

{{ page.title | markdownify | remove: "

" | remove: "

" }}

{% endif %} 30 | {% if page.read_time %} 31 |

{% include read-time.html %}

32 | {% endif %} 33 |
34 | {% endunless %} 35 | 36 |
37 | 38 | {% comment %} 39 | {% if page.toc %} 40 | 46 | {% endif %} 47 | {% endcomment %} 48 | 49 | {{ content }} 50 | {% if page.link %}{% endif %} 51 |
52 | 53 | {% comment %} 54 |
55 | {% if site.data.ui-text[site.locale].meta_label %} 56 |

{{ site.data.ui-text[site.locale].meta_label }}

57 | {% endif %} 58 | {% include page__taxonomy.html %} 59 | {% include page__date.html %} 60 |
61 | 62 | {% if page.share %}{% include social-share.html %}{% endif %} 63 | 64 | {% include post_pagination.html %} 65 | {% endcomment %} 66 |
67 | 68 | {% if jekyll.environment == 'production' and site.comments.provider and page.comments %} 69 | {% include comments.html %} 70 | {% endif %} 71 |
72 | 73 | {% comment %}{% endcomment %} 74 | {% if page.id and page.related and site.related_posts.size > 0 %} 75 | 83 | {% comment %}{% endcomment %} 84 | {% elsif page.id and page.related %} 85 | 96 | {% endif %} 97 |
98 | -------------------------------------------------------------------------------- /_layouts/table_wrappers.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: vendor/compress 3 | --- 4 | 5 | {% assign content_ = content | replace: '', '' %} 7 | {{ content_ }} 8 | -------------------------------------------------------------------------------- /_layouts/vendor/compress.html: -------------------------------------------------------------------------------- 1 | --- 2 | # Jekyll layout that compresses HTML 3 | # v3.1.0 4 | # http://jch.penibelst.de/ 5 | # © 2014–2015 Anatol Broder 6 | # MIT License 7 | --- 8 | 9 | {% capture _LINE_FEED %} 10 | {% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment or site.compress_html.ignore.envs == "all" %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "" %}{% endif %}{% unless _pre_before contains "" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " ;; ;" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %}
Step Bytes
raw {{ content | size }}{% if _profile_endings %}
endings {{ _profile_endings }}{% endif %}{% if _profile_startings %}
startings {{ _profile_startings }}{% endif %}{% if _profile_comments %}
comments {{ _profile_comments }}{% endif %}{% if _profile_collapse %}
collapse {{ _profile_collapse }}{% endif %}{% if _profile_clippings %}
clippings {{ _profile_clippings }}{% endif %}
{% endif %}{% endif %} 11 | -------------------------------------------------------------------------------- /_sass/_portal.scss: -------------------------------------------------------------------------------- 1 | // Clear normal iframe styles 2 | iframe{ 3 | border: none; 4 | } 5 | 6 | // Portal styles 7 | .portal-container{ 8 | overscroll-behavior: contain; 9 | border: 1px solid #C2DFE3; 10 | border-radius: 8px; 11 | margin-bottom: 24px; 12 | padding: 10px; 13 | 14 | -webkit-transition: all .20s ease; 15 | -moz-transition: all .20s ease; 16 | -ms-transition: all .20s ease; 17 | -o-transition: all .20s ease; 18 | transition: all .20s ease; 19 | 20 | &:hover{ 21 | transform: translateY(-3px); 22 | box-shadow: 0px 6px 20px 0px rgba(0,0,0,.15); 23 | border: 1px solid #9DB8BF; 24 | } 25 | 26 | .portal-head{ 27 | border-bottom: 1px solid #C2DFE3; 28 | padding: 12px; 29 | 30 | .portal-backlink{ 31 | display: flex; 32 | flex-direction: column; 33 | 34 | -webkit-transition: all .20s ease; 35 | -moz-transition: all .20s ease; 36 | -ms-transition: all .20s ease; 37 | -o-transition: all .20s ease; 38 | transition: all .20s ease; 39 | // @include align-items($align: left); 40 | 41 | @media(min-width:600px){ 42 | flex-direction: row; 43 | justify-content: space-between; 44 | align-items: center; 45 | } 46 | .portal-title{ 47 | font-size: 14px; 48 | color: #9DB8BF; 49 | .portal-text-title{ 50 | font-weight:700; 51 | color: #5C6D73; 52 | } 53 | } 54 | .portal-arrow{ 55 | font-size: 14px; 56 | color: #9DB8BF; 57 | &:hover{ 58 | opacity:.5; 59 | } 60 | } 61 | } 62 | } 63 | 64 | .portal-iframe{ 65 | overflow:hidden; 66 | } 67 | .portal-parent{ 68 | overflow:hidden; 69 | position: relative; 70 | width:100%; 71 | box-sizing: border-box; 72 | .portal-parent-fader-top{ 73 | position: absolute; 74 | width: 100%; 75 | margin-left: 0px; 76 | height: 36px; 77 | // background-image: linear-gradient(rgba(255,255,255,1), rgba(255,255,255,0)); 78 | z-index: 50; 79 | } 80 | .portal-parent-fader-bottom{ 81 | position: absolute; 82 | width: 100%; 83 | bottom: 6px; 84 | margin-left: 0px; 85 | height: 36px; 86 | // background-image: linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1)); 87 | z-index: 50; 88 | } 89 | .portal-parent-text{ 90 | padding:$base-line-height / 2; 91 | color: #5C6D73; 92 | z-index: 40; 93 | } 94 | .portal-iframe{ 95 | width:100%; 96 | height:400px; 97 | } 98 | } 99 | } 100 | 101 | // Things that happen in the iframe have to be applied to the whole site, 102 | // as you can't use css on iframe contents – not a major issue for the time being, 103 | // considering you have to own the site you're transcluding. 104 | // Make sure your theme's anchor text styling explicitly hits a:link and not all a tags to avoid 105 | // making quoted text look like a link. 106 | .portal-quote-text { 107 | background-color: #C2DFE3; 108 | color: lighten($text-color, 15%); 109 | 110 | // This fixes hovers behaving wrong on safari when using an tag to highlight 111 | &:hover { 112 | text-decoration: none; 113 | } 114 | } 115 | -------------------------------------------------------------------------------- /_sass/base.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Base element style overrides 3 | // 4 | // stylelint-disable selector-no-type, selector-max-type 5 | 6 | * { 7 | box-sizing: border-box; 8 | } 9 | 10 | ::selection { 11 | color: $white; 12 | background: $link-color; 13 | } 14 | 15 | html { 16 | @include fs-4; 17 | scroll-behavior: smooth; 18 | } 19 | 20 | body { 21 | font-family: $body-font-family; 22 | font-size: inherit; 23 | line-height: $body-line-height; 24 | color: $body-text-color; 25 | background-color: $body-background-color; 26 | } 27 | 28 | ol, 29 | ul, 30 | dl, 31 | pre, 32 | address, 33 | blockquote, 34 | table, 35 | div, 36 | hr, 37 | form, 38 | fieldset, 39 | noscript .table-wrapper { 40 | margin-top: 0; 41 | } 42 | 43 | h1, 44 | h2, 45 | h3, 46 | h4, 47 | h5, 48 | h6 { 49 | margin-top: 0; 50 | margin-bottom: 1em; 51 | font-weight: 500; 52 | line-height: $body-heading-line-height; 53 | color: $body-heading-color; 54 | } 55 | 56 | p { 57 | margin-top: 1em; 58 | margin-bottom: 1em; 59 | } 60 | 61 | a { 62 | color: $link-color; 63 | text-decoration: none; 64 | } 65 | 66 | a:not([class]) { 67 | text-decoration: none; 68 | background-image: linear-gradient($border-color 0%, $border-color 100%); 69 | background-repeat: repeat-x; 70 | background-position: 0 100%; 71 | background-size: 1px 1px; 72 | 73 | &:hover { 74 | background-image: linear-gradient( 75 | rgba($link-color, 0.45) 0%, 76 | rgba($link-color, 0.45) 100% 77 | ); 78 | background-size: 1px 1px; 79 | } 80 | } 81 | 82 | code { 83 | font-family: $mono-font-family; 84 | font-size: 0.75em; 85 | line-height: $body-line-height; 86 | } 87 | 88 | figure, 89 | pre { 90 | margin: 0; 91 | } 92 | 93 | li { 94 | margin: 0.25em 0; 95 | } 96 | 97 | img { 98 | max-width: 100%; 99 | height: auto; 100 | } 101 | 102 | hr { 103 | height: 1px; 104 | padding: 0; 105 | margin: $sp-6 0; 106 | background-color: $border-color; 107 | border: 0; 108 | } 109 | -------------------------------------------------------------------------------- /_sass/buttons.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Buttons and things that look like buttons 3 | // 4 | // stylelint-disable color-named 5 | 6 | .btn { 7 | display: inline-block; 8 | box-sizing: border-box; 9 | padding-top: 0.3em; 10 | padding-right: 1em; 11 | padding-bottom: 0.3em; 12 | padding-left: 1em; 13 | margin: 0; 14 | font-family: inherit; 15 | font-size: inherit; 16 | font-weight: 500; 17 | line-height: 1.5; 18 | color: $link-color; 19 | text-decoration: none; 20 | vertical-align: baseline; 21 | cursor: pointer; 22 | background-color: $base-button-color; 23 | border-width: 0; 24 | border-radius: $border-radius; 25 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); 26 | appearance: none; 27 | 28 | &:focus { 29 | text-decoration: none; 30 | outline: none; 31 | box-shadow: 0 0 0 3px rgba(blue, 0.25); 32 | } 33 | 34 | &:focus:hover, 35 | &.selected:focus { 36 | box-shadow: 0 0 0 3px rgba(blue, 0.25); 37 | } 38 | 39 | &:hover, 40 | &.zeroclipboard-is-hover { 41 | color: darken($link-color, 2%); 42 | } 43 | 44 | &:hover, 45 | &:active, 46 | &.zeroclipboard-is-hover, 47 | &.zeroclipboard-is-active { 48 | text-decoration: none; 49 | background-color: darken($base-button-color, 1%); 50 | } 51 | 52 | &:active, 53 | &.selected, 54 | &.zeroclipboard-is-active { 55 | background-color: darken($base-button-color, 3%); 56 | background-image: none; 57 | box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); 58 | } 59 | 60 | &.selected:hover { 61 | background-color: darken(#dcdcdc, 5%); 62 | } 63 | 64 | &:disabled, 65 | &.disabled { 66 | &, 67 | &:hover { 68 | color: rgba(102, 102, 102, 0.5); 69 | cursor: default; 70 | background-color: rgba(229, 229, 229, 0.5); 71 | background-image: none; 72 | box-shadow: none; 73 | } 74 | } 75 | } 76 | 77 | .btn-outline { 78 | color: $link-color; 79 | background: transparent; 80 | box-shadow: inset 0 0 0 2px $grey-lt-300; 81 | 82 | &:hover, 83 | &:active, 84 | &.zeroclipboard-is-hover, 85 | &.zeroclipboard-is-active { 86 | color: darken($link-color, 4%); 87 | text-decoration: none; 88 | background-color: transparent; 89 | box-shadow: inset 0 0 0 3px $grey-lt-300; 90 | } 91 | 92 | &:focus { 93 | text-decoration: none; 94 | outline: none; 95 | box-shadow: inset 0 0 0 2px $grey-dk-100, 0 0 0 3px rgba(blue, 0.25); 96 | } 97 | 98 | &:focus:hover, 99 | &.selected:focus { 100 | box-shadow: inset 0 0 0 2px $grey-dk-100; 101 | } 102 | } 103 | 104 | .btn-primary { 105 | @include btn-color($white, $btn-primary-color); 106 | } 107 | 108 | .btn-purple { 109 | @include btn-color($white, $purple-100); 110 | } 111 | 112 | .btn-blue { 113 | @include btn-color($white, $blue-000); 114 | } 115 | 116 | .btn-green { 117 | @include btn-color($white, $green-100); 118 | } 119 | -------------------------------------------------------------------------------- /_sass/color_schemes/dark.scss: -------------------------------------------------------------------------------- 1 | $body-background-color: $grey-dk-300; 2 | $sidebar-color: $grey-dk-300; 3 | $border-color: $grey-dk-200; 4 | 5 | $body-text-color: $grey-lt-300; 6 | $body-heading-color: $grey-lt-000; 7 | $nav-child-link-color: $grey-dk-000; 8 | $search-result-preview-color: $grey-dk-000; 9 | 10 | $link-color: $blue-000; 11 | $btn-primary-color: $blue-200; 12 | $base-button-color: $grey-dk-250; 13 | 14 | $code-background-color: $grey-dk-250; 15 | $search-background-color: $grey-dk-250; 16 | $table-background-color: $grey-dk-250; 17 | $feedback-color: darken($sidebar-color, 3%); 18 | -------------------------------------------------------------------------------- /_sass/color_schemes/light.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dendronhq/dendron-jekyll/ae4bf760140461a64d7290e87f04b59bde2afa72/_sass/color_schemes/light.scss -------------------------------------------------------------------------------- /_sass/content.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | // 4 | // Styles for rendered markdown in the .main-content container 5 | // 6 | // stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type 7 | 8 | .main-content { 9 | line-height: $content-line-height; 10 | 11 | ol, 12 | ul, 13 | dl, 14 | pre, 15 | address, 16 | blockquote, 17 | .table-wrapper { 18 | margin-top: 0.5em; 19 | } 20 | 21 | a { 22 | overflow: hidden; 23 | text-overflow: ellipsis; 24 | white-space: nowrap; 25 | } 26 | 27 | ul, 28 | ol { 29 | padding-left: 1.5em; 30 | } 31 | 32 | li { 33 | .highlight { 34 | margin-top: $sp-1; 35 | } 36 | } 37 | 38 | ol { 39 | list-style-type: none; 40 | counter-reset: step-counter; 41 | 42 | > li { 43 | position: relative; 44 | 45 | &::before { 46 | position: absolute; 47 | top: 0.2em; 48 | left: -1.6em; 49 | color: $grey-dk-000; 50 | content: counter(step-counter); 51 | counter-increment: step-counter; 52 | @include fs-3; 53 | 54 | @include mq(sm) { 55 | top: 0.11em; 56 | } 57 | } 58 | 59 | ol { 60 | counter-reset: sub-counter; 61 | 62 | li { 63 | &::before { 64 | content: counter(sub-counter, lower-alpha); 65 | counter-increment: sub-counter; 66 | } 67 | } 68 | } 69 | } 70 | } 71 | 72 | ul { 73 | list-style: none; 74 | 75 | > li { 76 | &::before { 77 | position: absolute; 78 | margin-left: -1.4em; 79 | color: $grey-dk-000; 80 | content: "•"; 81 | } 82 | } 83 | } 84 | 85 | .task-list { 86 | padding-left: 0; 87 | } 88 | 89 | .task-list-item { 90 | align-items: center; 91 | 92 | &::before { 93 | content: ""; 94 | } 95 | } 96 | 97 | .task-list-item-checkbox { 98 | margin-right: 0.6em; 99 | } 100 | 101 | hr + * { 102 | margin-top: 0; 103 | } 104 | 105 | h1:first-of-type { 106 | margin-top: 0.5em; 107 | } 108 | 109 | dl { 110 | display: grid; 111 | grid-template-columns: max-content 1fr; 112 | } 113 | 114 | dt, 115 | dd { 116 | margin: 0.25em 0; 117 | } 118 | 119 | dt { 120 | text-align: right; 121 | 122 | &::after { 123 | content: ":"; 124 | } 125 | } 126 | 127 | dd { 128 | margin-left: 1em; 129 | font-weight: 500; 130 | } 131 | 132 | .anchor-heading { 133 | position: absolute; 134 | right: -$sp-4; 135 | width: $sp-5; 136 | height: 100%; 137 | padding-right: $sp-1; 138 | padding-left: $sp-1; 139 | overflow: visible; 140 | 141 | @include mq(md) { 142 | right: auto; 143 | left: -$sp-5; 144 | } 145 | 146 | svg { 147 | display: inline-block; 148 | width: 100%; 149 | height: 100%; 150 | color: $link-color; 151 | visibility: hidden; 152 | } 153 | } 154 | 155 | .anchor-heading:hover, 156 | h1:hover > .anchor-heading, 157 | h2:hover > .anchor-heading, 158 | h3:hover > .anchor-heading, 159 | h4:hover > .anchor-heading, 160 | h5:hover > .anchor-heading, 161 | h6:hover > .anchor-heading { 162 | svg { 163 | visibility: visible; 164 | } 165 | } 166 | 167 | summary { 168 | cursor: pointer; 169 | } 170 | 171 | h1, 172 | h2, 173 | h3, 174 | h4, 175 | h5, 176 | h6 { 177 | position: relative; 178 | margin-top: 1.5em; 179 | margin-bottom: 0.25em; 180 | 181 | &:first-child { 182 | margin-top: $sp-2; 183 | } 184 | 185 | + table, 186 | + .table-wrapper, 187 | + .code-example, 188 | + .highlighter-rouge { 189 | margin-top: 1em; 190 | } 191 | 192 | + p { 193 | margin-top: 0; 194 | } 195 | } 196 | } 197 | -------------------------------------------------------------------------------- /_sass/custom/custom.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dendronhq/dendron-jekyll/ae4bf760140461a64d7290e87f04b59bde2afa72/_sass/custom/custom.scss -------------------------------------------------------------------------------- /_sass/labels.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Labels (not the form kind) 3 | // 4 | 5 | .label, 6 | .label-blue { 7 | display: inline-block; 8 | padding-top: 0.16em; 9 | padding-right: 0.56em; 10 | padding-bottom: 0.16em; 11 | padding-left: 0.56em; 12 | margin-right: $sp-2; 13 | margin-left: $sp-2; 14 | color: $white; 15 | text-transform: uppercase; 16 | vertical-align: middle; 17 | background-color: $blue-100; 18 | @include fs-2; 19 | border-radius: 12px; 20 | } 21 | 22 | .label-green { 23 | background-color: $green-200; 24 | } 25 | 26 | .label-purple { 27 | background-color: $purple-100; 28 | } 29 | 30 | .label-red { 31 | background-color: $red-200; 32 | } 33 | 34 | .label-yellow { 35 | color: $grey-dk-200; 36 | background-color: $yellow-200; 37 | } 38 | -------------------------------------------------------------------------------- /_sass/layout.scss: -------------------------------------------------------------------------------- 1 | // 2 | // The basic two column layout 3 | // 4 | 5 | .side-bar { 6 | z-index: 0; 7 | display: flex; 8 | flex-wrap: wrap; 9 | background-color: $sidebar-color; 10 | 11 | @include mq(md) { 12 | flex-wrap: nowrap; 13 | position: fixed; 14 | width: $nav-width-md; 15 | height: 100%; 16 | flex-direction: column; 17 | border-right: $border $border-color; 18 | align-items: flex-end; 19 | } 20 | 21 | @include mq(lg) { 22 | width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width}); 23 | min-width: $nav-width; 24 | } 25 | } 26 | 27 | .main { 28 | @include mq(md) { 29 | position: relative; 30 | max-width: $content-width; 31 | margin-left: $nav-width-md; 32 | } 33 | 34 | @include mq(lg) { 35 | margin-left: calc( 36 | (100% - #{$nav-width + $content-width}) / 2 + #{$nav-width} 37 | ); 38 | } 39 | } 40 | 41 | .main-content-wrap { 42 | @include container; 43 | padding-top: $gutter-spacing-sm; 44 | padding-bottom: $gutter-spacing-sm; 45 | 46 | @include mq(md) { 47 | padding-top: $gutter-spacing; 48 | padding-bottom: $gutter-spacing; 49 | } 50 | } 51 | 52 | .main-header { 53 | z-index: 0; 54 | display: none; 55 | background-color: $sidebar-color; 56 | 57 | @include mq(md) { 58 | display: flex; 59 | justify-content: space-between; 60 | height: $header-height; 61 | background-color: $body-background-color; 62 | border-bottom: $border $border-color; 63 | } 64 | 65 | &.nav-open { 66 | display: block; 67 | 68 | @include mq(md) { 69 | display: flex; 70 | } 71 | } 72 | } 73 | 74 | .site-nav, 75 | .site-header, 76 | .site-footer { 77 | width: 100%; 78 | 79 | @include mq(lg) { 80 | width: $nav-width; 81 | } 82 | } 83 | 84 | .site-nav { 85 | display: none; 86 | 87 | &.nav-open { 88 | display: block; 89 | } 90 | 91 | @include mq(md) { 92 | display: block; 93 | padding-top: $sp-8; 94 | padding-bottom: $gutter-spacing-sm; 95 | overflow-y: auto; 96 | flex: 1 1 auto; 97 | } 98 | } 99 | 100 | .site-header { 101 | display: flex; 102 | min-height: $header-height; 103 | align-items: center; 104 | 105 | @include mq(md) { 106 | height: $header-height; 107 | max-height: $header-height; 108 | border-bottom: $border $border-color; 109 | } 110 | } 111 | 112 | .site-title { 113 | @include container; 114 | flex-grow: 1; 115 | display: flex; 116 | height: 100%; 117 | align-items: center; 118 | padding-top: $sp-3; 119 | padding-bottom: $sp-3; 120 | color: $body-heading-color; 121 | @include fs-6; 122 | 123 | @include mq(md) { 124 | padding-top: $sp-2; 125 | padding-bottom: $sp-2; 126 | } 127 | } 128 | 129 | @if variable-exists(logo) { 130 | .site-logo { 131 | width: 100%; 132 | height: 100%; 133 | background-image: url($logo); 134 | background-repeat: no-repeat; 135 | background-position: left center; 136 | background-size: contain; 137 | } 138 | } 139 | 140 | .site-button { 141 | display: flex; 142 | height: 100%; 143 | padding: $gutter-spacing-sm; 144 | align-items: center; 145 | } 146 | 147 | @include mq(md) { 148 | .site-header .site-button { 149 | display: none; 150 | } 151 | } 152 | 153 | .site-title:hover { 154 | background-image: linear-gradient( 155 | -90deg, 156 | rgba($feedback-color, 1) 0%, 157 | rgba($feedback-color, 0.8) 80%, 158 | rgba($feedback-color, 0) 100% 159 | ); 160 | } 161 | 162 | .site-button:hover { 163 | background-image: linear-gradient( 164 | -90deg, 165 | rgba($feedback-color, 1) 0%, 166 | rgba($feedback-color, 0.8) 100% 167 | ); 168 | } 169 | 170 | // stylelint-disable selector-max-type 171 | 172 | body { 173 | position: relative; 174 | padding-bottom: $sp-10; 175 | overflow-y: scroll; 176 | 177 | @include mq(md) { 178 | position: static; 179 | padding-bottom: 0; 180 | } 181 | } 182 | 183 | // stylelint-enable selector-max-type 184 | 185 | .site-footer { 186 | @include container; 187 | position: absolute; 188 | bottom: 0; 189 | left: 0; 190 | padding-top: $sp-4; 191 | padding-bottom: $sp-4; 192 | color: $grey-dk-000; 193 | @include fs-2; 194 | 195 | @include mq(md) { 196 | position: static; 197 | justify-self: end; 198 | } 199 | } 200 | 201 | .icon { 202 | width: $sp-5; 203 | height: $sp-5; 204 | color: $link-color; 205 | } 206 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/_animations.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | ANIMATIONS 3 | ========================================================================== */ 4 | 5 | @-webkit-keyframes intro { 6 | 0% { 7 | opacity: 0; 8 | } 9 | 100% { 10 | opacity: 1; 11 | } 12 | } 13 | 14 | @keyframes intro { 15 | 0% { 16 | opacity: 0; 17 | } 18 | 100% { 19 | opacity: 1; 20 | } 21 | } -------------------------------------------------------------------------------- /_sass/minimal-mistakes/_buttons.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | BUTTONS 3 | ========================================================================== */ 4 | 5 | /* 6 | Default button 7 | ========================================================================== */ 8 | 9 | .btn { 10 | /* default */ 11 | display: inline-block; 12 | margin-bottom: 0.25em; 13 | padding: 0.5em 1em; 14 | font-family: $sans-serif; 15 | font-size: $type-size-6; 16 | font-weight: bold; 17 | text-align: center; 18 | text-decoration: none; 19 | border-width: 0; 20 | border-radius: $border-radius; 21 | cursor: pointer; 22 | 23 | .icon { 24 | margin-right: 0.5em; 25 | } 26 | 27 | .icon + .hidden { 28 | margin-left: -0.5em; /* override for hidden text*/ 29 | } 30 | 31 | /* button colors */ 32 | $buttoncolors: 33 | (primary, $primary-color), 34 | (inverse, #fff), 35 | (light-outline, transparent), 36 | (success, $success-color), 37 | (warning, $warning-color), 38 | (danger, $danger-color), 39 | (info, $info-color), 40 | (facebook, $facebook-color), 41 | (twitter, $twitter-color), 42 | (linkedin, $linkedin-color); 43 | 44 | @each $buttoncolor, $color in $buttoncolors { 45 | &--#{$buttoncolor} { 46 | @include yiq-contrasted($color); 47 | @if ($buttoncolor == inverse) { 48 | border: 1px solid $border-color; 49 | } 50 | @if ($buttoncolor == light-outline) { 51 | border: 1px solid #fff; 52 | } 53 | 54 | &:visited { 55 | @include yiq-contrasted($color); 56 | } 57 | 58 | &:hover { 59 | @include yiq-contrasted(mix(#000, $color, 20%)); 60 | } 61 | } 62 | } 63 | 64 | /* fills width of parent container */ 65 | &--block { 66 | display: block; 67 | width: 100%; 68 | 69 | + .btn--block { 70 | margin-top: 0.25em; 71 | } 72 | } 73 | 74 | /* disabled */ 75 | &--disabled { 76 | pointer-events: none; 77 | cursor: not-allowed; 78 | filter: alpha(opacity=65); 79 | box-shadow: none; 80 | opacity: 0.65; 81 | } 82 | 83 | /* extra large button */ 84 | &--x-large { 85 | font-size: $type-size-4; 86 | } 87 | 88 | /* large button */ 89 | &--large { 90 | font-size: $type-size-5; 91 | } 92 | 93 | /* small button */ 94 | &--small { 95 | font-size: $type-size-7; 96 | } 97 | } -------------------------------------------------------------------------------- /_sass/minimal-mistakes/_footer.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | FOOTER 3 | ========================================================================== */ 4 | 5 | .page__footer { 6 | @include clearfix; 7 | float: left; 8 | margin-left: 0; 9 | margin-right: 0; 10 | width: 100%; 11 | clear: both; 12 | margin-top: 3em; 13 | color: $muted-text-color; 14 | -webkit-animation: $intro-transition; 15 | animation: $intro-transition; 16 | -webkit-animation-delay: 0.45s; 17 | animation-delay: 0.45s; 18 | background-color: $footer-background-color; 19 | 20 | footer { 21 | @include clearfix; 22 | margin-left: auto; 23 | margin-right: auto; 24 | margin-top: 2em; 25 | max-width: 100%; 26 | padding: 0 1em 2em; 27 | 28 | @include breakpoint($x-large) { 29 | max-width: $x-large; 30 | } 31 | } 32 | 33 | a { 34 | color: inherit; 35 | text-decoration: none; 36 | 37 | &:hover { 38 | text-decoration: underline; 39 | } 40 | } 41 | 42 | .fas, 43 | .fab, 44 | .far, 45 | .fal { 46 | color: $muted-text-color; 47 | } 48 | } 49 | 50 | .page__footer-copyright { 51 | font-family: $global-font-family; 52 | font-size: $type-size-7; 53 | } 54 | 55 | .page__footer-follow { 56 | ul { 57 | margin: 0; 58 | padding: 0; 59 | list-style-type: none; 60 | } 61 | 62 | li { 63 | display: inline-block; 64 | padding-top: 5px; 65 | padding-bottom: 5px; 66 | font-family: $sans-serif-narrow; 67 | font-size: $type-size-6; 68 | text-transform: uppercase; 69 | } 70 | 71 | li + li:before { 72 | content: ""; 73 | padding-right: 5px; 74 | } 75 | 76 | a { 77 | padding-right: 10px; 78 | font-weight: bold; 79 | } 80 | 81 | .social-icons { 82 | a { 83 | white-space: nowrap; 84 | } 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/_masthead.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | MASTHEAD 3 | ========================================================================== */ 4 | 5 | .masthead { 6 | position: relative; 7 | border-bottom: 1px solid $border-color; 8 | -webkit-animation: $intro-transition; 9 | animation: $intro-transition; 10 | -webkit-animation-delay: 0.15s; 11 | animation-delay: 0.15s; 12 | z-index: 20; 13 | 14 | &__inner-wrap { 15 | @include clearfix; 16 | margin-left: auto; 17 | margin-right: auto; 18 | padding: 1em; 19 | max-width: 100%; 20 | display: -webkit-box; 21 | display: -ms-flexbox; 22 | display: flex; 23 | -webkit-box-pack: justify; 24 | -ms-flex-pack: justify; 25 | justify-content: space-between; 26 | font-family: $sans-serif-narrow; 27 | 28 | @include breakpoint($x-large) { 29 | max-width: $max-width; 30 | } 31 | 32 | nav { 33 | z-index: 10; 34 | } 35 | 36 | a { 37 | text-decoration: none; 38 | } 39 | } 40 | } 41 | 42 | .site-logo img { 43 | max-height: 2rem; 44 | } 45 | 46 | .site-title { 47 | display: -webkit-box; 48 | display: -ms-flexbox; 49 | display: flex; 50 | -ms-flex-item-align: center; 51 | align-self: center; 52 | font-weight: bold; 53 | // z-index: 20; 54 | } 55 | 56 | .site-subtitle { 57 | display: block; 58 | font-size: $type-size-8; 59 | } 60 | 61 | .masthead__menu { 62 | float: left; 63 | margin-left: 0; 64 | margin-right: 0; 65 | width: 100%; 66 | clear: both; 67 | 68 | .site-nav { 69 | margin-left: 0; 70 | 71 | @include breakpoint($small) { 72 | float: right; 73 | } 74 | } 75 | 76 | ul { 77 | margin: 0; 78 | padding: 0; 79 | clear: both; 80 | list-style-type: none; 81 | } 82 | } 83 | 84 | .masthead__menu-item { 85 | display: block; 86 | list-style-type: none; 87 | white-space: nowrap; 88 | 89 | &--lg { 90 | padding-right: 2em; 91 | font-weight: 700; 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/_mixins.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | MIXINS 3 | ========================================================================== */ 4 | 5 | %tab-focus { 6 | /* Default*/ 7 | outline: thin dotted $focus-color; 8 | /* Webkit*/ 9 | outline: 5px auto $focus-color; 10 | outline-offset: -2px; 11 | } 12 | 13 | /* 14 | em function 15 | ========================================================================== */ 16 | 17 | @function em($target, $context: $doc-font-size) { 18 | @return ($target / $context) * 1em; 19 | } 20 | 21 | 22 | /* 23 | Bourbon clearfix 24 | ========================================================================== */ 25 | 26 | /* 27 | * Provides an easy way to include a clearfix for containing floats. 28 | * link http://cssmojo.com/latest_new_clearfix_so_far/ 29 | * 30 | * example scss - Usage 31 | * 32 | * .element { 33 | * @include clearfix; 34 | * } 35 | * 36 | * example css - CSS Output 37 | * 38 | * .element::after { 39 | * clear: both; 40 | * content: ""; 41 | * display: table; 42 | * } 43 | */ 44 | 45 | @mixin clearfix { 46 | clear: both; 47 | 48 | &::after { 49 | clear: both; 50 | content: ""; 51 | display: table; 52 | } 53 | } 54 | 55 | /* 56 | Compass YIQ Color Contrast 57 | https://github.com/easy-designs/yiq-color-contrast 58 | ========================================================================== */ 59 | 60 | @function yiq-is-light( 61 | $color, 62 | $threshold: $yiq-contrasted-threshold 63 | ) { 64 | $red: red($color); 65 | $green: green($color); 66 | $blue: blue($color); 67 | 68 | $yiq: (($red*299)+($green*587)+($blue*114))/1000; 69 | 70 | @if $yiq-debug { @debug $yiq, $threshold; } 71 | 72 | @return if($yiq >= $threshold, true, false); 73 | } 74 | 75 | @function yiq-contrast-color( 76 | $color, 77 | $dark: $yiq-contrasted-dark-default, 78 | $light: $yiq-contrasted-light-default, 79 | $threshold: $yiq-contrasted-threshold 80 | ) { 81 | @return if(yiq-is-light($color, $threshold), $yiq-contrasted-dark-default, $yiq-contrasted-light-default); 82 | } 83 | 84 | @mixin yiq-contrasted( 85 | $background-color, 86 | $dark: $yiq-contrasted-dark-default, 87 | $light: $yiq-contrasted-light-default, 88 | $threshold: $yiq-contrasted-threshold 89 | ) { 90 | background-color: $background-color; 91 | color: yiq-contrast-color($background-color, $dark, $light, $threshold); 92 | } -------------------------------------------------------------------------------- /_sass/minimal-mistakes/_notices.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | NOTICE TEXT BLOCKS 3 | ========================================================================== */ 4 | 5 | /** 6 | * Default Kramdown usage (no indents!): 7 | *
8 | * #### Headline for the Notice 9 | * Text for the notice 10 | *
11 | */ 12 | 13 | @mixin notice($notice-color) { 14 | margin: 2em 0 !important; /* override*/ 15 | padding: 1em; 16 | color: $dark-gray; 17 | font-family: $global-font-family; 18 | font-size: $type-size-6 !important; 19 | text-indent: initial; /* override*/ 20 | background-color: mix(#fff, $notice-color, 90%); 21 | border-radius: $border-radius; 22 | box-shadow: 0 1px 1px rgba($notice-color, 0.25); 23 | 24 | h4 { 25 | margin-top: 0 !important; /* override*/ 26 | margin-bottom: 0.75em; 27 | line-height: inherit; 28 | } 29 | 30 | @at-root .page__content #{&} h4 { 31 | /* using at-root to override .page-content h4 font size*/ 32 | margin-bottom: 0; 33 | font-size: 1em; 34 | } 35 | 36 | p { 37 | &:last-child { 38 | margin-bottom: 0 !important; /* override*/ 39 | } 40 | } 41 | 42 | h4 + p { 43 | /* remove space above paragraphs that appear directly after notice headline*/ 44 | margin-top: 0; 45 | padding-top: 0; 46 | } 47 | 48 | a { 49 | color: $notice-color; 50 | 51 | &:hover { 52 | color: mix(#000, $notice-color, 40%); 53 | } 54 | } 55 | 56 | code { 57 | background-color: mix(#fff, $notice-color, 95%) 58 | } 59 | 60 | pre code { 61 | background-color: inherit; 62 | } 63 | 64 | ul { 65 | &:last-child { 66 | margin-bottom: 0; /* override*/ 67 | } 68 | } 69 | } 70 | 71 | /* Default notice */ 72 | 73 | .notice { 74 | @include notice($light-gray); 75 | } 76 | 77 | /* Primary notice */ 78 | 79 | .notice--primary { 80 | @include notice($primary-color); 81 | } 82 | 83 | /* Info notice */ 84 | 85 | .notice--info { 86 | @include notice($info-color); 87 | } 88 | 89 | /* Warning notice */ 90 | 91 | .notice--warning { 92 | @include notice($warning-color); 93 | } 94 | 95 | /* Success notice */ 96 | 97 | .notice--success { 98 | @include notice($success-color); 99 | } 100 | 101 | /* Danger notice */ 102 | 103 | .notice--danger { 104 | @include notice($danger-color); 105 | } 106 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/_print.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | PRINT STYLES 3 | ========================================================================== */ 4 | 5 | @media print { 6 | 7 | [hidden] { 8 | display: none; 9 | } 10 | 11 | * { 12 | -moz-box-sizing: border-box; 13 | -webkit-box-sizing: border-box; 14 | box-sizing: border-box; 15 | } 16 | 17 | html { 18 | margin: 0; 19 | padding: 0; 20 | min-height: auto !important; 21 | font-size: 16px; 22 | } 23 | 24 | body { 25 | margin: 0 auto; 26 | background: #fff !important; 27 | color: #000 !important; 28 | font-size: 1rem; 29 | line-height: 1.5; 30 | -moz-osx-font-smoothing: grayscale; 31 | -webkit-font-smoothing: antialiased; 32 | text-rendering: optimizeLegibility; 33 | } 34 | 35 | h1, 36 | h2, 37 | h3, 38 | h4, 39 | h5, 40 | h6 { 41 | color: #000; 42 | line-height: 1.2; 43 | margin-bottom: 0.75rem; 44 | margin-top: 0; 45 | } 46 | 47 | h1 { 48 | font-size: 2.5rem; 49 | } 50 | 51 | h2 { 52 | font-size: 2rem; 53 | } 54 | 55 | h3 { 56 | font-size: 1.75rem; 57 | } 58 | 59 | h4 { 60 | font-size: 1.5rem; 61 | } 62 | 63 | h5 { 64 | font-size: 1.25rem; 65 | } 66 | 67 | h6 { 68 | font-size: 1rem; 69 | } 70 | 71 | a, 72 | a:visited { 73 | color: #000; 74 | text-decoration: underline; 75 | word-wrap: break-word; 76 | } 77 | 78 | table { 79 | border-collapse: collapse; 80 | } 81 | 82 | thead { 83 | display: table-header-group; 84 | } 85 | 86 | table, 87 | th, 88 | td { 89 | border-bottom: 1px solid #000; 90 | } 91 | 92 | td, 93 | th { 94 | padding: 8px 16px; 95 | } 96 | 97 | img { 98 | border: 0; 99 | display: block; 100 | max-width: 100% !important; 101 | vertical-align: middle; 102 | } 103 | 104 | hr { 105 | border: 0; 106 | border-bottom: 2px solid #bbb; 107 | height: 0; 108 | margin: 2.25rem 0; 109 | padding: 0; 110 | } 111 | 112 | dt { 113 | font-weight: bold; 114 | } 115 | 116 | dd { 117 | margin: 0; 118 | margin-bottom: 0.75rem; 119 | } 120 | 121 | abbr[title], 122 | acronym[title] { 123 | border: 0; 124 | text-decoration: none; 125 | } 126 | 127 | table, 128 | blockquote, 129 | pre, 130 | code, 131 | figure, 132 | li, 133 | hr, 134 | ul, 135 | ol, 136 | a, 137 | tr { 138 | page-break-inside: avoid; 139 | } 140 | 141 | h2, 142 | h3, 143 | h4, 144 | p, 145 | a { 146 | orphans: 3; 147 | widows: 3; 148 | } 149 | 150 | h1, 151 | h2, 152 | h3, 153 | h4, 154 | h5, 155 | h6 { 156 | page-break-after: avoid; 157 | page-break-inside: avoid; 158 | } 159 | 160 | h1 + p, 161 | h2 + p, 162 | h3 + p { 163 | page-break-before: avoid; 164 | } 165 | 166 | img { 167 | page-break-after: auto; 168 | page-break-before: auto; 169 | page-break-inside: avoid; 170 | } 171 | 172 | pre { 173 | white-space: pre-wrap !important; 174 | word-wrap: break-word; 175 | } 176 | 177 | a[href^='http://']:after, 178 | a[href^='https://']:after, 179 | a[href^='ftp://']:after { 180 | content: " (" attr(href) ")"; 181 | font-size: 80%; 182 | } 183 | 184 | abbr[title]:after, 185 | acronym[title]:after { 186 | content: " (" attr(title) ")"; 187 | } 188 | 189 | #main { 190 | max-width: 100%; 191 | } 192 | 193 | .page { 194 | margin: 0; 195 | padding: 0; 196 | width: 100%; 197 | } 198 | 199 | .page-break, 200 | .page-break-before { 201 | page-break-before: always; 202 | } 203 | 204 | .page-break-after { 205 | page-break-after: always; 206 | } 207 | 208 | .no-print { 209 | display: none; 210 | } 211 | 212 | a.no-reformat:after { 213 | content: ''; 214 | } 215 | 216 | abbr[title].no-reformat:after, 217 | acronym[title].no-reformat:after { 218 | content: ''; 219 | } 220 | 221 | .page__hero-caption { 222 | color: #000 !important; 223 | background: #fff !important; 224 | opacity: 1; 225 | 226 | a { 227 | color: #000 !important; 228 | } 229 | } 230 | 231 | /* 232 | Hide the following elements on print 233 | ========================================================================== */ 234 | 235 | .masthead, 236 | .toc, 237 | .page__share, 238 | .page__related, 239 | .pagination, 240 | .ads, 241 | .page__footer, 242 | .page__comments-form, 243 | .author__avatar, 244 | .author__content, 245 | .author__urls-wrapper, 246 | .nav__list, 247 | .sidebar, 248 | .adsbygoogle { 249 | display: none !important; 250 | height: 1px !important; 251 | } 252 | } -------------------------------------------------------------------------------- /_sass/minimal-mistakes/_reset.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | STYLE RESETS 3 | ========================================================================== */ 4 | 5 | * { box-sizing: border-box; } 6 | 7 | html { 8 | /* apply a natural box layout model to all elements */ 9 | box-sizing: border-box; 10 | background-color: $background-color; 11 | font-size: 16px; 12 | 13 | @include breakpoint($medium) { 14 | font-size: 18px; 15 | } 16 | 17 | @include breakpoint($large) { 18 | font-size: 20px; 19 | } 20 | 21 | @include breakpoint($x-large) { 22 | font-size: 22px; 23 | } 24 | 25 | -webkit-text-size-adjust: 100%; 26 | -ms-text-size-adjust: 100%; 27 | } 28 | 29 | /* Remove margin */ 30 | 31 | body { margin: 0; } 32 | 33 | /* Selected elements */ 34 | 35 | ::-moz-selection { 36 | color: #fff; 37 | background: #000; 38 | } 39 | 40 | ::selection { 41 | color: #fff; 42 | background: #000; 43 | } 44 | 45 | /* Display HTML5 elements in IE6-9 and FF3 */ 46 | 47 | article, 48 | aside, 49 | details, 50 | figcaption, 51 | figure, 52 | footer, 53 | header, 54 | hgroup, 55 | main, 56 | nav, 57 | section { 58 | display: block; 59 | } 60 | 61 | /* Display block in IE6-9 and FF3 */ 62 | 63 | audio, 64 | canvas, 65 | video { 66 | display: inline-block; 67 | *display: inline; 68 | *zoom: 1; 69 | } 70 | 71 | /* Prevents modern browsers from displaying 'audio' without controls */ 72 | 73 | audio:not([controls]) { 74 | display: none; 75 | } 76 | 77 | a { 78 | color: $link-color; 79 | } 80 | 81 | /* Apply focus state */ 82 | 83 | a:focus { 84 | @extend %tab-focus; 85 | } 86 | 87 | /* Remove outline from links */ 88 | 89 | a:hover, 90 | a:active { 91 | outline: 0; 92 | } 93 | 94 | /* Prevent sub and sup affecting line-height in all browsers */ 95 | 96 | sub, 97 | sup { 98 | position: relative; 99 | font-size: 75%; 100 | line-height: 0; 101 | vertical-align: baseline; 102 | } 103 | 104 | sup { 105 | top: -0.5em; 106 | } 107 | 108 | sub { 109 | bottom: -0.25em; 110 | } 111 | 112 | /* img border in anchor's and image quality */ 113 | 114 | img { 115 | /* Responsive images (ensure images don't scale beyond their parents) */ 116 | max-width: 100%; /* part 1: Set a maximum relative to the parent*/ 117 | width: auto\9; /* IE7-8 need help adjusting responsive images*/ 118 | height: auto; /* part 2: Scale the height according to the width, otherwise you get stretching*/ 119 | 120 | vertical-align: middle; 121 | border: 0; 122 | -ms-interpolation-mode: bicubic; 123 | } 124 | 125 | /* Prevent max-width from affecting Google Maps */ 126 | 127 | #map_canvas img, 128 | .google-maps img { 129 | max-width: none; 130 | } 131 | 132 | /* Consistent form font size in all browsers, margin changes, misc */ 133 | 134 | button, 135 | input, 136 | select, 137 | textarea { 138 | margin: 0; 139 | font-size: 100%; 140 | vertical-align: middle; 141 | } 142 | 143 | button, 144 | input { 145 | *overflow: visible; /* inner spacing ie IE6/7*/ 146 | line-height: normal; /* FF3/4 have !important on line-height in UA stylesheet*/ 147 | } 148 | 149 | button::-moz-focus-inner, 150 | input::-moz-focus-inner { /* inner padding and border oddities in FF3/4*/ 151 | padding: 0; 152 | border: 0; 153 | } 154 | 155 | button, 156 | html input[type="button"], // avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls 157 | input[type="reset"], 158 | input[type="submit"] { 159 | -webkit-appearance: button; /* corrects inability to style clickable `input` types in iOS*/ 160 | cursor: pointer; /* improves usability and consistency of cursor style between image-type `input` and others*/ 161 | } 162 | 163 | label, 164 | select, 165 | button, 166 | input[type="button"], 167 | input[type="reset"], 168 | input[type="submit"], 169 | input[type="radio"], 170 | input[type="checkbox"] { 171 | cursor: pointer; /* improves usability and consistency of cursor style between image-type `input` and others*/ 172 | } 173 | 174 | input[type="search"] { /* Appearance in Safari/Chrome*/ 175 | box-sizing: border-box; 176 | -webkit-appearance: textfield; 177 | } 178 | 179 | input[type="search"]::-webkit-search-decoration, 180 | input[type="search"]::-webkit-search-cancel-button { 181 | -webkit-appearance: none; /* inner-padding issues in Chrome OSX, Safari 5*/ 182 | } 183 | 184 | textarea { 185 | overflow: auto; /* remove vertical scrollbar in IE6-9*/ 186 | vertical-align: top; /* readability and alignment cross-browser*/ 187 | } -------------------------------------------------------------------------------- /_sass/minimal-mistakes/_search.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | SEARCH 3 | ========================================================================== */ 4 | 5 | .layout--search { 6 | .archive__item-teaser { 7 | margin-bottom: 0.25em; 8 | } 9 | } 10 | 11 | .search__toggle { 12 | margin-left: 1rem; 13 | margin-right: 1rem; 14 | height: $nav-toggle-height; 15 | border: 0; 16 | outline: none; 17 | color: $primary-color; 18 | background-color: transparent; 19 | cursor: pointer; 20 | -webkit-transition: 0.2s; 21 | transition: 0.2s; 22 | 23 | &:hover { 24 | color: mix(#000, $primary-color, 25%); 25 | } 26 | } 27 | 28 | .search-icon { 29 | width: 100%; 30 | height: 100%; 31 | } 32 | 33 | .search-content { 34 | display: none; 35 | visibility: hidden; 36 | padding-top: 1em; 37 | padding-bottom: 1em; 38 | 39 | &__inner-wrap { 40 | width: 100%; 41 | margin-left: auto; 42 | margin-right: auto; 43 | padding-left: 1em; 44 | padding-right: 1em; 45 | -webkit-animation: $intro-transition; 46 | animation: $intro-transition; 47 | -webkit-animation-delay: 0.15s; 48 | animation-delay: 0.15s; 49 | 50 | @include breakpoint($x-large) { 51 | max-width: $max-width; 52 | } 53 | 54 | } 55 | 56 | &__form { 57 | background-color: transparent; 58 | } 59 | 60 | .search-input { 61 | display: block; 62 | margin-bottom: 0; 63 | padding: 0; 64 | border: none; 65 | outline: none; 66 | box-shadow: none; 67 | background-color: transparent; 68 | font-size: $type-size-3; 69 | 70 | @include breakpoint($large) { 71 | font-size: $type-size-2; 72 | } 73 | 74 | @include breakpoint($x-large) { 75 | font-size: $type-size-1; 76 | } 77 | } 78 | 79 | &.is--visible { 80 | display: block; 81 | visibility: visible; 82 | 83 | &::after { 84 | content: ""; 85 | display: block; 86 | } 87 | } 88 | 89 | .results__found { 90 | margin-top: 0.5em; 91 | font-size: $type-size-6; 92 | } 93 | 94 | .archive__item { 95 | margin-bottom: 2em; 96 | 97 | @include breakpoint($large) { 98 | width: 75%; 99 | } 100 | 101 | @include breakpoint($x-large) { 102 | width: 50%; 103 | } 104 | } 105 | 106 | .archive__item-title { 107 | margin-top: 0; 108 | } 109 | 110 | .archive__item-excerpt { 111 | margin-bottom: 0; 112 | } 113 | } 114 | 115 | /* Algolia search */ 116 | 117 | .ais-search-box { 118 | max-width: 100% !important; 119 | margin-bottom: 2em; 120 | } 121 | 122 | .archive__item-title .ais-Highlight { 123 | color: $primary-color; 124 | font-style: normal; 125 | text-decoration: underline; 126 | } 127 | 128 | .archive__item-excerpt .ais-Highlight { 129 | color: $primary-color; 130 | font-style: normal; 131 | font-weight: bold; 132 | } 133 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/_tables.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | TABLES 3 | ========================================================================== */ 4 | 5 | table { 6 | display: block; 7 | margin-bottom: 1em; 8 | width: 100%; 9 | font-family: $global-font-family; 10 | font-size: $type-size-6; 11 | border-collapse: collapse; 12 | overflow-x: auto; 13 | 14 | & + table { 15 | margin-top: 1em; 16 | } 17 | } 18 | 19 | thead { 20 | background-color: $border-color; 21 | border-bottom: 2px solid mix(#000, $border-color, 25%); 22 | } 23 | 24 | th { 25 | padding: 0.5em; 26 | font-weight: bold; 27 | text-align: left; 28 | } 29 | 30 | td { 31 | padding: 0.5em; 32 | border-bottom: 1px solid mix(#000, $border-color, 25%); 33 | } 34 | 35 | tr, 36 | td, 37 | th { 38 | vertical-align: middle; 39 | } -------------------------------------------------------------------------------- /_sass/minimal-mistakes/skins/_air.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Air skin 3 | ========================================================================== */ 4 | 5 | /* Colors */ 6 | $background-color: #eeeeee !default; 7 | $text-color: #222831 !default; 8 | $muted-text-color: #393e46 !default; 9 | $primary-color: #0092ca !default; 10 | $border-color: mix(#fff, #393e46, 75%) !default; 11 | $footer-background-color: $primary-color !default; 12 | $link-color: #393e46 !default; 13 | $masthead-link-color: $text-color !default; 14 | $masthead-link-color-hover: $text-color !default; 15 | $navicon-link-color-hover: mix(#fff, $text-color, 80%) !default; 16 | 17 | .page__footer { 18 | color: #fff !important; // override 19 | } 20 | 21 | .page__footer-follow .social-icons .svg-inline--fa { 22 | color: inherit; 23 | } 24 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/skins/_aqua.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Aqua skin 3 | ========================================================================== */ 4 | 5 | /* Colors */ 6 | $gray : #1976d2 !default; 7 | $dark-gray : mix(#000, $gray, 40%) !default; 8 | $darker-gray : mix(#000, $gray, 60%) !default; 9 | $light-gray : mix(#fff, $gray, 50%) !default; 10 | $lighter-gray : mix(#fff, $gray, 90%) !default; 11 | 12 | $body-color : #fff !default; 13 | $background-color : #f0fff0 !default; 14 | $code-background-color : $lighter-gray !default; 15 | $code-background-color-dark : $light-gray !default; 16 | $text-color : $dark-gray !default; 17 | $border-color : $lighter-gray !default; 18 | 19 | $primary-color : $gray !default; 20 | $success-color : #27ae60 !default; 21 | $warning-color : #e67e22 !default; 22 | $danger-color : #c0392b !default; 23 | $info-color : #03a9f4 !default; 24 | 25 | /* links */ 26 | $link-color : $info-color !default; 27 | $link-color-hover : mix(#000, $link-color, 25%) !default; 28 | $link-color-visited : mix(#fff, $link-color, 25%) !default; 29 | $masthead-link-color : $primary-color !default; 30 | $masthead-link-color-hover : mix(#000, $primary-color, 25%) !default; -------------------------------------------------------------------------------- /_sass/minimal-mistakes/skins/_contrast.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Contrast skin 3 | ========================================================================== */ 4 | 5 | /* Colors */ 6 | $text-color: #000 !default; 7 | $muted-text-color: $text-color !default; 8 | $primary-color: #ff0000 !default; 9 | $border-color: mix(#fff, $text-color, 75%) !default; 10 | $footer-background-color: #000 !default; 11 | $link-color: #0000ff !default; 12 | $masthead-link-color: $text-color !default; 13 | $masthead-link-color-hover: $text-color !default; 14 | $navicon-link-color-hover: mix(#fff, $text-color, 80%) !default; 15 | 16 | /* contrast syntax highlighting (base16) */ 17 | $base00: #000000 !default; 18 | $base01: #242422 !default; 19 | $base02: #484844 !default; 20 | $base03: #6c6c66 !default; 21 | $base04: #918f88 !default; 22 | $base05: #b5b3aa !default; 23 | $base06: #d9d7cc !default; 24 | $base07: #fdfbee !default; 25 | $base08: #ff6c60 !default; 26 | $base09: #e9c062 !default; 27 | $base0a: #ffffb6 !default; 28 | $base0b: #a8ff60 !default; 29 | $base0c: #c6c5fe !default; 30 | $base0d: #96cbfe !default; 31 | $base0e: #ff73fd !default; 32 | $base0f: #b18a3d !default; 33 | 34 | .page__content { 35 | .notice, 36 | .notice--primary, 37 | .notice--info, 38 | .notice--warning, 39 | .notice--success, 40 | .notice--danger { 41 | color: $text-color; 42 | } 43 | } 44 | 45 | .page__footer { 46 | color: #fff !important; // override 47 | } 48 | 49 | .page__footer-follow .social-icons .svg-inline--fa { 50 | color: inherit; 51 | } 52 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/skins/_dark.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Dark skin 3 | ========================================================================== */ 4 | 5 | /* Colors */ 6 | $background-color: #252a34 !default; 7 | $text-color: #eaeaea !default; 8 | $primary-color: #00adb5 !default; 9 | $border-color: mix(#fff, $background-color, 20%) !default; 10 | $code-background-color: mix(#000, $background-color, 15%) !default; 11 | $code-background-color-dark: mix(#000, $background-color, 20%) !default; 12 | $form-background-color: mix(#000, $background-color, 15%) !default; 13 | $footer-background-color: mix(#000, $background-color, 30%) !default; 14 | $link-color: mix($primary-color, $text-color, 40%) !default; 15 | $link-color-hover: mix(#fff, $link-color, 25%) !default; 16 | $link-color-visited: mix(#000, $link-color, 25%) !default; 17 | $masthead-link-color: $text-color !default; 18 | $masthead-link-color-hover: mix(#000, $text-color, 20%) !default; 19 | $navicon-link-color-hover: mix(#000, $background-color, 30%) !default; 20 | 21 | .author__urls.social-icons .svg-inline--fa, 22 | .page__footer-follow .social-icons .svg-inline--fa { 23 | color: inherit; 24 | } 25 | 26 | .ais-search-box .ais-search-box--input { 27 | background-color: $form-background-color; 28 | } -------------------------------------------------------------------------------- /_sass/minimal-mistakes/skins/_default.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Default skin 3 | ========================================================================== */ 4 | 5 | // Intentionally left blank 6 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/skins/_dirt.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Dirt skin 3 | ========================================================================== */ 4 | 5 | /* Colors */ 6 | $background-color: #f3f3f3 !default; 7 | $text-color: #343434 !default; 8 | $muted-text-color: #8e8b82 !default; 9 | $primary-color: #343434 !default; 10 | $border-color: #e9dcbe !default; 11 | $footer-background-color: #e9dcbe !default; 12 | $link-color: #343434 !default; 13 | $masthead-link-color: $text-color !default; 14 | $masthead-link-color-hover: $text-color !default; 15 | $navicon-link-color-hover: mix(#fff, $text-color, 80%) !default; 16 | 17 | /* dirt syntax highlighting (base16) */ 18 | $base00: #231e18 !default; 19 | $base01: #302b25 !default; 20 | $base02: #48413a !default; 21 | $base03: #9d8b70 !default; 22 | $base04: #b4a490 !default; 23 | $base05: #cabcb1 !default; 24 | $base06: #d7c8bc !default; 25 | $base07: #e4d4c8 !default; 26 | $base08: #d35c5c !default; 27 | $base09: #ca7f32 !default; 28 | $base0a: #e0ac16 !default; 29 | $base0b: #b7ba53 !default; 30 | $base0c: #6eb958 !default; 31 | $base0d: #88a4d3 !default; 32 | $base0e: #bb90e2 !default; 33 | $base0f: #b49368 !default; 34 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/skins/_mint.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Mint skin 3 | ========================================================================== */ 4 | 5 | /* Colors */ 6 | $background-color: #f3f6f6 !default; 7 | $text-color: #40514e !default; 8 | $muted-text-color: #40514e !default; 9 | $primary-color: #11999e !default; 10 | $border-color: mix(#fff, #40514e, 75%) !default; 11 | $footer-background-color: #30e3ca !default; 12 | $link-color: #11999e !default; 13 | $masthead-link-color: $text-color !default; 14 | $masthead-link-color-hover: $text-color !default; 15 | $navicon-link-color-hover: mix(#fff, $text-color, 80%) !default; 16 | 17 | .page__footer { 18 | color: #fff !important; // override 19 | } 20 | 21 | .page__footer-follow .social-icons .svg-inline--fa { 22 | color: inherit; 23 | } 24 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/skins/_neon.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Neon skin 3 | ========================================================================== */ 4 | 5 | /* Colors */ 6 | $background-color: #141010 !default; 7 | $text-color: #fff6fb !default; 8 | $primary-color: #f21368 !default; 9 | $border-color: mix(#fff, $background-color, 20%) !default; 10 | $code-background-color: mix(#000, $background-color, 15%) !default; 11 | $code-background-color-dark: mix(#000, $background-color, 20%) !default; 12 | $form-background-color: mix(#000, $background-color, 15%) !default; 13 | $footer-background-color: mix($primary-color, #000, 10%) !default; 14 | $link-color: $primary-color !default; 15 | $link-color-hover: mix(#fff, $link-color, 25%) !default; 16 | $link-color-visited: mix(#000, $link-color, 25%) !default; 17 | $masthead-link-color: $text-color !default; 18 | $masthead-link-color-hover: mix(#000, $text-color, 20%) !default; 19 | $navicon-link-color-hover: mix(#000, $background-color, 30%) !default; 20 | 21 | /* neon syntax highlighting (base16) */ 22 | $base00: #ffffff !default; 23 | $base01: #e0e0e0 !default; 24 | $base02: #d0d0d0 !default; 25 | $base03: #b0b0b0 !default; 26 | $base04: #000000 !default; 27 | $base05: #101010 !default; 28 | $base06: #151515 !default; 29 | $base07: #202020 !default; 30 | $base08: #ff0086 !default; 31 | $base09: #fd8900 !default; 32 | $base0a: #aba800 !default; 33 | $base0b: #00c918 !default; 34 | $base0c: #1faaaa !default; 35 | $base0d: #3777e6 !default; 36 | $base0e: #ad00a1 !default; 37 | $base0f: #cc6633 !default; 38 | 39 | .author__urls.social-icons .svg-inline--fa, 40 | .page__footer-follow .social-icons .svg-inline--fa { 41 | color: inherit; 42 | } 43 | 44 | /* next/previous buttons */ 45 | .pagination--pager { 46 | color: $text-color; 47 | background-color: $primary-color; 48 | border-color: transparent; 49 | 50 | &:visited { 51 | color: $text-color; 52 | } 53 | } 54 | 55 | .ais-search-box .ais-search-box--input { 56 | background-color: $form-background-color; 57 | } -------------------------------------------------------------------------------- /_sass/minimal-mistakes/skins/_plum.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Plum skin 3 | ========================================================================== */ 4 | 5 | /* Colors */ 6 | $background-color: #521477 !default; 7 | $text-color: #fffd86 !default; 8 | $primary-color: #c327ab !default; 9 | $border-color: mix(#fff, $background-color, 20%) !default; 10 | $code-background-color: mix(#000, $background-color, 15%) !default; 11 | $code-background-color-dark: mix(#000, $background-color, 20%) !default; 12 | $form-background-color: mix(#000, $background-color, 15%) !default; 13 | $footer-background-color: mix(#000, $background-color, 25%) !default; 14 | $link-color: $primary-color !default; 15 | $link-color-hover: mix(#fff, $link-color, 25%) !default; 16 | $link-color-visited: mix(#000, $link-color, 25%) !default; 17 | $masthead-link-color: $text-color !default; 18 | $masthead-link-color-hover: mix(#000, $text-color, 20%) !default; 19 | $navicon-link-color-hover: mix(#000, $background-color, 30%) !default; 20 | 21 | /* plum syntax highlighting (base16) */ 22 | $base00: #ffffff !default; 23 | $base01: #e0e0e0 !default; 24 | $base02: #d0d0d0 !default; 25 | $base03: #b0b0b0 !default; 26 | $base04: #000000 !default; 27 | $base05: #101010 !default; 28 | $base06: #151515 !default; 29 | $base07: #202020 !default; 30 | $base08: #ff0086 !default; 31 | $base09: #fd8900 !default; 32 | $base0a: #aba800 !default; 33 | $base0b: #00c918 !default; 34 | $base0c: #1faaaa !default; 35 | $base0d: #3777e6 !default; 36 | $base0e: #ad00a1 !default; 37 | $base0f: #cc6633 !default; 38 | 39 | .author__urls.social-icons .svg-inline--fa, 40 | .page__footer-follow .social-icons .svg-inline--fa { 41 | color: inherit; 42 | } 43 | 44 | .page__content { 45 | a, 46 | a:visited { 47 | color: inherit; 48 | } 49 | } 50 | 51 | /* next/previous buttons */ 52 | .pagination--pager { 53 | color: $text-color; 54 | background-color: $primary-color; 55 | border-color: transparent; 56 | 57 | &:visited { 58 | color: $text-color; 59 | } 60 | } 61 | 62 | .ais-search-box .ais-search-box--input { 63 | background-color: $form-background-color; 64 | } -------------------------------------------------------------------------------- /_sass/minimal-mistakes/skins/_sunrise.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Sunrise skin 3 | ========================================================================== */ 4 | 5 | /* Colors */ 6 | $dark-gray: #0e2431 !default; 7 | $background-color: #e8d5b7 !default; 8 | $text-color: #000 !default; 9 | $muted-text-color: $dark-gray !default; 10 | $primary-color: #fc3a52 !default; 11 | $border-color: mix(#000, $background-color, 20%) !default; 12 | $code-background-color: mix(#fff, $background-color, 20%) !default; 13 | $code-background-color-dark: mix(#000, $background-color, 10%) !default; 14 | $form-background-color: mix(#fff, $background-color, 15%) !default; 15 | $footer-background-color: #f9b248 !default; 16 | $link-color: mix(#000, $primary-color, 10%) !default; 17 | $link-color-hover: mix(#fff, $link-color, 25%) !default; 18 | $link-color-visited: mix(#000, $link-color, 25%) !default; 19 | $masthead-link-color: $text-color !default; 20 | $masthead-link-color-hover: mix(#000, $text-color, 20%) !default; 21 | $navicon-link-color-hover: mix(#000, $background-color, 30%) !default; 22 | 23 | /* sunrise syntax highlighting (base16) */ 24 | $base00: #1d1f21 !default; 25 | $base01: #282a2e !default; 26 | $base02: #373b41 !default; 27 | $base03: #969896 !default; 28 | $base04: #b4b7b4 !default; 29 | $base05: #c5c8c6 !default; 30 | $base06: #e0e0e0 !default; 31 | $base07: #ffffff !default; 32 | $base08: #cc6666 !default; 33 | $base09: #de935f !default; 34 | $base0a: #f0c674 !default; 35 | $base0b: #b5bd68 !default; 36 | $base0c: #8abeb7 !default; 37 | $base0d: #81a2be !default; 38 | $base0e: #b294bb !default; 39 | $base0f: #a3685a !default; 40 | 41 | .author__urls.social-icons .fa, 42 | .page__footer-follow .social-icons .svg-inline--fa { 43 | color: inherit; 44 | } 45 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/breakpoint/_breakpoint.scss: -------------------------------------------------------------------------------- 1 | ////////////////////////////// 2 | // Default Variables 3 | ////////////////////////////// 4 | $Breakpoint-Settings: ( 5 | 'default media': all, 6 | 'default feature': min-width, 7 | 'default pair': width, 8 | 9 | 'force all media type': false, 10 | 'to ems': false, 11 | 'transform resolutions': true, 12 | 13 | 'no queries': false, 14 | 'no query fallbacks': false, 15 | 16 | 'base font size': 16px, 17 | 18 | 'legacy syntax': false 19 | ); 20 | 21 | $breakpoint: () !default; 22 | 23 | ////////////////////////////// 24 | // Imports 25 | ////////////////////////////// 26 | @import "settings"; 27 | @import "context"; 28 | @import "helpers"; 29 | @import "parsers"; 30 | @import "no-query"; 31 | 32 | @import "respond-to"; 33 | 34 | @import "legacy-settings"; 35 | 36 | ////////////////////////////// 37 | // Breakpoint Mixin 38 | ////////////////////////////// 39 | 40 | @mixin breakpoint($query, $no-query: false) { 41 | @include legacy-settings-warning; 42 | 43 | // Reset contexts 44 | @include private-breakpoint-reset-contexts(); 45 | 46 | $breakpoint: breakpoint($query, false); 47 | 48 | $query-string: map-get($breakpoint, 'query'); 49 | $query-fallback: map-get($breakpoint, 'fallback'); 50 | 51 | $private-breakpoint-context-holder: map-get($breakpoint, 'context holder') !global; 52 | $private-breakpoint-query-count: map-get($breakpoint, 'query count') !global; 53 | 54 | // Allow for an as-needed override or usage of no query fallback. 55 | @if $no-query != false { 56 | $query-fallback: $no-query; 57 | } 58 | 59 | @if $query-fallback != false { 60 | $context-setter: private-breakpoint-set-context('no-query', $query-fallback); 61 | } 62 | 63 | // Print Out Query String 64 | @if not breakpoint-get('no queries') { 65 | @media #{$query-string} { 66 | @content; 67 | } 68 | } 69 | 70 | @if breakpoint-get('no query fallbacks') != false or breakpoint-get('no queries') == true { 71 | 72 | $type: type-of(breakpoint-get('no query fallbacks')); 73 | $print: false; 74 | 75 | @if ($type == 'bool') { 76 | $print: true; 77 | } 78 | @else if ($type == 'string') { 79 | @if $query-fallback == breakpoint-get('no query fallbacks') { 80 | $print: true; 81 | } 82 | } 83 | @else if ($type == 'list') { 84 | @each $wrapper in breakpoint-get('no query fallbacks') { 85 | @if $query-fallback == $wrapper { 86 | $print: true; 87 | } 88 | } 89 | } 90 | 91 | // Write Fallback 92 | @if ($query-fallback != false) and ($print == true) { 93 | $type-fallback: type-of($query-fallback); 94 | 95 | @if ($type-fallback != 'bool') { 96 | #{$query-fallback} & { 97 | @content; 98 | } 99 | } 100 | @else { 101 | @content; 102 | } 103 | } 104 | } 105 | 106 | @include private-breakpoint-reset-contexts(); 107 | } 108 | 109 | 110 | @mixin mq($query, $no-query: false) { 111 | @include breakpoint($query, $no-query) { 112 | @content; 113 | } 114 | } 115 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/breakpoint/_context.scss: -------------------------------------------------------------------------------- 1 | ////////////////////////////// 2 | // Private Breakpoint Variables 3 | ////////////////////////////// 4 | $private-breakpoint-context-holder: (); 5 | $private-breakpoint-query-count: 0 !default; 6 | 7 | ////////////////////////////// 8 | // Breakpoint Has Context 9 | // Returns whether or not you are inside a Breakpoint query 10 | ////////////////////////////// 11 | @function breakpoint-has-context() { 12 | @if length($private-breakpoint-query-count) { 13 | @return true; 14 | } 15 | @else { 16 | @return false; 17 | } 18 | } 19 | 20 | ////////////////////////////// 21 | // Breakpoint Get Context 22 | // $feature: Input feature to get it's current MQ context. Returns false if no context 23 | ////////////////////////////// 24 | @function breakpoint-get-context($feature) { 25 | @if map-has-key($private-breakpoint-context-holder, $feature) { 26 | $get: map-get($private-breakpoint-context-holder, $feature); 27 | // Special handling of no-query from get side so /false/ prepends aren't returned 28 | @if $feature == 'no-query' { 29 | @if type-of($get) == 'list' and length($get) > 1 and nth($get, 1) == false { 30 | $get: nth($get, length($get)); 31 | } 32 | } 33 | @return $get; 34 | } 35 | @else { 36 | @if breakpoint-has-context() and $feature == 'media' { 37 | @return breakpoint-get('default media'); 38 | } 39 | @else { 40 | @return false; 41 | } 42 | } 43 | } 44 | 45 | ////////////////////////////// 46 | // Private function to set context 47 | ////////////////////////////// 48 | @function private-breakpoint-set-context($feature, $value) { 49 | @if $value == 'monochrome' { 50 | $feature: 'monochrome'; 51 | } 52 | 53 | $current: map-get($private-breakpoint-context-holder, $feature); 54 | @if $current and length($current) == $private-breakpoint-query-count { 55 | @warn "You have already queried against `#{$feature}`. Unexpected things may happen if you query against the same feature more than once in the same `and` query. Breakpoint is overwriting the current context with `#{$value}`"; 56 | } 57 | 58 | @if not map-has-key($private-breakpoint-context-holder, $feature) { 59 | $v-holder: (); 60 | @for $i from 1 to $private-breakpoint-query-count { 61 | @if $feature == 'media' { 62 | $v-holder: append($v-holder, breakpoint-get('default media')); 63 | } 64 | @else { 65 | $v-holder: append($v-holder, false); 66 | } 67 | } 68 | $v-holder: append($v-holder, $value); 69 | $private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($feature: $v-holder)) !global; 70 | } 71 | @else { 72 | $v-holder: map-get($private-breakpoint-context-holder, $feature); 73 | $length: length($v-holder); 74 | @for $i from $length to $private-breakpoint-query-count - 1 { 75 | @if $feature == 'media' { 76 | $v-holder: append($v-holder, breakpoint-get('default media')); 77 | } 78 | @else { 79 | $v-holder: append($v-holder, false); 80 | } 81 | } 82 | $v-holder: append($v-holder, $value); 83 | $private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($feature: $v-holder)) !global; 84 | } 85 | 86 | @return true; 87 | } 88 | 89 | ////////////////////////////// 90 | // Private function to reset context 91 | ////////////////////////////// 92 | @mixin private-breakpoint-reset-contexts { 93 | $private-breakpoint-context-holder: () !global; 94 | $private-breakpoint-query-count: 0 !global; 95 | } -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/breakpoint/_helpers.scss: -------------------------------------------------------------------------------- 1 | ////////////////////////////// 2 | // Converts the input value to Base EMs 3 | ////////////////////////////// 4 | @function breakpoint-to-base-em($value) { 5 | $value-unit: unit($value); 6 | 7 | // Will convert relative EMs into root EMs. 8 | @if breakpoint-get('base font size') and type-of(breakpoint-get('base font size')) == 'number' and $value-unit == 'em' { 9 | $base-unit: unit(breakpoint-get('base font size')); 10 | 11 | @if $base-unit == 'px' or $base-unit == '%' or $base-unit == 'em' or $base-unit == 'pt' { 12 | @return base-conversion($value) / base-conversion(breakpoint-get('base font size')) * 1em; 13 | } 14 | @else { 15 | @warn '#{breakpoint-get(\'base font size\')} is not set in valid units for font size!'; 16 | @return false; 17 | } 18 | } 19 | @else { 20 | @return base-conversion($value); 21 | } 22 | } 23 | 24 | @function base-conversion($value) { 25 | $unit: unit($value); 26 | 27 | @if $unit == 'px' { 28 | @return $value / 16px * 1em; 29 | } 30 | @else if $unit == '%' { 31 | @return $value / 100% * 1em; 32 | } 33 | @else if $unit == 'em' { 34 | @return $value; 35 | } 36 | @else if $unit == 'pt' { 37 | @return $value / 12pt * 1em; 38 | } 39 | @else { 40 | @return $value; 41 | // @warn 'Everything is terrible! What have you done?!'; 42 | } 43 | } 44 | 45 | ////////////////////////////// 46 | // Returns whether the feature can have a min/max pair 47 | ////////////////////////////// 48 | $breakpoint-min-max-features: 'color', 49 | 'color-index', 50 | 'aspect-ratio', 51 | 'device-aspect-ratio', 52 | 'device-height', 53 | 'device-width', 54 | 'height', 55 | 'monochrome', 56 | 'resolution', 57 | 'width'; 58 | 59 | @function breakpoint-min-max($feature) { 60 | @each $item in $breakpoint-min-max-features { 61 | @if $feature == $item { 62 | @return true; 63 | } 64 | } 65 | @return false; 66 | } 67 | 68 | ////////////////////////////// 69 | // Returns whether the feature can have a string value 70 | ////////////////////////////// 71 | $breakpoint-string-features: 'orientation', 72 | 'scan', 73 | 'color', 74 | 'aspect-ratio', 75 | 'device-aspect-ratio', 76 | 'pointer', 77 | 'luminosity'; 78 | 79 | @function breakpoint-string-value($feature) { 80 | @each $item in $breakpoint-string-features { 81 | @if breakpoint-min-max($item) { 82 | @if $feature == 'min-#{$item}' or $feature == 'max-#{$item}' { 83 | @return true; 84 | } 85 | } 86 | @else if $feature == $item { 87 | @return true; 88 | } 89 | } 90 | @return false; 91 | } 92 | 93 | ////////////////////////////// 94 | // Returns whether the feature is a media type 95 | ////////////////////////////// 96 | $breakpoint-media-types: 'all', 97 | 'braille', 98 | 'embossed', 99 | 'handheld', 100 | 'print', 101 | 'projection', 102 | 'screen', 103 | 'speech', 104 | 'tty', 105 | 'tv'; 106 | 107 | @function breakpoint-is-media($feature) { 108 | @each $media in $breakpoint-media-types { 109 | @if ($feature == $media) or ($feature == 'not #{$media}') or ($feature == 'only #{$media}') { 110 | @return true; 111 | } 112 | } 113 | 114 | @return false; 115 | } 116 | 117 | ////////////////////////////// 118 | // Returns whether the feature can stand alone 119 | ////////////////////////////// 120 | $breakpoint-single-string-features: 'color', 121 | 'color-index', 122 | 'grid', 123 | 'monochrome'; 124 | 125 | @function breakpoint-single-string($feature) { 126 | @each $item in $breakpoint-single-string-features { 127 | @if $feature == $item { 128 | @return true; 129 | } 130 | } 131 | @return false; 132 | } 133 | 134 | ////////////////////////////// 135 | // Returns whether the feature 136 | ////////////////////////////// 137 | @function breakpoint-is-resolution($feature) { 138 | $resolutions: 'device-pixel-ratio', 'dpr'; 139 | 140 | @if breakpoint-get('transform resolutions') { 141 | $resolutions: append($resolutions, 'resolution'); 142 | } 143 | 144 | @each $reso in $resolutions { 145 | @if index($feature, $reso) or index($feature, 'min-#{$reso}') or index($feature, 'max-#{$reso}') { 146 | @return true; 147 | } 148 | } 149 | 150 | @return false; 151 | } 152 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/breakpoint/_legacy-settings.scss: -------------------------------------------------------------------------------- 1 | @mixin legacy-settings-warning { 2 | $legacyVars: ( 3 | 'default-media': 'default media', 4 | 'default-feature': 'default feature', 5 | 'force-media-all': 'force all media type', 6 | 'to-ems': 'to ems', 7 | 'resolutions': 'transform resolutions', 8 | 'no-queries': 'no queries', 9 | 'no-query-fallbacks': 'no query fallbacks', 10 | 'base-font-size': 'base font size', 11 | 'legacy-syntax': 'legacy syntax' 12 | ); 13 | 14 | @each $legacy, $new in $legacyVars { 15 | @if global-variable-exists('breakpoint-' + $legacy) { 16 | @warn "In order to avoid variable namspace collisions, we have updated the way to change settings for Breakpoint. Please change all instances of `$breakpoint-#{$legacy}: {{setting}}` to `@include breakpoint-set('#{$new}', {{setting}})`. Variable settings, as well as this warning will be deprecated in a future release." 17 | } 18 | }; 19 | 20 | ////////////////////////////// 21 | // Hand correct each setting 22 | ////////////////////////////// 23 | @if global-variable-exists('breakpoint-default-media') and $breakpoint-default-media != breakpoint-get('default media') { 24 | @include breakpoint-set('default media', $breakpoint-default-media); 25 | } 26 | @if global-variable-exists('breakpoint-default-feature') and $breakpoint-default-feature != breakpoint-get('default feature') { 27 | @include breakpoint-set('default feature', $breakpoint-default-feature); 28 | } 29 | @if global-variable-exists('breakpoint-force-media-all') and $breakpoint-force-media-all != breakpoint-get('force all media type') { 30 | @include breakpoint-set('force all media type', $breakpoint-force-media-all); 31 | } 32 | @if global-variable-exists('breakpoint-to-ems') and $breakpoint-to-ems != breakpoint-get('to ems') { 33 | @include breakpoint-set('to ems', $breakpoint-to-ems); 34 | } 35 | @if global-variable-exists('breakpoint-resolutions') and $breakpoint-resolutions != breakpoint-get('transform resolutions') { 36 | @include breakpoint-set('transform resolutions', $breakpoint-resolutions); 37 | } 38 | @if global-variable-exists('breakpoint-no-queries') and $breakpoint-no-queries != breakpoint-get('no queries') { 39 | @include breakpoint-set('no queries', $breakpoint-no-queries); 40 | } 41 | @if global-variable-exists('breakpoint-no-query-fallbacks') and $breakpoint-no-query-fallbacks != breakpoint-get('no query fallbacks') { 42 | @include breakpoint-set('no query fallbacks', $breakpoint-no-query-fallbacks); 43 | } 44 | @if global-variable-exists('breakpoint-base-font-size') and $breakpoint-base-font-size != breakpoint-get('base font size') { 45 | @include breakpoint-set('base font size', $breakpoint-base-font-size); 46 | } 47 | @if global-variable-exists('breakpoint-legacy-syntax') and $breakpoint-legacy-syntax != breakpoint-get('legacy syntax') { 48 | @include breakpoint-set('legacy syntax', $breakpoint-legacy-syntax); 49 | } 50 | } -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/breakpoint/_no-query.scss: -------------------------------------------------------------------------------- 1 | @function breakpoint-no-query($query) { 2 | @if type-of($query) == 'list' { 3 | $keyword: nth($query, 1); 4 | 5 | @if type-of($keyword) == 'string' and ($keyword == 'no-query' or $keyword == 'no query' or $keyword == 'fallback') { 6 | @return nth($query, 2); 7 | } 8 | @else { 9 | @return false; 10 | } 11 | } 12 | @else { 13 | @return false; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/breakpoint/_respond-to.scss: -------------------------------------------------------------------------------- 1 | //////////////////////// 2 | // Default the Breakpoints variable 3 | //////////////////////// 4 | $breakpoints: () !default; 5 | $BREAKPOINTS: () !default; 6 | 7 | //////////////////////// 8 | // Respond-to API Mixin 9 | //////////////////////// 10 | @mixin respond-to($context, $no-query: false) { 11 | @if length($breakpoints) > 0 and length($BREAKPOINTS) == 0 { 12 | @warn "In order to avoid variable namespace collisions, we have updated the way to add breakpoints for respond-to. Please change all instances of `$breakpoints: add-breakpoint()` to `@include add-breakpoint()`. The `add-breakpoint()` function will be deprecated in a future release."; 13 | $BREAKPOINTS: $breakpoints !global; 14 | $breakpoints: () !global; 15 | } 16 | 17 | @if type-of($BREAKPOINTS) != 'map' { 18 | // Just in case someone writes gibberish to the $breakpoints variable. 19 | @warn "Your breakpoints aren't a map! `respond-to` expects a map. Please check the value of $BREAKPOINTS variable."; 20 | @content; 21 | } 22 | @else if map-has-key($BREAKPOINTS, $context) { 23 | @include breakpoint(map-get($BREAKPOINTS, $context), $no-query) { 24 | @content; 25 | } 26 | } 27 | @else if not map-has-key($BREAKPOINTS, $context) { 28 | @warn "`#{$context}` isn't a defined breakpoint! Please add it using `$breakpoints: add-breakpoint(`#{$context}`, $value);`"; 29 | @content; 30 | } 31 | @else { 32 | @warn "You haven't created any breakpoints yet! Make some already! `@include add-breakpoint($name, $bkpt)`"; 33 | @content; 34 | } 35 | } 36 | 37 | ////////////////////////////// 38 | // Add Breakpoint to Breakpoints 39 | // TODO: Remove function in next release 40 | ////////////////////////////// 41 | @function add-breakpoint($name, $bkpt, $overwrite: false) { 42 | $output: ($name: $bkpt); 43 | 44 | @if length($breakpoints) == 0 { 45 | @return $output; 46 | } 47 | @else { 48 | @if map-has-key($breakpoints, $name) and $overwrite != true { 49 | @warn "You already have a breakpoint named `#{$name}`, please choose another breakpoint name, or pass in `$overwrite: true` to overwrite the previous breakpoint."; 50 | @return $breakpoints; 51 | } 52 | @else if not map-has-key($breakpoints, $name) or $overwrite == true { 53 | @return map-merge($breakpoints, $output); 54 | } 55 | } 56 | } 57 | 58 | @mixin add-breakpoint($name, $bkpt, $overwrite: false) { 59 | $output: ($name: $bkpt); 60 | 61 | @if length($BREAKPOINTS) == 0 { 62 | $BREAKPOINTS: $output !global; 63 | } 64 | @else { 65 | @if map-has-key($BREAKPOINTS, $name) and $overwrite != true { 66 | @warn "You already have a breakpoint named `#{$name}`, please choose another breakpoint name, or pass in `$overwrite: true` to overwrite the previous breakpoint."; 67 | $BREAKPOINTS: $BREAKPOINTS !global; 68 | } 69 | @else if not map-has-key($BREAKPOINTS, $name) or $overwrite == true { 70 | $BREAKPOINTS: map-merge($BREAKPOINTS, $output) !global; 71 | } 72 | } 73 | } 74 | 75 | @function get-breakpoint($name: false) { 76 | @if $name == false { 77 | @return $BREAKPOINTS; 78 | } 79 | @else { 80 | @return map-get($BREAKPOINTS, $name); 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/breakpoint/_settings.scss: -------------------------------------------------------------------------------- 1 | ////////////////////////////// 2 | // Has Setting 3 | ////////////////////////////// 4 | @function breakpoint-has($setting) { 5 | @if map-has-key($breakpoint, $setting) { 6 | @return true; 7 | } 8 | @else { 9 | @return false; 10 | } 11 | } 12 | 13 | ////////////////////////////// 14 | // Get Settings 15 | ////////////////////////////// 16 | @function breakpoint-get($setting) { 17 | @if breakpoint-has($setting) { 18 | @return map-get($breakpoint, $setting); 19 | } 20 | @else { 21 | @return map-get($Breakpoint-Settings, $setting); 22 | } 23 | } 24 | 25 | ////////////////////////////// 26 | // Set Settings 27 | ////////////////////////////// 28 | @function breakpoint-set($setting, $value) { 29 | @if (str-index($setting, '-') or str-index($setting, '_')) and str-index($setting, ' ') == null { 30 | @warn "Words in Breakpoint settings should be separated by spaces, not dashes or underscores. Please replace dashes and underscores between words with spaces. Settings will not work as expected until changed."; 31 | } 32 | $breakpoint: map-merge($breakpoint, ($setting: $value)) !global; 33 | @return true; 34 | } 35 | 36 | @mixin breakpoint-change($setting, $value) { 37 | $breakpoint-change: breakpoint-set($setting, $value); 38 | } 39 | 40 | @mixin breakpoint-set($setting, $value) { 41 | @include breakpoint-change($setting, $value); 42 | } 43 | 44 | @mixin bkpt-change($setting, $value) { 45 | @include breakpoint-change($setting, $value); 46 | } 47 | @mixin bkpt-set($setting, $value) { 48 | @include breakpoint-change($setting, $value); 49 | } 50 | 51 | ////////////////////////////// 52 | // Remove Setting 53 | ////////////////////////////// 54 | @function breakpoint-reset($settings...) { 55 | @if length($settings) == 1 { 56 | $settings: nth($settings, 1); 57 | } 58 | 59 | @each $setting in $settings { 60 | $breakpoint: map-remove($breakpoint, $setting) !global; 61 | } 62 | @return true; 63 | } 64 | 65 | @mixin breakpoint-reset($settings...) { 66 | $breakpoint-reset: breakpoint-reset($settings); 67 | } 68 | 69 | @mixin bkpt-reset($settings...) { 70 | $breakpoint-reset: breakpoint-reset($settings); 71 | } -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/breakpoint/parsers/_double.scss: -------------------------------------------------------------------------------- 1 | ////////////////////////////// 2 | // Import Pieces 3 | ////////////////////////////// 4 | @import "double/default-pair"; 5 | @import "double/double-string"; 6 | @import "double/default"; 7 | 8 | @function breakpoint-parse-double($feature, $empty-media, $first) { 9 | $parsed: ''; 10 | $leader: ''; 11 | // If we're forcing 12 | @if not ($empty-media) or not ($first) { 13 | $leader: 'and '; 14 | } 15 | 16 | $first: nth($feature, 1); 17 | $second: nth($feature, 2); 18 | 19 | // If we've got two numbers, we know we need to use the default pair because there are no media queries that has a media feature that is a number 20 | @if type-of($first) == 'number' and type-of($second) == 'number' { 21 | $parsed: breakpoint-parse-default-pair($first, $second); 22 | } 23 | // If they are both strings, we send it through the string parser 24 | @else if type-of($first) == 'string' and type-of($second) == 'string' { 25 | $parsed: breakpoint-parse-double-string($first, $second); 26 | } 27 | // If it's a string/number pair, we parse it as a normal double 28 | @else { 29 | $parsed: breakpoint-parse-double-default($first, $second); 30 | } 31 | 32 | @return $leader + $parsed; 33 | } 34 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/breakpoint/parsers/_query.scss: -------------------------------------------------------------------------------- 1 | @function breakpoint-parse-query($query) { 2 | // Parse features out of an individual query 3 | $feature-holder: (); 4 | $query-holder: (); 5 | $length: length($query); 6 | 7 | @if $length == 2 { 8 | // If we've got a string/number, number/string, check to see if it's a valid string/number pair or two singles 9 | @if (type-of(nth($query, 1)) == 'string' and type-of(nth($query, 2)) == 'number') or (type-of(nth($query, 1)) == 'number' and type-of(nth($query, 2)) == 'string') { 10 | 11 | $number: ''; 12 | $value: ''; 13 | 14 | @if type-of(nth($query, 1)) == 'string' { 15 | $number: nth($query, 2); 16 | $value: nth($query, 1); 17 | } 18 | @else { 19 | $number: nth($query, 1); 20 | $value: nth($query, 2); 21 | } 22 | 23 | // If the string value can be a single value, check to see if the number passed in is a valid input for said single value. Fortunately, all current single-value options only accept unitless numbers, so this check is easy. 24 | @if breakpoint-single-string($value) { 25 | @if unitless($number) { 26 | $feature-holder: append($value, $number, space); 27 | $query-holder: append($query-holder, $feature-holder, comma); 28 | @return $query-holder; 29 | } 30 | } 31 | // If the string is a media type, split the query 32 | @if breakpoint-is-media($value) { 33 | $query-holder: append($query-holder, nth($query, 1)); 34 | $query-holder: append($query-holder, nth($query, 2)); 35 | @return $query-holder; 36 | } 37 | // If it's not a single feature, we're just going to assume it's a proper string/value pair, and roll with it. 38 | @else { 39 | $feature-holder: append($value, $number, space); 40 | $query-holder: append($query-holder, $feature-holder, comma); 41 | @return $query-holder; 42 | } 43 | 44 | } 45 | // If they're both numbers, we assume it's a double and roll with that 46 | @else if (type-of(nth($query, 1)) == 'number' and type-of(nth($query, 2)) == 'number') { 47 | $feature-holder: append(nth($query, 1), nth($query, 2), space); 48 | $query-holder: append($query-holder, $feature-holder, comma); 49 | @return $query-holder; 50 | } 51 | // If they're both strings and neither are singles, we roll with that. 52 | @else if (type-of(nth($query, 1)) == 'string' and type-of(nth($query, 2)) == 'string') { 53 | @if not breakpoint-single-string(nth($query, 1)) and not breakpoint-single-string(nth($query, 2)) { 54 | $feature-holder: append(nth($query, 1), nth($query, 2), space); 55 | $query-holder: append($query-holder, $feature-holder, comma); 56 | @return $query-holder; 57 | } 58 | } 59 | } 60 | @else if $length == 3 { 61 | // If we've got three items and none is a list, we check to see 62 | @if type-of(nth($query, 1)) != 'list' and type-of(nth($query, 2)) != 'list' and type-of(nth($query, 3)) != 'list' { 63 | // If none of the items are single string values and none of the values are media values, we're good. 64 | @if (not breakpoint-single-string(nth($query, 1)) and not breakpoint-single-string(nth($query, 2)) and not breakpoint-single-string(nth($query, 3))) and ((not breakpoint-is-media(nth($query, 1)) and not breakpoint-is-media(nth($query, 2)) and not breakpoint-is-media(nth($query, 3)))) { 65 | $feature-holder: append(nth($query, 1), nth($query, 2), space); 66 | $feature-holder: append($feature-holder, nth($query, 3), space); 67 | $query-holder: append($query-holder, $feature-holder, comma); 68 | @return $query-holder; 69 | } 70 | // let's check to see if the first item is a media type 71 | @else if breakpoint-is-media(nth($query, 1)) { 72 | $query-holder: append($query-holder, nth($query, 1)); 73 | $feature-holder: append(nth($query, 2), nth($query, 3), space); 74 | $query-holder: append($query-holder, $feature-holder); 75 | @return $query-holder; 76 | } 77 | } 78 | } 79 | 80 | // If it's a single item, or if it's not a special case double or triple, we can simply return the query. 81 | @return $query; 82 | } 83 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/breakpoint/parsers/_resolution.scss: -------------------------------------------------------------------------------- 1 | @import "resolution/resolution"; 2 | 3 | @function breakpoint-build-resolution($query-print, $query-resolution, $empty-media, $first) { 4 | $leader: ''; 5 | // If we're forcing 6 | @if not ($empty-media) or not ($first) { 7 | $leader: 'and '; 8 | } 9 | 10 | @if breakpoint-get('transform resolutions') and $query-resolution { 11 | $resolutions: breakpoint-make-resolutions($query-resolution); 12 | $length: length($resolutions); 13 | $query-holder: ''; 14 | 15 | @for $i from 1 through $length { 16 | $query: '#{$query-print} #{$leader}#{nth($resolutions, $i)}'; 17 | @if $i == 1 { 18 | $query-holder: $query; 19 | } 20 | @else { 21 | $query-holder: '#{$query-holder}, #{$query}'; 22 | } 23 | } 24 | 25 | @return $query-holder; 26 | } 27 | @else { 28 | // Return with attached resolution 29 | @return $query-print; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/breakpoint/parsers/_single.scss: -------------------------------------------------------------------------------- 1 | ////////////////////////////// 2 | // Import Pieces 3 | ////////////////////////////// 4 | @import "single/default"; 5 | 6 | @function breakpoint-parse-single($feature, $empty-media, $first) { 7 | $parsed: ''; 8 | $leader: ''; 9 | // If we're forcing 10 | @if not ($empty-media) or not ($first) { 11 | $leader: 'and '; 12 | } 13 | 14 | // If it's a single feature that can stand alone, we let it 15 | @if (breakpoint-single-string($feature)) { 16 | $parsed: $feature; 17 | // Set Context 18 | $context-setter: private-breakpoint-set-context($feature, $feature); 19 | } 20 | // If it's not a stand alone feature, we pass it off to the default handler. 21 | @else { 22 | $parsed: breakpoint-parse-default($feature); 23 | } 24 | 25 | @return $leader + '(' + $parsed + ')'; 26 | } 27 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/breakpoint/parsers/_triple.scss: -------------------------------------------------------------------------------- 1 | ////////////////////////////// 2 | // Import Pieces 3 | ////////////////////////////// 4 | @import "triple/default"; 5 | 6 | @function breakpoint-parse-triple($feature, $empty-media, $first) { 7 | $parsed: ''; 8 | $leader: ''; 9 | 10 | // If we're forcing 11 | @if not ($empty-media) or not ($first) { 12 | $leader: 'and '; 13 | } 14 | 15 | // separate the string features from the value numbers 16 | $string: null; 17 | $numbers: null; 18 | @each $val in $feature { 19 | @if type-of($val) == string { 20 | $string: $val; 21 | } 22 | @else { 23 | @if type-of($numbers) == 'null' { 24 | $numbers: $val; 25 | } 26 | @else { 27 | $numbers: append($numbers, $val); 28 | } 29 | } 30 | } 31 | 32 | $parsed: breakpoint-parse-triple-default($string, nth($numbers, 1), nth($numbers, 2)); 33 | 34 | @return $leader + $parsed; 35 | 36 | } 37 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/breakpoint/parsers/double/_default-pair.scss: -------------------------------------------------------------------------------- 1 | @function breakpoint-parse-default-pair($first, $second) { 2 | $default: breakpoint-get('default pair'); 3 | $min: ''; 4 | $max: ''; 5 | 6 | // Sort into min and max 7 | $min: min($first, $second); 8 | $max: max($first, $second); 9 | 10 | // Set Context 11 | $context-setter: private-breakpoint-set-context(min-#{$default}, $min); 12 | $context-setter: private-breakpoint-set-context(max-#{$default}, $max); 13 | 14 | // Make them EMs if need be 15 | @if (breakpoint-get('to ems') == true) { 16 | $min: breakpoint-to-base-em($min); 17 | $max: breakpoint-to-base-em($max); 18 | } 19 | 20 | @return '(min-#{$default}: #{$min}) and (max-#{$default}: #{$max})'; 21 | } 22 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/breakpoint/parsers/double/_default.scss: -------------------------------------------------------------------------------- 1 | @function breakpoint-parse-double-default($first, $second) { 2 | $feature: ''; 3 | $value: ''; 4 | 5 | @if type-of($first) == 'string' { 6 | $feature: $first; 7 | $value: $second; 8 | } 9 | @else { 10 | $feature: $second; 11 | $value: $first; 12 | } 13 | 14 | // Set Context 15 | $context-setter: private-breakpoint-set-context($feature, $value); 16 | 17 | @if (breakpoint-get('to ems') == true) { 18 | $value: breakpoint-to-base-em($value); 19 | } 20 | 21 | @return '(#{$feature}: #{$value})' 22 | } 23 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/breakpoint/parsers/double/_double-string.scss: -------------------------------------------------------------------------------- 1 | @function breakpoint-parse-double-string($first, $second) { 2 | $feature: ''; 3 | $value: ''; 4 | 5 | // Test to see which is the feature and which is the value 6 | @if (breakpoint-string-value($first) == true) { 7 | $feature: $first; 8 | $value: $second; 9 | } 10 | @else if (breakpoint-string-value($second) == true) { 11 | $feature: $second; 12 | $value: $first; 13 | } 14 | @else { 15 | @warn "Neither #{$first} nor #{$second} is a valid media query name."; 16 | } 17 | 18 | // Set Context 19 | $context-setter: private-breakpoint-set-context($feature, $value); 20 | 21 | @return '(#{$feature}: #{$value})'; 22 | } -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/breakpoint/parsers/resolution/_resolution.scss: -------------------------------------------------------------------------------- 1 | @function breakpoint-make-resolutions($resolution) { 2 | $length: length($resolution); 3 | 4 | $output: (); 5 | 6 | @if $length == 2 { 7 | $feature: ''; 8 | $value: ''; 9 | 10 | // Find which is number 11 | @if type-of(nth($resolution, 1)) == 'number' { 12 | $value: nth($resolution, 1); 13 | } 14 | @else { 15 | $value: nth($resolution, 2); 16 | } 17 | 18 | // Determine min/max/standard 19 | @if index($resolution, 'min-resolution') { 20 | $feature: 'min-'; 21 | } 22 | @else if index($resolution, 'max-resolution') { 23 | $feature: 'max-'; 24 | } 25 | 26 | $standard: '(#{$feature}resolution: #{$value})'; 27 | 28 | // If we're not dealing with dppx, 29 | @if unit($value) != 'dppx' { 30 | $base: 96dpi; 31 | @if unit($value) == 'dpcm' { 32 | $base: 243.84dpcm; 33 | } 34 | // Write out feature tests 35 | $webkit: ''; 36 | $moz: ''; 37 | $webkit: '(-webkit-#{$feature}device-pixel-ratio: #{$value / $base})'; 38 | $moz: '(#{$feature}-moz-device-pixel-ratio: #{$value / $base})'; 39 | // Append to output 40 | $output: append($output, $standard, space); 41 | $output: append($output, $webkit, space); 42 | $output: append($output, $moz, space); 43 | } 44 | @else { 45 | $webkit: ''; 46 | $moz: ''; 47 | $webkit: '(-webkit-#{$feature}device-pixel-ratio: #{$value / 1dppx})'; 48 | $moz: '(#{$feature}-moz-device-pixel-ratio: #{$value / 1dppx})'; 49 | $fallback: '(#{$feature}resolution: #{$value / 1dppx * 96dpi})'; 50 | // Append to output 51 | $output: append($output, $standard, space); 52 | $output: append($output, $webkit, space); 53 | $output: append($output, $moz, space); 54 | $output: append($output, $fallback, space); 55 | } 56 | 57 | } 58 | 59 | @return $output; 60 | } 61 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/breakpoint/parsers/single/_default.scss: -------------------------------------------------------------------------------- 1 | @function breakpoint-parse-default($feature) { 2 | $default: breakpoint-get('default feature'); 3 | 4 | // Set Context 5 | $context-setter: private-breakpoint-set-context($default, $feature); 6 | 7 | @if (breakpoint-get('to ems') == true) and (type-of($feature) == 'number') { 8 | @return '#{$default}: #{breakpoint-to-base-em($feature)}'; 9 | } 10 | @else { 11 | @return '#{$default}: #{$feature}'; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/breakpoint/parsers/triple/_default.scss: -------------------------------------------------------------------------------- 1 | @function breakpoint-parse-triple-default($feature, $first, $second) { 2 | 3 | // Sort into min and max 4 | $min: min($first, $second); 5 | $max: max($first, $second); 6 | 7 | // Set Context 8 | $context-setter: private-breakpoint-set-context(min-#{$feature}, $min); 9 | $context-setter: private-breakpoint-set-context(max-#{$feature}, $max); 10 | 11 | // Make them EMs if need be 12 | @if (breakpoint-get('to ems') == true) { 13 | $min: breakpoint-to-base-em($min); 14 | $max: breakpoint-to-base-em($max); 15 | } 16 | 17 | @return '(min-#{$feature}: #{$min}) and (max-#{$feature}: #{$max})'; 18 | } 19 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/magnific-popup/_settings.scss: -------------------------------------------------------------------------------- 1 | //////////////////////// 2 | // Settings // 3 | //////////////////////// 4 | 5 | // overlay 6 | $mfp-overlay-color: #000; // Color of overlay screen 7 | $mfp-overlay-opacity: 0.8; // Opacity of overlay screen 8 | $mfp-shadow: 0 0 8px rgba(0, 0, 0, 0.6); // Shadow on image or iframe 9 | 10 | // spacing 11 | $mfp-popup-padding-left: 8px; // Padding from left and from right side 12 | $mfp-popup-padding-left-mobile: 6px; // Same as above, but is applied when width of window is less than 800px 13 | 14 | $mfp-z-index-base: 1040; // Base z-index of popup 15 | 16 | // controls 17 | $mfp-include-arrows: true; // Include styles for nav arrows 18 | $mfp-controls-opacity: 1; // Opacity of controls 19 | $mfp-controls-color: #fff; // Color of controls 20 | $mfp-controls-border-color: #fff; // Border color of controls 21 | $mfp-inner-close-icon-color: #fff; // Color of close button when inside 22 | $mfp-controls-text-color: #ccc; // Color of preloader and "1 of X" indicator 23 | $mfp-controls-text-color-hover: #fff; // Hover color of preloader and "1 of X" indicator 24 | $mfp-IE7support: true; // Very basic IE7 support 25 | 26 | // Iframe-type options 27 | $mfp-include-iframe-type: true; // Enable Iframe-type popups 28 | $mfp-iframe-padding-top: 40px; // Iframe padding top 29 | $mfp-iframe-background: #000; // Background color of iframes 30 | $mfp-iframe-max-width: 900px; // Maximum width of iframes 31 | $mfp-iframe-ratio: 9/16; // Ratio of iframe (9/16 = widescreen, 3/4 = standard, etc.) 32 | 33 | // Image-type options 34 | $mfp-include-image-type: true; // Enable Image-type popups 35 | $mfp-image-background: #444 !default; 36 | $mfp-image-padding-top: 40px; // Image padding top 37 | $mfp-image-padding-bottom: 40px; // Image padding bottom 38 | $mfp-include-mobile-layout-for-image: true; // Removes paddings from top and bottom 39 | 40 | // Image caption options 41 | $mfp-caption-title-color: #f3f3f3; // Caption title color 42 | $mfp-caption-subtitle-color: #bdbdbd; // Caption subtitle color 43 | .mfp-counter { font-family: $serif; } // Caption font family 44 | 45 | // A11y 46 | $mfp-use-visuallyhidden: false; -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/susy/_su.scss: -------------------------------------------------------------------------------- 1 | // Su 2 | // == 3 | 4 | @import 'susy/su'; 5 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/susy/_susy-prefix.scss: -------------------------------------------------------------------------------- 1 | // Susy (Prefixed) 2 | // =============== 3 | 4 | $susy-version: 3; 5 | 6 | @import 'susy/utilities'; 7 | @import 'susy/su-validate'; 8 | @import 'susy/su-math'; 9 | @import 'susy/settings'; 10 | @import 'susy/normalize'; 11 | @import 'susy/parse'; 12 | @import 'susy/syntax-helpers'; 13 | @import 'susy/api'; 14 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/susy/_susy.scss: -------------------------------------------------------------------------------- 1 | // Susy (Un-Prefixed) 2 | // ================== 3 | 4 | @import 'susy-prefix'; 5 | @import 'susy/unprefix'; 6 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/susy/plugins/_svg-grid.scss: -------------------------------------------------------------------------------- 1 | // SVG Grid Background 2 | // =================== 3 | 4 | @import 'svg-grid/prefix'; 5 | @import 'svg-grid/svg-unprefix'; 6 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_prefix.scss: -------------------------------------------------------------------------------- 1 | // Prefixed SVG Plugin 2 | // =================== 3 | 4 | @import 'svg-settings'; 5 | @import 'svg-utilities'; 6 | @import 'svg-grid-math'; 7 | @import 'svg-api'; 8 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-api.scss: -------------------------------------------------------------------------------- 1 | /// Plugin: SVG Grid Image 2 | /// ====================== 3 | /// @group plugin_svg-grid 4 | /// @see susy-svg-grid 5 | 6 | 7 | 8 | /// ## Overview 9 | /// If you want to generate svg-backgrounds 10 | /// for help visualizing and debugging your grids, 11 | /// import the SVG Grid Plugin. 12 | /// 13 | /// The plugin adds `svg-grid-colors` setting 14 | /// to your global defaults, 15 | /// which you can override in `$susy`. 16 | /// It also provides you with a new function, 17 | /// `susy-svg-grid()`, 18 | /// which will return inline svg for use in 19 | /// backgrounds or generated content. 20 | /// 21 | /// This function come with an unprefixed alias by default, 22 | /// using the `svg-grid` import. 23 | /// If you only only want prefixed versions of the API, 24 | /// import the `svg-grid/prefix` partial instead. 25 | /// 26 | /// @group plugin_svg-grid 27 | /// 28 | /// @example scss - importing the plugin 29 | /// // The full path to import Susy will depend on your setup… 30 | /// 31 | /// // unprefixed 32 | /// @import 'plugins/svg-grid'; 33 | /// 34 | /// // prefixed 35 | /// @import 'plugins/svg-grid/prefix'; 36 | /// 37 | /// @example scss - generating background grids 38 | /// .grid { 39 | /// background: susy-svg-grid() no-repeat scroll; 40 | /// } 41 | 42 | 43 | 44 | // SVG Grid 45 | // -------- 46 | /// Return inline svg-data in to display the grid. 47 | /// 48 | /// @group plugin_svg-grid 49 | /// 50 | /// @param {Map | List} $grid [$susy] - 51 | /// Map or shorthand defining the current grid 52 | /// @param {Color | List | null} $colors [null] - 53 | /// Column color, or list of colors for column-gradient, 54 | /// used to override the global `svg-grid-colors` setting 55 | /// @param {Length | null} $offset [null] - 56 | /// Manually override the default grid-image offset, 57 | /// to account for grid edges 58 | /// 59 | /// @return {String} - 60 | /// CSS inline-data SVG string, in `url()` format, 61 | /// for use in image or content properties 62 | /// @example scss 63 | /// .grid { 64 | /// background: susy-svg-grid() no-repeat scroll; 65 | /// } 66 | @function susy-svg-grid( 67 | $grid: $susy, 68 | $colors: null, 69 | $offset: null 70 | ) { 71 | // Grid parsing & normalizing 72 | $grid: susy-compile($grid, $context-only: true); 73 | 74 | // Color and gradient handling 75 | $gradient: ''; 76 | 77 | @if (not $colors) { 78 | $colors: susy-get('svg-grid-colors'); 79 | } 80 | 81 | @if length($colors) > 1 { 82 | $gradient: _susy-svg-gradient($colors); 83 | $colors: 'url(%23susy-svg-gradient)'; 84 | } @else { 85 | $colors: _susy-svg-color($colors); 86 | } 87 | 88 | // Get a default image-width 89 | $span: ( 90 | 'span': map-get($grid, 'columns'), 91 | 'spread': map-get($grid, 'container-spread'), 92 | ); 93 | $span: map-merge($grid, $span); 94 | $image-width: su-call('su-span', $span); 95 | $image-width: if((type-of($image-width) == 'number'), $image-width, 100%); 96 | 97 | // SVG construction 98 | $columns: map-get($grid, 'columns'); 99 | $offset: $offset or _susy-svg-offset($grid); 100 | 101 | $attrs: 'fill="#{$colors}" width="#{$image-width}"'; 102 | $svg: 'data:image/svg+xml,'; 103 | $svg: $svg + '%3Csvg xmlns="http://www.w3.org/2000/svg" #{$attrs} %3E'; 104 | $svg: $svg + $gradient; 105 | 106 | @for $column from 1 through length($columns) { 107 | $width: susy-span(1 narrow at $column, $grid); 108 | $x: _susy-svg-column-position($column, $grid); 109 | 110 | $svg: $svg + _susy-svg-rect($x, $width, $offset); 111 | } 112 | 113 | @return url('#{$svg}%3C/svg%3E'); 114 | } 115 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-grid-math.scss: -------------------------------------------------------------------------------- 1 | // SVG Grid Math 2 | // ============= 3 | 4 | 5 | 6 | // SVG Column Position 7 | // ------------------- 8 | /// Determine the proper horizontal position 9 | /// for a column rectangle 10 | /// 11 | /// @access private 12 | /// 13 | /// @param {Integer} $column - 14 | /// 1-indexed column location on the grid 15 | /// @param {Map} $grid - 16 | /// Normalized settings map representing the current grid 17 | /// 18 | /// @return {Length} - 19 | /// Horizontal position of svg column rectangle, 20 | /// as distance from the grid edge 21 | @function _susy-svg-column-position( 22 | $column, 23 | $grid 24 | ) { 25 | $x: $column - 1; 26 | 27 | @if ($x > 0) { 28 | $x: susy-span(first $x wide, $grid); 29 | } 30 | 31 | @return $x; 32 | } 33 | 34 | 35 | 36 | // SVG Offset 37 | // ---------- 38 | /// Determine if a grid image needs to be offset, 39 | /// to account for edge gutters. 40 | /// 41 | /// @access private 42 | /// 43 | /// @param {Map} $grid - 44 | /// Normalized settings map representing the current grid 45 | /// 46 | /// @return {Length | null} - 47 | /// Expected distance from container edge to first column, 48 | /// based on spread values and gutter-widths 49 | @function _susy-svg-offset( 50 | $grid 51 | ) { 52 | $columns: su-valid-columns(map-get($grid, 'columns')); 53 | $gutters: su-valid-gutters(map-get($grid, 'gutters')); 54 | $container: su-valid-spread(map-get($grid, 'container-spread')) + 1; 55 | 56 | @if ($container == 0) { 57 | @return null; 58 | } 59 | 60 | $gutter: su-call('su-gutter', $grid); 61 | 62 | @if (type-of($gutter) == 'string') { 63 | @return 'calc(#{$container} * #{$gutter} / 2)'; 64 | } 65 | 66 | @return $container * $gutter / 2; 67 | } 68 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-settings.scss: -------------------------------------------------------------------------------- 1 | // SVG Settings 2 | // ============ 3 | 4 | 5 | // Susy SVG Defaults 6 | // ================= 7 | /// This plugin adds the `svg-grid-colors` property 8 | /// and default value to `$_susy-defaults` — 9 | /// you can override that value in `$susy` 10 | /// or any other grid settings map. 11 | /// @group plugin_svg-grid 12 | $_susy-defaults: map-merge(( 13 | 'svg-grid-colors': hsla(120, 50%, 50%, 0.5) hsla(120, 50%, 75%, 0.5), 14 | ), $_susy-defaults); 15 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-unprefix.scss: -------------------------------------------------------------------------------- 1 | // Unprefix Susy SVG Grid 2 | // ====================== 3 | 4 | 5 | 6 | // SVG Grid 7 | // -------- 8 | /// Un-prefixed alias for `susy-svg-grid` 9 | /// 10 | /// @group plugin_svg-grid 11 | /// @alias susy-svg-grid 12 | @function svg-grid( 13 | $grid: $susy, 14 | $colors: susy-get('svg-grid-colors'), 15 | $offset: null 16 | ) { 17 | @return susy-svg-grid($grid, $colors, $offset); 18 | } 19 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-utilities.scss: -------------------------------------------------------------------------------- 1 | // SVG Utilities 2 | // ============= 3 | 4 | 5 | 6 | // SVG Validate Units 7 | // ------------------ 8 | /// Make sure a length is supported in svg 9 | /// 10 | /// @access private 11 | /// 12 | /// @param {Length} $length - 13 | /// The length to validate 14 | /// @param {String} $name [null] - 15 | /// Optional name of length origin, 16 | /// for error reporting 17 | /// 18 | /// @return {Length} - 19 | /// An svg-validated length, or comparable valid length 20 | @function _susy-svg-validate-units( 21 | $length, 22 | $name: null 23 | ) { 24 | $_svg-units: ('em', 'ex', 'px', 'pt', 'pc', 'cm', 'mm', 'in', '%'); 25 | $string: type-of($length) == 'string'; 26 | 27 | @if ($length == 0) or ($string) or index($_svg-units, unit($length)) { 28 | @return $length; 29 | } 30 | 31 | @return _susy-error( 32 | '`#{unit($length)}` #{$name} units are not supported in SVG', 33 | '_susy-svg-validate-units'); 34 | } 35 | 36 | 37 | 38 | // SVG Rect 39 | // -------- 40 | /// Build a single svg rectangle 41 | /// 42 | /// @access private 43 | /// 44 | /// @param {Length} $x - 45 | /// Horizontal position for the rectangle 46 | /// @param {Length} $width - 47 | /// Width of the rectangle 48 | /// @param {Length} $offset [null] - 49 | /// Offset the rectangle, to account for edge gutters 50 | /// 51 | /// @return {String} - 52 | /// Escaped string representing one svg rectangle 53 | @function _susy-svg-rect( 54 | $x, 55 | $width, 56 | $offset: null 57 | ) { 58 | $x: _susy-svg-validate-units($x); 59 | $width: _susy-svg-validate-units($width); 60 | $offset: if($offset == 0, null, $offset); 61 | 62 | @if (type-of($offset) == 'number') and (type-of($x) == 'number') { 63 | @if comparable($x, $offset) { 64 | $x: $x + $offset; 65 | } @else { 66 | $x: 'calc(#{$x} + #{$offset})'; 67 | } 68 | } @else if $offset and ($x != 0) { 69 | $x: 'calc(#{$x} + #{$offset})'; 70 | } @else if $offset { 71 | $x: $offset; 72 | } 73 | 74 | @return '%3Crect x="#{$x}" width="#{$width}" height="100%"/%3E'; 75 | } 76 | 77 | 78 | 79 | // SVG Color 80 | // --------- 81 | /// Stringify colors, and escape hex symbol 82 | /// 83 | /// @access private 84 | /// 85 | /// @param {Color} $color - 86 | /// Color to stringify and escape 87 | /// 88 | /// @return {String} - 89 | /// Escaped string value of color 90 | @function _susy-svg-color( 91 | $color 92 | ) { 93 | $color: inspect($color); // convert to string 94 | 95 | @if (str-index($color, '#') == 1) { 96 | $color: '%23' + str-slice($color, 2); 97 | } 98 | 99 | @return $color; 100 | } 101 | 102 | 103 | 104 | // SVG Gradient 105 | // ------------ 106 | /// Create a multi-color svg gradient 107 | /// 108 | /// @access private 109 | /// 110 | /// @param {List} $colors - 111 | /// List of colors to be equally spaced from `0%` to `100%` 112 | /// in each column rectangle 113 | /// 114 | /// @return {String} - 115 | /// Escaped string representing one svg gradient 116 | /// (`id="susy-svg-gradient"`) 117 | @function _susy-svg-gradient( 118 | $colors 119 | ) { 120 | $gradient: '%3Cdefs%3E%3ClinearGradient spreadMethod="pad"'; 121 | $gradient: '#{$gradient} id="susy-svg-gradient"'; 122 | $gradient: '#{$gradient} x1="0%" y1="0%" x2="100%" y2="0%"%3E'; 123 | 124 | @for $i from 1 through length($colors) { 125 | $color: _susy-svg-color(nth($colors, $i)); 126 | $offset: percentage(($i - 1) / (length($colors) - 1)); 127 | $stop: '%3Cstop offset="#{$offset}" style="stop-color:#{$color};" /%3E'; 128 | 129 | $gradient: $gradient + $stop; 130 | } 131 | 132 | @return $gradient + '%3C/linearGradient%3E%3C/defs%3E'; 133 | } 134 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/susy/susy/_parse.scss: -------------------------------------------------------------------------------- 1 | /// Shorthand Syntax Parser 2 | /// ======================= 3 | /// The syntax parser converts [shorthand syntax][short] 4 | /// into a map of settings that can be compared/merged with 5 | /// other config maps and global setting. 6 | /// 7 | /// [short]: b-api.html 8 | /// 9 | /// @group x-parser 10 | 11 | 12 | 13 | // Parse 14 | // ----- 15 | /// The `parse` function provides all the syntax-sugar in Susy, 16 | /// converting user shorthand 17 | /// into a usable map of keys and values 18 | /// that can be normalized and passed to Su. 19 | /// 20 | /// @group x-parser 21 | /// @see $susy 22 | /// 23 | /// @param {list} $shorthand - 24 | /// Shorthand expression to define the width of the span, 25 | /// optionally containing: 26 | /// - a count, length, or column-list span; 27 | /// - `at $n`, `first`, or `last` location on asymmetrical grids; 28 | /// - `narrow`, `wide`, or `wider` for optionally spreading 29 | /// across adjacent gutters; 30 | /// - `of $n ` for available grid columns 31 | /// and spread of the container 32 | /// (span counts like `of 6` are only valid 33 | /// in the context of symmetrical grids); 34 | /// - and `set-gutters $n` to override global gutter settings 35 | /// @param {bool} $context-only [false] - 36 | /// Allow the parser to ignore span and span-spread values, 37 | /// only parsing context and container-spread. 38 | /// This makes it possible to accept spanless values, 39 | /// like the `gutters()` syntax. 40 | /// When parsing context-only, 41 | /// the `of` indicator is optional. 42 | /// 43 | /// @return {map} - 44 | /// Map of span and grid settings 45 | /// parsed from shorthand input – 46 | /// including all the properties available globally – 47 | /// `columns`, `gutters`, `spread`, `container-spread` – 48 | /// along with the span-specific properties 49 | /// `span`, and `location`. 50 | /// 51 | /// @throw 52 | /// when a shorthand value is not recognized 53 | @function susy-parse( 54 | $shorthand, 55 | $context-only: false 56 | ) { 57 | $parse-error: 'Unknown shorthand property:'; 58 | $options: ( 59 | 'first': 'location', 60 | 'last': 'location', 61 | 'alpha': 'location', 62 | 'omega': 'location', 63 | 'narrow': 'spread', 64 | 'wide': 'spread', 65 | 'wider': 'spread', 66 | ); 67 | 68 | $return: (); 69 | $span: null; 70 | $columns: null; 71 | 72 | $of: null; 73 | $next: false; 74 | 75 | // Allow context-only shorthand, without span 76 | @if ($context-only) and (not index($shorthand, 'of')) { 77 | @if su-valid-columns($shorthand, 'fail-silent') { 78 | $shorthand: 'of' $shorthand; 79 | } @else { 80 | $shorthand: join('of', $shorthand); 81 | } 82 | } 83 | 84 | // loop through the shorthand list 85 | @for $i from 1 through length($shorthand) { 86 | $item: nth($shorthand, $i); 87 | $type: type-of($item); 88 | $error: false; 89 | $details: '[#{$type}] `#{$item}`'; 90 | 91 | // if we know what's supposed to be coming next… 92 | @if $next { 93 | 94 | // Add to the return map 95 | $return: map-merge($return, ($next: $item)); 96 | 97 | // Reset next to `false` 98 | $next: false; 99 | 100 | } @else { // If we don't know what's supposed to be coming… 101 | 102 | // Keywords… 103 | @if ($type == 'string') { 104 | // Check the map for keywords… 105 | @if map-has-key($options, $item) { 106 | $setting: map-get($options, $item); 107 | 108 | // Spread could be on the span or the container… 109 | @if ($setting == 'spread') and ($of) { 110 | $return: map-merge($return, ('container-spread': $item)); 111 | } @else { 112 | $return: map-merge($return, ($setting: $item)); 113 | } 114 | 115 | } @else if ($item == 'all') { 116 | // `All` is a span shortcut 117 | $span: 'all'; 118 | } @else if ($item == 'at') { 119 | // Some keywords setup what's next… 120 | $next: 'location'; 121 | } @else if ($item == 'set-gutters') { 122 | $next: 'gutters'; 123 | } @else if ($item == 'of') { 124 | $of: true; 125 | } @else { 126 | $error: true; 127 | } 128 | 129 | } @else if ($type == 'number') or ($type == 'list') { // Numbers & lists… 130 | 131 | @if not ($span or $of) { 132 | // We don't have a span, and we're not expecting context… 133 | $span: $item; 134 | } @else if ($of) and (not $columns) { 135 | // We are expecting context… 136 | $columns: $item; 137 | } @else { 138 | $error: true; 139 | } 140 | 141 | } @else { 142 | $error: true; 143 | } 144 | } 145 | 146 | @if $error { 147 | @return _susy-error('#{$parse-error} #{$details}', 'susy-parse'); 148 | } 149 | } 150 | 151 | // If we have span, merge it in 152 | @if $span { 153 | $return: map-merge($return, ('span': $span)); 154 | } 155 | 156 | // If we have columns, merge them in 157 | @if $columns { 158 | $return: map-merge($return, ('columns': $columns)); 159 | } 160 | 161 | // Return the map of settings… 162 | @return $return; 163 | } 164 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/susy/susy/_unprefix.scss: -------------------------------------------------------------------------------- 1 | // Unprefix Susy 2 | // ============= 3 | 4 | 5 | // Span 6 | // ---- 7 | /// Un-prefixed alias for `susy-span` 8 | /// (available by default) 9 | /// 10 | /// @group api 11 | /// @alias susy-span 12 | /// 13 | /// @param {list} $span 14 | /// @param {map} $config [()] 15 | @function span( 16 | $span, 17 | $config: () 18 | ) { 19 | @return susy-span($span, $config); 20 | } 21 | 22 | 23 | // Gutter 24 | // ------ 25 | /// Un-prefixed alias for `susy-gutter` 26 | /// (available by default) 27 | /// 28 | /// @group api 29 | /// @alias susy-gutter 30 | /// 31 | /// @param {integer | list} $context [null] - 32 | /// @param {map} $config [()] 33 | @function gutter( 34 | $context: susy-get('columns'), 35 | $config: () 36 | ) { 37 | @return susy-gutter($context, $config); 38 | } 39 | 40 | 41 | // Slice 42 | // ----- 43 | /// Un-prefixed alias for `susy-slice` 44 | /// (available by default) 45 | /// 46 | /// @group api 47 | /// @alias susy-slice 48 | /// 49 | /// @param {list} $span 50 | /// @param {map} $config [()] 51 | @function slice( 52 | $span, 53 | $config: () 54 | ) { 55 | @return susy-slice($span, $config); 56 | } 57 | -------------------------------------------------------------------------------- /_sass/minimal-mistakes/vendor/susy/susy/_utilities.scss: -------------------------------------------------------------------------------- 1 | // Sass Utilities 2 | // ============== 3 | // - Susy Error Output Override [variable] 4 | // - Susy Error [function] 5 | 6 | 7 | 8 | // Susy Error Output Override 9 | // -------------------------- 10 | /// Turn off error output for testing 11 | /// @group x-utility 12 | /// @access private 13 | $_susy-error-output-override: false !default; 14 | 15 | 16 | 17 | // Susy Error 18 | // ---------- 19 | /// Optionally return error messages without failing, 20 | /// as a way to test error cases 21 | /// 22 | /// @group x-utility 23 | /// @access private 24 | /// 25 | /// @param {string} $message - 26 | /// A useful error message, explaining the problem 27 | /// @param {string} $source - 28 | /// The original source of the error for debugging 29 | /// @param {bool} $override [$_susy-error-output-override] - 30 | /// Optionally return the error rather than failing 31 | /// @return {string} - 32 | /// Combined error with source and message 33 | /// @throws When `$override == true` 34 | @function _susy-error( 35 | $message, 36 | $source, 37 | $override: $_susy-error-output-override 38 | ) { 39 | @if $override { 40 | @return 'ERROR [#{$source}] #{$message}'; 41 | } 42 | 43 | @error '[#{$source}] #{$message}'; 44 | } 45 | 46 | 47 | // Su Is Comparable 48 | // ---------------- 49 | /// Check that the units in a grid are comparable 50 | /// 51 | /// @group x-validation 52 | /// @access private 53 | /// 54 | /// @param {numbers} $lengths… - 55 | /// Arglist of all the number values to compare 56 | /// (columns, gutters, span, etc) 57 | /// 58 | /// @return {'fluid' | 'static' | false} - 59 | /// The type of span (fluid or static) when units match, 60 | /// or `false` for mismatched units 61 | @function _su-is-comparable( 62 | $lengths... 63 | ) { 64 | $first: nth($lengths, 1); 65 | 66 | @if (length($lengths) == 1) { 67 | @return if(unitless($first), 'fluid', 'static'); 68 | } 69 | 70 | @for $i from 2 through length($lengths) { 71 | $comp: nth($lengths, $i); 72 | 73 | $fail: not comparable($first, $comp); 74 | $fail: $fail or (unitless($first) and not unitless($comp)); 75 | $fail: $fail or (unitless($comp) and not unitless($first)); 76 | 77 | @if $fail { 78 | @return false; 79 | } 80 | } 81 | 82 | @return if(unitless($first), 'fluid', 'static'); 83 | } 84 | 85 | 86 | // Su Map Add Units 87 | // ---------------- 88 | /// The calc features use a map of units and values 89 | /// to compile the proper algorythm. 90 | /// This function adds a new value to any comparable existing unit/value, 91 | /// or adds a new unit/value pair to the map 92 | /// 93 | /// @group x-utility 94 | /// @access private 95 | /// 96 | /// @param {map} $map - 97 | /// A map of unit/value pairs, e.g. ('px': 120px) 98 | /// @param {length} $value - 99 | /// A new length to be added to the map 100 | /// @return {map} - 101 | /// The updated map, with new value added 102 | /// 103 | /// @example scss - 104 | /// $map: (0px: 120px); 105 | /// $map: _su-map-add-units($map, 1in); // add a comparable unit 106 | /// $map: _su-map-add-units($map, 3vw); // add a new unit 107 | /// 108 | /// @each $units, $value in $map { 109 | /// /* #{$units}: #{$value} */ 110 | /// } 111 | @function _su-map-add-units( 112 | $map, 113 | $value 114 | ) { 115 | $unit: $value * 0; 116 | $has: map-get($map, $unit) or 0; 117 | 118 | @if ($has == 0) { 119 | @each $try, $could in $map { 120 | $match: comparable($try, $value); 121 | $unit: if($match, $try, $unit); 122 | $has: if($match, $could, $has); 123 | } 124 | } 125 | 126 | @return map-merge($map, ($unit: $has + $value)); 127 | } 128 | 129 | 130 | // Susy Flatten 131 | // ------------ 132 | /// Flatten a multidimensional list 133 | /// 134 | /// @group x-utility 135 | /// @access private 136 | /// 137 | /// @param {list} $list - 138 | /// The list to be flattened 139 | /// @return {list} - 140 | /// The flattened list 141 | /// 142 | /// @example scss - 143 | /// $list: 120px (30em 30em) 120px; 144 | /// /* #{_susy-flatten($list)} */ 145 | @function _susy-flatten( 146 | $list 147 | ) { 148 | $flat: (); 149 | 150 | // Don't iterate over maps 151 | @if (type-of($list) == 'map') { 152 | @return $list; 153 | } 154 | 155 | // Iterate over lists (or single items) 156 | @each $item in $list { 157 | @if (type-of($item) == 'list') { 158 | $item: _susy-flatten($item); 159 | $flat: join($flat, $item); 160 | } @else { 161 | $flat: append($flat, $item); 162 | } 163 | } 164 | 165 | // Return flattened list 166 | @return $flat; 167 | } 168 | -------------------------------------------------------------------------------- /_sass/modules.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Import external dependencies 3 | // 4 | @import "./vendor/normalize.scss/normalize.scss"; 5 | 6 | // 7 | // Modules 8 | // 9 | @import "./base"; 10 | @import "./layout"; 11 | @import "./content"; 12 | @import "./navigation"; 13 | @import "./typography"; 14 | @import "./labels"; 15 | @import "./buttons"; 16 | @import "./search"; 17 | @import "./tables"; 18 | @import "./code"; 19 | @import "./utilities/utilities"; 20 | @import "./print"; 21 | 22 | // Portal Start 23 | $base-line-height: 1.5 !default; 24 | $spacing-unit: 30px !default; 25 | $text-color: #111 !default; 26 | // Portal end 27 | 28 | @import "minimal-mistakes/variables"; 29 | @import "minimal-mistakes/vendor/breakpoint/breakpoint"; 30 | @import "minimal-mistakes/mixins"; 31 | @import "minimal-mistakes/sidebar"; 32 | @import "portal.scss"; -------------------------------------------------------------------------------- /_sass/navigation.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Main nav, breadcrumb, etc... 3 | // 4 | // stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity 5 | 6 | .nav-list { 7 | padding: 0; 8 | margin-top: 0; 9 | margin-bottom: 0; 10 | list-style: none; 11 | 12 | .nav-list-item { 13 | @include fs-4; 14 | position: relative; 15 | margin: 0; 16 | 17 | @include mq(md) { 18 | @include fs-3; 19 | } 20 | 21 | .nav-list-link { 22 | display: block; 23 | min-height: $nav-list-item-height-sm; 24 | padding-top: $sp-1; 25 | padding-bottom: $sp-1; 26 | line-height: #{$nav-list-item-height-sm - 2 * $sp-1}; 27 | @if $nav-list-expander-right { 28 | padding-right: $nav-list-item-height-sm; 29 | padding-left: $gutter-spacing-sm; 30 | } @else { 31 | padding-right: $gutter-spacing-sm; 32 | padding-left: $nav-list-item-height-sm; 33 | } 34 | 35 | @include mq(md) { 36 | min-height: $nav-list-item-height; 37 | line-height: #{$nav-list-item-height - 2 * $sp-1}; 38 | @if $nav-list-expander-right { 39 | padding-right: $nav-list-item-height; 40 | padding-left: $gutter-spacing; 41 | } @else { 42 | padding-right: $gutter-spacing; 43 | padding-left: $nav-list-item-height; 44 | } 45 | } 46 | 47 | &.active { 48 | font-weight: 600; 49 | text-decoration: none; 50 | } 51 | 52 | &:hover, 53 | &.active { 54 | background-image: linear-gradient( 55 | -90deg, 56 | rgba($feedback-color, 1) 0%, 57 | rgba($feedback-color, 0.8) 80%, 58 | rgba($feedback-color, 0) 100% 59 | ); 60 | } 61 | } 62 | 63 | .nav-list-expander { 64 | position: absolute; 65 | @if $nav-list-expander-right { 66 | right: 0; 67 | } 68 | width: $nav-list-item-height-sm; 69 | height: $nav-list-item-height-sm; 70 | padding-top: #{$nav-list-item-height-sm / 4}; 71 | padding-right: #{$nav-list-item-height-sm / 4}; 72 | padding-bottom: #{$nav-list-item-height-sm / 4}; 73 | padding-left: #{$nav-list-item-height-sm / 4}; 74 | color: $link-color; 75 | 76 | @include mq(md) { 77 | width: $nav-list-item-height; 78 | height: $nav-list-item-height; 79 | padding-top: #{$nav-list-item-height / 4}; 80 | padding-right: #{$nav-list-item-height / 4}; 81 | padding-bottom: #{$nav-list-item-height / 4}; 82 | padding-left: #{$nav-list-item-height / 4}; 83 | } 84 | 85 | &:hover { 86 | background-image: linear-gradient( 87 | -90deg, 88 | rgba($feedback-color, 1) 0%, 89 | rgba($feedback-color, 0.8) 100% 90 | ); 91 | } 92 | 93 | @if $nav-list-expander-right { 94 | svg { 95 | transform: rotate(90deg); 96 | } 97 | } 98 | } 99 | 100 | > .nav-list { 101 | display: none; 102 | padding-left: $sp-3; 103 | list-style: none; 104 | 105 | .nav-list-item { 106 | position: relative; 107 | 108 | .nav-list-link { 109 | color: $nav-child-link-color; 110 | } 111 | 112 | .nav-list-expander { 113 | color: $nav-child-link-color; 114 | } 115 | } 116 | } 117 | 118 | &.active { 119 | > .nav-list-expander svg { 120 | @if $nav-list-expander-right { 121 | transform: rotate(-90deg); 122 | } @else { 123 | transform: rotate(90deg); 124 | } 125 | } 126 | 127 | > .nav-list { 128 | display: block; 129 | } 130 | } 131 | } 132 | } 133 | 134 | // Aux nav 135 | 136 | .aux-nav { 137 | height: 100%; 138 | overflow-x: auto; 139 | @include fs-2; 140 | 141 | .aux-nav-list { 142 | display: flex; 143 | height: 100%; 144 | padding: 0; 145 | margin: 0; 146 | list-style: none; 147 | } 148 | 149 | .aux-nav-list-item { 150 | display: inline-block; 151 | height: 100%; 152 | padding: 0; 153 | margin: 0; 154 | } 155 | 156 | @include mq(md) { 157 | padding-right: $gutter-spacing-sm; 158 | } 159 | } 160 | 161 | // Breadcrumb nav 162 | 163 | .breadcrumb-nav { 164 | @include mq(md) { 165 | margin-top: -$sp-4; 166 | } 167 | } 168 | 169 | .breadcrumb-nav-list { 170 | padding-left: 0; 171 | margin-bottom: $sp-3; 172 | list-style: none; 173 | } 174 | 175 | .breadcrumb-nav-list-item { 176 | display: table-cell; 177 | @include fs-2; 178 | 179 | &::before { 180 | display: none; 181 | } 182 | 183 | &::after { 184 | display: inline-block; 185 | margin-right: $sp-2; 186 | margin-left: $sp-2; 187 | color: $grey-dk-000; 188 | content: "/"; 189 | } 190 | 191 | &:last-child { 192 | &::after { 193 | content: ""; 194 | } 195 | } 196 | } 197 | -------------------------------------------------------------------------------- /_sass/print.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable selector-max-specificity, selector-max-id, selector-max-type, selector-no-qualifying-type, primer/no-override, 2 | 3 | @media print { 4 | .site-footer, 5 | .site-button, 6 | #edit-this-page, 7 | #back-to-top, 8 | .site-nav, 9 | .main-header { 10 | display: none !important; 11 | } 12 | 13 | .side-bar { 14 | width: 100%; 15 | height: auto; 16 | border-right: 0 !important; 17 | } 18 | 19 | .site-header { 20 | border-bottom: 1px solid $border-color; 21 | } 22 | 23 | .site-title { 24 | font-size: $root-font-size !important; 25 | font-weight: 700 !important; 26 | } 27 | 28 | .text-small { 29 | font-size: 8pt !important; 30 | } 31 | 32 | pre.highlight { 33 | border: 1px solid $border-color; 34 | } 35 | 36 | .main { 37 | max-width: none; 38 | margin-left: 0; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /_sass/support/_functions.scss: -------------------------------------------------------------------------------- 1 | @function rem($size, $unit: "") { 2 | $remSize: $size / $root-font-size; 3 | 4 | @if ($unit == false) { 5 | @return #{$remSize}; 6 | } @else { 7 | @return #{$remSize}rem; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /_sass/support/_variables.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Typography 3 | // 4 | 5 | $body-font-family: -apple-system, BlinkMacSystemFont, "helvetica neue", 6 | helvetica, roboto, noto, "segoe ui", arial, sans-serif !default; 7 | $mono-font-family: "SFMono-Regular", Menlo, Consolas, Monospace !default; 8 | $root-font-size: 16px !default; // Base font-size for rems 9 | $body-line-height: 1.4 !default; 10 | $content-line-height: 1.6 !default; 11 | $body-heading-line-height: 1.25 !default; 12 | 13 | // 14 | // Colors 15 | // 16 | 17 | $white: #fff !default; 18 | 19 | $grey-dk-000: #959396 !default; 20 | $grey-dk-100: #5c5962 !default; 21 | $grey-dk-200: #44434d !default; 22 | $grey-dk-250: #302d36 !default; 23 | $grey-dk-300: #27262b !default; 24 | 25 | $grey-lt-000: #f5f6fa !default; 26 | $grey-lt-100: #eeebee !default; 27 | $grey-lt-200: #ecebed !default; 28 | $grey-lt-300: #e6e1e8 !default; 29 | 30 | $purple-000: #7253ed !default; 31 | $purple-100: #5e41d0 !default; 32 | $purple-200: #4e26af !default; 33 | $purple-300: #381885 !default; 34 | 35 | $blue-000: #2c84fa !default; 36 | $blue-100: #2869e6 !default; 37 | $blue-200: #264caf !default; 38 | $blue-300: #183385 !default; 39 | 40 | $green-000: #41d693 !default; 41 | $green-100: #11b584 !default; 42 | $green-200: #009c7b !default; 43 | $green-300: #026e57 !default; 44 | 45 | $yellow-000: #ffeb82 !default; 46 | $yellow-100: #fadf50 !default; 47 | $yellow-200: #f7d12e !default; 48 | $yellow-300: #e7af06 !default; 49 | 50 | $red-000: #f77e7e !default; 51 | $red-100: #f96e65 !default; 52 | $red-200: #e94c4c !default; 53 | $red-300: #dd2e2e !default; 54 | 55 | $body-background-color: $white !default; 56 | $sidebar-color: $grey-lt-000 !default; 57 | $search-background-color: $white !default; 58 | $table-background-color: $white !default; 59 | $code-background-color: $grey-lt-000 !default; 60 | $feedback-color: darken($sidebar-color, 3%) !default; 61 | 62 | $body-text-color: $grey-dk-100 !default; 63 | $body-heading-color: $grey-dk-300 !default; 64 | $search-result-preview-color: $grey-dk-000 !default; 65 | $nav-child-link-color: $grey-dk-100 !default; 66 | $link-color: $purple-000 !default; 67 | $btn-primary-color: $purple-100 !default; 68 | $base-button-color: #f7f7f7 !default; 69 | 70 | // 71 | // Spacing 72 | // 73 | 74 | $spacing-unit: 1rem; // 1rem == 16px 75 | 76 | $spacers: ( 77 | sp-0: 0, 78 | sp-1: $spacing-unit * 0.25, 79 | sp-2: $spacing-unit * 0.5, 80 | sp-3: $spacing-unit * 0.75, 81 | sp-4: $spacing-unit, 82 | sp-5: $spacing-unit * 1.5, 83 | sp-6: $spacing-unit * 2, 84 | sp-7: $spacing-unit * 2.5, 85 | sp-8: $spacing-unit * 3, 86 | sp-9: $spacing-unit * 3.5, 87 | sp-10: $spacing-unit * 4, 88 | ) !default; 89 | 90 | $sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px 91 | $sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px 92 | $sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px 93 | $sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px 94 | $sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px 95 | $sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px 96 | $sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px 97 | $sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px 98 | $sp-9: map-get($spacers, sp-9) !default; // 3.5 rem == 56px 99 | $sp-10: map-get($spacers, sp-10) !default; // 4 rem == 64px 100 | 101 | // 102 | // Borders 103 | // 104 | 105 | $border: 1px solid !default; 106 | $border-radius: 4px !default; 107 | $border-color: $grey-lt-100 !default; 108 | 109 | // 110 | // Grid system 111 | // 112 | 113 | $gutter-spacing: $sp-6 !default; 114 | $gutter-spacing-sm: $sp-4 !default; 115 | $nav-width: 264px !default; 116 | $nav-width-md: 248px !default; 117 | $nav-list-item-height: $sp-6 !default; 118 | $nav-list-item-height-sm: $sp-8 !default; 119 | $nav-list-expander-right: true; 120 | $content-width: 800px !default; 121 | $header-height: 60px !default; 122 | $search-results-width: $content-width - $nav-width !default; 123 | $transition-duration: 400ms; 124 | 125 | // 126 | // Media queries in pixels 127 | // 128 | 129 | $media-queries: ( 130 | xs: 320px, 131 | sm: 500px, 132 | md: $content-width, 133 | lg: $content-width + $nav-width, 134 | xl: 1400px, 135 | ) !default; 136 | -------------------------------------------------------------------------------- /_sass/support/mixins/_buttons.scss: -------------------------------------------------------------------------------- 1 | // Colored button 2 | 3 | @mixin btn-color($fg, $bg) { 4 | color: $fg; 5 | background-color: darken($bg, 2%); 6 | background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%)); 7 | box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); 8 | 9 | &:hover, 10 | &.zeroclipboard-is-hover { 11 | color: $fg; 12 | background-color: darken($bg, 4%); 13 | background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%))); 14 | } 15 | 16 | &:active, 17 | &.selected, 18 | &.zeroclipboard-is-active { 19 | background-color: darken($bg, 5%); 20 | background-image: none; 21 | box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); 22 | } 23 | 24 | &.selected:hover { 25 | background-color: darken($bg, 10%); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /_sass/support/mixins/_layout.scss: -------------------------------------------------------------------------------- 1 | // Media query 2 | 3 | // Media query mixin 4 | // Usage: 5 | // @include mq(md) { 6 | // ..medium and up styles 7 | // } 8 | @mixin mq($name) { 9 | // Retrieves the value from the key 10 | $value: map-get($media-queries, $name); 11 | 12 | // If the key exists in the map 13 | @if $value != null { 14 | // Prints a media query based on the value 15 | @media (min-width: rem($value)) { 16 | @content; 17 | } 18 | } @else { 19 | @warn "No value could be retrieved from `#{$media-query}`. " 20 | + "Please make sure it is defined in `$media-queries` map."; 21 | } 22 | } 23 | 24 | // Responsive container 25 | 26 | @mixin container { 27 | padding-right: $gutter-spacing-sm; 28 | padding-left: $gutter-spacing-sm; 29 | 30 | @include mq(md) { 31 | padding-right: $gutter-spacing; 32 | padding-left: $gutter-spacing; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /_sass/support/mixins/_typography.scss: -------------------------------------------------------------------------------- 1 | // Font size 2 | 3 | @mixin fs-1 { 4 | font-size: 9px !important; 5 | 6 | @include mq(sm) { 7 | font-size: 10px !important; 8 | } 9 | } 10 | 11 | @mixin fs-2 { 12 | font-size: 11px !important; 13 | 14 | @include mq(sm) { 15 | font-size: 12px !important; 16 | } 17 | } 18 | 19 | @mixin fs-3 { 20 | font-size: 12px !important; 21 | 22 | @include mq(sm) { 23 | font-size: 14px !important; 24 | } 25 | } 26 | 27 | @mixin fs-4 { 28 | font-size: 15px !important; 29 | 30 | @include mq(sm) { 31 | font-size: 16px !important; 32 | } 33 | } 34 | 35 | @mixin fs-5 { 36 | font-size: 16px !important; 37 | 38 | @include mq(sm) { 39 | font-size: 18px !important; 40 | } 41 | } 42 | 43 | @mixin fs-6 { 44 | font-size: 18px !important; 45 | 46 | @include mq(sm) { 47 | font-size: 24px !important; 48 | line-height: $body-heading-line-height; 49 | } 50 | } 51 | 52 | @mixin fs-7 { 53 | font-size: 24px !important; 54 | line-height: $body-heading-line-height; 55 | 56 | @include mq(sm) { 57 | font-size: 32px !important; 58 | } 59 | } 60 | 61 | @mixin fs-8 { 62 | font-size: 32px !important; 63 | line-height: $body-heading-line-height; 64 | 65 | @include mq(sm) { 66 | font-size: 36px !important; 67 | } 68 | } 69 | 70 | @mixin fs-9 { 71 | font-size: 36px !important; 72 | line-height: $body-heading-line-height; 73 | 74 | @include mq(sm) { 75 | font-size: 42px !important; 76 | } 77 | } 78 | 79 | @mixin fs-10 { 80 | font-size: 42px !important; 81 | line-height: $body-heading-line-height; 82 | 83 | @include mq(sm) { 84 | font-size: 48px !important; 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /_sass/support/mixins/mixins.scss: -------------------------------------------------------------------------------- 1 | @import "./layout"; 2 | @import "./buttons"; 3 | @import "./typography"; 4 | -------------------------------------------------------------------------------- /_sass/support/support.scss: -------------------------------------------------------------------------------- 1 | @import "./variables"; 2 | @import "./functions"; 3 | @import "./mixins/mixins"; 4 | -------------------------------------------------------------------------------- /_sass/tables.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Tables 3 | // 4 | // stylelint-disable max-nesting-depth, selector-no-type, selector-max-type 5 | 6 | .table-wrapper { 7 | display: block; 8 | width: 100%; 9 | max-width: 100%; 10 | margin-bottom: $sp-5; 11 | overflow-x: auto; 12 | border-radius: $border-radius; 13 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); 14 | } 15 | 16 | table { 17 | display: table; 18 | min-width: 100%; 19 | border-collapse: separate; 20 | } 21 | 22 | th, 23 | td { 24 | @include fs-3; 25 | min-width: 120px; 26 | padding-top: $sp-2; 27 | padding-right: $sp-3; 28 | padding-bottom: $sp-2; 29 | padding-left: $sp-3; 30 | background-color: $table-background-color; 31 | border-bottom: $border rgba($border-color, 0.5); 32 | border-left: $border $border-color; 33 | 34 | &:first-of-type { 35 | border-left: 0; 36 | } 37 | } 38 | 39 | tbody { 40 | tr { 41 | &:last-of-type { 42 | th, 43 | td { 44 | border-bottom: 0; 45 | } 46 | 47 | td { 48 | padding-bottom: $sp-3; 49 | } 50 | } 51 | } 52 | } 53 | 54 | thead { 55 | th { 56 | border-bottom: $border $border-color; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /_sass/typography.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Typography 3 | // 4 | // stylelint-disable primer/selector-no-utility, primer/no-override, selector-no-type, selector-max-type 5 | 6 | h1, 7 | .text-alpha { 8 | @include fs-8; 9 | font-weight: 300; 10 | } 11 | 12 | h2, 13 | .text-beta { 14 | @include fs-6; 15 | } 16 | 17 | h3, 18 | .text-gamma { 19 | @include fs-5; 20 | } 21 | 22 | h4, 23 | .text-delta { 24 | @include fs-2; 25 | font-weight: 400; 26 | text-transform: uppercase; 27 | letter-spacing: 0.1em; 28 | } 29 | 30 | h5, 31 | .text-epsilon { 32 | @include fs-3; 33 | color: $grey-dk-200; 34 | } 35 | 36 | h6, 37 | .text-zeta { 38 | @include fs-2; 39 | color: $grey-dk-200; 40 | } 41 | 42 | .text-small { 43 | @include fs-2; 44 | } 45 | 46 | .text-mono { 47 | font-family: $mono-font-family !important; 48 | } 49 | 50 | .text-left { 51 | text-align: left !important; 52 | } 53 | 54 | .text-center { 55 | text-align: center !important; 56 | } 57 | 58 | .text-right { 59 | text-align: right !important; 60 | } 61 | -------------------------------------------------------------------------------- /_sass/utilities/_colors.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes for colors 3 | // 4 | 5 | // Text colors 6 | 7 | .text-grey-dk-000 { 8 | color: $grey-dk-000 !important; 9 | } 10 | 11 | .text-grey-dk-100 { 12 | color: $grey-dk-100 !important; 13 | } 14 | 15 | .text-grey-dk-200 { 16 | color: $grey-dk-200 !important; 17 | } 18 | 19 | .text-grey-dk-250 { 20 | color: $grey-dk-250 !important; 21 | } 22 | 23 | .text-grey-dk-300 { 24 | color: $grey-dk-300 !important; 25 | } 26 | 27 | .text-grey-lt-000 { 28 | color: $grey-lt-000 !important; 29 | } 30 | 31 | .text-grey-lt-100 { 32 | color: $grey-lt-100 !important; 33 | } 34 | 35 | .text-grey-lt-200 { 36 | color: $grey-lt-200 !important; 37 | } 38 | 39 | .text-grey-lt-300 { 40 | color: $grey-lt-300 !important; 41 | } 42 | 43 | .text-blue-000 { 44 | color: $blue-000 !important; 45 | } 46 | 47 | .text-blue-100 { 48 | color: $blue-100 !important; 49 | } 50 | 51 | .text-blue-200 { 52 | color: $blue-200 !important; 53 | } 54 | 55 | .text-blue-300 { 56 | color: $blue-300 !important; 57 | } 58 | 59 | .text-green-000 { 60 | color: $green-000 !important; 61 | } 62 | 63 | .text-green-100 { 64 | color: $green-100 !important; 65 | } 66 | 67 | .text-green-200 { 68 | color: $green-200 !important; 69 | } 70 | 71 | .text-green-300 { 72 | color: $green-300 !important; 73 | } 74 | 75 | .text-purple-000 { 76 | color: $purple-000 !important; 77 | } 78 | 79 | .text-purple-100 { 80 | color: $purple-100 !important; 81 | } 82 | 83 | .text-purple-200 { 84 | color: $purple-200 !important; 85 | } 86 | 87 | .text-purple-300 { 88 | color: $purple-300 !important; 89 | } 90 | 91 | .text-yellow-000 { 92 | color: $yellow-000 !important; 93 | } 94 | 95 | .text-yellow-100 { 96 | color: $yellow-100 !important; 97 | } 98 | 99 | .text-yellow-200 { 100 | color: $yellow-200 !important; 101 | } 102 | 103 | .text-yellow-300 { 104 | color: $yellow-300 !important; 105 | } 106 | 107 | .text-red-000 { 108 | color: $red-000 !important; 109 | } 110 | 111 | .text-red-100 { 112 | color: $red-100 !important; 113 | } 114 | 115 | .text-red-200 { 116 | color: $red-200 !important; 117 | } 118 | 119 | .text-red-300 { 120 | color: $red-300 !important; 121 | } 122 | 123 | // Background colors 124 | 125 | .bg-grey-dk-000 { 126 | background-color: $grey-dk-000 !important; 127 | } 128 | 129 | .bg-grey-dk-100 { 130 | background-color: $grey-dk-100 !important; 131 | } 132 | 133 | .bg-grey-dk-200 { 134 | background-color: $grey-dk-200 !important; 135 | } 136 | 137 | .bg-grey-dk-250 { 138 | background-color: $grey-dk-250 !important; 139 | } 140 | 141 | .bg-grey-dk-300 { 142 | background-color: $grey-dk-300 !important; 143 | } 144 | 145 | .bg-grey-lt-000 { 146 | background-color: $grey-lt-000 !important; 147 | } 148 | 149 | .bg-grey-lt-100 { 150 | background-color: $grey-lt-100 !important; 151 | } 152 | 153 | .bg-grey-lt-200 { 154 | background-color: $grey-lt-200 !important; 155 | } 156 | 157 | .bg-grey-lt-300 { 158 | background-color: $grey-lt-300 !important; 159 | } 160 | 161 | .bg-blue-000 { 162 | background-color: $blue-000 !important; 163 | } 164 | 165 | .bg-blue-100 { 166 | background-color: $blue-100 !important; 167 | } 168 | 169 | .bg-blue-200 { 170 | background-color: $blue-200 !important; 171 | } 172 | 173 | .bg-blue-300 { 174 | background-color: $blue-300 !important; 175 | } 176 | 177 | .bg-green-000 { 178 | background-color: $green-000 !important; 179 | } 180 | 181 | .bg-green-100 { 182 | background-color: $green-100 !important; 183 | } 184 | 185 | .bg-green-200 { 186 | background-color: $green-200 !important; 187 | } 188 | 189 | .bg-green-300 { 190 | background-color: $green-300 !important; 191 | } 192 | 193 | .bg-purple-000 { 194 | background-color: $purple-000 !important; 195 | } 196 | 197 | .bg-purple-100 { 198 | background-color: $purple-100 !important; 199 | } 200 | 201 | .bg-purple-200 { 202 | background-color: $purple-200 !important; 203 | } 204 | 205 | .bg-purple-300 { 206 | background-color: $purple-300 !important; 207 | } 208 | 209 | .bg-yellow-000 { 210 | background-color: $yellow-000 !important; 211 | } 212 | 213 | .bg-yellow-100 { 214 | background-color: $yellow-100 !important; 215 | } 216 | 217 | .bg-yellow-200 { 218 | background-color: $yellow-200 !important; 219 | } 220 | 221 | .bg-yellow-300 { 222 | background-color: $yellow-300 !important; 223 | } 224 | 225 | .bg-red-000 { 226 | background-color: $red-000 !important; 227 | } 228 | 229 | .bg-red-100 { 230 | background-color: $red-100 !important; 231 | } 232 | 233 | .bg-red-200 { 234 | background-color: $red-200 !important; 235 | } 236 | 237 | .bg-red-300 { 238 | background-color: $red-300 !important; 239 | } 240 | -------------------------------------------------------------------------------- /_sass/utilities/_layout.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable primer/selector-no-utility, primer/no-override 2 | // 3 | // Utility classes for layout 4 | // 5 | 6 | // Display 7 | 8 | .d-block { 9 | display: block !important; 10 | } 11 | .d-flex { 12 | display: flex !important; 13 | } 14 | .d-inline { 15 | display: inline !important; 16 | } 17 | .d-inline-block { 18 | display: inline-block !important; 19 | } 20 | .d-none { 21 | display: none !important; 22 | } 23 | 24 | @each $media-query in map-keys($media-queries) { 25 | @for $i from 1 through length($spacers) { 26 | @include mq($media-query) { 27 | $size: #{map-get($spacers, sp-#{$i - 1})}; 28 | $scale: #{$i - 1}; 29 | 30 | // .d-sm-block, .d-md-none, .d-lg-inline 31 | .d-#{$media-query}-block { 32 | display: block !important; 33 | } 34 | .d-#{$media-query}-flex { 35 | display: flex !important; 36 | } 37 | .d-#{$media-query}-inline { 38 | display: inline !important; 39 | } 40 | .d-#{$media-query}-inline-block { 41 | display: inline-block !important; 42 | } 43 | .d-#{$media-query}-none { 44 | display: none !important; 45 | } 46 | } 47 | } 48 | } 49 | 50 | // Horizontal alignment 51 | 52 | .float-left { 53 | float: left !important; 54 | } 55 | 56 | .float-right { 57 | float: right !important; 58 | } 59 | 60 | .flex-justify-start { 61 | justify-content: flex-start !important; 62 | } 63 | 64 | .flex-justify-end { 65 | justify-content: flex-end !important; 66 | } 67 | 68 | .flex-justify-between { 69 | justify-content: space-between !important; 70 | } 71 | 72 | .flex-justify-around { 73 | justify-content: space-around !important; 74 | } 75 | 76 | // Vertical alignment 77 | 78 | .v-align-baseline { 79 | vertical-align: baseline !important; 80 | } 81 | .v-align-bottom { 82 | vertical-align: bottom !important; 83 | } 84 | .v-align-middle { 85 | vertical-align: middle !important; 86 | } 87 | .v-align-text-bottom { 88 | vertical-align: text-bottom !important; 89 | } 90 | .v-align-text-top { 91 | vertical-align: text-top !important; 92 | } 93 | .v-align-top { 94 | vertical-align: top !important; 95 | } 96 | -------------------------------------------------------------------------------- /_sass/utilities/_lists.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes for lists 3 | // 4 | 5 | // stylelint-disable primer/selector-no-utility, primer/no-override, selector-max-type 6 | 7 | .list-style-none { 8 | padding: 0 !important; 9 | margin: 0 !important; 10 | list-style: none !important; 11 | 12 | li { 13 | &::before { 14 | display: none !important; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /_sass/utilities/_spacing.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes for margins and padding 3 | // 4 | 5 | // scss-lint:disable SpaceAfterPropertyName 6 | // stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before, primer/selector-no-utility, primer/no-override 7 | 8 | // Margin spacer utilities 9 | 10 | .mx-auto { 11 | margin-right: auto !important; 12 | margin-left: auto !important; 13 | } 14 | 15 | @for $i from 1 through length($spacers) { 16 | $size: #{map-get($spacers, sp-#{$i - 1})}; 17 | $scale: #{$i - 1}; 18 | 19 | // .m-0, .m-1, .m-2... 20 | .m-#{$scale} { 21 | margin: #{$size} !important; 22 | } 23 | .mt-#{$scale} { 24 | margin-top: #{$size} !important; 25 | } 26 | .mr-#{$scale} { 27 | margin-right: #{$size} !important; 28 | } 29 | .mb-#{$scale} { 30 | margin-bottom: #{$size} !important; 31 | } 32 | .ml-#{$scale} { 33 | margin-left: #{$size} !important; 34 | } 35 | 36 | .mx-#{$scale} { 37 | margin-right: #{$size} !important; 38 | margin-left: #{$size} !important; 39 | } 40 | 41 | .my-#{$scale} { 42 | margin-top: #{$size} !important; 43 | margin-bottom: #{$size} !important; 44 | } 45 | 46 | .mxn-#{$scale} { 47 | margin-right: -#{$size} !important; 48 | margin-left: -#{$size} !important; 49 | } 50 | .mx-#{$scale}-auto { 51 | margin-right: auto !important; 52 | margin-left: auto !important; 53 | } 54 | } 55 | 56 | @each $media-query in map-keys($media-queries) { 57 | @for $i from 1 through length($spacers) { 58 | @include mq($media-query) { 59 | $size: #{map-get($spacers, sp-#{$i - 1})}; 60 | $scale: #{$i - 1}; 61 | 62 | // .m-sm-0, .m-md-1, .m-lg-2... 63 | .m-#{$media-query}-#{$scale} { 64 | margin: #{$size} !important; 65 | } 66 | .mt-#{$media-query}-#{$scale} { 67 | margin-top: #{$size} !important; 68 | } 69 | .mr-#{$media-query}-#{$scale} { 70 | margin-right: #{$size} !important; 71 | } 72 | .mb-#{$media-query}-#{$scale} { 73 | margin-bottom: #{$size} !important; 74 | } 75 | .ml-#{$media-query}-#{$scale} { 76 | margin-left: #{$size} !important; 77 | } 78 | 79 | .mx-#{$media-query}-#{$scale} { 80 | margin-right: #{$size} !important; 81 | margin-left: #{$size} !important; 82 | } 83 | 84 | .my-#{$media-query}-#{$scale} { 85 | margin-top: #{$size} !important; 86 | margin-bottom: #{$size} !important; 87 | } 88 | 89 | .mxn-#{$media-query}-#{$scale} { 90 | margin-right: -#{$size} !important; 91 | margin-left: -#{$size} !important; 92 | } 93 | } 94 | } 95 | } 96 | 97 | // Padding spacer utilities 98 | 99 | @for $i from 1 through length($spacers) { 100 | $size: #{map-get($spacers, sp-#{$i - 1})}; 101 | $scale: #{$i - 1}; 102 | 103 | // .p-0, .p-1, .p-2... 104 | .p-#{$scale} { 105 | padding: #{$size} !important; 106 | } 107 | .pt-#{$scale} { 108 | padding-top: #{$size} !important; 109 | } 110 | .pr-#{$scale} { 111 | padding-right: #{$size} !important; 112 | } 113 | .pb-#{$scale} { 114 | padding-bottom: #{$size} !important; 115 | } 116 | .pl-#{$scale} { 117 | padding-left: #{$size} !important; 118 | } 119 | 120 | .px-#{$scale} { 121 | padding-right: #{$size} !important; 122 | padding-left: #{$size} !important; 123 | } 124 | 125 | .py-#{$scale} { 126 | padding-top: #{$size} !important; 127 | padding-bottom: #{$size} !important; 128 | } 129 | } 130 | 131 | @each $media-query in map-keys($media-queries) { 132 | @include mq($media-query) { 133 | @for $i from 1 through length($spacers) { 134 | $size: #{map-get($spacers, sp-#{$i - 1})}; 135 | $scale: #{$i - 1}; 136 | 137 | // .p-sm-0, .p-md-1, .p-lg-2... 138 | .p-#{$media-query}-#{$scale} { 139 | padding: #{$size} !important; 140 | } 141 | .pt-#{$media-query}-#{$scale} { 142 | padding-top: #{$size} !important; 143 | } 144 | .pr-#{$media-query}-#{$scale} { 145 | padding-right: #{$size} !important; 146 | } 147 | .pb-#{$media-query}-#{$scale} { 148 | padding-bottom: #{$size} !important; 149 | } 150 | .pl-#{$media-query}-#{$scale} { 151 | padding-left: #{$size} !important; 152 | } 153 | 154 | .px-#{$media-query}-#{$scale} { 155 | padding-right: #{$size} !important; 156 | padding-left: #{$size} !important; 157 | } 158 | 159 | .py-#{$media-query}-#{$scale} { 160 | padding-top: #{$size} !important; 161 | padding-bottom: #{$size} !important; 162 | } 163 | } 164 | } 165 | } 166 | -------------------------------------------------------------------------------- /_sass/utilities/_typography.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes for typography 3 | // 4 | 5 | // stylelint-disable primer/selector-no-utility, primer/no-override 6 | 7 | .fs-1 { 8 | @include fs-1; 9 | } 10 | 11 | .fs-2 { 12 | @include fs-2; 13 | } 14 | 15 | .fs-3 { 16 | @include fs-3; 17 | } 18 | 19 | .fs-4 { 20 | @include fs-4; 21 | } 22 | 23 | .fs-5 { 24 | @include fs-5; 25 | } 26 | 27 | .fs-6 { 28 | @include fs-6; 29 | } 30 | 31 | .fs-7 { 32 | @include fs-7; 33 | } 34 | 35 | .fs-8 { 36 | @include fs-8; 37 | } 38 | 39 | .fs-9 { 40 | @include fs-9; 41 | } 42 | 43 | .fs-10 { 44 | @include fs-10; 45 | } 46 | 47 | .fw-300 { 48 | font-weight: 300 !important; 49 | } 50 | 51 | .fw-400 { 52 | font-weight: 400 !important; 53 | } 54 | 55 | .fw-500 { 56 | font-weight: 500 !important; 57 | } 58 | 59 | .fw-700 { 60 | font-weight: 700 !important; 61 | } 62 | 63 | .lh-0 { 64 | line-height: 0 !important; 65 | } 66 | 67 | .lh-default { 68 | line-height: $body-line-height; 69 | } 70 | 71 | .lh-tight { 72 | line-height: $body-heading-line-height; 73 | } 74 | 75 | .ls-5 { 76 | letter-spacing: 0.05em !important; 77 | } 78 | 79 | .ls-10 { 80 | letter-spacing: 0.1em !important; 81 | } 82 | 83 | .ls-0 { 84 | letter-spacing: 0 !important; 85 | } 86 | 87 | .text-uppercase { 88 | text-transform: uppercase !important; 89 | } 90 | 91 | // stylelint-enable primer/selector-no-utility 92 | -------------------------------------------------------------------------------- /_sass/utilities/utilities.scss: -------------------------------------------------------------------------------- 1 | @import "./colors"; 2 | @import "./layout"; 3 | @import "./typography"; 4 | @import "./lists"; 5 | @import "./spacing"; 6 | -------------------------------------------------------------------------------- /_sass/vendor/normalize.scss/README.md: -------------------------------------------------------------------------------- 1 | # normalize.scss v0.1.0 2 | 3 | Normalize.scss is the SCSS version of [normalize.css](http://necolas.github.io/normalize.css), a customisable CSS file that makes browsers render all elements more consistently and in line with modern standards. 4 | 5 | [View the normalize.css test file](http://necolas.github.io/normalize.css/latest/test.html) 6 | 7 | ## Install 8 | 9 | * [npm](http://npmjs.org/): `npm install --save normalize.scss` 10 | * [Component(1)](https://github.com/component/component/): `component install guerrero/normalize.scss` 11 | * [Bower](http://bower.io/): `bower install --save normalize.scss` 12 | * Download: Go to [this link](https://raw.githubusercontent.com/guerrero/normalize.scss/master/normalize.scss), press right-click on the page and choose "Save as..." 13 | 14 | No other styles should come before Normalize.scss. 15 | 16 | It's recommendable to modify `normalize.scss` to suit it to your project 17 | 18 | ## What does it do? 19 | 20 | * Preserves useful defaults, unlike many CSS resets. 21 | * Normalizes styles for a wide range of elements. 22 | * Corrects bugs and common browser inconsistencies. 23 | * Improves usability with subtle improvements. 24 | * Explains what code does using detailed comments. 25 | 26 | ## Browser support 27 | 28 | * Google Chrome (latest) 29 | * Mozilla Firefox (latest) 30 | * Mozilla Firefox 4 31 | * Opera (latest) 32 | * Apple Safari 6+ 33 | * Internet Explorer 8+ 34 | 35 | [Normalize.css v1 provides legacy browser 36 | support](https://github.com/necolas/normalize.css/tree/v1) (IE 6+, Safari 4+), 37 | but is no longer actively developed. 38 | 39 | ## Extended details 40 | 41 | Additional detail and explanation of the esoteric parts of normalize.css. 42 | 43 | #### `pre, code, kbd, samp` 44 | 45 | The `font-family: monospace, monospace` hack fixes the inheritance and scaling 46 | of font-size for preformated text. The duplication of `monospace` is 47 | intentional. [Source](http://en.wikipedia.org/wiki/User:Davidgothberg/Test59). 48 | 49 | #### `sub, sup` 50 | 51 | Normally, using `sub` or `sup` affects the line-box height of text in all 52 | browsers. [Source](http://gist.github.com/413930). 53 | 54 | #### `svg:not(:root)` 55 | 56 | Adding `overflow: hidden` fixes IE9's SVG rendering. Earlier versions of IE 57 | don't support SVG, so we can safely use the `:not()` and `:root` selectors that 58 | modern browsers use in the default UA stylesheets to apply this style. [SVG 59 | Mailing List discussion](http://lists.w3.org/Archives/Public/public-svg-wg/2008JulSep/0339.html) 60 | 61 | #### `input[type="search"]` 62 | 63 | The search input is not fully stylable by default. In Chrome and Safari on 64 | OSX/iOS you can't control `font`, `padding`, `border`, or `background`. In 65 | Chrome and Safari on Windows you can't control `border` properly. It will apply 66 | `border-width` but will only show a border color (which cannot be controlled) 67 | for the outer 1px of that border. Applying `-webkit-appearance: textfield` 68 | addresses these issues without removing the benefits of search inputs (e.g. 69 | showing past searches). 70 | 71 | #### `legend` 72 | 73 | Adding `border: 0` corrects an IE 8–11 bug where `color` (yes, `color`) is not 74 | inherited by `legend`. 75 | 76 | ## Acknowledgements 77 | 78 | Normalize.scss is a project by [Alex Guerrero](https://github.com/guerrero) based on [normalize.css](http://necolas.github.io/normalize.css) from [Nicolas Gallagher](https://github.com/necolas), co-created with [Jonathan Neal](https://github.com/jonathantneal). 79 | -------------------------------------------------------------------------------- /_sass/vendor/normalize.scss/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "_args": [ 3 | [ 4 | "normalize.scss", 5 | "/Users/pmarsceill/_projects/just-the-docs" 6 | ] 7 | ], 8 | "_from": "normalize.scss@*", 9 | "_id": "normalize.scss@0.1.0", 10 | "_inCache": true, 11 | "_installable": true, 12 | "_location": "/normalize.scss", 13 | "_nodeVersion": "0.10.32", 14 | "_npmUser": { 15 | "email": "alexguerrero1092@gmail.com", 16 | "name": "alexguerrero" 17 | }, 18 | "_npmVersion": "2.0.2", 19 | "_phantomChildren": {}, 20 | "_requested": { 21 | "name": "normalize.scss", 22 | "raw": "normalize.scss", 23 | "rawSpec": "", 24 | "scope": null, 25 | "spec": "*", 26 | "type": "range" 27 | }, 28 | "_requiredBy": [ 29 | "#DEV:/" 30 | ], 31 | "_resolved": "https://registry.npmjs.org/normalize.scss/-/normalize.scss-0.1.0.tgz", 32 | "_shasum": "4a21dc25bd4c019c857785f829b658aba2a8f9ab", 33 | "_shrinkwrap": null, 34 | "_spec": "normalize.scss", 35 | "_where": "/Users/pmarsceill/_projects/just-the-docs", 36 | "author": "", 37 | "bugs": { 38 | "url": "https://github.com/guerrero/normalize.scss/issues" 39 | }, 40 | "dependencies": {}, 41 | "description": "Normalize.scss as a node packaged module", 42 | "devDependencies": {}, 43 | "directories": {}, 44 | "dist": { 45 | "shasum": "4a21dc25bd4c019c857785f829b658aba2a8f9ab", 46 | "tarball": "https://registry.npmjs.org/normalize.scss/-/normalize.scss-0.1.0.tgz" 47 | }, 48 | "files": [ 49 | "normalize.scss" 50 | ], 51 | "gitHead": "d67d517e28615a873066438af1d4845c157c9baf", 52 | "homepage": "https://github.com/guerrero/normalize.scss", 53 | "license": "MIT", 54 | "maintainers": [ 55 | { 56 | "name": "alexguerrero", 57 | "email": "alexguerrero1092@gmail.com" 58 | } 59 | ], 60 | "name": "normalize.scss", 61 | "optionalDependencies": {}, 62 | "readme": "ERROR: No README data found!", 63 | "repository": { 64 | "type": "git", 65 | "url": "git://github.com/guerrero/normalize.scss.git" 66 | }, 67 | "scripts": {}, 68 | "style": "normalize.scss", 69 | "version": "0.1.0" 70 | } 71 | -------------------------------------------------------------------------------- /assets/css/just-the-docs-dark.scss: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | {% include css/just-the-docs.scss.liquid color_scheme="dark" %} 4 | -------------------------------------------------------------------------------- /assets/css/just-the-docs-default.scss: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | {% if site.color_scheme and site.color_scheme != "nil" %} 4 | {% assign color_scheme = site.color_scheme %} 5 | {% else %} 6 | {% assign color_scheme = "light" %} 7 | {% endif %} 8 | {% include css/just-the-docs.scss.liquid color_scheme=color_scheme %} 9 | -------------------------------------------------------------------------------- /assets/css/just-the-docs-light.scss: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | {% include css/just-the-docs.scss.liquid color_scheme="light" %} 4 | -------------------------------------------------------------------------------- /assets/images/just-the-docs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dendronhq/dendron-jekyll/ae4bf760140461a64d7290e87f04b59bde2afa72/assets/images/just-the-docs.png -------------------------------------------------------------------------------- /assets/images/search.svg: -------------------------------------------------------------------------------- 1 | Search 2 | -------------------------------------------------------------------------------- /assets/js/zzzz-search-data.json: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /assets/js/search-data.json 3 | --- 4 | { 5 | {%- assign i = 0 -%} 6 | {% for page in site.html_pages %} 7 | {%- if page.title and page.search_exclude != true -%} 8 | {%- assign page_content = page.content -%} 9 | {%- assign heading_level = site.search.heading_level | default: 2 -%} 10 | {%- for j in (2..heading_level) -%} 11 | {%- assign tag = '' -%} 19 | {%- assign title = titleAndContent[0] | replace_first: '>', '

' | split: '

' -%} 20 | {%- assign title = title[1] | strip_html -%} 21 | {%- assign content = titleAndContent[1] -%} 22 | {%- assign url = page.url -%} 23 | {%- if title == page.title and parts[0] == '' -%} 24 | {%- assign title_found = true -%} 25 | {%- else -%} 26 | {%- assign id = titleAndContent[0] -%} 27 | {%- assign id = id | split: 'id="' -%} 28 | {%- if id.size == 2 -%} 29 | {%- assign id = id[1] -%} 30 | {%- assign id = id | split: '"' -%} 31 | {%- assign id = id[0] -%} 32 | {%- capture url -%}{{ url | append: '#' | append: id }}{%- endcapture -%} 33 | {%- endif -%} 34 | {%- endif -%} 35 | {%- unless i == 0 -%},{%- endunless -%} 36 | "{{ i }}": { 37 | "doc": {{ page.title | jsonify }}, 38 | "title": {{ title | jsonify }}, 39 | "hpath": {{ page.hpath | jsonify }}, 40 | "content": {{ content | replace: ' 2.1.4" 17 | spec.add_runtime_dependency "jekyll", ">= 3.8.5" 18 | spec.add_runtime_dependency "jekyll-seo-tag", "~> 2.0" 19 | spec.add_runtime_dependency "rake", ">= 12.3.1", "< 13.1.0" 20 | 21 | end 22 | -------------------------------------------------------------------------------- /lib/tasks/search.rake: -------------------------------------------------------------------------------- 1 | namespace :search do 2 | desc 'Generate the files needed for search functionality' 3 | task :init do 4 | puts 'Creating search data json file...' 5 | mkdir_p 'assets/js' 6 | touch 'assets/js/zzzz-search-data.json' 7 | puts 'Done.' 8 | puts 'Generating content...' 9 | 10 | File.open('assets/js/zzzz-search-data.json', 'w') do |f| 11 | f.puts '--- 12 | permalink: /assets/js/search-data.json 13 | --- 14 | { 15 | {%- assign i = 0 -%} 16 | {% for page in site.html_pages %} 17 | {%- if page.title and page.search_exclude != true -%} 18 | {%- assign page_content = page.content -%} 19 | {%- assign heading_level = site.search.heading_level | default: 2 -%} 20 | {%- for j in (2..heading_level) -%} 21 | {%- assign tag = \'\' -%} 29 | {%- assign title = titleAndContent[0] | replace_first: \'>\', \'

\' | split: \'

\' -%} 30 | {%- assign title = title[1] | strip_html -%} 31 | {%- assign content = titleAndContent[1] -%} 32 | {%- assign url = page.url -%} 33 | {%- if title == page.title and parts[0] == \'\' -%} 34 | {%- assign title_found = true -%} 35 | {%- else -%} 36 | {%- assign id = titleAndContent[0] -%} 37 | {%- assign id = id | split: \'id="\' -%} 38 | {%- if id.size == 2 -%} 39 | {%- assign id = id[1] -%} 40 | {%- assign id = id | split: \'"\' -%} 41 | {%- assign id = id[0] -%} 42 | {%- capture url -%}{{ url | append: \'#\' | append: id }}{%- endcapture -%} 43 | {%- endif -%} 44 | {%- endif -%} 45 | {%- unless i == 0 -%},{%- endunless -%} 46 | "{{ i }}": { 47 | "doc": {{ page.title | jsonify }}, 48 | "title": {{ title | jsonify }}, 49 | "hpath": {{ page.hpath | jsonify }}, 50 | "content": {{ content | replace: \'