mirror of
https://github.com/paboyle/Grid.git
synced 2025-06-10 03:17:07 +01:00
Refactoring of the gh pages
This commit is contained in:
571
CHANGELOG.md
Normal file
571
CHANGELOG.md
Normal file
@ -0,0 +1,571 @@
|
||||
## [3.4.8](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.8)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Improve type readability for larger viewports by bumping up base `font-size`. [#533](https://github.com/mmistakes/minimal-mistakes/issues/533)
|
||||
- Update Portuguese localized UI text. [#541](https://github.com/mmistakes/minimal-mistakes/pull/541)
|
||||
- Add `page.title` and via parameter to Twitter share link. [#538](https://github.com/mmistakes/minimal-mistakes/pull/538)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix Last.fm author profile URL. [#540](https://github.com/mmistakes/minimal-mistakes/pull/540)
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Move Brazilian Portuguese localized text under `pt-BR` key.
|
||||
|
||||
## [3.4.7](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.7)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Add `layout` based and user-defined class names to `<body>` element for added CSS hooks. [#526](https://github.com/mmistakes/minimal-mistakes/pull/526)
|
||||
- Add simplified Chinese localized UI text. [#532](https://github.com/mmistakes/minimal-mistakes/pull/532)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Remove duplicate include of `base_path` in category-list.html [#522](https://github.com/mmistakes/minimal-mistakes/pull/522)
|
||||
|
||||
## [3.4.6](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.6)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Add Italian "comments" related localized UI text. [#514](https://github.com/mmistakes/minimal-mistakes/pull/514)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Disable `compress` HTML layout by default. To enable add `layout: compress` to `_layouts/default.html`.
|
||||
|
||||
## [3.4.5](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.5)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Improve line numbered code block styling when using `{% highlight linenos %}` tag. [#513](https://github.com/mmistakes/minimal-mistakes/issues/513)
|
||||
- Add English fallback to "Follow" button label. [#496](https://github.com/mmistakes/minimal-mistakes/pull/496)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix Firefox alignment issues with code blocks generated with the `{% highlight %}` tag. [#512](https://github.com/mmistakes/minimal-mistakes/issues/512)
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Clarified comment for `author.stackoverflow` value used in author sidebar links. [#487](https://github.com/mmistakes/minimal-mistakes/pull/487)
|
||||
- Add list of localized text strings. [#488](https://github.com/mmistakes/minimal-mistakes/pull/488)
|
||||
- Add `{% highlight %}` code block examples to demo site.
|
||||
- Add documentation for using custom sidebar navigation menus. [#476](https://github.com/mmistakes/minimal-mistakes/issues/476)
|
||||
|
||||
## [3.4.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.4)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Add French "comments" related localized UI text. [#472](https://github.com/mmistakes/minimal-mistakes/pull/472)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Exclude `vendor` in Jekyll config file.
|
||||
- Fix Liquid syntax error for offending parenthesis. [#479](https://github.com/mmistakes/minimal-mistakes/issues/479)
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Update gems: `colorator` (1.1.0), `forwardable-extended` (2.6.0), `github-pages` (93), `jekyll` (= 3.2.1), `minima` (= 1.0.1).
|
||||
|
||||
## [3.4.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.3)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Make ["honeypot" `input`](https://github.com/mmistakes/minimal-mistakes/commit/06a8249a69a37dddda7e2a5bfbe32056c1a9a607) in Staticman comment form less obvious to spam bots
|
||||
- Add padding to `.highlight` code blocks to better [align `overflow` scrollbar](https://github.com/mmistakes/minimal-mistakes/commit/e4abec0a6f7f8cff72505ca0754615df294fd5b3) to the bottom.
|
||||
- Add additional image options for Twitter card social sharing meta tags. [#466](https://github.com/mmistakes/minimal-mistakes/pull/466)
|
||||
- Add structured data markup for Staticman comments. [#458](https://github.com/mmistakes/minimal-mistakes/issues/458)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Format `og:locale` tag with `_` instead of `-`. [#462](https://github.com/mmistakes/minimal-mistakes/issues/462)
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Add note to docs about using `url: http://localhost:4000` when working locally.
|
||||
|
||||
## [3.4.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.2)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Improve UX of static comment forms. [#448](https://github.com/mmistakes/minimal-mistakes/issues/448)
|
||||
|
||||
## [3.4.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.1)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Add `staticman.filename` configuration with UNIX timestamp for sorting data files. example ~> `comment-1470943149`.
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Don't add `<a>` to author name if URL is blank.
|
||||
|
||||
## [3.4.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.0)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Support static-based commenting via [Staticman](https://staticman.net/) for sites hosted with GitHub Pages. [#424](https://github.com/mmistakes/minimal-mistakes/issues/424)
|
||||
|
||||
## [3.3.7](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.7)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Re-enabled Jekyll plugins in `_config.yml` in case they aren't autoloaded in `Gemfile`. [#417](https://github.com/mmistakes/minimal-mistakes/issues/417)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Fallback to `site.github.url` for use in `{{ base_path }}` when `site.url` is `nil`.
|
||||
- Replace Sass and Autoprefixer `npm` build scripts with [Jekyll's built-in asset support](https://jekyllrb.com/docs/assets/). [#333](https://github.com/mmistakes/minimal-mistakes/issues/333)
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Document `site.repository` and its role with [`github-metadata`](https://github.com/jekyll/github-metadata) gem.
|
||||
- Add sample [archive page with content](https://mmistakes.github.io/minimal-mistakes/archive-layout-with-content/) for testing styles on demo site.
|
||||
|
||||
## [3.3.6](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.6)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix blank `site.teaser` bug. [#412](https://github.com/mmistakes/minimal-mistakes/issues/412)
|
||||
|
||||
## [3.3.5](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.5)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Add English default text `site.locale` strings. [#407](https://github.com/mmistakes/minimal-mistakes/issues/407)
|
||||
- Add Portuguese localized UI text. [#411](https://github.com/mmistakes/minimal-mistakes/pull/411)
|
||||
- Add Italian localized UI text. [#409](https://github.com/mmistakes/minimal-mistakes/pull/409)
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Remove unused Google AdSense variables in `_config.yml`. [#404](https://github.com/mmistakes/minimal-mistakes/issues/404)
|
||||
- Update `Gemfile` instructions for using `github-pages` vs. native `jekyll` gems.
|
||||
- Disable `gems:` in `_config.yml` and enable plugins with Bundler instead.
|
||||
- Add `repository` to `_config.yml` to suppress GitHub Pages error `Liquid Exception: No repo name found.`
|
||||
|
||||
## [3.3.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.4)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Add support for configurable feed URL to use a service like FeedBurner instead of linking directly to `feed.xml` in `<head>` and the site footer. [#378](https://github.com/mmistakes/minimal-mistakes/issues/378), [#379](https://github.com/mmistakes/minimal-mistakes/pull/379), [#406](https://github.com/mmistakes/minimal-mistakes/pull/406)
|
||||
- Add Turkish localized UI text. [#403](https://github.com/mmistakes/minimal-mistakes/pull/403)
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Update gems: `activesupport` (4.2.7), `ffi` (1.9.14), `github-pages` (88), `jekyll-redirect-from` (0.11.0), `jekyll-watch` (1.5.0).
|
||||
|
||||
## [3.3.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.3)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Make footer stick to the bottom of the page.
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix `gallery` size bug [#402](https://github.com/mmistakes/minimal-mistakes/issues/402)
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Set default `lang` to `en`.
|
||||
|
||||
## [3.3.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.2)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix JavaScript that triggers "sticky" sidebar to avoid layout issues on screen sizes < `1024px`. [#396](https://github.com/mmistakes/minimal-mistakes/issues/396)
|
||||
|
||||
## [3.3.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.1)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Enable image popup on < 500px wide screens. [#385](https://github.com/mmistakes/minimal-mistakes/issues/385)
|
||||
- Indicate the relationship between component URLs in a paginated series by applying `rel="prev"` and `rel="next"` to pages that use `site.paginator`. [#253](https://github.com/mmistakes/minimal-mistakes/issues/253)
|
||||
- Improve link posts in archive listings. [#276](https://github.com/mmistakes/minimal-mistakes/issues/276)
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Update gems: `github-pages` (86), `ffi` 1.9.13, `jekyll-mentions` 1.1.3, and `rouge` 1.11.1
|
||||
- Fix note about custom sidebar content appearing below author profile. [#388](https://github.com/mmistakes/minimal-mistakes/issues/388)
|
||||
|
||||
## [3.2.13](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.13)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Add English default UI text for Canada, Great Britain, and Australia. [#377](https://github.com/mmistakes/minimal-mistakes/issues/377)
|
||||
- Switch default locale from `en-US` to `en`.
|
||||
|
||||
## [3.2.12](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.12)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Remove window width "magic number" from sticky sidebar check in `main.js` for improved flexibility. [#375](https://github.com/mmistakes/minimal-mistakes/pull/375)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix author override conditional where a missing `authors.yml` would show broken sidebar content. Defaults to `site.author`. [#376](https://github.com/mmistakes/minimal-mistakes/pull/376)
|
||||
|
||||
## [3.2.11](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.11)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix disappearing author sidebar links [#372](https://github.com/mmistakes/minimal-mistakes/issues/372)
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Update gems: `github-pages` (84), `jekyll-github-metadata` 2.0.2, and `kramdown` 1.11.1
|
||||
- Update vendor JavaScript: jQuery 1.12.4, Stickyfill.js 1.1.4
|
||||
- Update Font Awesome 4.6.3
|
||||
|
||||
## [3.2.10](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.10)
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Add `CONTRIBUTING.md`
|
||||
|
||||
## [3.2.9](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.9)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Add support for [header overlay images](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#header-overlay) for Open Graph images. [#358](https://github.com/mmistakes/minimal-mistakes/pull/358)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix `Person` typo Schema.org type [#358](https://github.com/mmistakes/minimal-mistakes/pull/358)
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Update `github-pages` gem and dependencies.
|
||||
- Remove `minutes_read` to avoid awkward reading time wording [#356](https://github.com/mmistakes/minimal-mistakes/issues/356)
|
||||
|
||||
## [3.2.8](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.8)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Remove `cursor: pointer` that appears on white-space surrounding author side list items and links. [#354](https://github.com/mmistakes/minimal-mistakes/pull/354)
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Add contributing information to `README.md`. [#357](https://github.com/mmistakes/minimal-mistakes/issues/357)
|
||||
|
||||
## [3.2.7](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.7)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Add French localized UI text. [#346](https://github.com/mmistakes/minimal-mistakes/pull/346)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix branch logic for Yandex and Alexa in `seo.html`. [#348](https://github.com/mmistakes/minimal-mistakes/pull/348)
|
||||
|
||||
## [3.2.6](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.6)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix error `Liquid Exception: divided by 0 in _includes/archive-single.html, included in _layouts/single.html` caused by null `words_per_minute` in `_config.yml`. [#345](https://github.com/mmistakes/minimal-mistakes/pull/345)
|
||||
|
||||
## [3.2.5](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.5)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix link color in hero overlay to be white.
|
||||
- Remove underlines from archive item titles.
|
||||
|
||||
## [3.2.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.4)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Improve text alignment of masthead, hero overlay, page footer to be flush left and remove awkward white-space gaps. [#342](https://github.com/mmistakes/minimal-mistakes/issues/342)
|
||||
- Add Spanish localized UI text. [#338](https://github.com/mmistakes/minimal-mistakes/pull/338)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix alignment of icons in author sidebar [#341](https://github.com/mmistakes/minimal-mistakes/issues/341)
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Add background color to page footer to set it apart from main content. [#342](https://github.com/mmistakes/minimal-mistakes/issues/342)
|
||||
- Add terms and privacy policy to theme's demo site. [#343](https://github.com/mmistakes/minimal-mistakes/issues/343)
|
||||
- Update screenshots found in theme documentation.
|
||||
|
||||
## [3.2.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.3)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Add [Discourse](https://www.discourse.org/) as a commenting provider. [#335](https://github.com/mmistakes/minimal-mistakes/pull/335)
|
||||
|
||||
## [3.2.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.2)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Add support for image captions in Magnific Popup overlays via the [`gallery`](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#gallery) helper. [#334](https://github.com/mmistakes/minimal-mistakes/issues/334)
|
||||
|
||||
## [3.2.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.1)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Remove need for "double tapping" masthead menu links on iOS devices. [#315](https://github.com/mmistakes/minimal-mistakes/issues/315)
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Add `ISSUE_TEMPLATE.md` for improve issue submission process.
|
||||
|
||||
## [3.2.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.0)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix missing category/tag links in post footer due to possible conflict with `site.tags` and `site.categories`. [#329](https://github.com/mmistakes/minimal-mistakes/issues/329#issuecomment-222375568)
|
||||
|
||||
## [3.1.8](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.8)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix `Liquid Exception: undefined method 'gsub' for nil:NilClass in _layouts/single.html` error when `page.title` is null. `<h1>` element is now conditional if `title: ` is not set for a `page` or collection item. [#312](https://github.com/mmistakes/minimal-mistakes/issues/312)
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Remove duplicate `fa-twitter` and `fa-twitter-square` classes from `_utilities.scss`. [#302](https://github.com/mmistakes/minimal-mistakes/issues/302)
|
||||
|
||||
- Document installing additional Jekyll gem dependencies when using `gem "jekyll"` instead of `gem "github-pages"` to avoid any errors on run. [#305](https://github.com/mmistakes/minimal-mistakes/issues/305)
|
||||
|
||||
## [3.1.7](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.7)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Add translation key for "Recent Posts" used in home page `index.html`. [#316](https://github.com/mmistakes/minimal-mistakes/pull/316)
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Small fix to avoid underlying the whitespace between icons and related text when hovering. [#303](https://github.com/mmistakes/minimal-mistakes/pull/303)
|
||||
|
||||
## [3.1.6](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.6)
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Update gem dependencies. Run `bundle` to update `Gemfile.lock`.
|
||||
|
||||
## [3.1.5](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.5)
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Fix `www` and `https` links in author profile include [#293](https://github.com/mmistakes/minimal-mistakes/pull/293)
|
||||
|
||||
## [3.1.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.4)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Add overlay_filter param to hero headers [#298](https://github.com/mmistakes/minimal-mistakes/pull/298)
|
||||
|
||||
## [3.1.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.3)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Improve `site.locale` documentation [#284](https://github.com/mmistakes/minimal-mistakes/issues/284)
|
||||
- Remove ProTip note about protocol-less `site.url` as it is an anti-pattern [#288](https://github.com/mmistakes/minimal-mistakes/issues/288)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix `og_image` URL in seo.html [#277](https://github.com/mmistakes/minimal-mistakes/issues/277)
|
||||
- Fix `author_profile` toggle when assigned in a `_layout` [#285](https://github.com/mmistakes/minimal-mistakes/issues/285)
|
||||
- Fix typo in `build:all` npm script [#283](https://github.com/mmistakes/minimal-mistakes/pull/283)
|
||||
- Fix URL typo documentation [#287](https://github.com/mmistakes/minimal-mistakes/issues/287)
|
||||
- SEO author bug. If `twitter.username` is set and `author.twitter` is `nil` bad things happen. [#289](https://github.com/mmistakes/minimal-mistakes/issues/289)
|
||||
|
||||
## [3.1.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.2)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Explain how to use `nav_list` helper in [documentation](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#navigation-list).
|
||||
- Reduce left/right padding on smaller screens to increase width of main content column.
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix alignment issues with related posts [#273](https://github.com/mmistakes/minimal-mistakes/issues/273) and "Follow" button in author profile [#274](https://github.com/mmistakes/minimal-mistakes/issues/274).
|
||||
|
||||
## [3.1.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.1)
|
||||
|
||||
### Bug Fix
|
||||
|
||||
- Fixed reading time bug when `words_per_minute` wasn't set in `_config.yml` [#271](https://github.com/mmistakes/minimal-mistakes/issues/271)
|
||||
|
||||
## [3.1.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.0)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Updated [Font Awesome](https://fortawesome.github.io/Font-Awesome/whats-new/) to version 4.6.1
|
||||
- Added optional GitHub and Bitbucket links to footer if set on `site.author` in `_config.yml`.
|
||||
|
||||
### Bug Fixes
|
||||
- Fixed Bitbucket URL typo in author sidebar.
|
||||
|
||||
## [3.0.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.0.3)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Rebuilt the entire theme: layouts, includes, stylesheets, scripts, you name it.
|
||||
- Refreshed the look and feel while staying true to the original design of the theme (author sidebar/main content).
|
||||
- Replaced grid system with [Susy](http://susy.oddbird.net/).
|
||||
- Replaced Grunt tasks with `npm` scripts.
|
||||
- Removed Google Fonts and replaced with system fonts to improve performance (they can be [added back](https://mmistakes.github.io/minimal-mistakes/docs/stylesheets/) if desired)
|
||||
- Greatly improved [theme documentation](https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/).
|
||||
- Increased the amount of sample posts, sample pages, and sample collections to throughly test the theme and edge-cases.
|
||||
- Moved all sample content and assets out of `master` to keep it as clean as possible for forking.
|
||||
- Added new layouts for `splash` pages, archives for [`jekyll-archives`](https://github.com/jekyll/jekyll-archives) if enabled, and [`compress.html`](https://github.com/penibelst/jekyll-compress-html) to improve performance.
|
||||
- Added taxonomy links to posts (tags and categories).
|
||||
- Added optional "reading time" meta data.
|
||||
- Improved Liquid used for Twitter Cards and Open Graph data in `<head>`.
|
||||
- Improved `gallery` include helper and added `feature_row` for use with splash page layout.
|
||||
- Added Keybase.io, author web URI, and Bitbucket optional links to sidebar.
|
||||
- Add `feed.xml` link to footer.
|
||||
- Added a [UI text data file](https://mmistakes.github.io/minimal-mistakes/docs/ui-text/) to easily change all text found in the theme.
|
||||
- Added LinkedIn to optional social share buttons.
|
||||
- Added Facebook, Google+, and custom commenting options in addition to Disqus.
|
||||
- Added optional breadcrumb links.
|
||||
|
||||
## [2.2.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.2.1)
|
||||
|
||||
## [2.2.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.2.0)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Add support for Jekyll 3.0
|
||||
- Minor updates to syntax highlighting CSS and theme documentation
|
||||
|
||||
## [2.1.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.1.3)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Cleaner print styles that remove the top navigation, social sharing buttons, and other elements not needed when printed.
|
||||
|
||||
## [2.1.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.1.2)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Add optional CodePen icon/url to author side bar [#156](https://github.com/mmistakes/minimal-mistakes/pull/156)
|
||||
- Documented Stackoverflow username explanation in `_config.yml` [#157](https://github.com/mmistakes/minimal-mistakes/pull/157)
|
||||
- Simplified Liquid in `post-index.html` to better handle year listings [#166](https://github.com/mmistakes/minimal-mistakes/pull/166)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Cleanup Facebook related Open Graph meta tags [#149](https://github.com/mmistakes/minimal-mistakes/issues/149)
|
||||
- Corrected minor typos [#158](https://github.com/mmistakes/minimal-mistakes/pull/158) [#175](https://github.com/mmistakes/minimal-mistakes/issues/175)
|
||||
|
||||
## [2.1.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.1.1)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Add optional XING profile link to author sidebar
|
||||
- Include open graph meta tags for feature image (if assigned) [#149](https://github.com/mmistakes/minimal-mistakes/issues/149)
|
||||
- Create an include for feed footer
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Remove http protocol from Google search form on sample 404 page
|
||||
- Only show related posts if there are one or more available
|
||||
- Fix alignment of email address link in author sidebar
|
||||
|
||||
## [2.1.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.1.0)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Add optional social sharing buttons ([#42](https://github.com/mmistakes/minimal-mistakes/issues/42))
|
||||
|
||||

|
||||
|
||||
- Add Soundcloud, YouTube ([#95](https://github.com/mmistakes/minimal-mistakes/pull/95)), Flickr ([#119](https://github.com/mmistakes/minimal-mistakes/pull/119)), and Weibo ([#116](https://github.com/mmistakes/minimal-mistakes/pull/116)) icons for use in author sidebar.
|
||||
- Fix typos in posts and documentation and remove references to Less
|
||||
- Include note about Octopress gem being optional
|
||||
- Post author override support extended to the Atom feed ([#71](https://github.com/mmistakes/minimal-mistakes/pull/71))
|
||||
- Only include email address in feed if specified in `_config.yml` or author `_data`
|
||||
- Wrap all page content in `#main` to harmonize article and post index styles ([#86](https://github.com/mmistakes/minimal-mistakes/issues/86))
|
||||
- Include new sample feature images for posts and pages
|
||||
- Table of contents improvements: fix collapse toggle, indent nested elements, show on small screens, and create an `_include` for reusing in posts and pages.
|
||||
- Include note about running Jekyll with `bundle exec` when using Bundler
|
||||
- Fix home page path in top navigation
|
||||
- Remove Google Authorship ([#120](https://github.com/mmistakes/minimal-mistakes/issues/120))
|
||||
- Remove duplicate author content that displayed in `div.article-author-bottom`
|
||||
- Removed unused `_sass/print.scss` styles
|
||||
- Improve comments in `.scss` files
|
||||
|
||||
## [2.0.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/v2.0)
|
||||
|
||||
## [1.3.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.3.3)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Added new icons and profile links for Stackoverflow, Dribbble, Pinterest, Foursquare, and Steam to the author bio sidebar.
|
||||
- Cleaned up the Kramdown auto table of contents styling to be more readable
|
||||
- Removed page width specific .less stylesheets and created mixins for easier updating
|
||||
- Removed Modernizr since it wasn't being used
|
||||
- Added pages to sitemap.xml
|
||||
- Added category: to rake new_post task
|
||||
- Minor typographic changes
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Corrected various broken links in README and Theme Setup.
|
||||
|
||||
## [1.3.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.3.1)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Cleaned up table of contents styling
|
||||
- Reworked top navigation to be a better experience on small screens. Nav items now display vertically when the menu button is tapped, revealing links with larger touch targets.
|
||||
|
||||

|
||||
|
||||
## [1.2.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.2.0)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Table weren't filling the entire width of the content container. They now scale at 100%. Thanks [@dhruvbhatia](https://github.com/dhruvbhatia)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Decreased spacing between Markdown footnotes
|
||||
- Removed dark background on footer
|
||||
- Removed UPPERCASE styling on post titles in the index listing
|
||||
|
||||
## [1.1.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.1.4)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix top navigation bug issue ([#10](https://github.com/mmistakes/minimal-mistakes/issues/10)) for real this time. Remember to clear your floats kids.
|
||||
|
||||
## [1.1.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.1.3)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix top navigation links that weren't click able on small viewports (Issue [#10](https://github.com/mmistakes/minimal-mistakes/issues/10)).
|
||||
- Remove line wrap from top navigation links that may span multiple lines.
|
||||
|
||||
## [1.1.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.1.2)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Added Grunt build script for compiling Less/JavaScript and optimizing image assets.
|
||||
- Added support for large image summary Twitter card.
|
||||
- Stylesheet adjustments
|
||||
|
||||
## [1.1.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.1.1)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Removed [Typeplate](http://typeplate.com/) styles. Was [causing issues with newer versions of Less](https://github.com/typeplate/typeplate.github.io/issues/108) and is no longer maintained.
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Added [image attribution](http://mmistakes.github.io/minimal-mistakes/theme-setup/#feature-images) for post and page feature images.
|
||||
- Added [404 page](http://mmistakes.github.io/minimal-mistakes/404.html).
|
||||
- Cleaned up various Less variables to better align with naming conventions used in other MM Jekyll themes.
|
||||
- Removed Chrome Frame references.
|
||||
- Added global CSS3 transitions to text and block elements.
|
||||
- Improved typography in a few places.
|
||||
|
||||
## [1.0.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/v1.0.2)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Google Analytics, Google Authorship, webmaster verifies, and Twitter card meta are now optional.
|
||||
|
||||
## [1.0.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/v1.0.1)
|
28
Gemfile
28
Gemfile
@ -1,3 +1,27 @@
|
||||
source 'https://rubygems.org'
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem 'github-pages', :group => :jekyll_plugins
|
||||
# Hello! This is where you manage which Jekyll version is used to run.
|
||||
# When you want to use a different version, change it below, save the
|
||||
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
|
||||
#
|
||||
# bundle exec jekyll serve
|
||||
#
|
||||
# This will help ensure the proper Jekyll version is running.
|
||||
# Happy Jekylling!
|
||||
|
||||
gem "github-pages", group: :jekyll_plugins
|
||||
|
||||
# If you want to use Jekyll native, uncomment the line below.
|
||||
# To upgrade, run `bundle update`.
|
||||
|
||||
# gem "jekyll"
|
||||
|
||||
gem "wdm", "~> 0.1.0" if Gem.win_platform?
|
||||
|
||||
# If you have any plugins, put them here!
|
||||
group :jekyll_plugins do
|
||||
# gem "jekyll-archives"
|
||||
|
||||
gem 'jekyll-octicons'
|
||||
|
||||
end
|
||||
|
29
Gemfile.lock
29
Gemfile.lock
@ -13,29 +13,29 @@ GEM
|
||||
execjs
|
||||
coffee-script-source (1.10.0)
|
||||
colorator (1.1.0)
|
||||
ethon (0.9.1)
|
||||
ethon (0.9.0)
|
||||
ffi (>= 1.3.0)
|
||||
execjs (2.7.0)
|
||||
faraday (0.9.2)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
ffi (1.9.14)
|
||||
ffi (1.9.14-x64-mingw32)
|
||||
forwardable-extended (2.6.0)
|
||||
gemoji (2.1.0)
|
||||
github-pages (98)
|
||||
github-pages (96)
|
||||
activesupport (= 4.2.7)
|
||||
github-pages-health-check (= 1.2.0)
|
||||
jekyll (= 3.2.1)
|
||||
jekyll-coffeescript (= 1.0.1)
|
||||
jekyll-feed (= 0.5.1)
|
||||
jekyll-gist (= 1.4.0)
|
||||
jekyll-github-metadata (= 2.1.1)
|
||||
jekyll-github-metadata (= 2.0.2)
|
||||
jekyll-mentions (= 1.2.0)
|
||||
jekyll-paginate (= 1.1.0)
|
||||
jekyll-redirect-from (= 0.11.0)
|
||||
jekyll-sass-converter (= 1.3.0)
|
||||
jekyll-seo-tag (= 2.0.0)
|
||||
jekyll-sitemap (= 0.10.0)
|
||||
jekyll-swiss (= 0.4.0)
|
||||
jemoji (= 0.7.0)
|
||||
kramdown (= 1.11.1)
|
||||
liquid (= 3.0.6)
|
||||
@ -69,13 +69,16 @@ GEM
|
||||
jekyll-feed (0.5.1)
|
||||
jekyll-gist (1.4.0)
|
||||
octokit (~> 4.2)
|
||||
jekyll-github-metadata (2.1.1)
|
||||
jekyll-github-metadata (2.0.2)
|
||||
jekyll (~> 3.1)
|
||||
octokit (~> 4.0)
|
||||
jekyll-mentions (1.2.0)
|
||||
activesupport (~> 4.0)
|
||||
html-pipeline (~> 2.3)
|
||||
jekyll (~> 3.0)
|
||||
jekyll-octicons (2.1.0)
|
||||
jekyll (~> 3.1)
|
||||
octicons (~> 2.0)
|
||||
jekyll-paginate (1.1.0)
|
||||
jekyll-redirect-from (0.11.0)
|
||||
jekyll (>= 2.0)
|
||||
@ -84,7 +87,6 @@ GEM
|
||||
jekyll-seo-tag (2.0.0)
|
||||
jekyll (~> 3.1)
|
||||
jekyll-sitemap (0.10.0)
|
||||
jekyll-swiss (0.4.0)
|
||||
jekyll-watch (1.5.0)
|
||||
listen (~> 3.0, < 3.1)
|
||||
jemoji (0.7.0)
|
||||
@ -101,15 +103,22 @@ GEM
|
||||
mercenary (0.3.6)
|
||||
mini_portile2 (2.1.0)
|
||||
minima (1.2.0)
|
||||
minitest (5.9.1)
|
||||
minitest (5.9.0)
|
||||
multipart-post (2.0.0)
|
||||
net-dns (0.8.0)
|
||||
nokogiri (1.6.8.1)
|
||||
nokogiri (1.6.8)
|
||||
mini_portile2 (~> 2.1.0)
|
||||
pkg-config (~> 1.1.7)
|
||||
nokogiri (1.6.8-x64-mingw32)
|
||||
mini_portile2 (~> 2.1.0)
|
||||
pkg-config (~> 1.1.7)
|
||||
octicons (2.1.0)
|
||||
nokogiri (>= 1.6.3.1)
|
||||
octokit (4.3.0)
|
||||
sawyer (~> 0.7.0, >= 0.5.3)
|
||||
pathutil (0.14.0)
|
||||
forwardable-extended (~> 2.6)
|
||||
pkg-config (1.1.7)
|
||||
public_suffix (1.5.3)
|
||||
rb-fsevent (0.9.7)
|
||||
rb-inotify (0.9.7)
|
||||
@ -120,7 +129,7 @@ GEM
|
||||
sawyer (0.7.0)
|
||||
addressable (>= 2.3.5, < 2.5)
|
||||
faraday (~> 0.8, < 0.10)
|
||||
terminal-table (1.7.3)
|
||||
terminal-table (1.7.2)
|
||||
unicode-display_width (~> 1.1.1)
|
||||
thread_safe (0.3.5)
|
||||
typhoeus (0.8.0)
|
||||
@ -131,9 +140,11 @@ GEM
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
x64-mingw32
|
||||
|
||||
DEPENDENCIES
|
||||
github-pages
|
||||
jekyll-octicons
|
||||
|
||||
BUNDLED WITH
|
||||
1.13.3
|
||||
|
24
Gemfile~
Normal file
24
Gemfile~
Normal file
@ -0,0 +1,24 @@
|
||||
source "https://rubygems.org"
|
||||
|
||||
# Hello! This is where you manage which Jekyll version is used to run.
|
||||
# When you want to use a different version, change it below, save the
|
||||
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
|
||||
#
|
||||
# bundle exec jekyll serve
|
||||
#
|
||||
# This will help ensure the proper Jekyll version is running.
|
||||
# Happy Jekylling!
|
||||
|
||||
gem "github-pages", group: :jekyll_plugins
|
||||
|
||||
# If you want to use Jekyll native, uncomment the line below.
|
||||
# To upgrade, run `bundle update`.
|
||||
|
||||
# gem "jekyll"
|
||||
|
||||
gem "wdm", "~> 0.1.0" if Gem.win_platform?
|
||||
|
||||
# If you have any plugins, put them here!
|
||||
group :jekyll_plugins do
|
||||
# gem "jekyll-archives"
|
||||
end
|
21
LICENSE
Normal file
21
LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Michael Rose
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
122
README.md
Normal file
122
README.md
Normal file
@ -0,0 +1,122 @@
|
||||
# [Minimal Mistakes Jekyll Theme](https://mmistakes.github.io/minimal-mistakes/)
|
||||
|
||||
[](https://github.com/mmistakes/minimal-mistakes/releases) [](https://raw.githubusercontent.com/mmistakes/minimal-mistakes/master/LICENSE)
|
||||
|
||||
Minimal Mistakes is a flexible two-column Jekyll theme. Perfect for hosting your personal site, blog, or portfolio on GitHub or self-hosting on your own server. As the name implies --- styling is purposely minimalistic to be enhanced and customized by you :smile:.
|
||||
|
||||
See what's new in the [CHANGELOG](CHANGELOG.md).
|
||||
|
||||
[![Minimal Mistakes live preview][2]][1]
|
||||
|
||||
[1]: https://mmistakes.github.io/minimal-mistakes/
|
||||
[2]: images/mm-browser-mockups.png (live preview)
|
||||
|
||||
The theme includes responsive layouts (`single`, `archive`, and `splash` pages) that look great on mobile and desktop browsers.
|
||||
|
||||

|
||||
|
||||
## [Installation and Setup](https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/) / [Preview the Theme](https://mmistakes.github.io/minimal-mistakes/)
|
||||
|
||||
### Notable Features
|
||||
|
||||
- Compatible with Jekyll 3.x and GitHub Pages
|
||||
- Support for Jekyll's built-in Sass/SCSS preprocessor
|
||||
- Several layout options (single, archive, splash pages)
|
||||
- SEO optimized with support for [Twitter Cards](https://dev.twitter.com/cards/overview) and [Open Graph](http://ogp.me/) data
|
||||
- Optional header images, sidebars, table of contents, galleries, related posts, breadcrumb links, and more.
|
||||
- Optional comments ([Disqus](https://disqus.com/), [Facebook](https://developers.facebook.com/docs/plugins/comments), Google+, [Discourse](https://www.discourse.org/), static-based via [Staticman](https://staticman.net/), and custom).
|
||||
- Optional analytics ([Google Analytics](https://www.google.com/analytics/) and custom).
|
||||
- UI localized text: English (default), Spanish, French, and Turkish.
|
||||
|
||||
#### Demo Pages
|
||||
|
||||
| Name | Description |
|
||||
| ------------------------------------------- | ----------------------------------------------------- |
|
||||
| [Post with Header Image][header-image-post] | A post with a large header image. |
|
||||
| [HTML Tags and Formatting Post][html-tags-post] | A variety of common markup showing how the theme styles them. |
|
||||
| [Syntax Highlighting Post][syntax-post] | Post displaying highlighted code. |
|
||||
| [Post with a Gallery][gallery-post] | A post showing several images wrapped in `<figure>` elements. |
|
||||
| [Sample Collection Page][sample-collection] | Single page from a collection. |
|
||||
| [Categories Archive][categories-archive] | Posts grouped by category. |
|
||||
| [Tags Archive][tags-archive] | Posts grouped by tags. |
|
||||
|
||||
For even more demo pages check the [posts archive][year-archive].
|
||||
|
||||
[header-image-post]: https://mmistakes.github.io/minimal-mistakes/layout-header-image-text-readability/
|
||||
[gallery-post]: https://mmistakes.github.io/minimal-mistakes/post%20formats/post-gallery/
|
||||
[html-tags-post]: https://mmistakes.github.io/minimal-mistakes/markup/markup-html-tags-and-formatting/
|
||||
[syntax-post]: https://mmistakes.github.io/minimal-mistakes/markup-syntax-highlighting/
|
||||
[sample-collection]: https://mmistakes.github.io/minimal-mistakes/recipes/chocolate-chip-cookies/
|
||||
[categories-archive]: https://mmistakes.github.io/minimal-mistakes/categories/
|
||||
[tags-archive]: https://mmistakes.github.io/minimal-mistakes/tags/
|
||||
[year-archive]: https://mmistakes.github.io/minimal-mistakes/year-archive/
|
||||
|
||||
---
|
||||
|
||||
## Contributing
|
||||
|
||||
Having trouble working with the theme? Found a typo in the documentation? Interested in adding a feature or [fixing a bug](https://github.com/mmistakes/minimal-mistakes/issues)? Then by all means [submit an issue](https://github.com/mmistakes/minimal-mistakes/issues/new) or [pull request](https://help.github.com/articles/using-pull-requests/). If this is your first pull request, it may be helpful to read up on the [GitHub Flow](https://guides.github.com/introduction/flow/) first.
|
||||
|
||||
Minimal Mistakes has been designed as a base for you to customize and fit your site's unique needs. Please keep this in mind when requesting features and/or submitting pull requests. If it's not something that most people will use, I probably won't consider it. When in doubt ask.
|
||||
|
||||
This goes for author sidebar links and "share button" additions -- I have no intention of merging in every possibly option, the essentials are there to get you started :smile:.
|
||||
|
||||
### Pull Requests
|
||||
|
||||
To help me out try to avoid creating pull requests on `master` and instead branch off of `develop`. It's much easier for me to test, merge, and roll them into new releases this way.
|
||||
|
||||
---
|
||||
|
||||
## Credits
|
||||
|
||||
### Creator
|
||||
|
||||
**Michael Rose**
|
||||
|
||||
- <https://mademistakes.com>
|
||||
- <https://twitter.com/mmistakes>
|
||||
- <https://github.com/mmistakes>
|
||||
|
||||
### Icons + Demo Images:
|
||||
|
||||
- [The Noun Project](https://thenounproject.com) -- Garrett Knoll, Arthur Shlain, and [tracy tam](https://thenounproject.com/tracytam)
|
||||
- [Font Awesome](http://fortawesome.github.io/Font-Awesome/)
|
||||
- [Unsplash](https://unsplash.com/)
|
||||
|
||||
### Other:
|
||||
|
||||
- [Jekyll](http://jekyllrb.com/)
|
||||
- [jQuery](http://jquery.com/)
|
||||
- [Susy](http://susy.oddbird.net/)
|
||||
- [Breakpoint](http://breakpoint-sass.com/)
|
||||
- [Magnific Popup](http://dimsemenov.com/plugins/magnific-popup/)
|
||||
- [FitVids.JS](http://fitvidsjs.com/)
|
||||
- Greedy Navigation - [lukejacksonn](http://codepen.io/lukejacksonn/pen/PwmwWV)
|
||||
- [jQuery Smooth Scroll](https://github.com/kswedberg/jquery-smooth-scroll)
|
||||
- [Stickyfill](https://github.com/wilddeer/stickyfill)
|
||||
|
||||
---
|
||||
|
||||
## License
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Michael Rose
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
238
_config.yml
238
_config.yml
@ -1,21 +1,231 @@
|
||||
# Welcome to Jekyll!
|
||||
#
|
||||
# This config file is meant for settings that affect your whole blog, values
|
||||
# This config file is meant for settings that affect your entire site, values
|
||||
# which you are expected to set up once and rarely need to edit after that.
|
||||
# For technical reasons, this file is *NOT* reloaded automatically when you use
|
||||
# 'jekyll serve'. If you change this file, please restart the server process.
|
||||
# `jekyll serve`. If you change this file, please restart the server process.
|
||||
|
||||
# Site settings
|
||||
title: Grid software project
|
||||
email: guido.cossu@ed.ac.uk
|
||||
description: > # this means to ignore newlines until "baseurl:"
|
||||
Write an awesome description for your new site here. You can edit this
|
||||
line in _config.yml. It will appear in your document head meta (for
|
||||
Google search results) and in your feed.xml site description.
|
||||
baseurl: "" # the subpath of your site, e.g. /blog
|
||||
url: "http://yourdomain.com" # the base hostname & protocol for your site
|
||||
twitter_username: jekyllrb
|
||||
github_username: paboyle
|
||||
# Site Settings
|
||||
locale : "en"
|
||||
title : "GRID"
|
||||
title_separator : "|"
|
||||
name : "Our team"
|
||||
description : "Data parallel C++ mathematical object library."
|
||||
url : "http://localhost:4000" # the base hostname & protocol for your site e.g. "https://mmistakes.github.io"
|
||||
baseurl : # the subpath of your site, e.g. "/blog"
|
||||
repository : "mmistakes/minimal-mistakes"
|
||||
teaser : # filename of teaser fallback teaser image placed in /images/, .e.g. "500x300.png"
|
||||
# breadcrumbs : false # true, false (default)
|
||||
words_per_minute : 200
|
||||
comments:
|
||||
provider : # false (default), "disqus", "discourse", "facebook", "google-plus", "staticman", "custom"
|
||||
disqus:
|
||||
shortname : # https://help.disqus.com/customer/portal/articles/466208-what-s-a-shortname-
|
||||
discourse:
|
||||
server : # https://meta.discourse.org/t/embedding-discourse-comments-via-javascript/31963 , e.g.: meta.discourse.org
|
||||
facebook:
|
||||
# https://developers.facebook.com/docs/plugins/comments
|
||||
appid :
|
||||
num_posts : # 5 (default)
|
||||
colorscheme : # "light" (default), "dark"
|
||||
staticman:
|
||||
allowedFields : ['name', 'email', 'url', 'message']
|
||||
branch : # "master", "gh-pages"
|
||||
commitMessage : "New comment."
|
||||
filename : comment-{@timestamp}
|
||||
format : "yml"
|
||||
moderation : true
|
||||
path : "_data/comments/{options.slug}"
|
||||
requiredFields : ['name', 'email', 'message']
|
||||
transforms:
|
||||
email : "md5"
|
||||
generatedFields:
|
||||
date:
|
||||
type : "date"
|
||||
options:
|
||||
format : "iso8601" # "iso8601" (default), "timestamp-seconds", "timestamp-milliseconds"
|
||||
atom_feed:
|
||||
path : # blank (default) uses feed.xml
|
||||
|
||||
# Build settings
|
||||
# SEO Related
|
||||
google_site_verification :
|
||||
bing_site_verification :
|
||||
alexa_site_verification :
|
||||
yandex_site_verification :
|
||||
|
||||
# Social Sharing
|
||||
twitter:
|
||||
username :
|
||||
facebook:
|
||||
username :
|
||||
app_id :
|
||||
publisher :
|
||||
og_image : # Open Graph/Twitter default site image
|
||||
# For specifying social profiles
|
||||
# - https://developers.google.com/structured-data/customize/social-profiles
|
||||
social:
|
||||
type : # Person or Organization (defaults to Person)
|
||||
name : # If the user or organization name differs from the site's name
|
||||
links: # An array of links to social media profiles
|
||||
|
||||
# Analytics
|
||||
analytics:
|
||||
provider : false # false (default), "google", "google-universal", "custom"
|
||||
google:
|
||||
tracking_id :
|
||||
|
||||
|
||||
# Site Author
|
||||
author:
|
||||
name : "PPT Group"
|
||||
avatar : "bio-photo.jpg"
|
||||
bio : "I am an amazing person."
|
||||
location : "Edinburgh"
|
||||
email : "guido.cossu@ed.ac.uk"
|
||||
uri :
|
||||
bitbucket :
|
||||
codepen :
|
||||
dribbble :
|
||||
flickr :
|
||||
facebook :
|
||||
foursquare :
|
||||
github :
|
||||
google_plus :
|
||||
keybase :
|
||||
instagram :
|
||||
lastfm :
|
||||
linkedin :
|
||||
pinterest :
|
||||
soundcloud :
|
||||
stackoverflow : # "123456/username" (the last part of your profile url, e.g. http://stackoverflow.com/users/123456/username)
|
||||
steam :
|
||||
tumblr :
|
||||
twitter :
|
||||
vine :
|
||||
weibo :
|
||||
xing :
|
||||
youtube :
|
||||
|
||||
|
||||
# Reading Files
|
||||
include:
|
||||
- .htaccess
|
||||
- _pages
|
||||
exclude:
|
||||
- "*.sublime-project"
|
||||
- "*.sublime-workspace"
|
||||
- vendor
|
||||
- .asset-cache
|
||||
- .bundle
|
||||
- .jekyll-assets-cache
|
||||
- .sass-cache
|
||||
- assets/js/plugins
|
||||
- assets/js/_main.js
|
||||
- assets/js/vendor
|
||||
- Capfile
|
||||
- CHANGELOG
|
||||
- config
|
||||
- Gemfile
|
||||
- Gruntfile.js
|
||||
- gulpfile.js
|
||||
- LICENSE
|
||||
- log
|
||||
- node_modules
|
||||
- package.json
|
||||
- Rakefile
|
||||
- README
|
||||
- tmp
|
||||
keep_files:
|
||||
- .git
|
||||
- .svn
|
||||
encoding: "utf-8"
|
||||
markdown_ext: "markdown,mkdown,mkdn,mkd,md"
|
||||
|
||||
|
||||
# Conversion
|
||||
markdown: kramdown
|
||||
highlighter: rouge
|
||||
lsi: false
|
||||
excerpt_separator: "\n\n"
|
||||
incremental: false
|
||||
|
||||
|
||||
# Markdown Processing
|
||||
kramdown:
|
||||
input: GFM
|
||||
hard_wrap: false
|
||||
auto_ids: true
|
||||
footnote_nr: 1
|
||||
entity_output: as_char
|
||||
toc_levels: 1..6
|
||||
smart_quotes: lsquo,rsquo,ldquo,rdquo
|
||||
enable_coderay: false
|
||||
|
||||
|
||||
# Sass/SCSS
|
||||
sass:
|
||||
sass_dir: _sass
|
||||
style: compressed # http://sass-lang.com/documentation/file.SASS_REFERENCE.html#output_style
|
||||
|
||||
|
||||
# Outputting
|
||||
permalink: /:categories/:title/
|
||||
paginate: 5 # amount of posts to show
|
||||
paginate_path: /page:num/
|
||||
timezone: # http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
||||
|
||||
|
||||
# Plugins
|
||||
gems:
|
||||
- jekyll-paginate
|
||||
- jekyll-sitemap
|
||||
- jekyll-gist
|
||||
- jekyll-feed
|
||||
- jekyll-octicons
|
||||
- jemoji
|
||||
|
||||
# mimic GitHub Pages with --safe
|
||||
whitelist:
|
||||
- jekyll-paginate
|
||||
- jekyll-sitemap
|
||||
- jekyll-gist
|
||||
- jekyll-feed
|
||||
- jekyll-octicons
|
||||
- jemoji
|
||||
|
||||
|
||||
# Archives
|
||||
# Type
|
||||
# - GitHub Pages compatible archive pages built with Liquid ~> type: liquid (default)
|
||||
# - Jekyll Archives plugin archive pages ~> type: jekyll-archives
|
||||
# Path (examples)
|
||||
# - Archive page should exist at path when using Liquid method or you can
|
||||
# expect broken links (especially with breadcrumbs enabled)
|
||||
# - <base_path>/tags/my-awesome-tag/index.html ~> path: /tags/
|
||||
# - <base_path/categories/my-awesome-category/index.html ~> path: /categories/
|
||||
# - <base_path/my-awesome-category/index.html ~> path: /
|
||||
category_archive:
|
||||
type: liquid
|
||||
path: /categories/
|
||||
tag_archive:
|
||||
type: liquid
|
||||
path: /tags/
|
||||
# https://github.com/jekyll/jekyll-archives
|
||||
# jekyll-archives:
|
||||
# enabled:
|
||||
# - categories
|
||||
# - tags
|
||||
# layouts:
|
||||
# category: archive-taxonomy
|
||||
# tag: archive-taxonomy
|
||||
# permalinks:
|
||||
# category: /categories/:name/
|
||||
# tag: /tags/:name/
|
||||
|
||||
|
||||
# HTML Compression
|
||||
# - http://jch.penibelst.de/
|
||||
compress_html:
|
||||
clippings: all
|
||||
ignore:
|
||||
envs: development
|
9
_data/authors.yml
Normal file
9
_data/authors.yml
Normal file
@ -0,0 +1,9 @@
|
||||
# /_data/authors.yml
|
||||
|
||||
Guido Cossu:
|
||||
name: "Guido Cossu"
|
||||
uri: "http://www.google.com"
|
||||
email: "guido.cossu@ed.ac.uk"
|
||||
bio: "Senior researcher at Higgs Centre"
|
||||
avatar: "bio-photo-2.jpg"
|
||||
twitter: "coppolachan"
|
44
_data/navigation.yml
Normal file
44
_data/navigation.yml
Normal file
@ -0,0 +1,44 @@
|
||||
# main links links
|
||||
main:
|
||||
- title: "Docs"
|
||||
url: /docs/
|
||||
|
||||
- title: "Quick-start guide"
|
||||
url: /docs/quick-start-guide
|
||||
|
||||
- title: "About"
|
||||
url: /about/
|
||||
|
||||
- title: "GPL License"
|
||||
url: /license/
|
||||
|
||||
|
||||
docs:
|
||||
- title: Getting Started
|
||||
children:
|
||||
- title: "Quick-Start Guide"
|
||||
url: /docs/quick-start-guide/
|
||||
- title: "Structure"
|
||||
url: /docs/structure/
|
||||
- title: "Building"
|
||||
url: /docs/building/
|
||||
|
||||
|
||||
- title: API description
|
||||
children:
|
||||
- title: "SIMD classes"
|
||||
url: /docs/simd/
|
||||
- title: "Grid classes"
|
||||
url: /docs/grid/
|
||||
- title: "Tensor classes"
|
||||
url: /docs/tensor/
|
||||
- title: "Lattice classes"
|
||||
url: /docs/lattice/
|
||||
|
||||
|
||||
- title: "Lattice theories"
|
||||
children:
|
||||
- title : "Theories"
|
||||
url: /docs/theories/
|
||||
- title: "HMC"
|
||||
url: /docs/theories/hmc/
|
355
_data/ui-text.yml
Normal file
355
_data/ui-text.yml
Normal file
@ -0,0 +1,355 @@
|
||||
# User interface text and labels
|
||||
|
||||
# English (default)
|
||||
# -----------------
|
||||
en: &DEFAULT_EN
|
||||
page : "Page"
|
||||
pagination_previous : "Previous"
|
||||
pagination_next : "Next"
|
||||
breadcrumb_home_label : "Home"
|
||||
breadcrumb_separator : "/"
|
||||
toc_label : "On This Page"
|
||||
ext_link_label : "Direct Link"
|
||||
less_than : "less than"
|
||||
minute_read : "minute read"
|
||||
share_on_label : "Share on"
|
||||
meta_label :
|
||||
tags_label : "Tags:"
|
||||
categories_label : "Categories:"
|
||||
date_label : "Updated:"
|
||||
comments_label : "Leave a Comment"
|
||||
comments_title : "Comments"
|
||||
more_label : "Learn More"
|
||||
related_label : "You May Also Enjoy"
|
||||
follow_label : "Follow:"
|
||||
feed_label : "Feed"
|
||||
powered_by : "Powered by"
|
||||
website_label : "Website"
|
||||
email_label : "Email"
|
||||
recent_posts : "Recent Posts"
|
||||
undefined_wpm : "Undefined parameter words_per_minute at _config.yml"
|
||||
comment_form_info : "Your email address will not be published. Required fields are marked"
|
||||
comment_form_comment_label : "Comment"
|
||||
comment_form_md_info : "Markdown is supported."
|
||||
comment_form_name_label : "Name"
|
||||
comment_form_email_label : "Email address"
|
||||
comment_form_website_label : "Website (optional)"
|
||||
comment_btn_submit : "Submit Comment"
|
||||
comment_btn_submitted : "Submitted"
|
||||
comment_success_msg : "Thanks for your comment! It will show on the site once it has been approved."
|
||||
comment_error_msg : "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again."
|
||||
loading_label : "Loading..."
|
||||
en-US:
|
||||
<<: *DEFAULT_EN
|
||||
en-CA:
|
||||
<<: *DEFAULT_EN
|
||||
en-GB:
|
||||
<<: *DEFAULT_EN
|
||||
en-AU:
|
||||
<<: *DEFAULT_EN
|
||||
|
||||
# Spanish
|
||||
# --------------
|
||||
es: &DEFAULT_ES
|
||||
page : "Página"
|
||||
pagination_previous : "Anterior"
|
||||
pagination_next : "Siguiente"
|
||||
breadcrumb_home_label : "Inicio"
|
||||
breadcrumb_separator : "/"
|
||||
toc_label : "Contenidos"
|
||||
ext_link_label : "Enlace"
|
||||
less_than : "menos de"
|
||||
minute_read : "minuto de lectura"
|
||||
share_on_label : "Compartir"
|
||||
meta_label :
|
||||
tags_label : "Etiquetas:"
|
||||
categories_label : "Categorías:"
|
||||
date_label : "Actualizado:"
|
||||
comments_label : "Comentar"
|
||||
comments_title :
|
||||
more_label : "Ver más"
|
||||
related_label : "Podrías ver también"
|
||||
follow_label : "Seguir:"
|
||||
feed_label : "Feed"
|
||||
powered_by : "Powered by"
|
||||
website_label : "Sitio web"
|
||||
email_label : "Email"
|
||||
recent_posts : "Entradas recientes"
|
||||
undefined_wpm : "Parametro words_per_minute (Palabras por minuto) no definido en _config.yml"
|
||||
comment_form_info :
|
||||
comment_form_comment_label :
|
||||
comment_form_md_info :
|
||||
comment_form_name_label :
|
||||
comment_form_email_label :
|
||||
comment_form_website_label :
|
||||
comment_btn_submit :
|
||||
comment_btn_submitted :
|
||||
comment_success_msg :
|
||||
comment_error_msg :
|
||||
loading_label :
|
||||
es-ES:
|
||||
<<: *DEFAULT_ES
|
||||
es-CO:
|
||||
<<: *DEFAULT_ES
|
||||
|
||||
# French
|
||||
# -----------------
|
||||
fr: &DEFAULT_FR
|
||||
page : "Page"
|
||||
pagination_previous : "Précédent"
|
||||
pagination_next : "Suivant"
|
||||
breadcrumb_home_label : "Accueil"
|
||||
breadcrumb_separator : "/"
|
||||
toc_label : "Sur cette page"
|
||||
ext_link_label : "Lien direct"
|
||||
less_than : "plus petit que"
|
||||
minute_read : "minute de lecture"
|
||||
share_on_label : "Partager sur"
|
||||
meta_label :
|
||||
tags_label : "Tags :"
|
||||
categories_label : "Catégories :"
|
||||
date_label : "Mis à jour :"
|
||||
comments_label : "Laisser un commentaire"
|
||||
comments_title :
|
||||
more_label : "Lire plus"
|
||||
related_label : "Vous pourriez aimer"
|
||||
follow_label : "Suivez moi"
|
||||
feed_label : "Flux"
|
||||
powered_by : "Propulsé par"
|
||||
website_label : "Site"
|
||||
email_label : "Email"
|
||||
recent_posts : "Posts récents"
|
||||
undefined_wpm : "Le paramètre words_per_minute n'est pas défini dans _config.yml"
|
||||
comments_title : "Commentaires"
|
||||
comment_form_info : "Votre adresse email ne sera pas visible. Les champs obligatoires sont marqués"
|
||||
comment_form_comment_label : "Commentaire"
|
||||
comment_form_md_info : "Markdown est supporté."
|
||||
comment_form_name_label : "Nom"
|
||||
comment_form_email_label : "Adresse mail"
|
||||
comment_form_website_label : "Site web (optionnel)"
|
||||
comment_btn_submit : "Envoyer"
|
||||
comment_btn_submitted : "Envoyé"
|
||||
comment_success_msg : "Merci pour votre comentaire, il sera visible sur le site une fois approuvé."
|
||||
comment_error_msg : "Désolé, une erreur est survenue lors de la soumission. Vérifiez que les champs obligatoires ont été remplis et réessayez."
|
||||
loading_label : "Chargement..."
|
||||
fr-FR:
|
||||
<<: *DEFAULT_FR
|
||||
fr-BE:
|
||||
<<: *DEFAULT_FR
|
||||
fr-CH:
|
||||
<<: *DEFAULT_FR
|
||||
|
||||
# Turkish
|
||||
# -----------------
|
||||
tr: &DEFAULT_TR
|
||||
page : "Sayfa"
|
||||
pagination_previous : "Önceki"
|
||||
pagination_next : "Sonraki"
|
||||
breadcrumb_home_label : "Ana Sayfa"
|
||||
breadcrumb_separator : "/"
|
||||
toc_label : "İçindekiler"
|
||||
ext_link_label : "Doğrudan Bağlantı"
|
||||
less_than : "Şu süreden az: "
|
||||
minute_read : "dakika tahmini okuma süresi"
|
||||
share_on_label : "Paylaş"
|
||||
meta_label :
|
||||
tags_label : "Etiketler:"
|
||||
categories_label : "Kategoriler:"
|
||||
date_label : "Güncelleme tarihi:"
|
||||
comments_label : "Yorum yapın"
|
||||
comments_title :
|
||||
more_label : "Daha fazlasını öğrenin"
|
||||
related_label : "Bunlar ilginizi çekebilir:"
|
||||
follow_label : "Takip et:"
|
||||
feed_label : "RSS"
|
||||
powered_by : "Emeği geçenler: "
|
||||
website_label : "Web sayfası"
|
||||
email_label : "E-posta"
|
||||
recent_posts : "Son yazılar"
|
||||
undefined_wpm : "_config.yml dosyasında tanımlanmamış words_per_minute parametresi"
|
||||
comment_form_info :
|
||||
comment_form_comment_label :
|
||||
comment_form_md_info :
|
||||
comment_form_name_label :
|
||||
comment_form_email_label :
|
||||
comment_form_website_label :
|
||||
comment_btn_submit :
|
||||
comment_btn_submitted :
|
||||
comment_success_msg :
|
||||
comment_error_msg :
|
||||
loading_label :
|
||||
tr-TR:
|
||||
<<: *DEFAULT_TR
|
||||
|
||||
# Portuguese
|
||||
# -----------------
|
||||
pt: &DEFAULT_PT
|
||||
page : "Página"
|
||||
pagination_previous : "Anterior"
|
||||
pagination_next : "Seguinte"
|
||||
breadcrumb_home_label : "Início"
|
||||
breadcrumb_separator : "/"
|
||||
toc_label : "Nesta Página"
|
||||
ext_link_label : "Link Direto"
|
||||
less_than : "menos de"
|
||||
minute_read : "minutos de leitura"
|
||||
share_on_label : "Partilhar no"
|
||||
meta_label :
|
||||
tags_label : "Etiquetas:"
|
||||
categories_label : "Categorias:"
|
||||
date_label : "Atualizado:"
|
||||
comments_label : "Deixe um Comentário"
|
||||
comments_title : "Comentários"
|
||||
more_label : "Saber mais"
|
||||
related_label : "Também pode gostar de"
|
||||
follow_label : "Siga:"
|
||||
feed_label : "Feed"
|
||||
powered_by : "Feito com"
|
||||
website_label : "Site"
|
||||
email_label : "Email"
|
||||
recent_posts : "Artigos Recentes"
|
||||
undefined_wpm : "Parâmetro words_per_minute não definido em _config.yml"
|
||||
comment_form_info : "O seu endereço email não será publicado. Os campos obrigatórios estão assinalados"
|
||||
comment_form_comment_label : "Comentário"
|
||||
comment_form_md_info : "Markdown é suportado."
|
||||
comment_form_name_label : "Nome"
|
||||
comment_form_email_label : "Endereço Email"
|
||||
comment_form_website_label : "Site (opcional)"
|
||||
comment_btn_submit : "Sumbeter Comentário"
|
||||
comment_btn_submitted : "Submetido"
|
||||
comment_success_msg : "Obrigado pelo seu comentário! Será visível no site logo que aprovado."
|
||||
comment_error_msg : "Lamento, ocorreu um erro na sua submissão. Por favor verifique se todos os campos obrigatórios estão corretamente preenchidos e tente novamente."
|
||||
loading_label : "A carregar..."
|
||||
# Brazilian Portuguese
|
||||
pt-BR:
|
||||
page : "Página"
|
||||
pagination_previous : "Anterior"
|
||||
pagination_next : "Próxima"
|
||||
breadcrumb_home_label : "Home"
|
||||
breadcrumb_separator : "/"
|
||||
toc_label : "Nesta página"
|
||||
ext_link_label : "Link direto"
|
||||
less_than : "meno que"
|
||||
minute_read : "minutos de leitura"
|
||||
share_on_label : "Compartilhe em"
|
||||
meta_label :
|
||||
tags_label : "Tags:"
|
||||
categories_label : "Categorias:"
|
||||
date_label : "Atualizado em:"
|
||||
comments_label : "Deixe um comentário"
|
||||
comments_title :
|
||||
more_label : "Aprenda Mais"
|
||||
related_label : "Você Talvez Goste Também"
|
||||
follow_label : "Acompanhe em"
|
||||
feed_label : "Feed"
|
||||
powered_by : "Feito com"
|
||||
website_label : "Site"
|
||||
email_label : "Email"
|
||||
recent_posts : "Postagens recentes"
|
||||
undefined_wpm : "Parâmetro indefinido em word_per_minute no _config.yml"
|
||||
comment_form_info :
|
||||
comment_form_comment_label :
|
||||
comment_form_md_info :
|
||||
comment_form_name_label :
|
||||
comment_form_email_label :
|
||||
comment_form_website_label :
|
||||
comment_btn_submit :
|
||||
comment_btn_submitted :
|
||||
comment_success_msg :
|
||||
comment_error_msg :
|
||||
loading_label :
|
||||
pt-PT:
|
||||
<<: *DEFAULT_PT
|
||||
|
||||
# Italian
|
||||
# -----------------
|
||||
it: &DEFAULT_IT
|
||||
page : "Pagina"
|
||||
pagination_previous : "Precedente"
|
||||
pagination_next : "Prossima"
|
||||
breadcrumb_home_label : "Home"
|
||||
breadcrumb_separator : "/"
|
||||
toc_label : "Indice della pagina"
|
||||
ext_link_label : "Link"
|
||||
less_than : "meno di"
|
||||
minute_read : "minuto/i di lettura"
|
||||
share_on_label : "Condividi"
|
||||
meta_label :
|
||||
tags_label : "Tags:"
|
||||
categories_label : "Categorie:"
|
||||
date_label : "Aggiornato:"
|
||||
comments_label : "Scrivi un commento"
|
||||
comments_title :
|
||||
more_label : "Scopri di più"
|
||||
related_label : "Potrebbe Piacerti Anche"
|
||||
follow_label : "Segui:"
|
||||
feed_label : "Feed"
|
||||
powered_by : "Powered by"
|
||||
website_label : "Website"
|
||||
email_label : "Email"
|
||||
recent_posts : "Articoli Recenti"
|
||||
undefined_wpm : "Parametro words_per_minute non definito in _config.yml"
|
||||
comment_form_info : "Il tuo indirizzo email non sarà pubblicato. Sono segnati i campi obbligatori"
|
||||
comment_form_comment_label : "Commenta"
|
||||
comment_form_md_info : "Il linguaggio Markdown è supportato"
|
||||
comment_form_name_label : "Nome"
|
||||
comment_form_email_label : "Indirizzo email"
|
||||
comment_form_website_label : "Sito Web (opzionale)"
|
||||
comment_btn_submit : "Invia commento"
|
||||
comment_btn_submitted : "Inviato"
|
||||
comment_success_msg : "Grazie per il tuo commento! Verrà visualizzato nel sito una volta che sarà approvato."
|
||||
comment_error_msg : "C'è stato un errore con il tuo invio. Assicurati che tutti i campi richiesti siano stati completati e riprova."
|
||||
loading_label : "Caricamento..."
|
||||
it-IT:
|
||||
<<: *DEFAULT_IT
|
||||
|
||||
# Chinese (zh-CN Chinese - China)
|
||||
# -----------------
|
||||
zh: &DEFAULT_ZH
|
||||
page : "页面"
|
||||
pagination_previous : "向前"
|
||||
pagination_next : "向后"
|
||||
breadcrumb_home_label : "首页"
|
||||
breadcrumb_separator : "/"
|
||||
toc_label : "在本页上"
|
||||
ext_link_label : "直接链接"
|
||||
less_than : "少于"
|
||||
minute_read : "分钟 阅读"
|
||||
share_on_label : "分享"
|
||||
meta_label :
|
||||
tags_label : "标签:"
|
||||
categories_label : "分类:"
|
||||
date_label : "最新的:"
|
||||
comments_label : "留下评论"
|
||||
comments_title : "评论"
|
||||
more_label : "了解更多"
|
||||
related_label : "猜您还喜欢"
|
||||
follow_label : "关注:"
|
||||
feed_label : "Feed"
|
||||
powered_by : "Powered by"
|
||||
website_label : "网站"
|
||||
email_label : "Email"
|
||||
recent_posts : "最新文章"
|
||||
undefined_wpm : "Undefined parameter words_per_minute at _config.yml"
|
||||
comment_form_info : "Your email address will not be published. Required fields are marked"
|
||||
comment_form_comment_label : "Comment"
|
||||
comment_form_md_info : "Markdown is supported."
|
||||
comment_form_name_label : "Name"
|
||||
comment_form_email_label : "Email address"
|
||||
comment_form_website_label : "Website (optional)"
|
||||
comment_btn_submit : "Submit Comment"
|
||||
comment_btn_submitted : "Submitted"
|
||||
comment_success_msg : "Thanks for your comment! It will show on the site once it has been approved."
|
||||
comment_error_msg : "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again."
|
||||
loading_label : "Loading..."
|
||||
zh-CN:
|
||||
<<: *DEFAULT_ZH
|
||||
zh-HK:
|
||||
<<: *DEFAULT_ZH
|
||||
zh-SG:
|
||||
<<: *DEFAULT_ZH
|
||||
zh-TW:
|
||||
<<: *DEFAULT_ZH
|
||||
|
||||
# Another locale
|
||||
# --------------
|
3
_includes/analytics-providers/custom.html
Normal file
3
_includes/analytics-providers/custom.html
Normal file
@ -0,0 +1,3 @@
|
||||
<!-- start custom analytics snippet -->
|
||||
|
||||
<!-- end custom analytics snippet -->
|
9
_includes/analytics-providers/google-universal.html
Normal file
9
_includes/analytics-providers/google-universal.html
Normal file
@ -0,0 +1,9 @@
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', '{{ site.analytics.google.tracking_id }}', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
11
_includes/analytics-providers/google.html
Normal file
11
_includes/analytics-providers/google.html
Normal file
@ -0,0 +1,11 @@
|
||||
<script type="text/javascript">
|
||||
var _gaq = _gaq || [];
|
||||
_gaq.push(['_setAccount', '{{ site.analytics.google.tracking_id }}']);
|
||||
_gaq.push(['_trackPageview']);
|
||||
|
||||
(function() {
|
||||
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
||||
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||||
})();
|
||||
</script>
|
12
_includes/analytics.html
Normal file
12
_includes/analytics.html
Normal file
@ -0,0 +1,12 @@
|
||||
{% if site.analytics.provider and page.analytics != false %}
|
||||
|
||||
{% case site.analytics.provider %}
|
||||
{% when "google" %}
|
||||
{% include /analytics-providers/google.html %}
|
||||
{% when "google-universal" %}
|
||||
{% include /analytics-providers/google-universal.html %}
|
||||
{% when "custom" %}
|
||||
{% include /analytics-providers/custom.html %}
|
||||
{% endcase %}
|
||||
|
||||
{% endif %}
|
40
_includes/archive-single.html
Normal file
40
_includes/archive-single.html
Normal file
@ -0,0 +1,40 @@
|
||||
{% include base_path %}
|
||||
|
||||
{% if post.header.teaser %}
|
||||
{% capture teaser %}{{ post.header.teaser }}{% endcapture %}
|
||||
{% else %}
|
||||
{% assign teaser = site.teaser %}
|
||||
{% endif %}
|
||||
|
||||
{% if post.id %}
|
||||
{% assign title = post.title | markdownify | remove: "<p>" | remove: "</p>" %}
|
||||
{% else %}
|
||||
{% assign title = post.title %}
|
||||
{% endif %}
|
||||
|
||||
<div class="{{ include.type | default: "list" }}__item">
|
||||
<article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
|
||||
{% if include.type == "grid" and teaser %}
|
||||
<div class="archive__item-teaser">
|
||||
<img src=
|
||||
{% if teaser contains "://" %}
|
||||
"{{ teaser }}"
|
||||
{% else %}
|
||||
"{{ teaser | prepend: "/images/" | prepend: base_path }}"
|
||||
{% endif %}
|
||||
alt="">
|
||||
</div>
|
||||
{% endif %}
|
||||
<h2 class="archive__item-title" itemprop="headline">
|
||||
{% if post.link %}
|
||||
<a href="{{ post.link }}">{{ title }}</a> <a href="{{ base_path }}{{ post.url }}" rel="permalink"><i class="fa fa-link" aria-hidden="true" title="permalink"></i><span class="sr-only">Permalink</span></a>
|
||||
{% else %}
|
||||
<a href="{{ base_path }}{{ post.url }}" rel="permalink">{{ title }}</a>
|
||||
{% endif %}
|
||||
</h2>
|
||||
{% if post.read_time %}
|
||||
<p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> {% include read-time.html %}</p>
|
||||
{% endif %}
|
||||
{% if post.excerpt %}<p class="archive__item-excerpt" itemprop="description">{{ post.excerpt | markdownify | strip_html | truncate: 160 }}</p>{% endif %}
|
||||
</article>
|
||||
</div>
|
102
_includes/author-profile.html
Normal file
102
_includes/author-profile.html
Normal file
@ -0,0 +1,102 @@
|
||||
{% include base_path %}
|
||||
|
||||
{% if page.author and site.data.authors[page.author] %}
|
||||
{% assign author = site.data.authors[page.author] %}{% else %}{% assign author = site.author %}
|
||||
{% endif %}
|
||||
|
||||
<div itemscope itemtype="http://schema.org/Person">
|
||||
|
||||
<div class="author__avatar">
|
||||
{% if author.avatar contains "://" %}
|
||||
<img src="{{ author.avatar }}" alt="{{ author.name }}">
|
||||
{% else %}
|
||||
<img src="{{ author.avatar | prepend: "/images/" | prepend: base_path }}" class="author__avatar" alt="{{ author.name }}">
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="author__content">
|
||||
<h3 class="author__name">{{ author.name }}</h3>
|
||||
{% if author.bio %}<p class="author__bio">{{ author.bio }}</p>{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="author__urls-wrapper">
|
||||
<button class="btn btn--inverse">{{ site.data.ui-text[site.locale].follow_label | remove: ":" | default: "Follow" }}</button>
|
||||
<ul class="author__urls social-icons">
|
||||
{% if author.location %}
|
||||
<li><i class="fa fa-fw fa-map-marker" aria-hidden="true"></i> {{ author.location }}</li>
|
||||
{% endif %}
|
||||
{% if author.uri %}
|
||||
<li><a href="{{ author.uri }}"><i class="fa fa-fw fa-chain" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].website_label | default: "Website" }}</a></li>
|
||||
{% endif %}
|
||||
{% if author.email %}
|
||||
<li><a href="mailto:{{ author.email }}"><i class="fa fa-fw fa-envelope-square" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].email_label | default: "Email" }}</a></li>
|
||||
{% endif %}
|
||||
{% if author.keybase %}
|
||||
<li><a href="https://keybase.io/{{ author.keybase }}"><i class="fa fa-fw fa-key" aria-hidden="true"></i> Keybase</a></li>
|
||||
{% endif %}
|
||||
{% if author.twitter %}
|
||||
<li><a href="https://twitter.com/{{ author.twitter }}"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
|
||||
{% endif %}
|
||||
{% if author.facebook %}
|
||||
<li><a href="https://www.facebook.com/{{ author.facebook }}"><i class="fa fa-fw fa-facebook-square" aria-hidden="true"></i> Facebook</a></li>
|
||||
{% endif %}
|
||||
{% if author.google_plus %}
|
||||
<li><a href="https://plus.google.com/+{{ author.google_plus }}"><i class="fa fa-fw fa-google-plus-square" aria-hidden="true"></i> Google+</a></li>
|
||||
{% endif %}
|
||||
{% if author.linkedin %}
|
||||
<li><a href="https://www.linkedin.com/in/{{ author.linkedin }}"><i class="fa fa-fw fa-linkedin-square" aria-hidden="true"></i> LinkedIn</a></li>
|
||||
{% endif %}
|
||||
{% if author.xing %}
|
||||
<li><a href="https://www.xing.com/profile/{{ author.xing }}"><i class="fa fa-fw fa-xing-square" aria-hidden="true"></i> XING</a></li>
|
||||
{% endif %}
|
||||
{% if author.instagram %}
|
||||
<li><a href="https://instagram.com/{{ author.instagram }}"><i class="fa fa-fw fa-instagram" aria-hidden="true"></i> Instagram</a></li>
|
||||
{% endif %}
|
||||
{% if author.tumblr %}
|
||||
<li><a href="https://{{ author.tumblr }}.tumblr.com"><i class="fa fa-fw fa-tumblr-square" aria-hidden="true"></i> Tumblr</a></li>
|
||||
{% endif %}
|
||||
{% if author.bitbucket %}
|
||||
<li><a href="https://bitbucket.org/{{ author.bitbucket }}"><i class="fa fa-fw fa-bitbucket" aria-hidden="true"></i> Bitbucket</a></li>
|
||||
{% endif %}
|
||||
{% if author.github %}
|
||||
<li><a href="https://github.com/{{ author.github }}"><i class="fa fa-fw fa-github" aria-hidden="true"></i> Github</a></li>
|
||||
{% endif %}
|
||||
{% if author.stackoverflow %}
|
||||
<li><a href="https://www.stackoverflow.com/users/{{ author.stackoverflow }}"><i class="fa fa-fw fa-stack-overflow" aria-hidden="true"></i> Stackoverflow</a></li>
|
||||
{% endif %}
|
||||
{% if author.lastfm %}
|
||||
<li><a href="https://last.fm/user/{{ author.lastfm }}"><i class="fa fa-fw fa-lastfm-square" aria-hidden="true"></i> Last.fm</a></li>
|
||||
{% endif %}
|
||||
{% if author.dribbble %}
|
||||
<li><a href="https://dribbble.com/{{ author.dribbble }}"><i class="fa fa-fw fa-dribbble" aria-hidden="true"></i> Dribbble</a></li>
|
||||
{% endif %}
|
||||
{% if author.pinterest %}
|
||||
<li><a href="https://www.pinterest.com/{{ author.pinterest }}"><i class="fa fa-fw fa-pinterest" aria-hidden="true"></i> Pinterest</a></li>
|
||||
{% endif %}
|
||||
{% if author.foursquare %}
|
||||
<li><a href="https://foursquare.com/{{ author.foursquare }}"><i class="fa fa-fw fa-foursquare" aria-hidden="true"></i> Foursquare</a></li>
|
||||
{% endif %}
|
||||
{% if author.steam %}
|
||||
<li><a href="https://steamcommunity.com/id/{{ author.steam }}"><i class="fa fa-fw fa-steam-square" aria-hidden="true"></i> Steam</a></li>
|
||||
{% endif %}
|
||||
{% if author.youtube %}
|
||||
<li><a href="https://www.youtube.com/user/{{ author.youtube }}"><i class="fa fa-fw fa-youtube-square" aria-hidden="true"></i> YouTube</a></li>
|
||||
{% endif %}
|
||||
{% if author.soundcloud %}
|
||||
<li><a href="https://soundcloud.com/{{ author.soundcloud }}"><i class="fa fa-fw fa-soundcloud" aria-hidden="true"></i> Soundcloud</a></li>
|
||||
{% endif %}
|
||||
{% if author.weibo %}
|
||||
<li><a href="https://www.weibo.com/{{ author.weibo }}"><i class="fa fa-fw fa-weibo" aria-hidden="true"></i> Weibo</a></li>
|
||||
{% endif %}
|
||||
{% if author.flickr %}
|
||||
<li><a href="https://www.flickr.com/{{ author.flickr }}"><i class="fa fa-fw fa-flickr" aria-hidden="true"></i> Flickr</a></li>
|
||||
{% endif %}
|
||||
{% if author.codepen %}
|
||||
<li><a href="https://codepen.io/{{ author.codepen }}"><i class="fa fa-fw fa-codepen" aria-hidden="true"></i> CodePen</a></li>
|
||||
{% endif %}
|
||||
{% if author.vine %}
|
||||
<li><a href="https://vine.co/u/{{ author.vine }}"><i class="fa fa-fw fa-vine" aria-hidden="true"></i> Vine</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
5
_includes/base_path
Normal file
5
_includes/base_path
Normal file
@ -0,0 +1,5 @@
|
||||
{% if site.url %}
|
||||
{% assign base_path = site.url | append: site.baseurl %}
|
||||
{% else %}
|
||||
{% assign base_path = site.github.url %}
|
||||
{% endif %}
|
41
_includes/breadcrumbs.html
Normal file
41
_includes/breadcrumbs.html
Normal file
@ -0,0 +1,41 @@
|
||||
{% include base_path %}
|
||||
|
||||
{% case site.categories.type %}
|
||||
{% when "liquid" %}
|
||||
{% assign path_type = "#" %}
|
||||
{% when "jekyll-archives" %}
|
||||
{% assign path_type = nil %}
|
||||
{% endcase %}
|
||||
|
||||
{% if page.collection != 'posts' %}
|
||||
{% assign path_type = nil %}
|
||||
{% assign crumb_path = '/' %}
|
||||
{% else %}
|
||||
{% assign crumb_path = site.categories.path %}
|
||||
{% endif %}
|
||||
|
||||
<nav class="breadcrumbs">
|
||||
<ol itemscope itemtype="http://schema.org/BreadcrumbList">
|
||||
{% assign crumbs = page.url | split: '/' %}
|
||||
{% assign i = 1 %}
|
||||
{% for crumb in crumbs offset: 1 %}
|
||||
{% if forloop.first %}
|
||||
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
|
||||
<a href="{{ base_path }}/" itemprop="item"><span itemprop="name">{{ site.data.ui-text[site.locale].breadcrumb_home_label | default: "Home" }}</span></a>
|
||||
<meta itemprop="position" content="{{ i }}" />
|
||||
</li>
|
||||
<span class="sep">{{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}</span>
|
||||
{% endif %}
|
||||
{% if forloop.last %}
|
||||
<li class="current">{{ page.title }}</li>
|
||||
{% else %}
|
||||
{% assign i = i | plus: 1 %}
|
||||
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
|
||||
<a href="{{ base_path }}{{ crumb | downcase | replace: '%20', '-' | prepend: path_type | prepend: crumb_path }}" itemprop="item"><span itemprop="name">{{ crumb | replace: '-', ' ' | replace: '%20', ' ' | capitalize }}</span></a>
|
||||
<meta itemprop="position" content="{{ i }}" />
|
||||
</li>
|
||||
<span class="sep">{{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}</span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ol>
|
||||
</nav>
|
3
_includes/browser-upgrade.html
Normal file
3
_includes/browser-upgrade.html
Normal file
@ -0,0 +1,3 @@
|
||||
<!--[if lt IE 9]>
|
||||
<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
|
||||
<![endif]-->
|
28
_includes/category-list.html
Normal file
28
_includes/category-list.html
Normal file
@ -0,0 +1,28 @@
|
||||
{% include base_path %}
|
||||
|
||||
{% case site.category_archive.type %}
|
||||
{% when "liquid" %}
|
||||
{% assign path_type = "#" %}
|
||||
{% when "jekyll-archives" %}
|
||||
{% assign path_type = nil %}
|
||||
{% endcase %}
|
||||
|
||||
{% if site.category_archive.path %}
|
||||
{% comment %}
|
||||
<!-- Sort alphabetically regardless of case e.g. a B c d E -->
|
||||
<!-- modified from http://www.codeofclimber.ru/2015/sorting-site-tags-in-jekyll/ -->
|
||||
{% endcomment %}
|
||||
{% capture page_categories %}{% for category in page.categories %}{{ category | downcase }}#{{ category }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}
|
||||
{% assign category_hashes = (page_categories | split: ',' | sort:0) %}
|
||||
|
||||
<p class="page__taxonomy">
|
||||
<strong><i class="fa fa-fw fa-folder-open" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].categories_label | default: "Categories:" }} </strong>
|
||||
<span itemprop="keywords">
|
||||
{% for hash in category_hashes %}
|
||||
{% assign keyValue = hash | split: '#' %}
|
||||
{% capture category_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %}
|
||||
<a href="{{ base_path }}{{ category_word | slugify | prepend: path_type | prepend: site.category_archive.path }}" class="page__taxonomy-item" rel="tag">{{ category_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %}
|
||||
{% endfor %}
|
||||
</span>
|
||||
</p>
|
||||
{% endif %}
|
22
_includes/comment.html
Normal file
22
_includes/comment.html
Normal file
@ -0,0 +1,22 @@
|
||||
<article id="comment{{ include.index }}" class="js-comment comment" itemprop="comment" itemscope itemtype="http://schema.org/Comment">
|
||||
<div class="comment__avatar-wrapper">
|
||||
<img class="comment__avatar" src="https://www.gravatar.com/avatar/{{ include.email }}?d=mm&s=80">
|
||||
</div>
|
||||
<div class="comment__content-wrapper">
|
||||
<h3 class="comment__author" itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||||
{% unless include.url == blank %}
|
||||
<span itemprop="name"><a rel="external nofollow" itemprop="url" href="{{ include.url }}">{{ include.name }}</a></span>
|
||||
{% else %}
|
||||
<span itemprop="name">{{ include.name }}</span>
|
||||
{% endunless %}
|
||||
</h3>
|
||||
<p class="comment__date">
|
||||
{% if include.date %}
|
||||
{% if include.index %}<a href="#comment{{ include.index }}" itemprop="url">{% endif %}
|
||||
<time datetime="{{ include.date | date_to_xmlschema }}" itemprop="datePublished">{{ include.date | date: "%B %d, %Y at %I:%M %p" }}</time>
|
||||
{% if include.index %}</a>{% endif %}
|
||||
{% endif %}
|
||||
</p>
|
||||
<div itemprop="text">{{ include.message | markdownify }}</div>
|
||||
</div>
|
||||
</article>
|
3
_includes/comments-providers/custom.html
Normal file
3
_includes/comments-providers/custom.html
Normal file
@ -0,0 +1,3 @@
|
||||
<!-- start custom comments snippet -->
|
||||
|
||||
<!-- end custom comments snippet -->
|
14
_includes/comments-providers/discourse.html
Normal file
14
_includes/comments-providers/discourse.html
Normal file
@ -0,0 +1,14 @@
|
||||
{% if site.comments.discourse.server %}
|
||||
{% include base_path %}
|
||||
{% capture canonical %}{{ base_path }}{% if site.permalink contains '.html' %}{{ page.url }}{% else %}{{ page.url | remove:'index.html' | strip_slash }}{% endif %}{% endcapture %}
|
||||
<script type="text/javascript">
|
||||
DiscourseEmbed = { discourseUrl: '//{{ site.comments.discourse.server }}/',
|
||||
discourseEmbedUrl: '{{ canonical }}' };
|
||||
(function () {
|
||||
var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
|
||||
d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
|
||||
})();
|
||||
</script>
|
||||
<noscript>Please enable JavaScript to view the comments powered by [Discourse](http://forum.beta-europe.org/c/beta/website).</a></noscript>
|
||||
{% endif %}
|
22
_includes/comments-providers/disqus.html
Normal file
22
_includes/comments-providers/disqus.html
Normal file
@ -0,0 +1,22 @@
|
||||
{% if site.comments.disqus.shortname %}
|
||||
<script type="text/javascript">
|
||||
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
|
||||
var disqus_shortname = '{{ site.comments.disqus.shortname }}';
|
||||
|
||||
/* * * DON'T EDIT BELOW THIS LINE * * */
|
||||
(function() {
|
||||
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
|
||||
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
|
||||
})();
|
||||
|
||||
/* * * DON'T EDIT BELOW THIS LINE * * */
|
||||
(function () {
|
||||
var s = document.createElement('script'); s.async = true;
|
||||
s.type = 'text/javascript';
|
||||
s.src = '//' + disqus_shortname + '.disqus.com/count.js';
|
||||
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
|
||||
}());
|
||||
</script>
|
||||
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
|
||||
{% endif %}
|
8
_includes/comments-providers/facebook.html
Normal file
8
_includes/comments-providers/facebook.html
Normal file
@ -0,0 +1,8 @@
|
||||
<div id="fb-root"></div>
|
||||
<script>(function(d, s, id) {
|
||||
var js, fjs = d.getElementsByTagName(s)[0];
|
||||
if (d.getElementById(id)) return;
|
||||
js = d.createElement(s); js.id = id;
|
||||
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.5{% if site.comments.facebook.appid %}&appId={{ site.comments.facebook.appid }}{% endif %}";
|
||||
fjs.parentNode.insertBefore(js, fjs);
|
||||
}(document, 'script', 'facebook-jssdk'));</script>
|
2
_includes/comments-providers/google-plus.html
Normal file
2
_includes/comments-providers/google-plus.html
Normal file
@ -0,0 +1,2 @@
|
||||
<script async type="text/javascript" src="//apis.google.com/js/plusone.js?callback=gpcb"></script>
|
||||
<noscript>Please enable JavaScript to view the <a href="https://plus.google.com/">comments powered by Google+.</a></noscript>
|
18
_includes/comments-providers/scripts.html
Normal file
18
_includes/comments-providers/scripts.html
Normal file
@ -0,0 +1,18 @@
|
||||
{% if site.comments.provider and page.comments %}
|
||||
|
||||
{% case site.comments.provider %}
|
||||
{% when "disqus" %}
|
||||
{% include /comments-providers/disqus.html %}
|
||||
{% when "discourse" %}
|
||||
{% include /comments-providers/discourse.html %}
|
||||
{% when "facebook" %}
|
||||
{% include /comments-providers/facebook.html %}
|
||||
{% when "google-plus" %}
|
||||
{% include /comments-providers/google-plus.html %}
|
||||
{% when "staticman" %}
|
||||
{% include /comments-providers/staticman.html %}
|
||||
{% when "custom" %}
|
||||
{% include /comments-providers/custom.html %}
|
||||
{% endcase %}
|
||||
|
||||
{% endif %}
|
42
_includes/comments-providers/staticman.html
Normal file
42
_includes/comments-providers/staticman.html
Normal file
@ -0,0 +1,42 @@
|
||||
{% if site.repository and site.staticman.branch %}
|
||||
<script>
|
||||
(function ($) {
|
||||
var $comments = $('.js-comments');
|
||||
|
||||
$('#new_comment').submit(function () {
|
||||
var form = this;
|
||||
|
||||
$(form).addClass('disabled');
|
||||
$('#comment-form-submit').html('<i class="fa fa-spinner fa-spin fa-fw"></i> {{ site.data.ui-text[site.locale].loading_label | default: "Loading..." }}');
|
||||
|
||||
$.ajax({
|
||||
type: $(this).attr('method'),
|
||||
url: $(this).attr('action'),
|
||||
data: $(this).serialize(),
|
||||
contentType: 'application/x-www-form-urlencoded',
|
||||
success: function (data) {
|
||||
$('#comment-form-submit').html('{{ site.data.ui-text[site.locale].comment_btn_submitted | default: "Submitted" }}');
|
||||
$('.page__comments-form .js-notice').removeClass('notice--danger');
|
||||
$('.page__comments-form .js-notice').addClass('notice--success');
|
||||
showAlert('{{ site.data.ui-text[site.locale].comment_success_msg | default: "Thanks for your comment! It will show on the site once it has been approved." }}');
|
||||
},
|
||||
error: function (err) {
|
||||
console.log(err);
|
||||
$('#comment-form-submit').html('{{ site.data.ui-text[site.locale].comment_btn_submit | default: "Submit Comment" }}');
|
||||
$('.page__comments-form .js-notice').removeClass('notice--success');
|
||||
$('.page__comments-form .js-notice').addClass('notice--danger');
|
||||
showAlert('{{ site.data.ui-text[site.locale].comment_error_msg | default: "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again." }}');
|
||||
$(form).removeClass('disabled');
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
function showAlert(message) {
|
||||
$('.page__comments-form .js-notice').removeClass('hidden');
|
||||
$('.page__comments-form .js-notice-text').html(message);
|
||||
}
|
||||
})(jQuery);
|
||||
</script>
|
||||
{% endif %}
|
82
_includes/comments.html
Normal file
82
_includes/comments.html
Normal file
@ -0,0 +1,82 @@
|
||||
{% include base_path %}
|
||||
|
||||
<div class="page__comments">
|
||||
{% capture comments_label %}{{ site.data.ui-text[site.locale].comments_label | default: "Comments" }}{% endcapture %}
|
||||
{% case site.comments.provider %}
|
||||
{% when "disqus" %}
|
||||
<h4 class="page__comments-title">{{ comments_label }}</h4>
|
||||
<section id="disqus_thread"></section>
|
||||
{% when "facebook" %}
|
||||
<h4 class="page__comments-title">{{ comments_label }}</h4>
|
||||
<section class="fb-comments" data-href="{{ base_path }}{{ page.url }}" data-mobile="true" data-num-posts="{{ site.comments.facebook.num_posts | default: 5 }}" data-width="100%" data-colorscheme="{{ site.comments.facebook.colorscheme | default: 'light' }}"></section>
|
||||
{% when "google-plus" %}
|
||||
<h4 class="page__comments-title">{{ comments_label }}</h4>
|
||||
<section class="g-comments" data-href="{{ base_path }}{{ page.url }}" data-first_party_property="BLOGGER" data-view_type="FILTERED_POSTMOD">Loading Google+ Comments ...</section>
|
||||
{% when "staticman" %}
|
||||
<section id="comments">
|
||||
{% if site.repository and site.staticman.branch %}
|
||||
<!-- Start static comments -->
|
||||
<div class="js-comments">
|
||||
{% if site.data.comments[page.slug] %}
|
||||
<h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_title | default: "Comments" }}</h4>
|
||||
{% assign comments = site.data.comments[page.slug] | sort %}
|
||||
|
||||
{% for comment in comments %}
|
||||
{% assign email = comment[1].email %}
|
||||
{% assign name = comment[1].name %}
|
||||
{% assign url = comment[1].url %}
|
||||
{% assign date = comment[1].date %}
|
||||
{% assign message = comment[1].message %}
|
||||
{% include comment.html index=forloop.index email=email name=name url=url date=date message=message %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
<!-- End static comments -->
|
||||
|
||||
<!-- Start new comment form -->
|
||||
<h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_label | default: "Leave a Comment" }}</h4>
|
||||
<p class="small">{{ site.data.ui-text[site.locale].comment_form_info | default: "Your email address will not be published. Required fields are marked" }} <span class="required">*</span></p>
|
||||
<form id="new_comment" class="page__comments-form js-form form" method="post" action="https://api.staticman.net/v1/entry/{{ site.repository }}/{{ site.staticman.branch }}">
|
||||
<div class="form__spinner">
|
||||
<i class="fa fa-spinner fa-spin fa-3x fa-fw"></i>
|
||||
<span class="sr-only">{{ site.data.ui-text[site.locale].loading_label | default: "Loading..." }}</span>
|
||||
</div>
|
||||
|
||||
<fieldset>
|
||||
<label for="comment-form-message">{{ site.data.ui-text[site.locale].comment_form_comment_label | default: "Comment" }} <small class="required">*</small></label>
|
||||
<textarea type="text" rows="3" id="comment-form-message" name="fields[message]" tabindex="1"></textarea>
|
||||
<div class="small help-block"><a href="https://daringfireball.net/projects/markdown/">{{ site.data.ui-text[site.locale].comment_form_md_info | default: "Markdown is supported." }}</a></div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<label for="comment-form-name">{{ site.data.ui-text[site.locale].comment_form_name_label | default: "Name" }} <small class="required">*</small></label>
|
||||
<input type="text" id="comment-form-name" name="fields[name]" tabindex="2" />
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<label for="comment-form-email">{{ site.data.ui-text[site.locale].comment_form_email_label | default: "Email address" }} <small class="required">*</small></label>
|
||||
<input type="email" id="comment-form-email" name="fields[email]" tabindex="3" />
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<label for="comment-form-url">{{ site.data.ui-text[site.locale].comment_form_website_label | default: "Website (optional)" }}</label>
|
||||
<input type="url" id="comment-form-url" name="fields[url]" tabindex="4"/>
|
||||
</fieldset>
|
||||
<fieldset class="hidden" style="display: none;">
|
||||
<input type="hidden" name="options[slug]" value="{{ page.slug }}">
|
||||
<label for="comment-form-location">Not used. Leave blank if you are a human.</label>
|
||||
<input type="text" id="comment-form-location" name="fields[hidden]" autocomplete="off"/>
|
||||
</fieldset>
|
||||
<!-- Start comment form alert messaging -->
|
||||
<p class="hidden js-notice">
|
||||
<strong class="js-notice-text"></strong>
|
||||
</p>
|
||||
<!-- End comment form alert messaging -->
|
||||
<fieldset>
|
||||
<button type="submit" id="comment-form-submit" tabindex="5" class="btn btn--large">{{ site.data.ui-text[site.locale].comment_btn_submit | default: "Submit Comment" }}</button>
|
||||
</fieldset>
|
||||
</form>
|
||||
<!-- End new comment form -->
|
||||
{% endif %}
|
||||
</section>
|
||||
{% when "custom" %}
|
||||
<section id="comments"></section>
|
||||
{% endcase %}
|
||||
</div>
|
52
_includes/feature_row
Normal file
52
_includes/feature_row
Normal file
@ -0,0 +1,52 @@
|
||||
{% include base_path %}
|
||||
|
||||
{% if include.id %}
|
||||
{% assign feature_row = page.[include.id] %}
|
||||
{% else %}
|
||||
{% assign feature_row = page.feature_row %}
|
||||
{% endif %}
|
||||
|
||||
<div class="feature__wrapper">
|
||||
|
||||
{% for f in feature_row %}
|
||||
|
||||
{% if f.url contains "://" %}
|
||||
{% capture f_url %}{{ f.url }}{% endcapture %}
|
||||
{% else %}
|
||||
{% capture f_url %}{{ f.url | prepend: base_path }}{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
<div class="feature__item{% if include.type %}--{{ include.type }}{% endif %}">
|
||||
<div class="archive__item">
|
||||
{% if f.image_path %}
|
||||
<div class="archive__item-teaser">
|
||||
<img src=
|
||||
{% if f.image_path contains "://" %}
|
||||
"{{ f.image_path }}"
|
||||
{% else %}
|
||||
"{{ f.image_path | prepend: "/images/" | prepend: base_path }}"
|
||||
{% endif %}
|
||||
alt="{% if f.alt %}{{ f.alt }}{% endif %}">
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="archive__item-body">
|
||||
{% if f.title %}
|
||||
<h2 class="archive__item-title">{{ f.title }}</h2>
|
||||
{% endif %}
|
||||
|
||||
{% if f.excerpt %}
|
||||
<div class="archive__item-excerpt">
|
||||
{{ f.excerpt | markdownify }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if f.url %}
|
||||
<p><a href="{{ f_url }}" class="btn {{ f.btn_class }}">{{ f.btn_label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}</a></p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
@ -1,38 +1,24 @@
|
||||
<footer class="site-footer">
|
||||
{% include base_path %}
|
||||
|
||||
<div class="wrapper">
|
||||
<div class="page__footer-follow">
|
||||
<ul class="social-icons">
|
||||
{% if site.data.ui-text[site.locale].follow_label %}
|
||||
<li><strong>{{ site.data.ui-text[site.locale].follow_label }}</strong></li>
|
||||
{% endif %}
|
||||
{% if site.twitter.username %}
|
||||
<li><a href="https://twitter.com/{{ site.twitter.username }}"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
|
||||
{% endif %}
|
||||
{% if site.facebook.username %}
|
||||
<li><a href="https://facebook.com/{{ site.facebook.username }}"><i class="fa fa-fw fa-facebook-square" aria-hidden="true"></i> Facebook</a></li>
|
||||
{% endif %}
|
||||
{% if site.author.github %}
|
||||
<li><a href="http://github.com/{{ site.author.github }}"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
|
||||
{% endif %}
|
||||
{% if site.author.bitbucket %}
|
||||
<li><a href="http://bitbucket.org/{{ site.author.bitbucket }}"><i class="fa fa-fw fa-bitbucket" aria-hidden="true"></i> Bitbucket</a></li>
|
||||
{% endif %}
|
||||
<li><a href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ base_path }}/feed.xml{% endif %}"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].feed_label | default: "Feed" }}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<h2 class="footer-heading">{{ site.title }}</h2>
|
||||
|
||||
<div class="footer-col-wrapper">
|
||||
<div class="footer-col footer-col-1">
|
||||
<ul class="contact-list">
|
||||
<li>{{ site.title }}</li>
|
||||
<li><a href="mailto:{{ site.email }}">{{ site.email }}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="footer-col footer-col-2">
|
||||
<ul class="social-media-list">
|
||||
{% if site.github_username %}
|
||||
<li>
|
||||
{% include icon-github.html username=site.github_username %}
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if site.twitter_username %}
|
||||
<li>
|
||||
{% include icon-twitter.html username=site.twitter_username %}
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="footer-col footer-col-3">
|
||||
<p>{{ site.description }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
<div class="page__footer-copyright">© {{ site.time | date: '%Y' }} {{ site.name | default: site.title }}. {{ site.data.ui-text[site.locale].powered_by | default: "Powered by" }} <a href="http://jekyllrb.com" rel="nofollow">Jekyll</a> & <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div>
|
3
_includes/footer/custom.html
Normal file
3
_includes/footer/custom.html
Normal file
@ -0,0 +1,3 @@
|
||||
<!-- start custom footer snippets -->
|
||||
|
||||
<!-- end custom footer snippets -->
|
49
_includes/gallery
Normal file
49
_includes/gallery
Normal file
@ -0,0 +1,49 @@
|
||||
{% include base_path %}
|
||||
|
||||
{% if include.id %}
|
||||
{% assign gallery = page.[include.id] %}
|
||||
{% else %}
|
||||
{% assign gallery = page.gallery %}
|
||||
{% endif %}
|
||||
|
||||
{% if gallery.size == 2 %}
|
||||
{% assign gallery_layout = 'half' %}
|
||||
{% elsif gallery.size >= 3 %}
|
||||
{% assign gallery_layout = 'third' %}
|
||||
{% else %}
|
||||
{% assign gallery_layout = '' %}
|
||||
{% endif %}
|
||||
|
||||
<figure class="{{ gallery_layout }} {{ include.class }}">
|
||||
{% for img in gallery %}
|
||||
{% if img.url %}
|
||||
<a href=
|
||||
{% if img.url contains "://" %}
|
||||
"{{ img.url }}"
|
||||
{% else %}
|
||||
"{{ img.url | prepend: "/images/" | prepend: base_path }}"
|
||||
{% endif %}
|
||||
{% if img.title %}title="{{ img.title }}"{% endif %}
|
||||
>
|
||||
<img src=
|
||||
{% if img.image_path contains "://" %}
|
||||
"{{ img.image_path }}"
|
||||
{% else %}
|
||||
"{{ img.image_path | prepend: "/images/" | prepend: base_path }}"
|
||||
{% endif %}
|
||||
alt="{% if img.alt %}{{ img.alt }}{% endif %}">
|
||||
</a>
|
||||
{% else %}
|
||||
<img src=
|
||||
{% if img.image_path contains "://" %}
|
||||
"{{ img.image_path }}"
|
||||
{% else %}
|
||||
"{{ img.image_path | prepend: "/images/" | prepend: base_path }}"
|
||||
{% endif %}
|
||||
alt="{% if img.alt %}{{ img.alt }}{% endif %}">
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if include.caption %}
|
||||
<figcaption>{{ include.caption | markdownify | remove: "<p>" | remove: "</p>" }}</figcaption>
|
||||
{% endif %}
|
||||
</figure>
|
47
_includes/group-by-array
Normal file
47
_includes/group-by-array
Normal file
@ -0,0 +1,47 @@
|
||||
<!--
|
||||
# Jekyll Group-By-Array 0.1.0
|
||||
# https://github.com/mushishi78/jekyll-group-by-array
|
||||
# © 2015 Max White <mushishi78@gmail.com>
|
||||
# MIT License
|
||||
-->
|
||||
|
||||
<!-- Initialize -->
|
||||
{% assign __empty_array = '' | split: ',' %}
|
||||
{% assign group_names = __empty_array %}
|
||||
{% assign group_items = __empty_array %}
|
||||
|
||||
<!-- Map -->
|
||||
{% assign __names = include.collection | map: include.field %}
|
||||
|
||||
<!-- Flatten -->
|
||||
{% assign __names = __names | join: ',' | join: ',' | split: ',' %}
|
||||
|
||||
<!-- Uniq -->
|
||||
{% assign __names = __names | sort %}
|
||||
{% for name in __names | sort %}
|
||||
|
||||
<!-- If not equal to previous then it must be unique as sorted -->
|
||||
{% unless name == previous %}
|
||||
|
||||
<!-- Push to group_names -->
|
||||
{% assign group_names = group_names | push: name %}
|
||||
{% endunless %}
|
||||
|
||||
{% assign previous = name %}
|
||||
{% endfor %}
|
||||
|
||||
|
||||
<!-- group_items -->
|
||||
{% for name in group_names %}
|
||||
|
||||
<!-- Collect if contains -->
|
||||
{% assign __item = __empty_array %}
|
||||
{% for __element in include.collection %}
|
||||
{% if __element[include.field] contains name %}
|
||||
{% assign __item = __item | push: __element %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
<!-- Push to group_items -->
|
||||
{% assign group_items = group_items | push: __item %}
|
||||
{% endfor %}
|
@ -1,12 +1,22 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
{% include base_path %}
|
||||
|
||||
<title>{% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}</title>
|
||||
<meta name="description" content="{% if page.excerpt %}{{ page.excerpt | strip_html | strip_newlines | truncate: 160 }}{% else %}{{ site.description }}{% endif %}">
|
||||
<meta charset="utf-8">
|
||||
|
||||
<link rel="stylesheet" href="{{ "/css/main.css" | prepend: site.baseurl }}">
|
||||
<link rel="canonical" href="{{ page.url | replace:'index.html','' | prepend: site.baseurl | prepend: site.url }}">
|
||||
<link rel="alternate" type="application/rss+xml" title="{{ site.title }}" href="{{ "/feed.xml" | prepend: site.baseurl | prepend: site.url }}">
|
||||
</head>
|
||||
{% include seo.html %}
|
||||
|
||||
<link href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ base_path }}/feed.xml{% endif %}" type="application/atom+xml" rel="alternate" title="{{ site.title }} Feed">
|
||||
|
||||
<!-- http://t.co/dKP3o1e -->
|
||||
<meta name="HandheldFriendly" content="True">
|
||||
<meta name="MobileOptimized" content="320">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<script>
|
||||
document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
|
||||
</script>
|
||||
|
||||
<!-- For all browsers -->
|
||||
<link rel="stylesheet" href="{{ base_path }}/assets/css/main.css">
|
||||
<link rel="stylesheet" href="{{ base_path }}/assets/icons/octicons/octicons.min.css">
|
||||
|
||||
<meta http-equiv="cleartype" content="on">
|
||||
|
5
_includes/head/custom.html
Normal file
5
_includes/head/custom.html
Normal file
@ -0,0 +1,5 @@
|
||||
<!-- start custom head snippets -->
|
||||
|
||||
<!-- insert favicons. use http://realfavicongenerator.net/ -->
|
||||
|
||||
<!-- end custom head snippets -->
|
@ -1,27 +0,0 @@
|
||||
<header class="site-header">
|
||||
|
||||
<div class="wrapper">
|
||||
|
||||
<a class="site-title" href="{{ site.baseurl }}/">{{ site.title }}</a>
|
||||
|
||||
<nav class="site-nav">
|
||||
<a href="#" class="menu-icon">
|
||||
<svg viewBox="0 0 18 15">
|
||||
<path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"/>
|
||||
<path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"/>
|
||||
<path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"/>
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
<div class="trigger">
|
||||
{% for my_page in site.pages %}
|
||||
{% if my_page.title %}
|
||||
<a class="page-link" href="{{ my_page.url | prepend: site.baseurl }}">{{ my_page.title }}</a>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
@ -1 +0,0 @@
|
||||
<a href="https://github.com/{{ include.username }}"><span class="icon icon--github">{% include icon-github.svg %}</span><span class="username">{{ include.username }}</span></a>
|
@ -1 +0,0 @@
|
||||
<svg viewBox="0 0 16 16"><path fill="#828282" d="M7.999,0.431c-4.285,0-7.76,3.474-7.76,7.761 c0,3.428,2.223,6.337,5.307,7.363c0.388,0.071,0.53-0.168,0.53-0.374c0-0.184-0.007-0.672-0.01-1.32 c-2.159,0.469-2.614-1.04-2.614-1.04c-0.353-0.896-0.862-1.135-0.862-1.135c-0.705-0.481,0.053-0.472,0.053-0.472 c0.779,0.055,1.189,0.8,1.189,0.8c0.692,1.186,1.816,0.843,2.258,0.645c0.071-0.502,0.271-0.843,0.493-1.037 C4.86,11.425,3.049,10.76,3.049,7.786c0-0.847,0.302-1.54,0.799-2.082C3.768,5.507,3.501,4.718,3.924,3.65 c0,0,0.652-0.209,2.134,0.796C6.677,4.273,7.34,4.187,8,4.184c0.659,0.003,1.323,0.089,1.943,0.261 c1.482-1.004,2.132-0.796,2.132-0.796c0.423,1.068,0.157,1.857,0.077,2.054c0.497,0.542,0.798,1.235,0.798,2.082 c0,2.981-1.814,3.637-3.543,3.829c0.279,0.24,0.527,0.713,0.527,1.437c0,1.037-0.01,1.874-0.01,2.129 c0,0.208,0.14,0.449,0.534,0.373c3.081-1.028,5.302-3.935,5.302-7.362C15.76,3.906,12.285,0.431,7.999,0.431z"/></svg>
|
Before Width: | Height: | Size: 926 B |
@ -1 +0,0 @@
|
||||
<a href="https://twitter.com/{{ include.username }}"><span class="icon icon--twitter">{% include icon-twitter.svg %}</span><span class="username">{{ include.username }}</span></a>
|
@ -1 +0,0 @@
|
||||
<svg viewBox="0 0 16 16"><path fill="#828282" d="M15.969,3.058c-0.586,0.26-1.217,0.436-1.878,0.515c0.675-0.405,1.194-1.045,1.438-1.809c-0.632,0.375-1.332,0.647-2.076,0.793c-0.596-0.636-1.446-1.033-2.387-1.033c-1.806,0-3.27,1.464-3.27,3.27 c0,0.256,0.029,0.506,0.085,0.745C5.163,5.404,2.753,4.102,1.14,2.124C0.859,2.607,0.698,3.168,0.698,3.767 c0,1.134,0.577,2.135,1.455,2.722C1.616,6.472,1.112,6.325,0.671,6.08c0,0.014,0,0.027,0,0.041c0,1.584,1.127,2.906,2.623,3.206 C3.02,9.402,2.731,9.442,2.433,9.442c-0.211,0-0.416-0.021-0.615-0.059c0.416,1.299,1.624,2.245,3.055,2.271 c-1.119,0.877-2.529,1.4-4.061,1.4c-0.264,0-0.524-0.015-0.78-0.046c1.447,0.928,3.166,1.469,5.013,1.469 c6.015,0,9.304-4.983,9.304-9.304c0-0.142-0.003-0.283-0.009-0.423C14.976,4.29,15.531,3.714,15.969,3.058z"/></svg>
|
Before Width: | Height: | Size: 787 B |
23
_includes/masthead.html
Normal file
23
_includes/masthead.html
Normal file
@ -0,0 +1,23 @@
|
||||
{% include base_path %}
|
||||
|
||||
<div class="masthead">
|
||||
<div class="masthead__inner-wrap">
|
||||
<div class="masthead__menu">
|
||||
<nav id="site-nav" class="greedy-nav">
|
||||
<button><div class="navicon"></div></button>
|
||||
<ul class="visible-links">
|
||||
<li class="masthead__menu-item masthead__menu-item--lg"><a href="{{ base_path }}/">{{ site.title }}</a></li>
|
||||
{% for link in site.data.navigation.main %}
|
||||
{% if link.url contains 'http' %}
|
||||
{% assign domain = '' %}
|
||||
{% else %}
|
||||
{% assign domain = base_path %}
|
||||
{% endif %}
|
||||
<li class="masthead__menu-item"><a href="{{ domain }}{{ link.url }}">{{ link.title }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<ul class="hidden-links hidden"></ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
46
_includes/nav_list
Normal file
46
_includes/nav_list
Normal file
@ -0,0 +1,46 @@
|
||||
{% include base_path %}
|
||||
{% assign navigation = site.data.navigation[include.nav] %}
|
||||
|
||||
<nav class="nav__list">
|
||||
{% if page.sidebar.title %}<header><h4 class="nav__title" style="padding: 0;">{{ page.sidebar.title }}</h4></header>{% endif %}
|
||||
<ul>
|
||||
{% for nav in navigation %}
|
||||
<li>
|
||||
{% if nav.url %}
|
||||
{% comment %}internal/external URL check{% endcomment %}
|
||||
{% if nav.url contains "://" %}
|
||||
{% assign domain = "" %}
|
||||
{% else %}
|
||||
{% assign domain = base_path %}
|
||||
{% endif %}
|
||||
|
||||
<a href="{{ domain }}{{ nav.url }}"><span class="nav__sub-title">{{ nav.title }}</span></a>
|
||||
{% else %}
|
||||
<span class="nav__sub-title">{{ nav.title }}</span>
|
||||
{% endif %}
|
||||
|
||||
{% if nav.children != null %}
|
||||
<ul>
|
||||
{% for child in nav.children %}
|
||||
{% comment %}internal/external URL check{% endcomment %}
|
||||
{% if child.url contains "://" %}
|
||||
{% assign domain = "" %}
|
||||
{% else %}
|
||||
{% assign domain = base_path %}
|
||||
{% endif %}
|
||||
|
||||
{% comment %}set "active" class on current page{% endcomment %}
|
||||
{% if child.url == page.url %}
|
||||
{% assign active = "active" %}
|
||||
{% else %}
|
||||
{% assign active = "" %}
|
||||
{% endif %}
|
||||
|
||||
<li><a href="{{ domain }}{{ child.url }}" class="{{ active }}">{{ child.title }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</nav>
|
55
_includes/page__hero.html
Normal file
55
_includes/page__hero.html
Normal file
@ -0,0 +1,55 @@
|
||||
{% include base_path %}
|
||||
|
||||
{% if page.header.image contains "://" %}
|
||||
{% capture img_path %}{{ page.header.image }}{% endcapture %}
|
||||
{% else %}
|
||||
{% capture img_path %}{{ page.header.image | prepend: "/images/" | prepend: base_path }}{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.header.cta_url contains "://" %}
|
||||
{% capture cta_path %}{{ page.header.cta_url }}{% endcapture %}
|
||||
{% else %}
|
||||
{% capture cta_path %}{{ page.header.cta_url | prepend: base_path }}{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.header.overlay_image contains "://" %}
|
||||
{% capture overlay_img_path %}{{ page.header.overlay_image }}{% endcapture %}
|
||||
{% elsif page.header.overlay_image %}
|
||||
{% capture overlay_img_path %}{{ page.header.overlay_image | prepend: "/images/" | prepend: base_path }}{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.header.overlay_filter contains "rgba" %}
|
||||
{% capture overlay_filter %}{{ page.header.overlay_filter }}{% endcapture %}
|
||||
{% elsif page.header.overlay_filter %}
|
||||
{% capture overlay_filter %}rgba(0, 0, 0, {{ page.header.overlay_filter }}){% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
<div class="page__hero{% if page.header.overlay_color or page.header.overlay_image %}--overlay{% endif %}"
|
||||
style="{% if page.header.overlay_color %}background-color: {{ page.header.overlay_color | default: 'transparent' }};{% endif %} {% if overlay_img_path %}background-image: {% if overlay_filter %}linear-gradient({{ overlay_filter }}, {{ overlay_filter }}), {% endif %}url('{{ overlay_img_path }}');{% endif %}"
|
||||
>
|
||||
{% if page.header.overlay_color or page.header.overlay_image %}
|
||||
<div class="wrapper">
|
||||
<h1 class="page__title" itemprop="headline">
|
||||
{% if paginator %}
|
||||
{{ site.title }}{% unless paginator.page == 1 %} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}
|
||||
{% else %}
|
||||
{{ page.title | default: site.title | markdownify | remove: "<p>" | remove: "</p>" }}
|
||||
{% endif %}
|
||||
</h1>
|
||||
{% if page.excerpt %}
|
||||
<p class="page__lead">{{ page.excerpt | markdownify | remove: "<p>" | remove: "</p>" }}</p>
|
||||
{% endif %}
|
||||
{% if site.read_time and page.read_time %}
|
||||
<p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> {% include read-time.html %}</p>
|
||||
{% endif %}
|
||||
{% if page.header.cta_url %}
|
||||
<p><a href="{{ cta_path }}" class="btn btn--light-outline btn--large">{{ page.header.cta_label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}</a></p>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% else %}
|
||||
<img src="{{ img_path }}" alt="{{ page.title }}" class="page__hero-image">
|
||||
{% endif %}
|
||||
{% if page.header.caption %}
|
||||
<span class="page__hero-caption">{{ page.header.caption | markdownify | remove: "<p>" | remove: "</p>" }}</span>
|
||||
{% endif %}
|
||||
</div>
|
9
_includes/page__taxonomy.html
Normal file
9
_includes/page__taxonomy.html
Normal file
@ -0,0 +1,9 @@
|
||||
{% include base_path %}
|
||||
|
||||
{% if site.tag_archive.type and page.tags[0] %}
|
||||
{% include tag-list.html %}
|
||||
{% endif %}
|
||||
|
||||
{% if site.category_archive.type and page.categories[0] %}
|
||||
{% include category-list.html %}
|
||||
{% endif %}
|
70
_includes/paginator.html
Normal file
70
_includes/paginator.html
Normal file
@ -0,0 +1,70 @@
|
||||
{% include base_path %}
|
||||
|
||||
{% if paginator.total_pages > 1 %}
|
||||
<nav class="pagination">
|
||||
<ul>
|
||||
{% comment %} Link for previous page {% endcomment %}
|
||||
{% if paginator.previous_page %}
|
||||
{% if paginator.previous_page == 1 %}
|
||||
<li><a href="{{ base_path }}/">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li>
|
||||
{% else %}
|
||||
<li><a href="{{ base_path }}/page{{ paginator.previous_page }}/">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</span></a></li>
|
||||
{% endif %}
|
||||
|
||||
{% comment %} First page {% endcomment %}
|
||||
{% if paginator.page == 1 %}
|
||||
<li><a href="#" class="disabled current">1</a></li>
|
||||
{% else %}
|
||||
<li><a href="{{ base_path }}/">1</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% assign page_start = 2 %}
|
||||
{% if paginator.page > 4 %}
|
||||
{% assign page_start = paginator.page | minus: 2 %}
|
||||
{% comment %} Ellipsis for truncated links {% endcomment %}
|
||||
<li><a href="#" class="disabled">…</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% assign page_end = paginator.total_pages | minus: 1 %}
|
||||
{% assign pages_to_end = paginator.total_pages | minus: paginator.page %}
|
||||
{% if pages_to_end > 4 %}
|
||||
{% assign page_end = paginator.page | plus: 2 %}
|
||||
{% endif %}
|
||||
|
||||
{% for index in (page_start..page_end) %}
|
||||
{% if index == paginator.page %}
|
||||
<li><a href="{{ base_path }}/page{{ index }}/" class="disabled current">{{ index }}</a></li>
|
||||
{% else %}
|
||||
{% comment %} Distance from current page and this link {% endcomment %}
|
||||
{% assign dist = paginator.page | minus: index %}
|
||||
{% if dist < 0 %}
|
||||
{% comment %} Distance must be a positive value {% endcomment %}
|
||||
{% assign dist = 0 | minus: dist %}
|
||||
{% endif %}
|
||||
<li><a href="{{ base_path }}/page{{ index }}/">{{ index }}</a></li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% comment %} Ellipsis for truncated links {% endcomment %}
|
||||
{% if pages_to_end > 3 %}
|
||||
<li><a href="#" class="disabled">…</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% if paginator.page == paginator.total_pages %}
|
||||
<li><a href="#" class="disabled current">{{ paginator.page }}</a></li>
|
||||
{% else %}
|
||||
<li><a href="{{ base_path }}/page{{ paginator.total_pages }}/">{{ paginator.total_pages }}</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% comment %} Link next page {% endcomment %}
|
||||
{% if paginator.next_page %}
|
||||
<li><a href="{{ base_path }}/page{{ paginator.next_page }}/">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a></li>
|
||||
{% else %}
|
||||
<li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</span></a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</nav>
|
||||
{% endif %}
|
16
_includes/post_pagination.html
Normal file
16
_includes/post_pagination.html
Normal file
@ -0,0 +1,16 @@
|
||||
{% include base_path %}
|
||||
|
||||
{% if page.previous or page.next %}
|
||||
<nav class="pagination">
|
||||
{% if page.previous %}
|
||||
<a href="{{ base_path }}{{ page.previous.url }}" class="pagination--pager" title="{{ page.previous.title | markdownify | strip_html }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a>
|
||||
{% else %}
|
||||
<a href="#" class="pagination--pager disabled">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a>
|
||||
{% endif %}
|
||||
{% if page.next %}
|
||||
<a href="{{ base_path }}{{ page.next.url }}" class="pagination--pager" title="{{ page.next.title | markdownify | strip_html }}">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a>
|
||||
{% else %}
|
||||
<a href="#" class="pagination--pager disabled">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a>
|
||||
{% endif %}
|
||||
</nav>
|
||||
{% endif %}
|
17
_includes/read-time.html
Normal file
17
_includes/read-time.html
Normal file
@ -0,0 +1,17 @@
|
||||
{% if post.read_time %}
|
||||
{% assign words = post.content | strip_html | number_of_words %}
|
||||
{% elsif page.read_time %}
|
||||
{% assign words = page.content | strip_html | number_of_words %}
|
||||
{% endif %}
|
||||
|
||||
{% if site.words_per_minute %}
|
||||
{% if words < 180 %}
|
||||
{{ site.data.ui-text[site.locale].less_than | default: "less than" }} 1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }}
|
||||
{% elsif words < 360 %}
|
||||
1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }}
|
||||
{% else %}
|
||||
{{ words | divided_by:site.words_per_minute }} {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{{ site.data.ui-text[site.locale].undefined_wpm | "Undefined parameter words_per_minute at _config.yml" }}
|
||||
{% endif %}
|
4
_includes/scripts.html
Normal file
4
_includes/scripts.html
Normal file
@ -0,0 +1,4 @@
|
||||
<script src="{{ base_path }}/assets/js/main.min.js"></script>
|
||||
|
||||
{% include analytics.html %}
|
||||
{% include /comments-providers/scripts.html %}
|
145
_includes/seo.html
Normal file
145
_includes/seo.html
Normal file
@ -0,0 +1,145 @@
|
||||
{% include base_path %}
|
||||
|
||||
<!-- begin SEO -->
|
||||
{% if site.url %}
|
||||
{% assign seo_url = site.url | append: site.baseurl %}
|
||||
{% endif %}
|
||||
{% assign seo_url = seo_url | default: site.github.url %}
|
||||
|
||||
{% if page.title %}
|
||||
{% assign seo_title = page.title | append: " " | append: site.title_separator | append: " " | append: site.title %}
|
||||
{% endif %}
|
||||
|
||||
{% if seo_title %}
|
||||
{% assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once %}
|
||||
{% endif %}
|
||||
|
||||
{% if site.url %}
|
||||
{% assign canonical_url = page.url | replace: "index.html", "" | prepend: site.url %}
|
||||
{% endif %}
|
||||
|
||||
<title>{{ seo_title | default: site.title }}{% if paginator %}{% unless paginator.page == 1 %} {{ site.title_separator }} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}{% endif %}</title>
|
||||
|
||||
{% assign seo_description = page.description | default: page.excerpt | default: site.description %}
|
||||
{% if seo_description %}
|
||||
{% assign seo_description = seo_description | markdownify | strip_html | strip_newlines | escape_once %}
|
||||
{% endif %}
|
||||
|
||||
{% assign seo_author = page.author | default: page.author[0] | default: site.author[0] %}
|
||||
{% if seo_author %}
|
||||
{% if seo_author.twitter %}
|
||||
{% assign seo_author_twitter = seo_author.twitter %}
|
||||
{% else %}
|
||||
{% if site.data.authors and site.data.authors[seo_author] %}
|
||||
{% assign seo_author_twitter = site.data.authors[seo_author].twitter %}
|
||||
{% else %}
|
||||
{% assign seo_author_twitter = seo_author %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% assign seo_author_twitter = seo_author_twitter | replace: "@", "" %}
|
||||
{% endif %}
|
||||
|
||||
<meta property="og:locale" content="{{ site.locale | replace: "-", "_" | default: "en" }}">
|
||||
<meta property="og:site_name" content="{{ site.title }}">
|
||||
<meta property="og:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
|
||||
|
||||
{% if seo_url %}
|
||||
<link rel="canonical" href="{{ page.url | prepend: seo_url | replace: "/index.html", "/" }}">
|
||||
<meta property="og:url" content="{{ page.url | prepend: seo_url | replace: "/index.html", "/" }}">
|
||||
{% endif %}
|
||||
|
||||
{% if page.excerpt %}
|
||||
<meta property="og:description" content="{{ seo_description }}">
|
||||
{% endif %}
|
||||
|
||||
{% if site.twitter.username %}
|
||||
<meta name="twitter:site" content="@{{ site.twitter.username | replace: "@", "" }}">
|
||||
<meta name="twitter:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
|
||||
<meta name="twitter:description" content="{{ seo_description }}">
|
||||
<meta name="twitter:url" content="{{ canonical_url }}">
|
||||
|
||||
{% if page.header.image %}
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:image" content="{% if page.header.image contains "://" %}{{ page.header.image }}{% else %}{{ page.header.image | prepend: "/images/" | prepend: base_path }}{% endif %}">
|
||||
{% else %}
|
||||
<meta name="twitter:card" content="summary">
|
||||
{% if page.header.teaser %}
|
||||
<meta name="twitter:image" content="{% if page.header.teaser contains "://" %}{{ page.header.teaser }}{% else %}{{ page.header.teaser | prepend: "/images/" | prepend: base_path }}{% endif %}">
|
||||
{% elsif site.og_image %}
|
||||
<meta name="twitter:image" content="{{ site.og_image | prepend: "/images/" | prepend: base_path }}">
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if seo_author_twitter %}
|
||||
<meta name="twitter:creator" content="@{{ seo_author_twitter }}">
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if site.facebook %}
|
||||
{% if site.facebook.publisher %}
|
||||
<meta property="article:publisher" content="{{ site.facebook.publisher }}">
|
||||
{% endif %}
|
||||
|
||||
{% if site.facebook.app_id %}
|
||||
<meta property="fb:app_id" content="{{ site.facebook.app_id }}">
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.header.image %}
|
||||
<meta property="og:image" content="{% if page.header.image contains "://" %}{{ page.header.image }}{% else %}{{ page.header.image | prepend: "/images/" | prepend: base_path }}{% endif %}">
|
||||
{% elsif page.header.overlay_image %}
|
||||
<meta property="og:image" content="{% if page.header.overlay_image contains "://" %}{{ page.header.overlay_image }}{% else %}{{ page.header.overlay_image | prepend: "/images/" | prepend: base_path }}{% endif %}">
|
||||
{% elsif page.header.teaser %}
|
||||
<meta property="og:image" content="{% if page.header.teaser contains "://" %}{{ page.header.teaser }}{% else %}{{ page.header.teaser | prepend: "/images/" | prepend: base_path }}{% endif %}">
|
||||
{% elsif site.og_image %}
|
||||
<meta property="og:image" content="{% if site.og_image contains "://" %}{{ site.og_image }}{% else %}{{ site.og_image | prepend: "/images/" | prepend: base_path }}{% endif %}">
|
||||
{% endif %}
|
||||
|
||||
{% if page.date %}
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:published_time" content="{{ page.date | date_to_xmlschema }}">
|
||||
{% endif %}
|
||||
|
||||
{% if paginator.previous_page %}
|
||||
<link rel="prev" href="{{ paginator.previous_page_path | prepend: seo_url }}">
|
||||
{% endif %}
|
||||
{% if paginator.next_page %}
|
||||
<link rel="next" href="{{ paginator.next_page_path | prepend: seo_url }}">
|
||||
{% endif %}
|
||||
|
||||
{% if site.og_image %}
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "Organization",
|
||||
"url": {{ seo_url | jsonify }},
|
||||
"logo": {{ site.og_image | prepend: "/images/" | prepend: base_path | jsonify }}
|
||||
}
|
||||
</script>
|
||||
{% endif %}
|
||||
|
||||
{% if site.social %}
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context" : "http://schema.org",
|
||||
"@type" : "{% if site.social.type %}{{ site.social.type }}{% else %}Person{% endif %}",
|
||||
"name" : "{{ site.social.name | default: site.name }}",
|
||||
"url" : {{ seo_url | jsonify }},
|
||||
"sameAs" : {{ site.social.links | jsonify }}
|
||||
}
|
||||
</script>
|
||||
{% endif %}
|
||||
|
||||
{% if site.google_site_verification %}
|
||||
<meta name="google-site-verification" content="{{ site.google_site_verification }}" />
|
||||
{% endif %}
|
||||
{% if site.bing_site_verification %}
|
||||
<meta name="msvalidate.01" content="{{ site.bing_site_verification }}">
|
||||
{% endif %}
|
||||
{% if site.alexa_site_verification %}
|
||||
<meta name="alexaVerifyID" content="{{ site.alexa_site_verification }}">
|
||||
{% endif %}
|
||||
{% if site.yandex_site_verification %}
|
||||
<meta name="yandex-verification" content="{{ site.yandex_site_verification }}">
|
||||
{% endif %}
|
||||
<!-- end SEO -->
|
25
_includes/sidebar.html
Normal file
25
_includes/sidebar.html
Normal file
@ -0,0 +1,25 @@
|
||||
{% include base_path %}
|
||||
|
||||
{% if page.author_profile or layout.author_profile or page.sidebar %}
|
||||
<div class="sidebar sticky">
|
||||
{% if page.author_profile or layout.author_profile %}{% include author-profile.html %}{% endif %}
|
||||
{% if page.sidebar %}
|
||||
{% for s in page.sidebar %}
|
||||
{% if s.image %}
|
||||
<img src=
|
||||
{% if s.image contains "://" %}
|
||||
"{{ s.image }}"
|
||||
{% else %}
|
||||
"{{ s.image | prepend: "/images/" | prepend: base_path }}"
|
||||
{% endif %}
|
||||
alt="{% if s.image_alt %}{{ s.image_alt }}{% endif %}">
|
||||
{% endif %}
|
||||
{% if s.title %}<h3>{{ s.title }}</h3>{% endif %}
|
||||
{% if s.text %}{{ s.text | markdownify }}{% endif %}
|
||||
{% endfor %}
|
||||
{% if page.sidebar.nav %}
|
||||
{% include nav_list nav=page.sidebar.nav %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
15
_includes/social-share.html
Normal file
15
_includes/social-share.html
Normal file
@ -0,0 +1,15 @@
|
||||
{% include base_path %}
|
||||
|
||||
<section class="page__share">
|
||||
{% if site.data.ui-text[site.locale].share_on_label %}
|
||||
<h4 class="page__share-title">{{ site.data.ui-text[site.locale].share_on_label | default: "Share on" }}</h4>
|
||||
{% endif %}
|
||||
|
||||
<a href="https://twitter.com/intent/tweet?{% if site.twitter.username %}via={{ site.twitter.username }}&{% endif %}text={{ page.title }} {{ base_path }}{{ page.url }}" class="btn btn--twitter" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
|
||||
|
||||
<a href="https://www.facebook.com/sharer/sharer.php?u={{ base_path }}{{ page.url }}" class="btn btn--facebook" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
|
||||
|
||||
<a href="https://plus.google.com/share?url={{ base_path }}{{ page.url }}" class="btn btn--google-plus" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
|
||||
|
||||
<a href="https://www.linkedin.com/shareArticle?mini=true&url={{ base_path }}{{ page.url }}" class="btn btn--linkedin" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
|
||||
</section>
|
28
_includes/tag-list.html
Normal file
28
_includes/tag-list.html
Normal file
@ -0,0 +1,28 @@
|
||||
{% include base_path %}
|
||||
|
||||
{% case site.tag_archive.type %}
|
||||
{% when "liquid" %}
|
||||
{% assign path_type = "#" %}
|
||||
{% when "jekyll-archives" %}
|
||||
{% assign path_type = nil %}
|
||||
{% endcase %}
|
||||
|
||||
{% if site.tag_archive.path %}
|
||||
{% comment %}
|
||||
<!-- Sort alphabetically regardless of case e.g. a B c d E -->
|
||||
<!-- modified from http://www.codeofclimber.ru/2015/sorting-site-tags-in-jekyll/ -->
|
||||
{% endcomment %}
|
||||
{% capture page_tags %}{% for tag in page.tags %}{{ tag | downcase }}#{{ tag }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}
|
||||
{% assign tag_hashes = (page_tags | split: ',' | sort:0) %}
|
||||
|
||||
<p class="page__taxonomy">
|
||||
<strong><i class="fa fa-fw fa-tags" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].tags_label | default: "Tags:" }} </strong>
|
||||
<span itemprop="keywords">
|
||||
{% for hash in tag_hashes %}
|
||||
{% assign keyValue = hash | split: '#' %}
|
||||
{% capture tag_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %}
|
||||
<a href="{{ base_path }}{{ tag_word | slugify | prepend: path_type | prepend: site.tag_archive.path }}" class="page__taxonomy-item" rel="tag">{{ tag_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %}
|
||||
{% endfor %}
|
||||
</span>
|
||||
</p>
|
||||
{% endif %}
|
7
_includes/toc
Normal file
7
_includes/toc
Normal file
@ -0,0 +1,7 @@
|
||||
<aside class="sidebar__right">
|
||||
<nav class="toc" markdown="1">
|
||||
<header><h4 class="nav__title"><i class="fa fa-{{ include.icon | default: 'file-text' }}"></i> {{ include.title | default: site.data.ui-text[site.locale].toc_label }}</h4></header>
|
||||
* Auto generated table of contents
|
||||
{:toc .toc__menu}
|
||||
</nav>
|
||||
</aside>
|
16
_layouts/archive-taxonomy.html
Normal file
16
_layouts/archive-taxonomy.html
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
layout: default
|
||||
author_profile: false
|
||||
---
|
||||
|
||||
<div id="main" role="main">
|
||||
{% include sidebar.html %}
|
||||
|
||||
<div class="archive">
|
||||
<h1 class="page__title">{{ page.title }}</h1>
|
||||
{% include base_path %}
|
||||
{% for post in page.posts %}
|
||||
{% include archive-single.html %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
24
_layouts/archive.html
Normal file
24
_layouts/archive.html
Normal file
@ -0,0 +1,24 @@
|
||||
---
|
||||
layout: default
|
||||
---
|
||||
|
||||
{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
|
||||
{% include page__hero.html %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.url != "/" and site.breadcrumbs %}
|
||||
{% unless paginator %}
|
||||
{% include breadcrumbs.html %}
|
||||
{% endunless %}
|
||||
{% endif %}
|
||||
|
||||
<div id="main" role="main">
|
||||
{% include sidebar.html %}
|
||||
|
||||
<div class="archive">
|
||||
{% unless page.header.overlay_color or page.header.overlay_image %}
|
||||
<h1 class="page__title">{{ page.title }}</h1>
|
||||
{% endunless %}
|
||||
{{ content }}
|
||||
</div>
|
||||
</div>
|
10
_layouts/compress.html
Normal file
10
_layouts/compress.html
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
# Jekyll layout that compresses HTML
|
||||
# v3.0.2
|
||||
# http://jch.penibelst.de/
|
||||
# © 2014–2015 Anatol Broder
|
||||
# MIT License
|
||||
---
|
||||
|
||||
{% capture _LINE_FEED %}
|
||||
{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment %}{{ 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 p rt rp 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 %}</{{ _element }}>{% 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: "<pre" %}{% assign _content = "" %}{% for _pre_before in _pre_befores %}{% assign _pres = _pre_before | split: "</pre>" %}{% 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 "</pre>" %}<pre{{ _pres.first }}</pre>{% endif %}{% unless _pre_before contains "</pre>" 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 = " <e;<e; </e>;</e>;</e> ;</e>" | 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 %} <table id="compress_html_profile_{{ site.time | date: "%Y%m%d" }}" class="compress_html_profile"> <thead> <tr> <td>Step <td>Bytes <tbody> <tr> <td>raw <td>{{ content | size }}{% if _profile_endings %} <tr> <td>endings <td>{{ _profile_endings }}{% endif %}{% if _profile_startings %} <tr> <td>startings <td>{{ _profile_startings }}{% endif %}{% if _profile_comments %} <tr> <td>comments <td>{{ _profile_comments }}{% endif %}{% if _profile_collapse %} <tr> <td>collapse <td>{{ _profile_collapse }}{% endif %}{% if _profile_clippings %} <tr> <td>clippings <td>{{ _profile_clippings }}{% endif %} </table>{% endif %}{% endif %}
|
@ -1,20 +1,30 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
---
|
||||
---
|
||||
|
||||
{% include head.html %}
|
||||
{% include base_path %}
|
||||
|
||||
<body>
|
||||
<!doctype html>
|
||||
<html lang="{{ site.locale | slice: 0,2 | default: "en" }}" class="no-js">
|
||||
<head>
|
||||
{% include head.html %}
|
||||
{% include head/custom.html %}
|
||||
</head>
|
||||
|
||||
{% include header.html %}
|
||||
<body class="layout--{{ page.layout | default: layout.layout }}{% if page.classes or layout.classes %}{{ page.classes | default: layout.classes | join: ' ' | prepend: ' ' }}{% endif %}">
|
||||
|
||||
<div class="page-content">
|
||||
<div class="wrapper">
|
||||
{{ content }}
|
||||
</div>
|
||||
{% include browser-upgrade.html %}
|
||||
{% include masthead.html %}
|
||||
|
||||
{{ content }}
|
||||
|
||||
<div class="page__footer">
|
||||
<footer>
|
||||
{% include footer/custom.html %}
|
||||
{% include footer.html %}
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
{% include footer.html %}
|
||||
{% include scripts.html %}
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
@ -1,14 +0,0 @@
|
||||
---
|
||||
layout: default
|
||||
---
|
||||
<article class="post">
|
||||
|
||||
<header class="post-header">
|
||||
<h1 class="post-title">{{ page.title }}</h1>
|
||||
</header>
|
||||
|
||||
<div class="post-content">
|
||||
{{ content }}
|
||||
</div>
|
||||
|
||||
</article>
|
@ -1,15 +0,0 @@
|
||||
---
|
||||
layout: default
|
||||
---
|
||||
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">
|
||||
|
||||
<header class="post-header">
|
||||
<h1 class="post-title" itemprop="name headline">{{ page.title }}</h1>
|
||||
<p class="post-meta"><time datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">{{ page.date | date: "%b %-d, %Y" }}</time>{% if page.author %} • <span itemprop="author" itemscope itemtype="http://schema.org/Person"><span itemprop="name">{{ page.author }}</span></span>{% endif %}</p>
|
||||
</header>
|
||||
|
||||
<div class="post-content" itemprop="articleBody">
|
||||
{{ content }}
|
||||
</div>
|
||||
|
||||
</article>
|
76
_layouts/single.html
Normal file
76
_layouts/single.html
Normal file
@ -0,0 +1,76 @@
|
||||
---
|
||||
layout: default
|
||||
---
|
||||
|
||||
{% include base_path %}
|
||||
|
||||
{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
|
||||
{% include page__hero.html %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.url != "/" and site.breadcrumbs %}
|
||||
{% unless paginator %}
|
||||
{% include breadcrumbs.html %}
|
||||
{% endunless %}
|
||||
{% endif %}
|
||||
|
||||
<div id="main" role="main">
|
||||
{% include sidebar.html %}
|
||||
|
||||
<article class="page" itemscope itemtype="http://schema.org/CreativeWork">
|
||||
{% if page.title %}<meta itemprop="headline" content="{{ page.title | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
|
||||
{% if page.excerpt %}<meta itemprop="description" content="{{ page.excerpt | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
|
||||
{% if page.date %}<meta itemprop="datePublished" content="{{ page.date | date: "%B %d, %Y" }}">{% endif %}
|
||||
{% if page.modified %}<meta itemprop="dateModified" content="{{ page.modified | date: "%B %d, %Y" }}">{% endif %}
|
||||
|
||||
<div class="page__inner-wrap">
|
||||
{% unless page.header.overlay_color or page.header.overlay_image %}
|
||||
<header>
|
||||
{% if page.title %}<h1 class="page__title" itemprop="headline">{{ page.title | markdownify | remove: "<p>" | remove: "</p>" }}</h1>{% endif %}
|
||||
{% if page.read_time %}
|
||||
<p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> {% include read-time.html %}</p>
|
||||
{% endif %}
|
||||
</header>
|
||||
{% endunless %}
|
||||
|
||||
<section class="page__content" itemprop="text">
|
||||
{{ content }}
|
||||
{% if page.link %}<div><a href="{{ page.link }}" class="btn">{{ site.data.ui-text[site.locale].ext_link_label | default: "Direct Link" }}</a></div>{% endif %}
|
||||
</section>
|
||||
|
||||
<footer class="page__meta">
|
||||
{% if site.data.ui-text[site.locale].meta_label %}
|
||||
<h4 class="page__meta-title">{{ site.data.ui-text[site.locale].meta_label }}</h4>
|
||||
{% endif %}
|
||||
{% include page__taxonomy.html %}
|
||||
{% if page.modified %}
|
||||
<p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time datetime="{{ page.modified | date: "%Y-%m-%d" }}">{{ page.modified | date: "%B %d, %Y" }}</time></p>
|
||||
{% elsif page.date %}
|
||||
<p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time datetime="{{ page.date | date_to_xmlschema }}">{{ page.date | date: "%B %d, %Y" }}</time></p>
|
||||
{% endif %}
|
||||
</footer>
|
||||
|
||||
{% if page.share %}{% include social-share.html %}{% endif %}
|
||||
|
||||
{% include post_pagination.html %}
|
||||
</div>
|
||||
|
||||
{% if site.comments.provider and page.comments %}
|
||||
{% include comments.html %}
|
||||
{% endif %}
|
||||
</article>
|
||||
|
||||
{% comment %}<!-- only show related on a post page when not disabled -->{% endcomment %}
|
||||
{% if page.id and page.related and site.related_posts.size > 0 %}
|
||||
<div class="page__related">
|
||||
{% if site.data.ui-text[site.locale].related_label %}
|
||||
<h4 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4>
|
||||
{% endif %}
|
||||
<div class="grid__wrapper">
|
||||
{% for post in site.related_posts limit:4 %}
|
||||
{% include archive-single.html type="grid" %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
22
_layouts/splash.html
Normal file
22
_layouts/splash.html
Normal file
@ -0,0 +1,22 @@
|
||||
---
|
||||
layout: default
|
||||
---
|
||||
|
||||
{% include base_path %}
|
||||
|
||||
{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
|
||||
{% include page__hero.html %}
|
||||
{% endif %}
|
||||
|
||||
<div id="main" role="main">
|
||||
<article class="splash" itemscope itemtype="http://schema.org/CreativeWork">
|
||||
{% if page.title %}<meta itemprop="headline" content="{{ page.title | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
|
||||
{% if page.excerpt %}<meta itemprop="description" content="{{ page.excerpt | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
|
||||
{% if page.date %}<meta itemprop="datePublished" content="{{ page.date | date: "%B %d, %Y" }}">{% endif %}
|
||||
{% if page.modified %}<meta itemprop="dateModified" content="{{ page.modified | date: "%B %d, %Y" }}">{% endif %}
|
||||
|
||||
<section class="page__content" itemprop="text">
|
||||
{{ content }}
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
17
_pages/404.md
Normal file
17
_pages/404.md
Normal file
@ -0,0 +1,17 @@
|
||||
---
|
||||
title: "Page Not Found"
|
||||
layout: single
|
||||
excerpt: "Page not found. Your pixels are in another canvas."
|
||||
sitemap: false
|
||||
permalink: /404.html
|
||||
---
|
||||
|
||||
Sorry, but the page you were trying to view does not exist --- perhaps you can try searching for it below.
|
||||
|
||||
<script type="text/javascript">
|
||||
var GOOG_FIXURL_LANG = 'en';
|
||||
var GOOG_FIXURL_SITE = '{{ site.url }}'
|
||||
</script>
|
||||
<script type="text/javascript"
|
||||
src="//linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js">
|
||||
</script>
|
45
_pages/about.md
Normal file
45
_pages/about.md
Normal file
@ -0,0 +1,45 @@
|
||||
---
|
||||
layout: single
|
||||
permalink: /about/
|
||||
title: "About"
|
||||
excerpt: "on the project and the authors"
|
||||
---
|
||||
|
||||
{% include base_path %}
|
||||
|
||||
## Main authors and mantainers
|
||||
|
||||
* Peter Boyle
|
||||
* Guido Cossu
|
||||
* Azusa Yamaguchi
|
||||
* Antonin Portelli
|
||||
|
||||
|
||||
## Description
|
||||
|
||||
This library provides data parallel C++ container classes with internal memory layout
|
||||
that is transformed to map efficiently to SIMD architectures. CSHIFT facilities
|
||||
are provided, similar to HPF and cmfortran, and user control is given over the mapping of
|
||||
array indices to both MPI tasks and SIMD processing elements.
|
||||
|
||||
* Identically shaped arrays then be processed with perfect data parallelisation.
|
||||
* Such identically shapped arrays are called conformable arrays.
|
||||
|
||||
The transformation is based on the observation that Cartesian array processing involves
|
||||
identical processing to be performed on different regions of the Cartesian array.
|
||||
|
||||
The library will both geometrically decompose into MPI tasks and across SIMD lanes.
|
||||
Local vector loops are parallelised with OpenMP pragmas.
|
||||
|
||||
Data parallel array operations can then be specified with a SINGLE data parallel paradigm, but
|
||||
optimally use MPI, OpenMP and SIMD parallelism under the hood. This is a significant simplification
|
||||
for most programmers.
|
||||
|
||||
The layout transformations are parametrised by the SIMD vector length. This adapts according to the architecture.
|
||||
Presently SSE4 (128 bit) AVX, AVX2 (256 bit) and IMCI and AVX512 (512 bit) targets are supported (ARM NEON and BG/Q QPX on the way).
|
||||
|
||||
These are presented as `vRealF`, `vRealD`, `vComplexF`, and `vComplexD` internal vector data types. These may be useful in themselves for other programmers.
|
||||
The corresponding scalar types are named `RealF`, `RealD`, `ComplexF` and `ComplexD`.
|
||||
|
||||
MPI, OpenMP, and SIMD parallelism are present in the library.
|
||||
Please see [this paper](https://arxiv.org/abs/1512.03487) for more detail.
|
25
_pages/docs.md
Normal file
25
_pages/docs.md
Normal file
@ -0,0 +1,25 @@
|
||||
---
|
||||
layout: single
|
||||
title : "Documentation"
|
||||
author_profile: false
|
||||
excerpt: "Welcome to the Grid documentation pages"
|
||||
header:
|
||||
overlay_color: "#333"
|
||||
cta_label: "Download documentation"
|
||||
cta_url: "https://www.google.com"
|
||||
sidebar:
|
||||
nav : docs
|
||||
permalink: /docs/
|
||||
---
|
||||
|
||||
{% include base_path %}
|
||||
|
||||
These are the *Grid* documentation pages.
|
||||
|
||||
```c_cpp
|
||||
void test() {
|
||||
console.log("notice the blank line before this function?");
|
||||
}
|
||||
```
|
||||
|
||||
{% include paginator.html %}
|
361
_pages/license.md
Normal file
361
_pages/license.md
Normal file
@ -0,0 +1,361 @@
|
||||
---
|
||||
layout: splash
|
||||
title : "GRID license"
|
||||
author_profile: false
|
||||
excerpt: "Grid is licensed under GPL 2.0"
|
||||
permalink: /license/
|
||||
header:
|
||||
overlay_color: "#333"
|
||||
cta_label: "GPL licenses FAQs"
|
||||
cta_url: "https://www.gnu.org/licenses/gpl-faq.html"
|
||||
---
|
||||
|
||||
{% include base_path %}
|
||||
|
||||
GNU General Public License
|
||||
==========================
|
||||
|
||||
_Version 2, June 1991_
|
||||
_Copyright © 1989, 1991 Free Software Foundation, Inc.,_
|
||||
_51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA_
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
### Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: **(1)** copyright the software, and
|
||||
**(2)** offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
### TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
**0.** This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The “Program”, below,
|
||||
refers to any such program or work, and a “work based on the Program”
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term “modification”.) Each licensee is addressed as “you”.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
**1.** You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
**2.** You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
* **a)** You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
* **b)** You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
* **c)** If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
**3.** You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
* **a)** Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
* **b)** Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
* **c)** Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
**4.** You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
**5.** You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
**6.** Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
**7.** If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
**8.** If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
**9.** The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and “any
|
||||
later version”, you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
**10.** If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
### NO WARRANTY
|
||||
|
||||
**11.** BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
**12.** IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
### How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the “copyright” line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w` and `show c` should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w` and `show c`; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a “copyright disclaimer” for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{% for post in paginator.posts %}
|
||||
{% include archive-single.html %}
|
||||
{% endfor %}
|
||||
|
||||
{% include paginator.html %}
|
@ -1,25 +0,0 @@
|
||||
---
|
||||
layout: post
|
||||
title: "Welcome to Jekyll!"
|
||||
date: 2016-10-12 12:20:45 +0100
|
||||
categories: jekyll update
|
||||
---
|
||||
You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated.
|
||||
|
||||
To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works.
|
||||
|
||||
Jekyll also offers powerful support for code snippets:
|
||||
|
||||
{% highlight ruby %}
|
||||
def print_hi(name)
|
||||
puts "Hi, #{name}"
|
||||
end
|
||||
print_hi('Tom')
|
||||
#=> prints 'Hi, Tom' to STDOUT.
|
||||
{% endhighlight %}
|
||||
|
||||
Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk].
|
||||
|
||||
[jekyll-docs]: http://jekyllrb.com/docs/home
|
||||
[jekyll-gh]: https://github.com/jekyll/jekyll
|
||||
[jekyll-talk]: https://talk.jekyllrb.com/
|
21
_sass/_animations.scss
Normal file
21
_sass/_animations.scss
Normal file
@ -0,0 +1,21 @@
|
||||
/* ==========================================================================
|
||||
ANIMATIONS
|
||||
========================================================================== */
|
||||
|
||||
@-webkit-keyframes intro {
|
||||
0% {
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes intro {
|
||||
0% {
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
238
_sass/_archive.scss
Normal file
238
_sass/_archive.scss
Normal file
@ -0,0 +1,238 @@
|
||||
/* ==========================================================================
|
||||
ARCHIVE
|
||||
========================================================================== */
|
||||
|
||||
.archive {
|
||||
margin-bottom: 2em;
|
||||
|
||||
@include breakpoint($medium) {
|
||||
@include span(12 of 12);
|
||||
}
|
||||
|
||||
@include breakpoint($large) {
|
||||
@include span(10 of 12 last);
|
||||
@include prefix(0.5 of 12);
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
.archive__subtitle {
|
||||
margin: 1.414em 0 0;
|
||||
padding-bottom: 0.5em;
|
||||
font-size: $type-size-5;
|
||||
color: mix(#fff, $gray, 25%);
|
||||
border-bottom: 1px solid $border-color;
|
||||
|
||||
+ .list__item .archive__item-title {
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
.archive__item-title {
|
||||
margin-bottom: 0.25em;
|
||||
font-family: $sans-serif-narrow;
|
||||
|
||||
a + a {
|
||||
opacity: 0.5;
|
||||
}
|
||||
}
|
||||
|
||||
/* remove border*/
|
||||
.page__content {
|
||||
|
||||
.archive__item-title {
|
||||
margin-top: 1em;
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
|
||||
.archive__item-excerpt {
|
||||
margin-top: 0;
|
||||
font-size: $type-size-6;
|
||||
|
||||
& + p {
|
||||
text-indent: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.archive__item-teaser {
|
||||
border-radius: $border-radius;
|
||||
overflow: hidden;
|
||||
img {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.archive__item:hover {
|
||||
.archive__item-teaser {
|
||||
box-shadow: 0 0 10px rgba(#000, 0.25);
|
||||
}
|
||||
|
||||
.archive__item-title {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
List view
|
||||
========================================================================== */
|
||||
|
||||
.list__item {
|
||||
@include breakpoint($medium) {
|
||||
padding-right: $right-sidebar-width-narrow;
|
||||
}
|
||||
|
||||
@include breakpoint($large) {
|
||||
padding-right: $right-sidebar-width;
|
||||
}
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
padding-right: $right-sidebar-width-wide;
|
||||
}
|
||||
|
||||
.page__meta {
|
||||
margin: 0 0 4px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Grid view
|
||||
========================================================================== */
|
||||
|
||||
.grid__item {
|
||||
margin-bottom: 2em;
|
||||
|
||||
.page__meta {
|
||||
margin: 0 0 4px;
|
||||
}
|
||||
|
||||
.archive__item-title {
|
||||
margin-top: 0.5em;
|
||||
font-size: $type-size-5;
|
||||
}
|
||||
|
||||
.archive__item-excerpt {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@include breakpoint($small) {
|
||||
@include gallery(5 of 10);
|
||||
.archive__item-teaser {
|
||||
max-height: 200px;
|
||||
}
|
||||
}
|
||||
|
||||
@include breakpoint($medium) {
|
||||
margin-left: 0; /* reset before mixin does its thing*/
|
||||
margin-right: 0; /* reset before mixin does its thing*/
|
||||
@include gallery(2.5 of 10);
|
||||
|
||||
.archive__item-teaser {
|
||||
max-height: 120px;
|
||||
}
|
||||
|
||||
.archive__item-excerpt {
|
||||
display: block;
|
||||
font-size: $type-size-6;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Features
|
||||
========================================================================== */
|
||||
|
||||
.feature__wrapper {
|
||||
@include clearfix();
|
||||
margin-bottom: 2em;
|
||||
border-bottom: 1px solid $border-color;
|
||||
}
|
||||
|
||||
.feature__item {
|
||||
margin-bottom: 2em;
|
||||
font-size: 1.25rem;
|
||||
|
||||
@include breakpoint($small) {
|
||||
margin-bottom: 0;
|
||||
@include gallery(4 of 12);
|
||||
|
||||
.feature__item-teaser {
|
||||
max-height: 200px;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
&--left {
|
||||
@include full();
|
||||
font-size: 1.25rem;
|
||||
|
||||
.archive__item-teaser {
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
@include breakpoint($small) {
|
||||
.archive__item-teaser {
|
||||
@include span(5 of 12);
|
||||
}
|
||||
|
||||
.archive__item-body {
|
||||
@include span(7 of 12 last);
|
||||
@include prefix(0.5 of 12);
|
||||
@include suffix(1 of 12);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&--right {
|
||||
@include full();
|
||||
font-size: 1.25rem;
|
||||
|
||||
.archive__item-teaser {
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
@include breakpoint($small) {
|
||||
text-align: right;
|
||||
|
||||
.archive__item-teaser {
|
||||
@include span(5 of 12 rtl);
|
||||
}
|
||||
|
||||
.archive__item-body {
|
||||
@include span(7 of 12 last rtl);
|
||||
@include prefix(0.5 of 12);
|
||||
@include suffix(1 of 12);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&--center {
|
||||
@include full();
|
||||
font-size: 1.25rem;
|
||||
|
||||
.archive__item-teaser {
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
@include breakpoint($small) {
|
||||
text-align: center;
|
||||
|
||||
.archive__item-teaser {
|
||||
margin: 0 auto;
|
||||
width: span(5 of 12);
|
||||
}
|
||||
|
||||
.archive__item-body {
|
||||
margin: 0 auto;
|
||||
width: span(7 of 12);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
447
_sass/_base.scss
447
_sass/_base.scss
@ -1,206 +1,315 @@
|
||||
/**
|
||||
* Reset some basic elements
|
||||
*/
|
||||
body, h1, h2, h3, h4, h5, h6,
|
||||
p, blockquote, pre, hr,
|
||||
dl, dd, ol, ul, figure {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
/* ==========================================================================
|
||||
BASE ELEMENTS
|
||||
========================================================================== */
|
||||
|
||||
html {
|
||||
/* sticky footer fix */
|
||||
position: relative;
|
||||
min-height: 100%;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Basic styling
|
||||
*/
|
||||
body {
|
||||
font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;
|
||||
color: $text-color;
|
||||
background-color: $background-color;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-webkit-font-feature-settings: "kern" 1;
|
||||
-moz-font-feature-settings: "kern" 1;
|
||||
-o-font-feature-settings: "kern" 1;
|
||||
font-feature-settings: "kern" 1;
|
||||
font-kerning: normal;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
color: $text-color;
|
||||
font-family: $global-font-family;
|
||||
line-height: 1.5;
|
||||
|
||||
&.overflow--hidden {
|
||||
/* when primary navigation is visible, the content in the background won't scroll */
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Set `margin-bottom` to maintain vertical rhythm
|
||||
*/
|
||||
h1, h2, h3, h4, h5, h6,
|
||||
p, blockquote, pre,
|
||||
ul, ol, dl, figure,
|
||||
%vertical-rhythm {
|
||||
margin-bottom: $spacing-unit / 2;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Images
|
||||
*/
|
||||
img {
|
||||
max-width: 100%;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Figures
|
||||
*/
|
||||
figure > img {
|
||||
display: block;
|
||||
}
|
||||
|
||||
figcaption {
|
||||
font-size: $small-font-size;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Lists
|
||||
*/
|
||||
ul, ol {
|
||||
margin-left: $spacing-unit;
|
||||
}
|
||||
|
||||
li {
|
||||
> ul,
|
||||
> ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Headings
|
||||
*/
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-weight: $base-font-weight;
|
||||
margin: 2em 0 0.5em;
|
||||
line-height: 1.2;
|
||||
font-family: $header-font-family;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Links
|
||||
*/
|
||||
a {
|
||||
color: $brand-color;
|
||||
text-decoration: none;
|
||||
|
||||
&:visited {
|
||||
color: darken($brand-color, 15%);
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: $text-color;
|
||||
text-decoration: underline;
|
||||
}
|
||||
h1 {
|
||||
margin-top: 0;
|
||||
font-size: $type-size-3;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: $type-size-4;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: $type-size-5;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: $type-size-6;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: $type-size-6;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: $type-size-6;
|
||||
}
|
||||
|
||||
small, .small {
|
||||
font-size: $type-size-6;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 1.3em;
|
||||
}
|
||||
|
||||
u,
|
||||
ins {
|
||||
text-decoration: none;
|
||||
border-bottom: 1px solid $text-color;
|
||||
a {
|
||||
color: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
del a {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
/* reduce orphans and widows when printing */
|
||||
|
||||
p, pre, blockquote, ul, ol, dl, figure, table, fieldset {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
|
||||
/* abbreviations */
|
||||
|
||||
abbr[title],
|
||||
abbr[data-original-title] {
|
||||
text-decoration: none;
|
||||
cursor: help;
|
||||
border-bottom: 1px dotted $text-color;
|
||||
}
|
||||
|
||||
/* blockquotes */
|
||||
|
||||
/**
|
||||
* Blockquotes
|
||||
*/
|
||||
blockquote {
|
||||
color: $grey-color;
|
||||
border-left: 4px solid $grey-color-light;
|
||||
padding-left: $spacing-unit / 2;
|
||||
font-size: 18px;
|
||||
letter-spacing: -1px;
|
||||
margin: 2em 1em 2em 0;
|
||||
padding-left: 1em;
|
||||
padding-right: 1em;
|
||||
font-style: italic;
|
||||
border-left: 0.25em solid $primary-color;
|
||||
|
||||
cite {
|
||||
font-style: italic;
|
||||
|
||||
> :last-child {
|
||||
margin-bottom: 0;
|
||||
&:before {
|
||||
content: "\2014";
|
||||
padding-right: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* links */
|
||||
|
||||
a {
|
||||
&:focus {
|
||||
@extend %tab-focus;
|
||||
}
|
||||
|
||||
/**
|
||||
* Code formatting
|
||||
*/
|
||||
pre,
|
||||
code {
|
||||
font-size: 15px;
|
||||
border: 1px solid $grey-color-light;
|
||||
border-radius: 3px;
|
||||
background-color: #eef;
|
||||
&:hover,
|
||||
&:active {
|
||||
outline: 0;
|
||||
}
|
||||
}
|
||||
|
||||
code {
|
||||
padding: 1px 5px;
|
||||
/* code */
|
||||
|
||||
tt, code, kbd, samp, pre {
|
||||
font-family: $monospace;
|
||||
}
|
||||
|
||||
pre {
|
||||
padding: 8px 12px;
|
||||
overflow-x: auto;
|
||||
overflow-x: auto; /* add scrollbars to wide code blocks*/
|
||||
}
|
||||
|
||||
> code {
|
||||
border: 0;
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
p > code,
|
||||
a > code,
|
||||
li > code,
|
||||
figcaption > code,
|
||||
td > code {
|
||||
padding-top: 0.1rem;
|
||||
padding-bottom: 0.1rem;
|
||||
font-size: $type-size-6;
|
||||
background: $code-background-color;
|
||||
border: 1px solid $lighter-gray;
|
||||
border-radius: $border-radius;
|
||||
box-shadow: $box-shadow;
|
||||
|
||||
&:before, &:after {
|
||||
letter-spacing: -0.2em;
|
||||
content: "\00a0"; /* non-breaking space*/
|
||||
}
|
||||
}
|
||||
|
||||
/* horizontal rule */
|
||||
|
||||
hr {
|
||||
display: block;
|
||||
margin: 1em 0;
|
||||
border: 0;
|
||||
border-top: 1px solid $border-color;
|
||||
}
|
||||
|
||||
/* lists */
|
||||
|
||||
ul li,
|
||||
ol li {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
li ul,
|
||||
li ol {
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
|
||||
/*
|
||||
Media and embeds
|
||||
========================================================================== */
|
||||
|
||||
/* Figures and images */
|
||||
|
||||
figure {
|
||||
display: -webkit-box;
|
||||
display: flex;
|
||||
-webkit-box-pack: justify;
|
||||
justify-content: space-between;
|
||||
-webkit-box-align: start;
|
||||
align-items: flex-start;
|
||||
flex-wrap: wrap;
|
||||
margin: 2em 0;
|
||||
|
||||
img,
|
||||
iframe,
|
||||
.fluid-width-video-wrapper {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
border-radius: $border-radius;
|
||||
-webkit-transition: $global-transition;
|
||||
transition: $global-transition;
|
||||
}
|
||||
|
||||
> a {
|
||||
display: block;
|
||||
}
|
||||
|
||||
&.half {
|
||||
> a,
|
||||
> img {
|
||||
@include breakpoint($small) {
|
||||
width: calc(50% - 0.5em);
|
||||
}
|
||||
}
|
||||
|
||||
figcaption {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
&.third {
|
||||
> a,
|
||||
> img {
|
||||
@include breakpoint($small) {
|
||||
width: calc(33.3333% - 0.5em);
|
||||
}
|
||||
}
|
||||
|
||||
figcaption {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Figure captions */
|
||||
|
||||
figcaption {
|
||||
margin-bottom: 0.5em;
|
||||
color: mix(#fff, $text-color, 25%);
|
||||
font-family: $caption-font-family;
|
||||
font-size: $type-size-6;
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
border-bottom: 1px solid $light-gray;
|
||||
-webkit-transition: $global-transition;
|
||||
transition: $global-transition;
|
||||
|
||||
&:hover {
|
||||
color: #000;
|
||||
border-bottom-color: #000;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Fix IE9 SVG bug */
|
||||
|
||||
svg:not(:root) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Navigation lists
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Wrapper
|
||||
* Removes margins, padding, and bullet points from navigation lists
|
||||
*
|
||||
* Example usage:
|
||||
* <nav>
|
||||
* <ul>
|
||||
* <li><a href="#link-1">Link 1</a></li>
|
||||
* <li><a href="#link-2">Link 2</a></li>
|
||||
* <li><a href="#link-3">Link 3</a></li>
|
||||
* </ul>
|
||||
* </nav>
|
||||
*/
|
||||
.wrapper {
|
||||
max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit} * 2));
|
||||
max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
padding-right: $spacing-unit;
|
||||
padding-left: $spacing-unit;
|
||||
@extend %clearfix;
|
||||
|
||||
@include media-query($on-laptop) {
|
||||
max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit}));
|
||||
max-width: calc(#{$content-width} - (#{$spacing-unit}));
|
||||
padding-right: $spacing-unit / 2;
|
||||
padding-left: $spacing-unit / 2;
|
||||
}
|
||||
nav {
|
||||
ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
li {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* override white-space for nested lists */
|
||||
ul li,
|
||||
ol li {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
li ul,
|
||||
li ol {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Global animation transition
|
||||
========================================================================== */
|
||||
|
||||
|
||||
/**
|
||||
* Clearfix
|
||||
*/
|
||||
%clearfix {
|
||||
|
||||
&:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Icons
|
||||
*/
|
||||
.icon {
|
||||
|
||||
> svg {
|
||||
display: inline-block;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
vertical-align: middle;
|
||||
|
||||
path {
|
||||
fill: $grey-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
b, i, strong, em, blockquote, p, q, span, figure, img, h1, h2, header, input, a, tr, td, form button, input[type="submit"], .btn, .highlight, .archive__item-teaser {
|
||||
-webkit-transition: $global-transition;
|
||||
transition: $global-transition;
|
||||
}
|
153
_sass/_buttons.scss
Normal file
153
_sass/_buttons.scss
Normal file
@ -0,0 +1,153 @@
|
||||
/* ==========================================================================
|
||||
BUTTONS
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
Default button
|
||||
========================================================================== */
|
||||
|
||||
.btn {
|
||||
/* default button */
|
||||
display: inline-block;
|
||||
margin-bottom: 0.25em;
|
||||
padding: 0.5em 1em;
|
||||
color: #fff !important;
|
||||
font-family: $sans-serif;
|
||||
font-size: $type-size-6;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
background-color: $primary-color;
|
||||
border: 0 !important;
|
||||
border-radius: $border-radius;
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
background-color: mix(white, #000, 20%);
|
||||
}
|
||||
|
||||
.icon {
|
||||
margin-right: 0.5em;
|
||||
}
|
||||
|
||||
.icon + .hidden {
|
||||
margin-left: -0.5em; /* override for hidden text*/
|
||||
}
|
||||
|
||||
/* fills width of parent container */
|
||||
|
||||
&--block {
|
||||
display: block;
|
||||
width: 100%;
|
||||
|
||||
+ .btn--block {
|
||||
margin-top: 0.25em;
|
||||
}
|
||||
}
|
||||
|
||||
/* for dark backgrounds */
|
||||
|
||||
&--inverse {
|
||||
color: $gray !important;
|
||||
border: 1px solid $light-gray !important; /* override*/
|
||||
background-color: #fff;
|
||||
|
||||
&:hover {
|
||||
color: #fff !important;
|
||||
border-color: $gray;
|
||||
}
|
||||
}
|
||||
|
||||
/* light outline */
|
||||
|
||||
&--light-outline {
|
||||
border: 1px solid #fff !important; /* override*/
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/* information */
|
||||
|
||||
&--info {
|
||||
background-color: $info-color;
|
||||
|
||||
&:hover {
|
||||
background-color: mix(#000, $info-color, 20%);
|
||||
}
|
||||
}
|
||||
|
||||
/* warning */
|
||||
|
||||
&--warning {
|
||||
background-color: $warning-color;
|
||||
|
||||
&:hover {
|
||||
background-color: mix(#000, $warning-color, 20%);
|
||||
}
|
||||
}
|
||||
|
||||
/* success */
|
||||
|
||||
&--success {
|
||||
background-color: $success-color;
|
||||
|
||||
&:hover {
|
||||
background-color: mix(#000, $success-color, 20%);
|
||||
}
|
||||
}
|
||||
|
||||
/* danger */
|
||||
|
||||
&--danger {
|
||||
background-color: $danger-color;
|
||||
|
||||
&:hover {
|
||||
background-color: mix(#000, $danger-color, 20%);
|
||||
}
|
||||
}
|
||||
|
||||
/* disabled */
|
||||
|
||||
&--disabled {
|
||||
pointer-events: none;
|
||||
cursor: not-allowed;
|
||||
filter: alpha(opacity=65);
|
||||
box-shadow: none;
|
||||
opacity: 0.65;
|
||||
}
|
||||
|
||||
/* social buttons */
|
||||
|
||||
$social:
|
||||
(facebook, $facebook-color),
|
||||
(twitter, $twitter-color),
|
||||
(google-plus, $google-plus-color),
|
||||
(linkedin, $linkedin-color);
|
||||
|
||||
@each $socialnetwork, $color in $social {
|
||||
&--#{$socialnetwork} {
|
||||
background-color: $color;
|
||||
|
||||
&:hover {
|
||||
background-color: mix(#000, $color, 20%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* extra large button */
|
||||
|
||||
&--x-large {
|
||||
font-size: $type-size-4;
|
||||
}
|
||||
|
||||
/* large button */
|
||||
|
||||
&--large {
|
||||
font-size: $type-size-5;
|
||||
}
|
||||
|
||||
/* small button */
|
||||
|
||||
&--small {
|
||||
font-size: $type-size-7;
|
||||
}
|
||||
}
|
80
_sass/_footer.scss
Normal file
80
_sass/_footer.scss
Normal file
@ -0,0 +1,80 @@
|
||||
/* ==========================================================================
|
||||
FOOTER
|
||||
========================================================================== */
|
||||
|
||||
.page__footer {
|
||||
@include full();
|
||||
@include clearfix;
|
||||
/* sticky footer fix start */
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
clear: both;
|
||||
height: auto;
|
||||
/* sticky footer fix end */
|
||||
margin-top: 3em;
|
||||
color: mix(#fff, $gray, 25%);
|
||||
-webkit-animation: intro 0.3s both;
|
||||
animation: intro 0.3s both;
|
||||
-webkit-animation-delay: 0.45s;
|
||||
animation-delay: 0.45s;
|
||||
background-color: $lighter-gray;
|
||||
border-top: 1px solid $light-gray;
|
||||
|
||||
footer {
|
||||
@include container;
|
||||
@include clearfix;
|
||||
margin-top: 2em;
|
||||
padding: 0 1em 2em;
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
max-width: $x-large;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
.fa {
|
||||
color: mix(#fff, $gray, 25%);
|
||||
}
|
||||
}
|
||||
|
||||
.page__footer-copyright {
|
||||
font-family: $global-font-family;
|
||||
font-size: $type-size-7;
|
||||
}
|
||||
|
||||
.page__footer-follow {
|
||||
|
||||
ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
li {
|
||||
display: inline-block;
|
||||
padding-top: 5px;
|
||||
padding-bottom: 5px;
|
||||
font-family: $sans-serif-narrow;
|
||||
font-size: $type-size-6;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
li + li:before {
|
||||
content: "";
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
a {
|
||||
padding-right: 10px;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
391
_sass/_forms.scss
Normal file
391
_sass/_forms.scss
Normal file
@ -0,0 +1,391 @@
|
||||
/* ==========================================================================
|
||||
Forms
|
||||
========================================================================== */
|
||||
|
||||
form {
|
||||
margin: 0 0 5px 0;
|
||||
|
||||
fieldset {
|
||||
margin-bottom: 5px;
|
||||
padding: 0;
|
||||
border-width: 0;
|
||||
}
|
||||
|
||||
legend {
|
||||
display: block;
|
||||
width: 100%;
|
||||
margin-bottom: 5px * 2;
|
||||
*margin-left: -7px;
|
||||
padding: 0;
|
||||
color: $text-color;
|
||||
border: 0;
|
||||
border-bottom: 1px solid mix(#fff, #000, 80%);
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 5px / 2;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-type: none;
|
||||
margin: 0 0 5px 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
br {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
label,
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
textarea {
|
||||
vertical-align: baseline;
|
||||
*vertical-align: middle;
|
||||
}
|
||||
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
textarea {
|
||||
box-sizing: border-box;
|
||||
font-family: $sans-serif;
|
||||
}
|
||||
|
||||
label {
|
||||
display: block;
|
||||
margin-bottom: 0.25em;
|
||||
color: $text-color;
|
||||
cursor: pointer;
|
||||
|
||||
small {
|
||||
font-size: $type-size-6;
|
||||
}
|
||||
|
||||
input,
|
||||
textarea,
|
||||
select {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
input,
|
||||
textarea,
|
||||
select {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
padding: 0.25em;
|
||||
margin-bottom: 0.5em;
|
||||
color: $text-color;
|
||||
background-color: #fff;
|
||||
border: 1px solid mix(#fff, #000, 80%);
|
||||
border-radius: $border-radius;
|
||||
box-shadow: $box-shadow;
|
||||
|
||||
&:hover {
|
||||
border-color: mix(#fff, $primary-color, 50%);
|
||||
}
|
||||
}
|
||||
|
||||
.input-mini {
|
||||
width: 60px;
|
||||
}
|
||||
|
||||
.input-small {
|
||||
width: 90px;
|
||||
}
|
||||
|
||||
input[type="image"],
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
width: auto;
|
||||
height: auto;
|
||||
padding: 0;
|
||||
margin: 3px 0;
|
||||
*margin-top: 0;
|
||||
line-height: normal;
|
||||
cursor: pointer;
|
||||
border-radius: 0;
|
||||
border: 0 \9;
|
||||
}
|
||||
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
box-sizing: border-box;
|
||||
padding: 0;
|
||||
*width: 13px;
|
||||
*height: 13px;
|
||||
}
|
||||
|
||||
input[type="image"] {
|
||||
border: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
input[type="file"] {
|
||||
width: auto;
|
||||
padding: initial;
|
||||
line-height: initial;
|
||||
border: initial;
|
||||
background-color: transparent;
|
||||
background-color: initial;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
input[type="button"],
|
||||
input[type="reset"],
|
||||
input[type="submit"] {
|
||||
width: auto;
|
||||
height: auto;
|
||||
cursor: pointer;
|
||||
*overflow: visible;
|
||||
}
|
||||
|
||||
select,
|
||||
input[type="file"] {
|
||||
*margin-top: 4px;
|
||||
}
|
||||
|
||||
select {
|
||||
width: auto;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
select[multiple],
|
||||
select[size] {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
textarea {
|
||||
resize: vertical;
|
||||
height: auto;
|
||||
overflow: auto;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
input[type="hidden"] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.form {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.radio,
|
||||
.checkbox {
|
||||
padding-left: 18px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.radio input[type="radio"],
|
||||
.checkbox input[type="checkbox"] {
|
||||
float: left;
|
||||
margin-left: -18px;
|
||||
}
|
||||
|
||||
.radio.inline,
|
||||
.checkbox.inline {
|
||||
display: inline-block;
|
||||
padding-top: 5px;
|
||||
margin-bottom: 0;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.radio.inline + .radio.inline,
|
||||
.checkbox.inline + .checkbox.inline {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Disabled state
|
||||
========================================================================== */
|
||||
|
||||
input[disabled],
|
||||
select[disabled],
|
||||
textarea[disabled],
|
||||
input[readonly],
|
||||
select[readonly],
|
||||
textarea[readonly] {
|
||||
opacity: 0.5;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Focus & active state
|
||||
========================================================================== */
|
||||
|
||||
input:focus,
|
||||
textarea:focus {
|
||||
border-color: $primary-color;
|
||||
outline: 0;
|
||||
outline: thin dotted \9;
|
||||
}
|
||||
|
||||
input[type="file"]:focus,
|
||||
input[type="radio"]:focus,
|
||||
input[type="checkbox"]:focus,
|
||||
select:focus {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Help text
|
||||
========================================================================== */
|
||||
|
||||
.help-block,
|
||||
.help-inline {
|
||||
color: $info-color;
|
||||
}
|
||||
|
||||
.help-block {
|
||||
display: block;
|
||||
margin-bottom: 1em;
|
||||
line-height: 1em;
|
||||
}
|
||||
|
||||
.help-inline {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
.form-inline
|
||||
========================================================================== */
|
||||
|
||||
.form-inline input,
|
||||
.form-inline textarea,
|
||||
.form-inline select {
|
||||
display: inline-block;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.form-inline label {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.form-inline .radio,
|
||||
.form-inline .checkbox,
|
||||
.form-inline .radio {
|
||||
padding-left: 0;
|
||||
margin-bottom: 0;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.form-inline .radio input[type="radio"],
|
||||
.form-inline .checkbox input[type="checkbox"] {
|
||||
float: left;
|
||||
margin-left: 0;
|
||||
margin-right: 3px; }
|
||||
|
||||
|
||||
/*
|
||||
.form-search
|
||||
========================================================================== */
|
||||
|
||||
.form-search input,
|
||||
.form-search textarea,
|
||||
.form-search select {
|
||||
display: inline-block;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.form-search .search-query {
|
||||
padding-left: 14px;
|
||||
padding-right: 14px;
|
||||
margin-bottom: 0;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
.form-search label {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.form-search .radio,
|
||||
.form-search .checkbox,
|
||||
.form-inline .radio {
|
||||
padding-left: 0;
|
||||
margin-bottom: 0;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.form-search .radio input[type="radio"],
|
||||
.form-search .checkbox input[type="checkbox"] {
|
||||
float: left;
|
||||
margin-left: 0;
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
.form--loading
|
||||
========================================================================== */
|
||||
|
||||
.form--loading:before {
|
||||
content: '';
|
||||
}
|
||||
|
||||
.form--loading .form__spinner {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.form:before {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: rgba(255, 255, 255, 0.7);
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.form__spinner {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
z-index: 11;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Google search form
|
||||
========================================================================== */
|
||||
|
||||
#goog-fixurl {
|
||||
ul {
|
||||
list-style: none;
|
||||
margin-left: 0;
|
||||
padding-left: 0;
|
||||
li {
|
||||
list-style-type: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#goog-wm-qt {
|
||||
width: auto;
|
||||
margin-right: 10px;
|
||||
margin-bottom: 20px;
|
||||
padding: 8px 20px;
|
||||
display: inline-block;
|
||||
font-size: $type-size-6;
|
||||
background-color: #fff;
|
||||
color: #000;
|
||||
border-width: 2px !important;
|
||||
border-style: solid !important;
|
||||
border-color: lighten(#000,50);
|
||||
border-radius: $border-radius;
|
||||
}
|
||||
|
||||
#goog-wm-sb {
|
||||
@extend .btn;
|
||||
}
|
@ -1,242 +0,0 @@
|
||||
/**
|
||||
* Site header
|
||||
*/
|
||||
.site-header {
|
||||
border-top: 5px solid $grey-color-dark;
|
||||
border-bottom: 1px solid $grey-color-light;
|
||||
min-height: 56px;
|
||||
|
||||
// Positioning context for the mobile navigation icon
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.site-title {
|
||||
font-size: 26px;
|
||||
font-weight: 300;
|
||||
line-height: 56px;
|
||||
letter-spacing: -1px;
|
||||
margin-bottom: 0;
|
||||
float: left;
|
||||
|
||||
&,
|
||||
&:visited {
|
||||
color: $grey-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
.site-nav {
|
||||
float: right;
|
||||
line-height: 56px;
|
||||
|
||||
.menu-icon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.page-link {
|
||||
color: $text-color;
|
||||
line-height: $base-line-height;
|
||||
|
||||
// Gaps between nav items, but not on the last one
|
||||
&:not(:last-child) {
|
||||
margin-right: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
@include media-query($on-palm) {
|
||||
position: absolute;
|
||||
top: 9px;
|
||||
right: $spacing-unit / 2;
|
||||
background-color: $background-color;
|
||||
border: 1px solid $grey-color-light;
|
||||
border-radius: 5px;
|
||||
text-align: right;
|
||||
|
||||
.menu-icon {
|
||||
display: block;
|
||||
float: right;
|
||||
width: 36px;
|
||||
height: 26px;
|
||||
line-height: 0;
|
||||
padding-top: 10px;
|
||||
text-align: center;
|
||||
|
||||
> svg {
|
||||
width: 18px;
|
||||
height: 15px;
|
||||
|
||||
path {
|
||||
fill: $grey-color-dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.trigger {
|
||||
clear: both;
|
||||
display: none;
|
||||
}
|
||||
|
||||
&:hover .trigger {
|
||||
display: block;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
.page-link {
|
||||
display: block;
|
||||
padding: 5px 10px;
|
||||
|
||||
&:not(:last-child) {
|
||||
margin-right: 0;
|
||||
}
|
||||
margin-left: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Site footer
|
||||
*/
|
||||
.site-footer {
|
||||
border-top: 1px solid $grey-color-light;
|
||||
padding: $spacing-unit 0;
|
||||
}
|
||||
|
||||
.footer-heading {
|
||||
font-size: 18px;
|
||||
margin-bottom: $spacing-unit / 2;
|
||||
}
|
||||
|
||||
.contact-list,
|
||||
.social-media-list {
|
||||
list-style: none;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.footer-col-wrapper {
|
||||
font-size: 15px;
|
||||
color: $grey-color;
|
||||
margin-left: -$spacing-unit / 2;
|
||||
@extend %clearfix;
|
||||
}
|
||||
|
||||
.footer-col {
|
||||
float: left;
|
||||
margin-bottom: $spacing-unit / 2;
|
||||
padding-left: $spacing-unit / 2;
|
||||
}
|
||||
|
||||
.footer-col-1 {
|
||||
width: -webkit-calc(35% - (#{$spacing-unit} / 2));
|
||||
width: calc(35% - (#{$spacing-unit} / 2));
|
||||
}
|
||||
|
||||
.footer-col-2 {
|
||||
width: -webkit-calc(20% - (#{$spacing-unit} / 2));
|
||||
width: calc(20% - (#{$spacing-unit} / 2));
|
||||
}
|
||||
|
||||
.footer-col-3 {
|
||||
width: -webkit-calc(45% - (#{$spacing-unit} / 2));
|
||||
width: calc(45% - (#{$spacing-unit} / 2));
|
||||
}
|
||||
|
||||
@include media-query($on-laptop) {
|
||||
.footer-col-1,
|
||||
.footer-col-2 {
|
||||
width: -webkit-calc(50% - (#{$spacing-unit} / 2));
|
||||
width: calc(50% - (#{$spacing-unit} / 2));
|
||||
}
|
||||
|
||||
.footer-col-3 {
|
||||
width: -webkit-calc(100% - (#{$spacing-unit} / 2));
|
||||
width: calc(100% - (#{$spacing-unit} / 2));
|
||||
}
|
||||
}
|
||||
|
||||
@include media-query($on-palm) {
|
||||
.footer-col {
|
||||
float: none;
|
||||
width: -webkit-calc(100% - (#{$spacing-unit} / 2));
|
||||
width: calc(100% - (#{$spacing-unit} / 2));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Page content
|
||||
*/
|
||||
.page-content {
|
||||
padding: $spacing-unit 0;
|
||||
}
|
||||
|
||||
.page-heading {
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.post-list {
|
||||
margin-left: 0;
|
||||
list-style: none;
|
||||
|
||||
> li {
|
||||
margin-bottom: $spacing-unit;
|
||||
}
|
||||
}
|
||||
|
||||
.post-meta {
|
||||
font-size: $small-font-size;
|
||||
color: $grey-color;
|
||||
}
|
||||
|
||||
.post-link {
|
||||
display: block;
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Posts
|
||||
*/
|
||||
.post-header {
|
||||
margin-bottom: $spacing-unit;
|
||||
}
|
||||
|
||||
.post-title {
|
||||
font-size: 42px;
|
||||
letter-spacing: -1px;
|
||||
line-height: 1;
|
||||
|
||||
@include media-query($on-laptop) {
|
||||
font-size: 36px;
|
||||
}
|
||||
}
|
||||
|
||||
.post-content {
|
||||
margin-bottom: $spacing-unit;
|
||||
|
||||
h2 {
|
||||
font-size: 32px;
|
||||
|
||||
@include media-query($on-laptop) {
|
||||
font-size: 28px;
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 26px;
|
||||
|
||||
@include media-query($on-laptop) {
|
||||
font-size: 22px;
|
||||
}
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 20px;
|
||||
|
||||
@include media-query($on-laptop) {
|
||||
font-size: 18px;
|
||||
}
|
||||
}
|
||||
}
|
53
_sass/_masthead.scss
Normal file
53
_sass/_masthead.scss
Normal file
@ -0,0 +1,53 @@
|
||||
/* ==========================================================================
|
||||
MASTHEAD
|
||||
========================================================================== */
|
||||
|
||||
.masthead {
|
||||
position: relative;
|
||||
border-bottom: 1px solid $border-color;
|
||||
-webkit-animation: intro 0.3s both;
|
||||
animation: intro 0.3s both;
|
||||
-webkit-animation-delay: 0.15s;
|
||||
animation-delay: 0.15s;
|
||||
z-index: 20;
|
||||
|
||||
&__inner-wrap {
|
||||
@include container;
|
||||
@include clearfix;
|
||||
padding: 1em 1em 1em;
|
||||
font-family: $sans-serif-narrow;
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
max-width: $x-large;
|
||||
}
|
||||
|
||||
nav {
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.masthead__menu {
|
||||
|
||||
ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
clear: both;
|
||||
list-style-type: none;
|
||||
}
|
||||
}
|
||||
|
||||
.masthead__menu-item {
|
||||
display: block;
|
||||
list-style-type: none;
|
||||
white-space: nowrap;
|
||||
|
||||
&--lg {
|
||||
padding-right: 2em;
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
53
_sass/_mixins.scss
Normal file
53
_sass/_mixins.scss
Normal file
@ -0,0 +1,53 @@
|
||||
/* ==========================================================================
|
||||
MIXINS
|
||||
========================================================================== */
|
||||
|
||||
%tab-focus {
|
||||
/* Default*/
|
||||
outline: thin dotted $warning-color;
|
||||
/* Webkit*/
|
||||
outline: 5px auto $warning-color;
|
||||
outline-offset: -2px;
|
||||
}
|
||||
|
||||
/*
|
||||
em function
|
||||
========================================================================== */
|
||||
|
||||
@function em($target, $context: $doc-font-size) {
|
||||
@return ($target / $context) * 1em;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Bourbon clearfix
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
* Provides an easy way to include a clearfix for containing floats.
|
||||
* link http://cssmojo.com/latest_new_clearfix_so_far/
|
||||
*
|
||||
* example scss - Usage
|
||||
*
|
||||
* .element {
|
||||
* @include clearfix;
|
||||
* }
|
||||
*
|
||||
* example css - CSS Output
|
||||
*
|
||||
* .element::after {
|
||||
* clear: both;
|
||||
* content: "";
|
||||
* display: table;
|
||||
* }
|
||||
*/
|
||||
|
||||
@mixin clearfix {
|
||||
clear: both;
|
||||
|
||||
&::after {
|
||||
clear: both;
|
||||
content: "";
|
||||
display: table;
|
||||
}
|
||||
}
|
432
_sass/_navigation.scss
Normal file
432
_sass/_navigation.scss
Normal file
@ -0,0 +1,432 @@
|
||||
/* ==========================================================================
|
||||
NAVIGATION
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
Breadcrumb navigation links
|
||||
========================================================================== */
|
||||
|
||||
.breadcrumbs {
|
||||
@include container;
|
||||
@include clearfix;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
padding-left: 2em;
|
||||
padding-right: 2em;
|
||||
font-family: $sans-serif;
|
||||
-webkit-animation: intro 0.3s both;
|
||||
animation: intro 0.3s both;
|
||||
-webkit-animation-delay: 0.30s;
|
||||
animation-delay: 0.30s;
|
||||
|
||||
@include breakpoint($large) {
|
||||
padding-left: 1em;
|
||||
padding-right: 1em;
|
||||
}
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
max-width: $x-large;
|
||||
}
|
||||
|
||||
ol {
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
font-size: $type-size-6;
|
||||
|
||||
@include breakpoint($large) {
|
||||
@include span(10 of 12 last);
|
||||
}
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
@include prefix(0.5 of 12);
|
||||
}
|
||||
}
|
||||
|
||||
li {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.current {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Post pagination navigation links
|
||||
========================================================================== */
|
||||
|
||||
.pagination {
|
||||
@include full();
|
||||
@include clearfix();
|
||||
margin-top: 1em;
|
||||
padding-top: 1em;
|
||||
|
||||
ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
font-family: $sans-serif;
|
||||
}
|
||||
|
||||
li {
|
||||
display: block;
|
||||
float: left;
|
||||
margin-left: -1px;
|
||||
|
||||
a {
|
||||
margin-bottom: 0.25em;
|
||||
padding: 0.5em 1em;
|
||||
font-family: $sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
line-height: 1.5;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
color: mix(#fff, $gray, 25%);
|
||||
border: 1px solid $light-gray;
|
||||
border-radius: 0;
|
||||
|
||||
&:hover {
|
||||
color: $link-color-hover;
|
||||
}
|
||||
|
||||
&.current {
|
||||
color: #fff;
|
||||
background: $primary-color;
|
||||
}
|
||||
|
||||
&.disabled {
|
||||
color: mix(#fff, $gray, 75%);
|
||||
pointer-events: none;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
margin-left: 0;
|
||||
|
||||
a {
|
||||
border-top-left-radius: $border-radius;
|
||||
border-bottom-left-radius: $border-radius;
|
||||
}
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
a {
|
||||
border-top-right-radius: $border-radius;
|
||||
border-bottom-right-radius: $border-radius;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* next/previous buttons */
|
||||
&--pager {
|
||||
display: block;
|
||||
padding: 1em 2em;
|
||||
float: left;
|
||||
width: 50%;
|
||||
font-family: $sans-serif;
|
||||
font-size: $type-size-5;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
color: mix(#fff, $gray, 50%);
|
||||
border: 1px solid $light-gray;
|
||||
border-radius: $border-radius;
|
||||
|
||||
&:hover {
|
||||
color: $link-color-hover;
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
margin-left: -1px;
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
&.disabled {
|
||||
color: mix(#fff, $gray, 75%);
|
||||
pointer-events: none;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.page__content + .pagination,
|
||||
.page__meta + .pagination,
|
||||
.page__share + .pagination,
|
||||
.page__comments + .pagination {
|
||||
margin-top: 2em;
|
||||
padding-top: 2em;
|
||||
border-top: 1px solid $border-color;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Priority plus navigation
|
||||
========================================================================== */
|
||||
|
||||
.greedy-nav {
|
||||
position: relative;
|
||||
min-width: 250px;
|
||||
background: $background-color;
|
||||
|
||||
a {
|
||||
display: block;
|
||||
margin: 0 1rem;
|
||||
padding: 0.5rem 0;
|
||||
color: $masthead-link-color;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
color: $masthead-link-color-hover;
|
||||
}
|
||||
}
|
||||
|
||||
button {
|
||||
position: absolute;
|
||||
height: 100%;
|
||||
right: 0;
|
||||
padding: 0 0.5rem;
|
||||
border: 0;
|
||||
outline: none;
|
||||
background-color: $primary-color;
|
||||
color: #fff;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.visible-links {
|
||||
display: table;
|
||||
|
||||
li {
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
|
||||
&:first-child {
|
||||
font-weight: bold;
|
||||
|
||||
a {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
a {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
position: relative;
|
||||
|
||||
&:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
height: 4px;
|
||||
background: mix(#fff, $primary-color, 50%);
|
||||
width: 100%;
|
||||
-webkit-transition: $global-transition;
|
||||
transition: $global-transition;
|
||||
-webkit-transform: scaleX(0);
|
||||
-ms-transform: scaleX(0);
|
||||
transform: scaleX(0); /* hide*/
|
||||
}
|
||||
|
||||
&:hover:before {
|
||||
-webkit-transform: scaleX(1);
|
||||
-ms-transform: scaleX(1);
|
||||
transform: scaleX(1); /* reveal*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.hidden-links {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
right: 0;
|
||||
margin-top: 15px;
|
||||
padding: 5px;
|
||||
border: 1px solid $border-color;
|
||||
border-radius: $border-radius;
|
||||
background: #fff;
|
||||
box-shadow: 0 0 10px rgba(#000, 0.25);
|
||||
|
||||
a {
|
||||
margin: 0;
|
||||
padding: 10px 20px;
|
||||
font-size: $type-size-5;
|
||||
|
||||
&:hover {
|
||||
color: $masthead-link-color-hover;
|
||||
background: mix(#fff, $primary-color, 75%);
|
||||
}
|
||||
}
|
||||
|
||||
&:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: -11px;
|
||||
right: 10px;
|
||||
width: 0;
|
||||
border-style: solid;
|
||||
border-width: 0 10px 10px;
|
||||
border-color: $border-color transparent;
|
||||
display: block;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
&:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: -10px;
|
||||
right: 10px;
|
||||
width: 0;
|
||||
border-style: solid;
|
||||
border-width: 0 10px 10px;
|
||||
border-color: #fff transparent;
|
||||
display: block;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
li {
|
||||
display: block;
|
||||
border-bottom: 1px solid $border-color;
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Navigation list
|
||||
========================================================================== */
|
||||
|
||||
.nav__list {
|
||||
font-size: 1.25rem;
|
||||
|
||||
ul {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
a {
|
||||
display: block;
|
||||
padding: 0.125em 0;
|
||||
color: inherit;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
.active {
|
||||
margin-left: -0.5em;
|
||||
padding-left: 0.5em;
|
||||
padding-right: 0.5em;
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
background: $primary-color;
|
||||
border-radius: $border-radius;
|
||||
|
||||
&:hover {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.nav__title {
|
||||
margin: 0;
|
||||
padding: 0.5rem 1rem;
|
||||
font-family: $sans-serif-narrow;
|
||||
font-size: $type-size-5;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.nav__sub-title {
|
||||
display: block;
|
||||
margin: 0.5rem 0;
|
||||
padding: 0.5rem 0;
|
||||
font-family: $sans-serif-narrow;
|
||||
font-size: $type-size-6;
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
border-bottom: 1px solid $border-color;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Table of contents navigation
|
||||
========================================================================== */
|
||||
|
||||
.toc {
|
||||
font-family: $sans-serif-narrow;
|
||||
color: $gray;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 1px;
|
||||
background-color: #fff;
|
||||
border: 1px solid $border-color;
|
||||
border-radius: $border-radius;
|
||||
box-shadow: $box-shadow;
|
||||
|
||||
.nav__title {
|
||||
color: #fff;
|
||||
font-size: $type-size-6;
|
||||
background: $primary-color;
|
||||
border-top-left-radius: $border-radius;
|
||||
border-top-right-radius: $border-radius;
|
||||
}
|
||||
}
|
||||
|
||||
.toc__menu {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
list-style: none;
|
||||
font-size: 0.8rem;
|
||||
|
||||
a {
|
||||
display: block;
|
||||
padding: 0.5rem 1rem;
|
||||
color: $gray;
|
||||
font-size: $type-size-7;
|
||||
font-weight: bold;
|
||||
line-height: 1.5;
|
||||
border-bottom: 1px solid $border-color;
|
||||
|
||||
&:hover {
|
||||
color: #000;
|
||||
background: $lighter-gray;
|
||||
}
|
||||
}
|
||||
|
||||
> li:last-child {
|
||||
a {
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
|
||||
li ul > li a {
|
||||
padding-left: 2rem;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/* hide sub sub links on small screens*/
|
||||
li > ul li {
|
||||
display: none;
|
||||
|
||||
@include breakpoint($medium) {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,425 +0,0 @@
|
||||
/*! normalize.css v3.0.1 | MIT License | git.io/normalize */
|
||||
|
||||
/**
|
||||
* 1. Set default font family to sans-serif.
|
||||
* 2. Prevent iOS text size adjust after orientation change, without disabling
|
||||
* user zoom.
|
||||
*/
|
||||
|
||||
html {
|
||||
font-family: sans-serif; /* 1 */
|
||||
-ms-text-size-adjust: 100%; /* 2 */
|
||||
-webkit-text-size-adjust: 100%; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove default margin.
|
||||
*/
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* HTML5 display definitions
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Correct `block` display not defined for any HTML5 element in IE 8/9.
|
||||
* Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox.
|
||||
* Correct `block` display not defined for `main` in IE 11.
|
||||
*/
|
||||
|
||||
article,
|
||||
aside,
|
||||
details,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
main,
|
||||
nav,
|
||||
section,
|
||||
summary {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct `inline-block` display not defined in IE 8/9.
|
||||
* 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
|
||||
*/
|
||||
|
||||
audio,
|
||||
canvas,
|
||||
progress,
|
||||
video {
|
||||
display: inline-block; /* 1 */
|
||||
vertical-align: baseline; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent modern browsers from displaying `audio` without controls.
|
||||
* Remove excess height in iOS 5 devices.
|
||||
*/
|
||||
|
||||
audio:not([controls]) {
|
||||
display: none;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address `[hidden]` styling not present in IE 8/9/10.
|
||||
* Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
|
||||
*/
|
||||
|
||||
[hidden],
|
||||
template {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Links
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the gray background color from active links in IE 10.
|
||||
*/
|
||||
|
||||
a {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Improve readability when focused and also mouse hovered in all browsers.
|
||||
*/
|
||||
|
||||
a:active,
|
||||
a:hover {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
/* Text-level semantics
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Address styling not present in IE 8/9/10/11, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
abbr[title] {
|
||||
border-bottom: 1px dotted;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address styling not present in Safari and Chrome.
|
||||
*/
|
||||
|
||||
dfn {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address variable `h1` font-size and margin within `section` and `article`
|
||||
* contexts in Firefox 4+, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
h1 {
|
||||
font-size: 2em;
|
||||
margin: 0.67em 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address styling not present in IE 8/9.
|
||||
*/
|
||||
|
||||
mark {
|
||||
background: #ff0;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address inconsistent and variable font size in all browsers.
|
||||
*/
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
|
||||
*/
|
||||
|
||||
sub,
|
||||
sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
/* Embedded content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove border when inside `a` element in IE 8/9/10.
|
||||
*/
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct overflow not hidden in IE 9/10/11.
|
||||
*/
|
||||
|
||||
svg:not(:root) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Grouping content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Address margin not present in IE 8/9 and Safari.
|
||||
*/
|
||||
|
||||
figure {
|
||||
margin: 1em 40px;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address differences between Firefox and other browsers.
|
||||
*/
|
||||
|
||||
hr {
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Contain overflow in all browsers.
|
||||
*/
|
||||
|
||||
pre {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address odd `em`-unit font size rendering in all browsers.
|
||||
*/
|
||||
|
||||
code,
|
||||
kbd,
|
||||
pre,
|
||||
samp {
|
||||
font-family: monospace, monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
/* Forms
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Known limitation: by default, Chrome and Safari on OS X allow very limited
|
||||
* styling of `select`, unless a `border` property is set.
|
||||
*/
|
||||
|
||||
/**
|
||||
* 1. Correct color not being inherited.
|
||||
* Known issue: affects color of disabled elements.
|
||||
* 2. Correct font properties not being inherited.
|
||||
* 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
button,
|
||||
input,
|
||||
optgroup,
|
||||
select,
|
||||
textarea {
|
||||
color: inherit; /* 1 */
|
||||
font: inherit; /* 2 */
|
||||
margin: 0; /* 3 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Address `overflow` set to `hidden` in IE 8/9/10/11.
|
||||
*/
|
||||
|
||||
button {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address inconsistent `text-transform` inheritance for `button` and `select`.
|
||||
* All other form control elements do not inherit `text-transform` values.
|
||||
* Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
|
||||
* Correct `select` style inheritance in Firefox.
|
||||
*/
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
|
||||
* and `video` controls.
|
||||
* 2. Correct inability to style clickable `input` types in iOS.
|
||||
* 3. Improve usability and consistency of cursor style between image-type
|
||||
* `input` and others.
|
||||
*/
|
||||
|
||||
button,
|
||||
html input[type="button"], /* 1 */
|
||||
input[type="reset"],
|
||||
input[type="submit"] {
|
||||
-webkit-appearance: button; /* 2 */
|
||||
cursor: pointer; /* 3 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Re-set default cursor for disabled elements.
|
||||
*/
|
||||
|
||||
button[disabled],
|
||||
html input[disabled] {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove inner padding and border in Firefox 4+.
|
||||
*/
|
||||
|
||||
button::-moz-focus-inner,
|
||||
input::-moz-focus-inner {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
|
||||
* the UA stylesheet.
|
||||
*/
|
||||
|
||||
input {
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
/**
|
||||
* It's recommended that you don't attempt to style these elements.
|
||||
* Firefox's implementation doesn't respect box-sizing, padding, or width.
|
||||
*
|
||||
* 1. Address box sizing set to `content-box` in IE 8/9/10.
|
||||
* 2. Remove excess padding in IE 8/9/10.
|
||||
*/
|
||||
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
box-sizing: border-box; /* 1 */
|
||||
padding: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Fix the cursor style for Chrome's increment/decrement buttons. For certain
|
||||
* `font-size` values of the `input`, it causes the cursor style of the
|
||||
* decrement button to change from `default` to `text`.
|
||||
*/
|
||||
|
||||
input[type="number"]::-webkit-inner-spin-button,
|
||||
input[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Address `appearance` set to `searchfield` in Safari and Chrome.
|
||||
* 2. Address `box-sizing` set to `border-box` in Safari and Chrome
|
||||
* (include `-moz` to future-proof).
|
||||
*/
|
||||
|
||||
input[type="search"] {
|
||||
-webkit-appearance: textfield; /* 1 */
|
||||
-moz-box-sizing: content-box;
|
||||
-webkit-box-sizing: content-box; /* 2 */
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove inner padding and search cancel button in Safari and Chrome on OS X.
|
||||
* Safari (but not Chrome) clips the cancel button when the search input has
|
||||
* padding (and `textfield` appearance).
|
||||
*/
|
||||
|
||||
input[type="search"]::-webkit-search-cancel-button,
|
||||
input[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Define consistent border, margin, and padding.
|
||||
*/
|
||||
|
||||
fieldset {
|
||||
border: 1px solid #c0c0c0;
|
||||
margin: 0 2px;
|
||||
padding: 0.35em 0.625em 0.75em;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct `color` not being inherited in IE 8/9/10/11.
|
||||
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
|
||||
*/
|
||||
|
||||
legend {
|
||||
border: 0; /* 1 */
|
||||
padding: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove default vertical scrollbar in IE 8/9/10/11.
|
||||
*/
|
||||
|
||||
textarea {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Don't inherit the `font-weight` (applied by a rule above).
|
||||
* NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
|
||||
*/
|
||||
|
||||
optgroup {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Tables
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove most spacing between table cells.
|
||||
*/
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
td,
|
||||
th {
|
||||
padding: 0;
|
||||
}
|
99
_sass/_notices.scss
Normal file
99
_sass/_notices.scss
Normal file
@ -0,0 +1,99 @@
|
||||
/* ==========================================================================
|
||||
NOTICE TEXT BLOCKS
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Default Kramdown usage (no indents!):
|
||||
* <div class="notice" markdown="1">
|
||||
* #### Headline for the Notice
|
||||
* Text for the notice
|
||||
* </div>
|
||||
*/
|
||||
|
||||
@mixin notice($notice-color) {
|
||||
margin: 2em 0 !important; /* override*/
|
||||
padding: 1em;
|
||||
font-family: $global-font-family;
|
||||
font-size: $type-size-6 !important;
|
||||
text-indent: initial; /* override*/
|
||||
background-color: mix(#fff, $notice-color, 90%);
|
||||
border-radius: $border-radius;
|
||||
box-shadow: 0 1px 1px rgba($notice-color, 0.25);
|
||||
|
||||
h4 {
|
||||
margin-top: 0 !important; /* override*/
|
||||
margin-bottom: 0.75em;
|
||||
}
|
||||
|
||||
@at-root .page__content #{&} h4 {
|
||||
/* using at-root to override .page-content h4 font size*/
|
||||
margin-bottom: 0;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
p {
|
||||
&:last-child {
|
||||
margin-bottom: 0 !important; /* override*/
|
||||
}
|
||||
}
|
||||
|
||||
h4 + p {
|
||||
/* remove space above paragraphs that appear directly after notice headline*/
|
||||
margin-top: 0;
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $notice-color;
|
||||
|
||||
&:hover {
|
||||
color: mix(#000, $notice-color, 40%);
|
||||
}
|
||||
}
|
||||
|
||||
code {
|
||||
background-color: mix(#fff, $notice-color, 95%)
|
||||
}
|
||||
|
||||
ul {
|
||||
&:last-child {
|
||||
margin-bottom: 0; /* override*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Default notice */
|
||||
|
||||
.notice {
|
||||
@include notice($light-gray);
|
||||
}
|
||||
|
||||
/* Primary notice */
|
||||
|
||||
.notice--primary {
|
||||
@include notice($primary-color);
|
||||
}
|
||||
|
||||
/* Info notice */
|
||||
|
||||
.notice--info {
|
||||
@include notice($info-color);
|
||||
}
|
||||
|
||||
/* Warning notice */
|
||||
|
||||
.notice--warning {
|
||||
@include notice($warning-color);
|
||||
}
|
||||
|
||||
/* Success notice */
|
||||
|
||||
.notice--success {
|
||||
@include notice($success-color);
|
||||
}
|
||||
|
||||
/* Danger notice */
|
||||
|
||||
.notice--danger {
|
||||
@include notice($danger-color);
|
||||
}
|
401
_sass/_page.scss
Normal file
401
_sass/_page.scss
Normal file
@ -0,0 +1,401 @@
|
||||
/* ==========================================================================
|
||||
SINGLE PAGE/POST
|
||||
========================================================================== */
|
||||
|
||||
#main {
|
||||
@include container;
|
||||
@include clearfix;
|
||||
margin-top: 2em;
|
||||
padding-left: 1em;
|
||||
padding-right: 1em;
|
||||
animation: intro 0.3s both;
|
||||
animation-delay: 0.35s;
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
max-width: $x-large;
|
||||
}
|
||||
}
|
||||
|
||||
.page {
|
||||
@include breakpoint($large) {
|
||||
@include span(10 of 12 last);
|
||||
@include prefix(0.5 of 12);
|
||||
@include suffix(2 of 12);
|
||||
}
|
||||
|
||||
.page__inner-wrap {
|
||||
@include full();
|
||||
|
||||
.page__content,
|
||||
.page__meta,
|
||||
.page__share {
|
||||
@include full();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.page__title {
|
||||
margin-top: 0;
|
||||
line-height: 1;
|
||||
|
||||
& + .page__meta {
|
||||
margin-top: -0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
.page__lead {
|
||||
font-family: $global-font-family;
|
||||
font-size: $type-size-4;
|
||||
}
|
||||
|
||||
.page__content {
|
||||
|
||||
h2 {
|
||||
padding-bottom: 0.5em;
|
||||
border-bottom: 1px solid $border-color;
|
||||
}
|
||||
|
||||
p, li, dl {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
/* paragraph indents */
|
||||
p {
|
||||
margin: 0 0 $indent-var;
|
||||
|
||||
/* sibling indentation*/
|
||||
@if $paragraph-indent == true {
|
||||
& + p {
|
||||
text-indent: $indent-var;
|
||||
margin-top: -($indent-var);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
|
||||
img {
|
||||
box-shadow: 0 0 10px rgba(#000, 0.25);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dt {
|
||||
margin-top: 1em;
|
||||
font-family: $sans-serif;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-left: 1em;
|
||||
font-family: $sans-serif;
|
||||
font-size: $type-size-6;
|
||||
}
|
||||
|
||||
.small {
|
||||
font-size: $type-size-6;
|
||||
}
|
||||
|
||||
/* blockquote citations */
|
||||
blockquote + .small {
|
||||
margin-top: -1.5em;
|
||||
padding-left: 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.page__hero {
|
||||
position: relative;
|
||||
margin-bottom: 2em;
|
||||
@include clearfix;
|
||||
animation: intro 0.3s both;
|
||||
animation-delay: 0.25s;
|
||||
|
||||
&--overlay {
|
||||
position: relative;
|
||||
margin-bottom: 2em;
|
||||
padding: 3em 0;
|
||||
@include clearfix;
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
animation: intro 0.3s both;
|
||||
animation-delay: 0.25s;
|
||||
|
||||
a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
padding-left: 1em;
|
||||
padding-right: 1em;
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
max-width: $x-large;
|
||||
}
|
||||
}
|
||||
|
||||
.page__title,
|
||||
.page__meta,
|
||||
.page__lead,
|
||||
.btn {
|
||||
color: #fff;
|
||||
text-shadow: 1px 1px 4px rgba(#000, 0.5);
|
||||
}
|
||||
|
||||
.page__lead {
|
||||
max-width: $medium;
|
||||
}
|
||||
|
||||
.page__title {
|
||||
font-size: $type-size-2;
|
||||
|
||||
@include breakpoint($small) {
|
||||
font-size: $type-size-1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.page__hero-image {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
-ms-interpolation-mode: bicubic;
|
||||
}
|
||||
|
||||
.page__hero-caption {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
margin: 0 auto;
|
||||
padding: 2px 5px;
|
||||
color: #fff;
|
||||
font-family: $caption-font-family;
|
||||
font-size: $type-size-7;
|
||||
background: #000;
|
||||
text-align: right;
|
||||
z-index: 5;
|
||||
opacity: 0.5;
|
||||
border-radius: $border-radius 0 $border-radius 0;
|
||||
|
||||
@include breakpoint($large) {
|
||||
padding: 5px 10px;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Social sharing
|
||||
========================================================================== */
|
||||
|
||||
.page__share {
|
||||
margin-top: 2em;
|
||||
padding-top: 1em;
|
||||
border-top: 1px solid $border-color;
|
||||
|
||||
@include breakpoint(max-width $small) {
|
||||
.btn span {
|
||||
border: 0;
|
||||
clip: rect(0 0 0 0);
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.page__share-title {
|
||||
margin-bottom: 10px;
|
||||
font-size: $type-size-6;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Page meta
|
||||
========================================================================== */
|
||||
|
||||
.page__meta {
|
||||
margin-top: 2em;
|
||||
color: mix(#fff, $gray, 25%);
|
||||
font-family: $sans-serif;
|
||||
font-size: $type-size-6;
|
||||
|
||||
p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
.page__meta-title {
|
||||
margin-bottom: 10px;
|
||||
font-size: $type-size-6;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Page taxonomy
|
||||
========================================================================== */
|
||||
|
||||
.page__taxonomy {
|
||||
.sep {
|
||||
display: none;
|
||||
}
|
||||
|
||||
strong {
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.page__taxonomy-item {
|
||||
display: inline-block;
|
||||
margin-right: 5px;
|
||||
margin-bottom: 8px;
|
||||
padding: 5px 10px;
|
||||
text-decoration: none;
|
||||
border: 1px solid $light-gray;
|
||||
border-radius: $border-radius;
|
||||
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
color: $link-color-hover;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Comments
|
||||
========================================================================== */
|
||||
|
||||
.page__comments {
|
||||
@include full();
|
||||
}
|
||||
|
||||
.page__comments-title {
|
||||
margin-top: 2rem;
|
||||
margin-bottom: 10px;
|
||||
padding-top: 2rem;
|
||||
font-size: $type-size-6;
|
||||
border-top: 1px solid $border-color;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.page__comments-form {
|
||||
padding: 1em;
|
||||
background: $lighter-gray;
|
||||
transition: $global-transition;
|
||||
|
||||
&.disabled {
|
||||
input,
|
||||
button,
|
||||
textarea,
|
||||
label {
|
||||
pointer-events: none;
|
||||
cursor: not-allowed;
|
||||
filter: alpha(opacity=65);
|
||||
box-shadow: none;
|
||||
opacity: 0.65;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.comment {
|
||||
@include clearfix();
|
||||
margin: 1em 0;
|
||||
|
||||
&:not(:last-child) {
|
||||
border-bottom: 1px solid $border-color;
|
||||
}
|
||||
}
|
||||
|
||||
.comment__avatar-wrapper {
|
||||
float: left;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
|
||||
@include breakpoint($large) {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
}
|
||||
|
||||
.comment__avatar {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-radius: 50%;
|
||||
|
||||
@include breakpoint($large) {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
padding: 5px;
|
||||
border: 1px solid $border-color;
|
||||
}
|
||||
}
|
||||
|
||||
.comment__content-wrapper {
|
||||
float: right;
|
||||
width: calc(100% - 60px);
|
||||
|
||||
@include breakpoint($large) {
|
||||
width: calc(100% - 100px);
|
||||
}
|
||||
}
|
||||
|
||||
.comment__author {
|
||||
margin: 0;
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
.comment__date {
|
||||
@extend .page__meta;
|
||||
margin: 0;
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Related
|
||||
========================================================================== */
|
||||
|
||||
.page__related {
|
||||
margin-top: 2em;
|
||||
padding-top: 1em;
|
||||
border-top: 1px solid $border-color;
|
||||
@include clearfix();
|
||||
float: left;
|
||||
|
||||
@include breakpoint($large) {
|
||||
@include pre(2.5 of 12);
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
.page__related-title {
|
||||
margin-bottom: 10px;
|
||||
font-size: $type-size-6;
|
||||
text-transform: uppercase;
|
||||
}
|
18
_sass/_print.scss
Normal file
18
_sass/_print.scss
Normal file
@ -0,0 +1,18 @@
|
||||
/* ==========================================================================
|
||||
PRINT STYLES
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
Hide the following elements on print
|
||||
========================================================================== */
|
||||
|
||||
@media print {
|
||||
.masthead,
|
||||
.toc,
|
||||
.page__share,
|
||||
.page__related,
|
||||
.ads,
|
||||
.page__footer {
|
||||
display: none;
|
||||
}
|
||||
}
|
187
_sass/_reset.scss
Normal file
187
_sass/_reset.scss
Normal file
@ -0,0 +1,187 @@
|
||||
/* ==========================================================================
|
||||
STYLE RESETS
|
||||
========================================================================== */
|
||||
|
||||
@include border-box-sizing;
|
||||
|
||||
html {
|
||||
/* apply a natural box layout model to all elements */
|
||||
box-sizing: border-box;
|
||||
background-color: $background-color;
|
||||
font-size: 16px;
|
||||
|
||||
@include breakpoint($medium) {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
@include breakpoint($large) {
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
font-size: 22px;
|
||||
}
|
||||
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
}
|
||||
|
||||
/* Remove margin */
|
||||
|
||||
body { margin: 0; }
|
||||
|
||||
/* Selected elements */
|
||||
|
||||
::-moz-selection {
|
||||
color: #fff;
|
||||
background: #000;
|
||||
}
|
||||
|
||||
::selection {
|
||||
color: #fff;
|
||||
background: #000;
|
||||
}
|
||||
|
||||
/* Display HTML5 elements in IE6-9 and FF3 */
|
||||
|
||||
article,
|
||||
aside,
|
||||
details,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
main,
|
||||
nav,
|
||||
section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Display block in IE6-9 and FF3 */
|
||||
|
||||
audio,
|
||||
canvas,
|
||||
video {
|
||||
display: inline-block;
|
||||
*display: inline;
|
||||
*zoom: 1;
|
||||
}
|
||||
|
||||
/* Prevents modern browsers from displaying 'audio' without controls */
|
||||
|
||||
audio:not([controls]) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $link-color;
|
||||
}
|
||||
|
||||
/* Apply focus state */
|
||||
|
||||
a:focus {
|
||||
@extend %tab-focus;
|
||||
}
|
||||
|
||||
/* Remove outline from links */
|
||||
|
||||
a:hover,
|
||||
a:active {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
/* Prevent sub and sup affecting line-height in all browsers */
|
||||
|
||||
sub,
|
||||
sup {
|
||||
position: relative;
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
/* img border in anchor's and image quality */
|
||||
|
||||
img {
|
||||
/* Responsive images (ensure images don't scale beyond their parents) */
|
||||
max-width: 100%; /* part 1: Set a maximum relative to the parent*/
|
||||
width: auto\9; /* IE7-8 need help adjusting responsive images*/
|
||||
height: auto; /* part 2: Scale the height according to the width, otherwise you get stretching*/
|
||||
|
||||
vertical-align: middle;
|
||||
border: 0;
|
||||
-ms-interpolation-mode: bicubic;
|
||||
}
|
||||
|
||||
/* Prevent max-width from affecting Google Maps */
|
||||
|
||||
#map_canvas img,
|
||||
.google-maps img {
|
||||
max-width: none;
|
||||
}
|
||||
|
||||
/* Consistent form font size in all browsers, margin changes, misc */
|
||||
|
||||
button,
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
margin: 0;
|
||||
font-size: 100%;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
button,
|
||||
input {
|
||||
*overflow: visible; /* inner spacing ie IE6/7*/
|
||||
line-height: normal; /* FF3/4 have !important on line-height in UA stylesheet*/
|
||||
}
|
||||
|
||||
button::-moz-focus-inner,
|
||||
input::-moz-focus-inner { /* inner padding and border oddities in FF3/4*/
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
button,
|
||||
html input[type="button"], // avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls
|
||||
input[type="reset"],
|
||||
input[type="submit"] {
|
||||
-webkit-appearance: button; /* corrects inability to style clickable `input` types in iOS*/
|
||||
cursor: pointer; /* improves usability and consistency of cursor style between image-type `input` and others*/
|
||||
}
|
||||
|
||||
label,
|
||||
select,
|
||||
button,
|
||||
input[type="button"],
|
||||
input[type="reset"],
|
||||
input[type="submit"],
|
||||
input[type="radio"],
|
||||
input[type="checkbox"] {
|
||||
cursor: pointer; /* improves usability and consistency of cursor style between image-type `input` and others*/
|
||||
}
|
||||
|
||||
input[type="search"] { /* Appearance in Safari/Chrome*/
|
||||
box-sizing: content-box;
|
||||
-webkit-appearance: textfield;
|
||||
}
|
||||
|
||||
input[type="search"]::-webkit-search-decoration,
|
||||
input[type="search"]::-webkit-search-cancel-button {
|
||||
-webkit-appearance: none; /* inner-padding issues in Chrome OSX, Safari 5*/
|
||||
}
|
||||
|
||||
textarea {
|
||||
overflow: auto; /* remove vertical scrollbar in IE6-9*/
|
||||
vertical-align: top; /* readability and alignment cross-browser*/
|
||||
}
|
232
_sass/_sidebar.scss
Normal file
232
_sass/_sidebar.scss
Normal file
@ -0,0 +1,232 @@
|
||||
/* ==========================================================================
|
||||
SIDEBAR
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
Default
|
||||
========================================================================== */
|
||||
|
||||
.sidebar {
|
||||
@include clearfix();
|
||||
margin-bottom: 1em;
|
||||
|
||||
@include breakpoint($large) {
|
||||
@include span(2 of 12);
|
||||
opacity: 0.75;
|
||||
-webkit-transition: opacity 0.2s ease-in-out;
|
||||
transition: opacity 0.2s ease-in-out;
|
||||
|
||||
&:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
h2, h3, h4, h5, h6 {
|
||||
margin-bottom: 0;
|
||||
font-family: $sans-serif-narrow;
|
||||
}
|
||||
|
||||
h3, h4 {
|
||||
font-size: $type-size-5;
|
||||
}
|
||||
|
||||
p, li {
|
||||
font-family: $sans-serif;
|
||||
font-size: $type-size-6;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar__right {
|
||||
margin-bottom: 1em;
|
||||
|
||||
@include breakpoint($large) {
|
||||
position: relative;
|
||||
float: right;
|
||||
width: $right-sidebar-width-narrow;
|
||||
margin-left: span(0.5 of 12);
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
width: $right-sidebar-width;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Author profile and links
|
||||
========================================================================== */
|
||||
|
||||
.author__avatar {
|
||||
display: table-cell;
|
||||
vertical-align: top;
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
|
||||
@include breakpoint($large) {
|
||||
display: block;
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 110px;
|
||||
border-radius: 50%;
|
||||
|
||||
@include breakpoint($large) {
|
||||
padding: 5px;
|
||||
border: 1px solid $border-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.author__content {
|
||||
display: table-cell;
|
||||
vertical-align: top;
|
||||
padding-left: 15px;
|
||||
padding-right: 25px;
|
||||
line-height: 1;
|
||||
|
||||
@include breakpoint($large) {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.author__name {
|
||||
margin: 0;
|
||||
|
||||
@include breakpoint($large) {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
.sidebar .author__name {
|
||||
font-family: $sans-serif;
|
||||
font-size: $type-size-5;
|
||||
}
|
||||
|
||||
.author__bio {
|
||||
margin: 0;
|
||||
|
||||
@include breakpoint($large) {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
.author__urls-wrapper {
|
||||
position: relative;
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
font-family: $sans-serif;
|
||||
z-index: 10;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
|
||||
li:last-child {
|
||||
a {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@include breakpoint($large) {
|
||||
display: block;
|
||||
}
|
||||
|
||||
button {
|
||||
margin-bottom: 0;
|
||||
|
||||
@include breakpoint($large) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.author__urls {
|
||||
display: none;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
margin-top: 15px;
|
||||
padding: 10px;
|
||||
list-style-type: none;
|
||||
border: 1px solid $border-color;
|
||||
border-radius: $border-radius;
|
||||
background: #fff;
|
||||
z-index: -1;
|
||||
box-shadow: 0 0 10px rgba(#000, 0.25);
|
||||
cursor: default;
|
||||
|
||||
@include breakpoint($large) {
|
||||
display: block;
|
||||
position: relative;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
&:before {
|
||||
display: block;
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: -11px;
|
||||
left: calc(50% - 10px);
|
||||
width: 0;
|
||||
border-style: solid;
|
||||
border-width: 0 10px 10px;
|
||||
border-color: $border-color transparent;
|
||||
z-index: 0;
|
||||
|
||||
@include breakpoint($large) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
&:after {
|
||||
display: block;
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: -10px;
|
||||
left: calc(50% - 10px);
|
||||
width: 0;
|
||||
border-style: solid;
|
||||
border-width: 0 10px 10px;
|
||||
border-color: #fff transparent;
|
||||
z-index: 1;
|
||||
|
||||
@include breakpoint($large) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
li {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
a {
|
||||
display: block;
|
||||
margin-bottom: 5px;
|
||||
padding-right: 5px;
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
color: inherit;
|
||||
font-size: $type-size-5;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,71 +0,0 @@
|
||||
/**
|
||||
* Syntax highlighting styles
|
||||
*/
|
||||
.highlight {
|
||||
background: #fff;
|
||||
@extend %vertical-rhythm;
|
||||
|
||||
.highlighter-rouge & {
|
||||
background: #eef;
|
||||
}
|
||||
|
||||
.c { color: #998; font-style: italic } // Comment
|
||||
.err { color: #a61717; background-color: #e3d2d2 } // Error
|
||||
.k { font-weight: bold } // Keyword
|
||||
.o { font-weight: bold } // Operator
|
||||
.cm { color: #998; font-style: italic } // Comment.Multiline
|
||||
.cp { color: #999; font-weight: bold } // Comment.Preproc
|
||||
.c1 { color: #998; font-style: italic } // Comment.Single
|
||||
.cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special
|
||||
.gd { color: #000; background-color: #fdd } // Generic.Deleted
|
||||
.gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific
|
||||
.ge { font-style: italic } // Generic.Emph
|
||||
.gr { color: #a00 } // Generic.Error
|
||||
.gh { color: #999 } // Generic.Heading
|
||||
.gi { color: #000; background-color: #dfd } // Generic.Inserted
|
||||
.gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific
|
||||
.go { color: #888 } // Generic.Output
|
||||
.gp { color: #555 } // Generic.Prompt
|
||||
.gs { font-weight: bold } // Generic.Strong
|
||||
.gu { color: #aaa } // Generic.Subheading
|
||||
.gt { color: #a00 } // Generic.Traceback
|
||||
.kc { font-weight: bold } // Keyword.Constant
|
||||
.kd { font-weight: bold } // Keyword.Declaration
|
||||
.kp { font-weight: bold } // Keyword.Pseudo
|
||||
.kr { font-weight: bold } // Keyword.Reserved
|
||||
.kt { color: #458; font-weight: bold } // Keyword.Type
|
||||
.m { color: #099 } // Literal.Number
|
||||
.s { color: #d14 } // Literal.String
|
||||
.na { color: #008080 } // Name.Attribute
|
||||
.nb { color: #0086B3 } // Name.Builtin
|
||||
.nc { color: #458; font-weight: bold } // Name.Class
|
||||
.no { color: #008080 } // Name.Constant
|
||||
.ni { color: #800080 } // Name.Entity
|
||||
.ne { color: #900; font-weight: bold } // Name.Exception
|
||||
.nf { color: #900; font-weight: bold } // Name.Function
|
||||
.nn { color: #555 } // Name.Namespace
|
||||
.nt { color: #000080 } // Name.Tag
|
||||
.nv { color: #008080 } // Name.Variable
|
||||
.ow { font-weight: bold } // Operator.Word
|
||||
.w { color: #bbb } // Text.Whitespace
|
||||
.mf { color: #099 } // Literal.Number.Float
|
||||
.mh { color: #099 } // Literal.Number.Hex
|
||||
.mi { color: #099 } // Literal.Number.Integer
|
||||
.mo { color: #099 } // Literal.Number.Oct
|
||||
.sb { color: #d14 } // Literal.String.Backtick
|
||||
.sc { color: #d14 } // Literal.String.Char
|
||||
.sd { color: #d14 } // Literal.String.Doc
|
||||
.s2 { color: #d14 } // Literal.String.Double
|
||||
.se { color: #d14 } // Literal.String.Escape
|
||||
.sh { color: #d14 } // Literal.String.Heredoc
|
||||
.si { color: #d14 } // Literal.String.Interpol
|
||||
.sx { color: #d14 } // Literal.String.Other
|
||||
.sr { color: #009926 } // Literal.String.Regex
|
||||
.s1 { color: #d14 } // Literal.String.Single
|
||||
.ss { color: #990073 } // Literal.String.Symbol
|
||||
.bp { color: #999 } // Name.Builtin.Pseudo
|
||||
.vc { color: #008080 } // Name.Variable.Class
|
||||
.vg { color: #008080 } // Name.Variable.Global
|
||||
.vi { color: #008080 } // Name.Variable.Instance
|
||||
.il { color: #099 } // Literal.Number.Integer.Long
|
||||
}
|
146
_sass/_syntax.scss
Normal file
146
_sass/_syntax.scss
Normal file
@ -0,0 +1,146 @@
|
||||
/* ==========================================================================
|
||||
Syntax highlighting
|
||||
========================================================================== */
|
||||
|
||||
div.highlighter-rouge,
|
||||
figure.highlight {
|
||||
position: relative;
|
||||
margin-bottom: 1em;
|
||||
font-family: $monospace;
|
||||
font-size: $type-size-7;
|
||||
line-height: 1.8;
|
||||
border: 1px solid $border-color;
|
||||
border-radius: $border-radius;
|
||||
background-color: $code-background-color;
|
||||
box-shadow: $box-shadow;
|
||||
|
||||
&:before {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
padding: 0.5em;
|
||||
background-color: $lighter-gray;
|
||||
content: "\f121";
|
||||
font-family: "fontawesome" !important;
|
||||
line-height: 1;
|
||||
text-transform: none;
|
||||
speak: none;
|
||||
}
|
||||
|
||||
.highlight {
|
||||
margin: 0;
|
||||
padding: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
figure.highlight {
|
||||
padding-left: 1em;
|
||||
padding-right: 1em;
|
||||
}
|
||||
|
||||
.highlight table {
|
||||
font-size: 1em;
|
||||
border: 0;
|
||||
|
||||
td {
|
||||
padding: 5px;
|
||||
border: 0;
|
||||
|
||||
// line numbers
|
||||
&.gutter {
|
||||
padding-right: 1em;
|
||||
color: $light-gray;
|
||||
}
|
||||
}
|
||||
|
||||
pre {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.highlight pre { width: 100%; }
|
||||
|
||||
/*
|
||||
Solarized Light
|
||||
http://ethanschoonover.com/solarized
|
||||
|
||||
SOLARIZED HEX ROLE
|
||||
--------- -------- ------------------------------------------
|
||||
base01 #586e75 body text / default code / primary content
|
||||
base1 #93a1a1 comments / secondary content
|
||||
base3 #fdf6e3 background
|
||||
orange #cb4b16 constants
|
||||
red #dc322f regex, special keywords
|
||||
blue #22b3eb reserved keywords
|
||||
cyan #2aa198 strings, numbers
|
||||
green #859900 operators, other keywords
|
||||
========================================================================== */
|
||||
|
||||
.highlight .c { color: #93a1a1 } /* Comment */
|
||||
.highlight .err { color: #586e75 } /* Error */
|
||||
.highlight .g { color: #586e75 } /* Generic */
|
||||
.highlight .k { color: #859900 } /* Keyword */
|
||||
.highlight .l { color: #586e75 } /* Literal */
|
||||
.highlight .n { color: #586e75 } /* Name */
|
||||
.highlight .o { color: #859900 } /* Operator */
|
||||
.highlight .x { color: #cb4b16 } /* Other */
|
||||
.highlight .p { color: #586e75 } /* Punctuation */
|
||||
.highlight .cm { color: #93a1a1 } /* Comment.Multiline */
|
||||
.highlight .cp { color: #859900 } /* Comment.Preproc */
|
||||
.highlight .c1 { color: #93a1a1 } /* Comment.Single */
|
||||
.highlight .cs { color: #859900 } /* Comment.Special */
|
||||
.highlight .gd { color: #2aa198 } /* Generic.Deleted */
|
||||
.highlight .ge { color: #586e75; font-style: italic } /* Generic.Emph */
|
||||
.highlight .gr { color: #dc322f } /* Generic.Error */
|
||||
.highlight .gh { color: #cb4b16 } /* Generic.Heading */
|
||||
.highlight .gi { color: #859900 } /* Generic.Inserted */
|
||||
.highlight .go { color: #586e75 } /* Generic.Output */
|
||||
.highlight .gp { color: #586e75 } /* Generic.Prompt */
|
||||
.highlight .gs { color: #586e75; font-weight: bold } /* Generic.Strong */
|
||||
.highlight .gu { color: #cb4b16 } /* Generic.Subheading */
|
||||
.highlight .gt { color: #586e75 } /* Generic.Traceback */
|
||||
.highlight .kc { color: #cb4b16 } /* Keyword.Constant */
|
||||
.highlight .kd { color: #22b3eb } /* Keyword.Declaration */
|
||||
.highlight .kn { color: #859900 } /* Keyword.Namespace */
|
||||
.highlight .kp { color: #859900 } /* Keyword.Pseudo */
|
||||
.highlight .kr { color: #22b3eb } /* Keyword.Reserved */
|
||||
.highlight .kt { color: #dc322f } /* Keyword.Type */
|
||||
.highlight .ld { color: #586e75 } /* Literal.Date */
|
||||
.highlight .m { color: #2aa198 } /* Literal.Number */
|
||||
.highlight .s { color: #2aa198 } /* Literal.String */
|
||||
.highlight .na { color: #586e75 } /* Name.Attribute */
|
||||
.highlight .nb { color: #B58900 } /* Name.Builtin */
|
||||
.highlight .nc { color: #22b3eb } /* Name.Class */
|
||||
.highlight .no { color: #cb4b16 } /* Name.Constant */
|
||||
.highlight .nd { color: #22b3eb } /* Name.Decorator */
|
||||
.highlight .ni { color: #cb4b16 } /* Name.Entity */
|
||||
.highlight .ne { color: #cb4b16 } /* Name.Exception */
|
||||
.highlight .nf { color: #22b3eb } /* Name.Function */
|
||||
.highlight .nl { color: #586e75 } /* Name.Label */
|
||||
.highlight .nn { color: #586e75 } /* Name.Namespace */
|
||||
.highlight .nx { color: #586e75 } /* Name.Other */
|
||||
.highlight .py { color: #586e75 } /* Name.Property */
|
||||
.highlight .nt { color: #22b3eb } /* Name.Tag */
|
||||
.highlight .nv { color: #22b3eb } /* Name.Variable */
|
||||
.highlight .ow { color: #859900 } /* Operator.Word */
|
||||
.highlight .w { color: #586e75 } /* Text.Whitespace */
|
||||
.highlight .mf { color: #2aa198 } /* Literal.Number.Float */
|
||||
.highlight .mh { color: #2aa198 } /* Literal.Number.Hex */
|
||||
.highlight .mi { color: #2aa198 } /* Literal.Number.Integer */
|
||||
.highlight .mo { color: #2aa198 } /* Literal.Number.Oct */
|
||||
.highlight .sb { color: #93a1a1 } /* Literal.String.Backtick */
|
||||
.highlight .sc { color: #2aa198 } /* Literal.String.Char */
|
||||
.highlight .sd { color: #586e75 } /* Literal.String.Doc */
|
||||
.highlight .s2 { color: #2aa198 } /* Literal.String.Double */
|
||||
.highlight .se { color: #cb4b16 } /* Literal.String.Escape */
|
||||
.highlight .sh { color: #586e75 } /* Literal.String.Heredoc */
|
||||
.highlight .si { color: #2aa198 } /* Literal.String.Interpol */
|
||||
.highlight .sx { color: #2aa198 } /* Literal.String.Other */
|
||||
.highlight .sr { color: #dc322f } /* Literal.String.Regex */
|
||||
.highlight .s1 { color: #2aa198 } /* Literal.String.Single */
|
||||
.highlight .ss { color: #2aa198 } /* Literal.String.Symbol */
|
||||
.highlight .bp { color: #22b3eb } /* Name.Builtin.Pseudo */
|
||||
.highlight .vc { color: #22b3eb } /* Name.Variable.Class */
|
||||
.highlight .vg { color: #22b3eb } /* Name.Variable.Global */
|
||||
.highlight .vi { color: #22b3eb } /* Name.Variable.Instance */
|
||||
.highlight .il { color: #2aa198 } /* Literal.Number.Integer.Long */
|
38
_sass/_tables.scss
Normal file
38
_sass/_tables.scss
Normal file
@ -0,0 +1,38 @@
|
||||
/* ==========================================================================
|
||||
TABLES
|
||||
========================================================================== */
|
||||
|
||||
table {
|
||||
margin-bottom: 1em;
|
||||
width: 100%;
|
||||
font-family: $global-font-family;
|
||||
font-size: $type-size-6;
|
||||
border-collapse: collapse;
|
||||
border: 1px solid $light-gray;
|
||||
|
||||
& + table {
|
||||
margin-top: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
thead {
|
||||
background-color: $lighter-gray;
|
||||
border-bottom: 1px solid $light-gray;
|
||||
}
|
||||
|
||||
th {
|
||||
padding: 0.5em;
|
||||
font-weight: bold;
|
||||
text-align: left;
|
||||
border-right: 1px solid $light-gray;
|
||||
}
|
||||
|
||||
td {
|
||||
padding: 0.5em;
|
||||
border-bottom: 1px solid $light-gray;
|
||||
border-right: 1px solid $light-gray;
|
||||
}
|
||||
|
||||
tr, td, th {
|
||||
vertical-align: middle;
|
||||
}
|
470
_sass/_utilities.scss
Normal file
470
_sass/_utilities.scss
Normal file
@ -0,0 +1,470 @@
|
||||
/* ==========================================================================
|
||||
UTILITY CLASSES
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
Visibility
|
||||
========================================================================== */
|
||||
|
||||
/* http://www.456bereastreet.com/archive/200711/screen_readers_sometimes_ignore_displaynone/ */
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
/* for preloading images */
|
||||
|
||||
.load {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.transparent {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
/* https://developer.yahoo.com/blogs/ydn/clip-hidden-content-better-accessibility-53456.html */
|
||||
|
||||
.visually-hidden,
|
||||
.screen-reader-text,
|
||||
.screen-reader-text span,
|
||||
.screen-reader-shortcut {
|
||||
position: absolute !important;
|
||||
clip: rect(1px, 1px, 1px, 1px);
|
||||
height: 1px !important;
|
||||
width: 1px !important;
|
||||
border: 0 !important;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
body:hover .visually-hidden a,
|
||||
body:hover .visually-hidden input,
|
||||
body:hover .visually-hidden button {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* screen readers */
|
||||
|
||||
.screen-reader-text:focus,
|
||||
.screen-reader-shortcut:focus {
|
||||
clip: auto !important;
|
||||
height: auto !important;
|
||||
width: auto !important;
|
||||
display: block;
|
||||
font-size: 1em;
|
||||
font-weight: bold;
|
||||
padding: 15px 23px 14px;
|
||||
background: #fff;
|
||||
z-index: 100000;
|
||||
text-decoration: none;
|
||||
box-shadow: 0 0 2px 2px rgba(0,0,0,.6);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Skip links
|
||||
========================================================================== */
|
||||
|
||||
.skip-link {
|
||||
position: fixed;
|
||||
z-index: 20;
|
||||
margin: 0;
|
||||
font-family: $sans-serif;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.skip-link li {
|
||||
height: 0;
|
||||
width: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Type
|
||||
========================================================================== */
|
||||
|
||||
.text-left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.text-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.text-right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.text-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
.text-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Alignment
|
||||
========================================================================== */
|
||||
|
||||
/* clearfix */
|
||||
|
||||
.cf { clear: both; }
|
||||
|
||||
.wrapper {
|
||||
@include container();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Images
|
||||
========================================================================== */
|
||||
|
||||
/* image align left */
|
||||
|
||||
.align-left {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
|
||||
@include breakpoint($small) {
|
||||
float: left;
|
||||
margin-right: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
/* image align right */
|
||||
|
||||
.align-right {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
|
||||
@include breakpoint($small) {
|
||||
float: right;
|
||||
margin-left: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
/* image align center */
|
||||
|
||||
.align-center {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
/* file page content container */
|
||||
|
||||
.full {
|
||||
@include breakpoint($large){
|
||||
margin-right: -1 * span(2.5 of 12) !important;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Icons
|
||||
========================================================================== */
|
||||
|
||||
.icon {
|
||||
display: inline-block;
|
||||
fill: currentColor;
|
||||
width: 1em;
|
||||
height: 1.1em;
|
||||
line-height: 1;
|
||||
position: relative;
|
||||
top: -0.1em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/* social icons*/
|
||||
|
||||
.social-icons {
|
||||
.fa {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.fa-behance,
|
||||
.fa-behance-square {
|
||||
color: $behance-color;
|
||||
}
|
||||
|
||||
.fa-dribbble {
|
||||
color: $dribbble-color;
|
||||
}
|
||||
|
||||
.fa-facebook,
|
||||
.fa-facebook-square {
|
||||
color: $facebook-color;
|
||||
}
|
||||
|
||||
.fa-flickr {
|
||||
color: $flickr-color;
|
||||
}
|
||||
|
||||
.fa-foursquare {
|
||||
color: $foursquare-color;
|
||||
}
|
||||
|
||||
.fa-github,
|
||||
.fa-github-alt,
|
||||
.fa-github-square {
|
||||
color: $github-color;
|
||||
}
|
||||
|
||||
.fa-google-plus,
|
||||
.fa-google-plus-square {
|
||||
color: $google-plus-color;
|
||||
}
|
||||
|
||||
.fa-instagram {
|
||||
color: $instagram-color;
|
||||
}
|
||||
|
||||
.fa-lastfm,
|
||||
.fa-lastfm-square {
|
||||
color: $lastfm-color;
|
||||
}
|
||||
|
||||
.fa-linkedin,
|
||||
.fa-linkedin-square {
|
||||
color: $linkedin-color;
|
||||
}
|
||||
|
||||
.fa-pinterest,
|
||||
.fa-pinterest-p,
|
||||
.fa-pinterest-square {
|
||||
color: $pinterest-color;
|
||||
}
|
||||
|
||||
.fa-rss,
|
||||
.fa-rss-square {
|
||||
color: $rss-color;
|
||||
}
|
||||
|
||||
.fa-soundcloud {
|
||||
color: $soundcloud-color;
|
||||
}
|
||||
|
||||
.fa-stack-exchange,
|
||||
.fa-stack-overflow {
|
||||
color: $stackoverflow-color;
|
||||
}
|
||||
|
||||
.fa-tumblr,
|
||||
.fa-tumblr-square {
|
||||
color: $tumblr-color;
|
||||
}
|
||||
|
||||
.fa-twitter,
|
||||
.fa-twitter-square {
|
||||
color: $twitter-color;
|
||||
}
|
||||
|
||||
.fa-vimeo,
|
||||
.fa-vimeo-square {
|
||||
color: $vimeo-color;
|
||||
}
|
||||
|
||||
.fa-vine {
|
||||
color: $vine-color;
|
||||
}
|
||||
|
||||
.fa-youtube,
|
||||
.fa-youtube-square,
|
||||
.fa-youtube-play {
|
||||
color: $youtube-color;
|
||||
}
|
||||
|
||||
.fa-xing,
|
||||
.fa-xing-square {
|
||||
color: $xing-color;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Navicons
|
||||
========================================================================== */
|
||||
|
||||
.navicon {
|
||||
position: relative;
|
||||
width: $navicon-width;
|
||||
height: $navicon-height;
|
||||
background: #fff;
|
||||
margin: auto;
|
||||
-webkit-transition: 0.3s;
|
||||
transition: 0.3s;
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
width: $navicon-width;
|
||||
height: $navicon-height;
|
||||
background: #fff;
|
||||
-webkit-transition: 0.3s;
|
||||
transition: 0.3s;
|
||||
}
|
||||
|
||||
&:before {
|
||||
top: (-2 * $navicon-height);
|
||||
}
|
||||
|
||||
&:after {
|
||||
bottom: (-2 * $navicon-height);
|
||||
}
|
||||
}
|
||||
|
||||
.close .navicon {
|
||||
/* hide the middle line*/
|
||||
background: transparent;
|
||||
|
||||
/* overlay the lines by setting both their top values to 0*/
|
||||
&:before, &:after{
|
||||
-webkit-transform-origin: 50% 50%;
|
||||
-ms-transform-origin: 50% 50%;
|
||||
transform-origin: 50% 50%;
|
||||
top: 0;
|
||||
width: $navicon-width;
|
||||
}
|
||||
|
||||
/* rotate the lines to form the x shape*/
|
||||
&:before{
|
||||
-webkit-transform: rotate3d(0,0,1,45deg);
|
||||
transform: rotate3d(0,0,1,45deg);
|
||||
}
|
||||
&:after{
|
||||
-webkit-transform: rotate3d(0,0,1,-45deg);
|
||||
transform: rotate3d(0,0,1,-45deg);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Sticky, fixed to top content
|
||||
========================================================================== */
|
||||
|
||||
.sticky {
|
||||
@include breakpoint($large) {
|
||||
@include clearfix();
|
||||
position: -webkit-sticky;
|
||||
position: sticky;
|
||||
top: 2em;
|
||||
|
||||
> * {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Wells
|
||||
========================================================================== */
|
||||
|
||||
.well {
|
||||
min-height: 20px;
|
||||
padding: 19px;
|
||||
margin-bottom: 20px;
|
||||
background-color: #f5f5f5;
|
||||
border: 1px solid #e3e3e3;
|
||||
border-radius: $border-radius;
|
||||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Modals
|
||||
========================================================================== */
|
||||
|
||||
.show-modal {
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
|
||||
&:before {
|
||||
position: absolute;
|
||||
content: "";
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 999;
|
||||
background-color: rgba(255, 255, 255, 0.85);
|
||||
}
|
||||
|
||||
.modal {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.modal {
|
||||
display: none;
|
||||
position: fixed;
|
||||
width: 300px;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-left: -150px;
|
||||
margin-top: -150px;
|
||||
min-height: 0;
|
||||
z-index: 9999;
|
||||
background: #fff;
|
||||
border: 1px solid $border-color;
|
||||
border-radius: $border-radius;
|
||||
box-shadow: $box-shadow;
|
||||
|
||||
&__title {
|
||||
margin: 0;
|
||||
padding: 0.5em 1em;
|
||||
}
|
||||
|
||||
&__supporting-text {
|
||||
padding: 0 1em 0.5em 1em;
|
||||
}
|
||||
|
||||
&__actions {
|
||||
padding: 0.5em 1em;
|
||||
border-top: 1px solid $border-color;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Footnotes
|
||||
========================================================================== */
|
||||
|
||||
.footnote {
|
||||
color: mix(#fff, $gray, 25%);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.footnotes {
|
||||
color: mix(#fff, $gray, 25%);
|
||||
|
||||
ol, li, p {
|
||||
margin-bottom: 0;
|
||||
font-size: $type-size-6;
|
||||
}
|
||||
}
|
||||
|
||||
a.reversefootnote {
|
||||
color: $gray;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Required
|
||||
========================================================================== */
|
||||
|
||||
.required {
|
||||
color: $danger-color;
|
||||
font-weight: bold;
|
||||
}
|
147
_sass/_variables.scss
Normal file
147
_sass/_variables.scss
Normal file
@ -0,0 +1,147 @@
|
||||
/* ==========================================================================
|
||||
Variables
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
Typography
|
||||
========================================================================== */
|
||||
|
||||
$doc-font-size : 16;
|
||||
|
||||
/* paragraph indention */
|
||||
$paragraph-indent : false; // true, false (default)
|
||||
$indent-var : 1.3em;
|
||||
|
||||
/* system typefaces */
|
||||
$serif : Georgia, Times, serif;
|
||||
$sans-serif : -apple-system, ".SFNSText-Regular", "San Francisco", "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif;
|
||||
$monospace : Monaco, Consolas, "Lucida Console", monospace;
|
||||
|
||||
/* sans serif typefaces */
|
||||
$sans-serif-narrow : $sans-serif;
|
||||
$helvetica : Helvetica, "Helvetica Neue", Arial, sans-serif;
|
||||
|
||||
/* serif typefaces */
|
||||
$georgia : Georgia, serif;
|
||||
$times : Times, serif;
|
||||
$bodoni : "Bodoni MT", serif;
|
||||
$calisto : "Calisto MT", serif;
|
||||
$garamond : Garamond, serif;
|
||||
|
||||
$global-font-family : $sans-serif;
|
||||
$header-font-family : $sans-serif;
|
||||
$caption-font-family : $serif;
|
||||
|
||||
/* type scale */
|
||||
$type-size-1 : 2.441em; // ~39.056px
|
||||
$type-size-2 : 1.953em; // ~31.248px
|
||||
$type-size-3 : 1.563em; // ~25.008px
|
||||
$type-size-4 : 1.25em; // ~20px
|
||||
$type-size-5 : 1em; // ~16px
|
||||
$type-size-6 : 0.75em; // ~12px
|
||||
$type-size-7 : 0.6875em; // ~11px
|
||||
$type-size-8 : 0.625em; // ~10px
|
||||
|
||||
|
||||
/*
|
||||
Colors
|
||||
========================================================================== */
|
||||
|
||||
$gray : #7a8288;
|
||||
$dark-gray : mix(#000, $gray, 40%);
|
||||
$darker-gray : mix(#000, $gray, 60%);
|
||||
$light-gray : mix(#fff, $gray, 50%);
|
||||
$lighter-gray : mix(#fff, $gray, 90%);
|
||||
|
||||
$body-color : #fff;
|
||||
$background-color : #fff;
|
||||
$code-background-color : #fafafa;
|
||||
$code-background-color-dark : $light-gray;
|
||||
$text-color : $dark-gray;
|
||||
$border-color : $lighter-gray;
|
||||
|
||||
$primary-color : #7a8288;
|
||||
$success-color : #62c462;
|
||||
$warning-color : #f89406;
|
||||
$danger-color : #ee5f5b;
|
||||
$info-color : #52adc8;
|
||||
|
||||
/* brands */
|
||||
$behance-color : #1769FF;
|
||||
$dribbble-color : #ea4c89;
|
||||
$facebook-color : #3b5998;
|
||||
$flickr-color : #ff0084;
|
||||
$foursquare-color : #0072b1;
|
||||
$github-color : #171516;
|
||||
$google-plus-color : #dd4b39;
|
||||
$instagram-color : #517fa4;
|
||||
$lastfm-color : #d51007;
|
||||
$linkedin-color : #007bb6;
|
||||
$pinterest-color : #cb2027;
|
||||
$rss-color : #fa9b39;
|
||||
$soundcloud-color : #ff3300;
|
||||
$stackoverflow-color : #fe7a15;
|
||||
$tumblr-color : #32506d;
|
||||
$twitter-color : #55acee;
|
||||
$vimeo-color : #1ab7ea;
|
||||
$vine-color : #00bf8f;
|
||||
$youtube-color : #bb0000;
|
||||
$xing-color : #006567;
|
||||
|
||||
|
||||
/* links */
|
||||
$link-color : $info-color;
|
||||
$link-color-hover : mix(#000, $link-color, 25%);
|
||||
$link-color-visited : mix(#fff, $link-color, 25%);
|
||||
$masthead-link-color : $primary-color;
|
||||
$masthead-link-color-hover : mix(#000, $primary-color, 25%);
|
||||
|
||||
|
||||
/*
|
||||
Breakpoints
|
||||
========================================================================== */
|
||||
|
||||
@include breakpoint-set("to ems", true);
|
||||
|
||||
$small : 600px;
|
||||
$medium : 768px;
|
||||
$medium-wide : 900px;
|
||||
$large : 1024px;
|
||||
$x-large : 1280px;
|
||||
|
||||
|
||||
/*
|
||||
Grid
|
||||
========================================================================== */
|
||||
|
||||
$right-sidebar-width-narrow : 200px;
|
||||
$right-sidebar-width : 300px;
|
||||
$right-sidebar-width-wide : 400px;
|
||||
|
||||
$susy: (
|
||||
columns: 12,
|
||||
// column-width: 90px,
|
||||
gutters: 1/4,
|
||||
math: fluid,
|
||||
output: float,
|
||||
gutter-position: after,
|
||||
container: $large,
|
||||
global-box-sizing: border-box,
|
||||
// debug: (
|
||||
// image: show,
|
||||
// color: blue,
|
||||
// output: overlay,
|
||||
// toggle: top right,
|
||||
// ),
|
||||
);
|
||||
|
||||
|
||||
/*
|
||||
Other
|
||||
========================================================================== */
|
||||
|
||||
$border-radius : 4px;
|
||||
$box-shadow : 0 1px 1px rgba(0, 0, 0, 0.125);
|
||||
$navicon-width : 28px;
|
||||
$navicon-height : 4px;
|
||||
$global-transition : all 0.2s ease-in-out;
|
114
_sass/vendor/breakpoint/_breakpoint.scss
vendored
Normal file
114
_sass/vendor/breakpoint/_breakpoint.scss
vendored
Normal file
@ -0,0 +1,114 @@
|
||||
//////////////////////////////
|
||||
// Default Variables
|
||||
//////////////////////////////
|
||||
$Breakpoint-Settings: (
|
||||
'default media': all,
|
||||
'default feature': min-width,
|
||||
'default pair': width,
|
||||
|
||||
'force all media type': false,
|
||||
'to ems': false,
|
||||
'transform resolutions': true,
|
||||
|
||||
'no queries': false,
|
||||
'no query fallbacks': false,
|
||||
|
||||
'base font size': 16px,
|
||||
|
||||
'legacy syntax': false
|
||||
);
|
||||
|
||||
$breakpoint: () !default;
|
||||
|
||||
//////////////////////////////
|
||||
// Imports
|
||||
//////////////////////////////
|
||||
@import "settings";
|
||||
@import "context";
|
||||
@import "helpers";
|
||||
@import "parsers";
|
||||
@import "no-query";
|
||||
|
||||
@import "respond-to";
|
||||
|
||||
@import "legacy-settings";
|
||||
|
||||
//////////////////////////////
|
||||
// Breakpoint Mixin
|
||||
//////////////////////////////
|
||||
|
||||
@mixin breakpoint($query, $no-query: false) {
|
||||
@include legacy-settings-warning;
|
||||
|
||||
// Reset contexts
|
||||
@include private-breakpoint-reset-contexts();
|
||||
|
||||
$breakpoint: breakpoint($query, false);
|
||||
|
||||
$query-string: map-get($breakpoint, 'query');
|
||||
$query-fallback: map-get($breakpoint, 'fallback');
|
||||
|
||||
$private-breakpoint-context-holder: map-get($breakpoint, 'context holder') !global;
|
||||
$private-breakpoint-query-count: map-get($breakpoint, 'query count') !global;
|
||||
|
||||
// Allow for an as-needed override or usage of no query fallback.
|
||||
@if $no-query != false {
|
||||
$query-fallback: $no-query;
|
||||
}
|
||||
|
||||
@if $query-fallback != false {
|
||||
$context-setter: private-breakpoint-set-context('no-query', $query-fallback);
|
||||
}
|
||||
|
||||
// Print Out Query String
|
||||
@if not breakpoint-get('no queries') {
|
||||
@media #{$query-string} {
|
||||
@content;
|
||||
}
|
||||
}
|
||||
|
||||
@if breakpoint-get('no query fallbacks') != false or breakpoint-get('no queries') == true {
|
||||
|
||||
$type: type-of(breakpoint-get('no query fallbacks'));
|
||||
$print: false;
|
||||
|
||||
@if ($type == 'bool') {
|
||||
$print: true;
|
||||
}
|
||||
@else if ($type == 'string') {
|
||||
@if $query-fallback == breakpoint-get('no query fallbacks') {
|
||||
$print: true;
|
||||
}
|
||||
}
|
||||
@else if ($type == 'list') {
|
||||
@each $wrapper in breakpoint-get('no query fallbacks') {
|
||||
@if $query-fallback == $wrapper {
|
||||
$print: true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Write Fallback
|
||||
@if ($query-fallback != false) and ($print == true) {
|
||||
$type-fallback: type-of($query-fallback);
|
||||
|
||||
@if ($type-fallback != 'bool') {
|
||||
#{$query-fallback} & {
|
||||
@content;
|
||||
}
|
||||
}
|
||||
@else {
|
||||
@content;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include private-breakpoint-reset-contexts();
|
||||
}
|
||||
|
||||
|
||||
@mixin mq($query, $no-query: false) {
|
||||
@include breakpoint($query, $no-query) {
|
||||
@content;
|
||||
}
|
||||
}
|
95
_sass/vendor/breakpoint/_context.scss
vendored
Normal file
95
_sass/vendor/breakpoint/_context.scss
vendored
Normal file
@ -0,0 +1,95 @@
|
||||
//////////////////////////////
|
||||
// Private Breakpoint Variables
|
||||
//////////////////////////////
|
||||
$private-breakpoint-context-holder: ();
|
||||
$private-breakpoint-query-count: 0 !default;
|
||||
|
||||
//////////////////////////////
|
||||
// Breakpoint Has Context
|
||||
// Returns whether or not you are inside a Breakpoint query
|
||||
//////////////////////////////
|
||||
@function breakpoint-has-context() {
|
||||
@if length($private-breakpoint-query-count) {
|
||||
@return true;
|
||||
}
|
||||
@else {
|
||||
@return false;
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
// Breakpoint Get Context
|
||||
// $feature: Input feature to get it's current MQ context. Returns false if no context
|
||||
//////////////////////////////
|
||||
@function breakpoint-get-context($feature) {
|
||||
@if map-has-key($private-breakpoint-context-holder, $feature) {
|
||||
$get: map-get($private-breakpoint-context-holder, $feature);
|
||||
// Special handling of no-query from get side so /false/ prepends aren't returned
|
||||
@if $feature == 'no-query' {
|
||||
@if type-of($get) == 'list' and length($get) > 1 and nth($get, 1) == false {
|
||||
$get: nth($get, length($get));
|
||||
}
|
||||
}
|
||||
@return $get;
|
||||
}
|
||||
@else {
|
||||
@if breakpoint-has-context() and $feature == 'media' {
|
||||
@return breakpoint-get('default media');
|
||||
}
|
||||
@else {
|
||||
@return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
// Private function to set context
|
||||
//////////////////////////////
|
||||
@function private-breakpoint-set-context($feature, $value) {
|
||||
@if $value == 'monochrome' {
|
||||
$feature: 'monochrome';
|
||||
}
|
||||
|
||||
$current: map-get($private-breakpoint-context-holder, $feature);
|
||||
@if $current and length($current) == $private-breakpoint-query-count {
|
||||
@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}`";
|
||||
}
|
||||
|
||||
@if not map-has-key($private-breakpoint-context-holder, $feature) {
|
||||
$v-holder: ();
|
||||
@for $i from 1 to $private-breakpoint-query-count {
|
||||
@if $feature == 'media' {
|
||||
$v-holder: append($v-holder, breakpoint-get('default media'));
|
||||
}
|
||||
@else {
|
||||
$v-holder: append($v-holder, false);
|
||||
}
|
||||
}
|
||||
$v-holder: append($v-holder, $value);
|
||||
$private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($feature: $v-holder)) !global;
|
||||
}
|
||||
@else {
|
||||
$v-holder: map-get($private-breakpoint-context-holder, $feature);
|
||||
$length: length($v-holder);
|
||||
@for $i from $length to $private-breakpoint-query-count - 1 {
|
||||
@if $feature == 'media' {
|
||||
$v-holder: append($v-holder, breakpoint-get('default media'));
|
||||
}
|
||||
@else {
|
||||
$v-holder: append($v-holder, false);
|
||||
}
|
||||
}
|
||||
$v-holder: append($v-holder, $value);
|
||||
$private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($feature: $v-holder)) !global;
|
||||
}
|
||||
|
||||
@return true;
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
// Private function to reset context
|
||||
//////////////////////////////
|
||||
@mixin private-breakpoint-reset-contexts {
|
||||
$private-breakpoint-context-holder: () !global;
|
||||
$private-breakpoint-query-count: 0 !global;
|
||||
}
|
151
_sass/vendor/breakpoint/_helpers.scss
vendored
Normal file
151
_sass/vendor/breakpoint/_helpers.scss
vendored
Normal file
@ -0,0 +1,151 @@
|
||||
//////////////////////////////
|
||||
// Converts the input value to Base EMs
|
||||
//////////////////////////////
|
||||
@function breakpoint-to-base-em($value) {
|
||||
$value-unit: unit($value);
|
||||
|
||||
// Will convert relative EMs into root EMs.
|
||||
@if breakpoint-get('base font size') and type-of(breakpoint-get('base font size')) == 'number' and $value-unit == 'em' {
|
||||
$base-unit: unit(breakpoint-get('base font size'));
|
||||
|
||||
@if $base-unit == 'px' or $base-unit == '%' or $base-unit == 'em' or $base-unit == 'pt' {
|
||||
@return base-conversion($value) / base-conversion(breakpoint-get('base font size')) * 1em;
|
||||
}
|
||||
@else {
|
||||
@warn '#{breakpoint-get(\'base font size\')} is not set in valid units for font size!';
|
||||
@return false;
|
||||
}
|
||||
}
|
||||
@else {
|
||||
@return base-conversion($value);
|
||||
}
|
||||
}
|
||||
|
||||
@function base-conversion($value) {
|
||||
$unit: unit($value);
|
||||
|
||||
@if $unit == 'px' {
|
||||
@return $value / 16px * 1em;
|
||||
}
|
||||
@else if $unit == '%' {
|
||||
@return $value / 100% * 1em;
|
||||
}
|
||||
@else if $unit == 'em' {
|
||||
@return $value;
|
||||
}
|
||||
@else if $unit == 'pt' {
|
||||
@return $value / 12pt * 1em;
|
||||
}
|
||||
@else {
|
||||
@return $value;
|
||||
// @warn 'Everything is terrible! What have you done?!';
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
// Returns whether the feature can have a min/max pair
|
||||
//////////////////////////////
|
||||
$breakpoint-min-max-features: 'color',
|
||||
'color-index',
|
||||
'aspect-ratio',
|
||||
'device-aspect-ratio',
|
||||
'device-height',
|
||||
'device-width',
|
||||
'height',
|
||||
'monochrome',
|
||||
'resolution',
|
||||
'width';
|
||||
|
||||
@function breakpoint-min-max($feature) {
|
||||
@each $item in $breakpoint-min-max-features {
|
||||
@if $feature == $item {
|
||||
@return true;
|
||||
}
|
||||
}
|
||||
@return false;
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
// Returns whether the feature can have a string value
|
||||
//////////////////////////////
|
||||
$breakpoint-string-features: 'orientation',
|
||||
'scan',
|
||||
'color',
|
||||
'aspect-ratio',
|
||||
'device-aspect-ratio',
|
||||
'pointer',
|
||||
'luminosity';
|
||||
|
||||
@function breakpoint-string-value($feature) {
|
||||
@each $item in $breakpoint-string-features {
|
||||
@if breakpoint-min-max($item) {
|
||||
@if $feature == 'min-#{$item}' or $feature == 'max-#{$item}' {
|
||||
@return true;
|
||||
}
|
||||
}
|
||||
@else if $feature == $item {
|
||||
@return true;
|
||||
}
|
||||
}
|
||||
@return false;
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
// Returns whether the feature is a media type
|
||||
//////////////////////////////
|
||||
$breakpoint-media-types: 'all',
|
||||
'braille',
|
||||
'embossed',
|
||||
'handheld',
|
||||
'print',
|
||||
'projection',
|
||||
'screen',
|
||||
'speech',
|
||||
'tty',
|
||||
'tv';
|
||||
|
||||
@function breakpoint-is-media($feature) {
|
||||
@each $media in $breakpoint-media-types {
|
||||
@if ($feature == $media) or ($feature == 'not #{$media}') or ($feature == 'only #{$media}') {
|
||||
@return true;
|
||||
}
|
||||
}
|
||||
|
||||
@return false;
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
// Returns whether the feature can stand alone
|
||||
//////////////////////////////
|
||||
$breakpoint-single-string-features: 'color',
|
||||
'color-index',
|
||||
'grid',
|
||||
'monochrome';
|
||||
|
||||
@function breakpoint-single-string($feature) {
|
||||
@each $item in $breakpoint-single-string-features {
|
||||
@if $feature == $item {
|
||||
@return true;
|
||||
}
|
||||
}
|
||||
@return false;
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
// Returns whether the feature
|
||||
//////////////////////////////
|
||||
@function breakpoint-is-resolution($feature) {
|
||||
$resolutions: 'device-pixel-ratio', 'dpr';
|
||||
|
||||
@if breakpoint-get('transform resolutions') {
|
||||
$resolutions: append($resolutions, 'resolution');
|
||||
}
|
||||
|
||||
@each $reso in $resolutions {
|
||||
@if index($feature, $reso) or index($feature, 'min-#{$reso}') or index($feature, 'max-#{$reso}') {
|
||||
@return true;
|
||||
}
|
||||
}
|
||||
|
||||
@return false;
|
||||
}
|
50
_sass/vendor/breakpoint/_legacy-settings.scss
vendored
Normal file
50
_sass/vendor/breakpoint/_legacy-settings.scss
vendored
Normal file
@ -0,0 +1,50 @@
|
||||
@mixin legacy-settings-warning {
|
||||
$legacyVars: (
|
||||
'default-media': 'default media',
|
||||
'default-feature': 'default feature',
|
||||
'force-media-all': 'force all media type',
|
||||
'to-ems': 'to ems',
|
||||
'resolutions': 'transform resolutions',
|
||||
'no-queries': 'no queries',
|
||||
'no-query-fallbacks': 'no query fallbacks',
|
||||
'base-font-size': 'base font size',
|
||||
'legacy-syntax': 'legacy syntax'
|
||||
);
|
||||
|
||||
@each $legacy, $new in $legacyVars {
|
||||
@if global-variable-exists('breakpoint-' + $legacy) {
|
||||
@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."
|
||||
}
|
||||
};
|
||||
|
||||
//////////////////////////////
|
||||
// Hand correct each setting
|
||||
//////////////////////////////
|
||||
@if global-variable-exists('breakpoint-default-media') and $breakpoint-default-media != breakpoint-get('default media') {
|
||||
@include breakpoint-set('default media', $breakpoint-default-media);
|
||||
}
|
||||
@if global-variable-exists('breakpoint-default-feature') and $breakpoint-default-feature != breakpoint-get('default feature') {
|
||||
@include breakpoint-set('default feature', $breakpoint-default-feature);
|
||||
}
|
||||
@if global-variable-exists('breakpoint-force-media-all') and $breakpoint-force-media-all != breakpoint-get('force all media type') {
|
||||
@include breakpoint-set('force all media type', $breakpoint-force-media-all);
|
||||
}
|
||||
@if global-variable-exists('breakpoint-to-ems') and $breakpoint-to-ems != breakpoint-get('to ems') {
|
||||
@include breakpoint-set('to ems', $breakpoint-to-ems);
|
||||
}
|
||||
@if global-variable-exists('breakpoint-resolutions') and $breakpoint-resolutions != breakpoint-get('transform resolutions') {
|
||||
@include breakpoint-set('transform resolutions', $breakpoint-resolutions);
|
||||
}
|
||||
@if global-variable-exists('breakpoint-no-queries') and $breakpoint-no-queries != breakpoint-get('no queries') {
|
||||
@include breakpoint-set('no queries', $breakpoint-no-queries);
|
||||
}
|
||||
@if global-variable-exists('breakpoint-no-query-fallbacks') and $breakpoint-no-query-fallbacks != breakpoint-get('no query fallbacks') {
|
||||
@include breakpoint-set('no query fallbacks', $breakpoint-no-query-fallbacks);
|
||||
}
|
||||
@if global-variable-exists('breakpoint-base-font-size') and $breakpoint-base-font-size != breakpoint-get('base font size') {
|
||||
@include breakpoint-set('base font size', $breakpoint-base-font-size);
|
||||
}
|
||||
@if global-variable-exists('breakpoint-legacy-syntax') and $breakpoint-legacy-syntax != breakpoint-get('legacy syntax') {
|
||||
@include breakpoint-set('legacy syntax', $breakpoint-legacy-syntax);
|
||||
}
|
||||
}
|
15
_sass/vendor/breakpoint/_no-query.scss
vendored
Normal file
15
_sass/vendor/breakpoint/_no-query.scss
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
@function breakpoint-no-query($query) {
|
||||
@if type-of($query) == 'list' {
|
||||
$keyword: nth($query, 1);
|
||||
|
||||
@if type-of($keyword) == 'string' and ($keyword == 'no-query' or $keyword == 'no query' or $keyword == 'fallback') {
|
||||
@return nth($query, 2);
|
||||
}
|
||||
@else {
|
||||
@return false;
|
||||
}
|
||||
}
|
||||
@else {
|
||||
@return false;
|
||||
}
|
||||
}
|
215
_sass/vendor/breakpoint/_parsers.scss
vendored
Normal file
215
_sass/vendor/breakpoint/_parsers.scss
vendored
Normal file
@ -0,0 +1,215 @@
|
||||
//////////////////////////////
|
||||
// Import Parser Pieces
|
||||
//////////////////////////////
|
||||
@import "parsers/query";
|
||||
@import "parsers/single";
|
||||
@import "parsers/double";
|
||||
@import "parsers/triple";
|
||||
@import "parsers/resolution";
|
||||
|
||||
$Memo-Exists: function-exists(memo-get) and function-exists(memo-set);
|
||||
|
||||
//////////////////////////////
|
||||
// Breakpoint Function
|
||||
//////////////////////////////
|
||||
@function breakpoint($query, $contexts...) {
|
||||
$run: true;
|
||||
$return: ();
|
||||
|
||||
// Grab the Memo Output if Memoization can be a thing
|
||||
@if $Memo-Exists {
|
||||
$return: memo-get(breakpoint, breakpoint $query $contexts);
|
||||
|
||||
@if $return != null {
|
||||
$run: false;
|
||||
}
|
||||
}
|
||||
|
||||
@if not $Memo-Exists or $run {
|
||||
// Internal Variables
|
||||
$query-string: '';
|
||||
$query-fallback: false;
|
||||
$return: ();
|
||||
|
||||
// Reserve Global Private Breakpoint Context
|
||||
$holder-context: $private-breakpoint-context-holder;
|
||||
$holder-query-count: $private-breakpoint-query-count;
|
||||
|
||||
// Reset Global Private Breakpoint Context
|
||||
$private-breakpoint-context-holder: () !global;
|
||||
$private-breakpoint-query-count: 0 !global;
|
||||
|
||||
|
||||
// Test to see if it's a comma-separated list
|
||||
$or-list: if(list-separator($query) == 'comma', true, false);
|
||||
|
||||
|
||||
@if ($or-list == false and breakpoint-get('legacy syntax') == false) {
|
||||
$query-string: breakpoint-parse($query);
|
||||
}
|
||||
@else {
|
||||
$length: length($query);
|
||||
|
||||
$last: nth($query, $length);
|
||||
$query-fallback: breakpoint-no-query($last);
|
||||
|
||||
@if ($query-fallback != false) {
|
||||
$length: $length - 1;
|
||||
}
|
||||
|
||||
@if (breakpoint-get('legacy syntax') == true) {
|
||||
$mq: ();
|
||||
|
||||
@for $i from 1 through $length {
|
||||
$mq: append($mq, nth($query, $i), comma);
|
||||
}
|
||||
|
||||
$query-string: breakpoint-parse($mq);
|
||||
}
|
||||
@else {
|
||||
$query-string: '';
|
||||
@for $i from 1 through $length {
|
||||
$query-string: $query-string + if($i == 1, '', ', ') + breakpoint-parse(nth($query, $i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$return: ('query': $query-string,
|
||||
'fallback': $query-fallback,
|
||||
'context holder': $private-breakpoint-context-holder,
|
||||
'query count': $private-breakpoint-query-count
|
||||
);
|
||||
@if length($contexts) > 0 and nth($contexts, 1) != false {
|
||||
@if $query-fallback != false {
|
||||
$context-setter: private-breakpoint-set-context('no-query', $query-fallback);
|
||||
}
|
||||
$context-map: ();
|
||||
@each $context in $contexts {
|
||||
$context-map: map-merge($context-map, ($context: breakpoint-get-context($context)));
|
||||
}
|
||||
$return: map-merge($return, (context: $context-map));
|
||||
}
|
||||
|
||||
// Reset Global Private Breakpoint Context
|
||||
$private-breakpoint-context-holder: () !global;
|
||||
$private-breakpoint-query-count: 0 !global;
|
||||
|
||||
@if $Memo-Exists {
|
||||
$holder: memo-set(breakpoint, breakpoint $query $contexts, $return);
|
||||
}
|
||||
}
|
||||
|
||||
@return $return;
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
// General Breakpoint Parser
|
||||
//////////////////////////////
|
||||
@function breakpoint-parse($query) {
|
||||
// Increase number of 'and' queries
|
||||
$private-breakpoint-query-count: $private-breakpoint-query-count + 1 !global;
|
||||
|
||||
// Set up Media Type
|
||||
$query-print: '';
|
||||
|
||||
$force-all: ((breakpoint-get('force all media type') == true) and (breakpoint-get('default media') == 'all'));
|
||||
$empty-media: true;
|
||||
@if ($force-all == true) or (breakpoint-get('default media') != 'all') {
|
||||
// Force the print of the default media type if (force all is true and default media type is all) or (default media type is not all)
|
||||
$query-print: breakpoint-get('default media');
|
||||
$empty-media: false;
|
||||
}
|
||||
|
||||
|
||||
$query-resolution: false;
|
||||
|
||||
$query-holder: breakpoint-parse-query($query);
|
||||
|
||||
|
||||
|
||||
// Loop over each parsed out query and write it to $query-print
|
||||
$first: true;
|
||||
|
||||
@each $feature in $query-holder {
|
||||
$length: length($feature);
|
||||
|
||||
// Parse a single feature
|
||||
@if ($length == 1) {
|
||||
// Feature is currently a list, grab the actual value
|
||||
$feature: nth($feature, 1);
|
||||
|
||||
// Media Type must by convention be the first item, so it's safe to flat override $query-print, which right now should only be the default media type
|
||||
@if (breakpoint-is-media($feature)) {
|
||||
@if ($force-all == true) or ($feature != 'all') {
|
||||
// Force the print of the default media type if (force all is true and default media type is all) or (default media type is not all)
|
||||
$query-print: $feature;
|
||||
$empty-media: false;
|
||||
|
||||
// Set Context
|
||||
$context-setter: private-breakpoint-set-context(media, $query-print);
|
||||
}
|
||||
}
|
||||
@else {
|
||||
$parsed: breakpoint-parse-single($feature, $empty-media, $first);
|
||||
$query-print: '#{$query-print} #{$parsed}';
|
||||
$first: false;
|
||||
}
|
||||
}
|
||||
// Parse a double feature
|
||||
@else if ($length == 2) {
|
||||
@if (breakpoint-is-resolution($feature) != false) {
|
||||
$query-resolution: $feature;
|
||||
}
|
||||
@else {
|
||||
$parsed: null;
|
||||
// If it's a string/number pair,
|
||||
// we check to see if one is a single-string value,
|
||||
// then we parse it as a normal double
|
||||
$alpha: nth($feature, 1);
|
||||
$beta: nth($feature, 2);
|
||||
@if breakpoint-single-string($alpha) or breakpoint-single-string($beta) {
|
||||
$parsed: breakpoint-parse-single($alpha, $empty-media, $first);
|
||||
$query-print: '#{$query-print} #{$parsed}';
|
||||
$first: false;
|
||||
$parsed: breakpoint-parse-single($beta, $empty-media, $first);
|
||||
$query-print: '#{$query-print} #{$parsed}';
|
||||
}
|
||||
@else {
|
||||
$parsed: breakpoint-parse-double($feature, $empty-media, $first);
|
||||
$query-print: '#{$query-print} #{$parsed}';
|
||||
$first: false;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Parse a triple feature
|
||||
@else if ($length == 3) {
|
||||
$parsed: breakpoint-parse-triple($feature, $empty-media, $first);
|
||||
$query-print: '#{$query-print} #{$parsed}';
|
||||
$first: false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@if ($query-resolution != false) {
|
||||
$query-print: breakpoint-build-resolution($query-print, $query-resolution, $empty-media, $first);
|
||||
}
|
||||
|
||||
// Loop through each feature that's been detected so far and append 'false' to the the value list to increment their counters
|
||||
@each $f, $v in $private-breakpoint-context-holder {
|
||||
$v-holder: $v;
|
||||
$length: length($v-holder);
|
||||
@if length($v-holder) < $private-breakpoint-query-count {
|
||||
@for $i from $length to $private-breakpoint-query-count {
|
||||
@if $f == 'media' {
|
||||
$v-holder: append($v-holder, breakpoint-get('default media'));
|
||||
}
|
||||
@else {
|
||||
$v-holder: append($v-holder, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
$private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($f: $v-holder)) !global;
|
||||
}
|
||||
|
||||
@return $query-print;
|
||||
}
|
82
_sass/vendor/breakpoint/_respond-to.scss
vendored
Normal file
82
_sass/vendor/breakpoint/_respond-to.scss
vendored
Normal file
@ -0,0 +1,82 @@
|
||||
////////////////////////
|
||||
// Default the Breakpoints variable
|
||||
////////////////////////
|
||||
$breakpoints: () !default;
|
||||
$BREAKPOINTS: () !default;
|
||||
|
||||
////////////////////////
|
||||
// Respond-to API Mixin
|
||||
////////////////////////
|
||||
@mixin respond-to($context, $no-query: false) {
|
||||
@if length($breakpoints) > 0 and length($BREAKPOINTS) == 0 {
|
||||
@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.";
|
||||
$BREAKPOINTS: $breakpoints !global;
|
||||
$breakpoints: () !global;
|
||||
}
|
||||
|
||||
@if type-of($BREAKPOINTS) != 'map' {
|
||||
// Just in case someone writes gibberish to the $breakpoints variable.
|
||||
@warn "Your breakpoints aren't a map! `respond-to` expects a map. Please check the value of $BREAKPOINTS variable.";
|
||||
@content;
|
||||
}
|
||||
@else if map-has-key($BREAKPOINTS, $context) {
|
||||
@include breakpoint(map-get($BREAKPOINTS, $context), $no-query) {
|
||||
@content;
|
||||
}
|
||||
}
|
||||
@else if not map-has-key($BREAKPOINTS, $context) {
|
||||
@warn "`#{$context}` isn't a defined breakpoint! Please add it using `$breakpoints: add-breakpoint(`#{$context}`, $value);`";
|
||||
@content;
|
||||
}
|
||||
@else {
|
||||
@warn "You haven't created any breakpoints yet! Make some already! `@include add-breakpoint($name, $bkpt)`";
|
||||
@content;
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
// Add Breakpoint to Breakpoints
|
||||
// TODO: Remove function in next release
|
||||
//////////////////////////////
|
||||
@function add-breakpoint($name, $bkpt, $overwrite: false) {
|
||||
$output: ($name: $bkpt);
|
||||
|
||||
@if length($breakpoints) == 0 {
|
||||
@return $output;
|
||||
}
|
||||
@else {
|
||||
@if map-has-key($breakpoints, $name) and $overwrite != true {
|
||||
@warn "You already have a breakpoint named `#{$name}`, please choose another breakpoint name, or pass in `$overwrite: true` to overwrite the previous breakpoint.";
|
||||
@return $breakpoints;
|
||||
}
|
||||
@else if not map-has-key($breakpoints, $name) or $overwrite == true {
|
||||
@return map-merge($breakpoints, $output);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@mixin add-breakpoint($name, $bkpt, $overwrite: false) {
|
||||
$output: ($name: $bkpt);
|
||||
|
||||
@if length($BREAKPOINTS) == 0 {
|
||||
$BREAKPOINTS: $output !global;
|
||||
}
|
||||
@else {
|
||||
@if map-has-key($BREAKPOINTS, $name) and $overwrite != true {
|
||||
@warn "You already have a breakpoint named `#{$name}`, please choose another breakpoint name, or pass in `$overwrite: true` to overwrite the previous breakpoint.";
|
||||
$BREAKPOINTS: $BREAKPOINTS !global;
|
||||
}
|
||||
@else if not map-has-key($BREAKPOINTS, $name) or $overwrite == true {
|
||||
$BREAKPOINTS: map-merge($BREAKPOINTS, $output) !global;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@function get-breakpoint($name: false) {
|
||||
@if $name == false {
|
||||
@return $BREAKPOINTS;
|
||||
}
|
||||
@else {
|
||||
@return map-get($BREAKPOINTS, $name);
|
||||
}
|
||||
}
|
71
_sass/vendor/breakpoint/_settings.scss
vendored
Normal file
71
_sass/vendor/breakpoint/_settings.scss
vendored
Normal file
@ -0,0 +1,71 @@
|
||||
//////////////////////////////
|
||||
// Has Setting
|
||||
//////////////////////////////
|
||||
@function breakpoint-has($setting) {
|
||||
@if map-has-key($breakpoint, $setting) {
|
||||
@return true;
|
||||
}
|
||||
@else {
|
||||
@return false;
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
// Get Settings
|
||||
//////////////////////////////
|
||||
@function breakpoint-get($setting) {
|
||||
@if breakpoint-has($setting) {
|
||||
@return map-get($breakpoint, $setting);
|
||||
}
|
||||
@else {
|
||||
@return map-get($Breakpoint-Settings, $setting);
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
// Set Settings
|
||||
//////////////////////////////
|
||||
@function breakpoint-set($setting, $value) {
|
||||
@if (str-index($setting, '-') or str-index($setting, '_')) and str-index($setting, ' ') == null {
|
||||
@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.";
|
||||
}
|
||||
$breakpoint: map-merge($breakpoint, ($setting: $value)) !global;
|
||||
@return true;
|
||||
}
|
||||
|
||||
@mixin breakpoint-change($setting, $value) {
|
||||
$breakpoint-change: breakpoint-set($setting, $value);
|
||||
}
|
||||
|
||||
@mixin breakpoint-set($setting, $value) {
|
||||
@include breakpoint-change($setting, $value);
|
||||
}
|
||||
|
||||
@mixin bkpt-change($setting, $value) {
|
||||
@include breakpoint-change($setting, $value);
|
||||
}
|
||||
@mixin bkpt-set($setting, $value) {
|
||||
@include breakpoint-change($setting, $value);
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
// Remove Setting
|
||||
//////////////////////////////
|
||||
@function breakpoint-reset($settings...) {
|
||||
@if length($settings) == 1 {
|
||||
$settings: nth($settings, 1);
|
||||
}
|
||||
|
||||
@each $setting in $settings {
|
||||
$breakpoint: map-remove($breakpoint, $setting) !global;
|
||||
}
|
||||
@return true;
|
||||
}
|
||||
|
||||
@mixin breakpoint-reset($settings...) {
|
||||
$breakpoint-reset: breakpoint-reset($settings);
|
||||
}
|
||||
|
||||
@mixin bkpt-reset($settings...) {
|
||||
$breakpoint-reset: breakpoint-reset($settings);
|
||||
}
|
33
_sass/vendor/breakpoint/parsers/_double.scss
vendored
Normal file
33
_sass/vendor/breakpoint/parsers/_double.scss
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
//////////////////////////////
|
||||
// Import Pieces
|
||||
//////////////////////////////
|
||||
@import "double/default-pair";
|
||||
@import "double/double-string";
|
||||
@import "double/default";
|
||||
|
||||
@function breakpoint-parse-double($feature, $empty-media, $first) {
|
||||
$parsed: '';
|
||||
$leader: '';
|
||||
// If we're forcing
|
||||
@if not ($empty-media) or not ($first) {
|
||||
$leader: 'and ';
|
||||
}
|
||||
|
||||
$first: nth($feature, 1);
|
||||
$second: nth($feature, 2);
|
||||
|
||||
// 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
|
||||
@if type-of($first) == 'number' and type-of($second) == 'number' {
|
||||
$parsed: breakpoint-parse-default-pair($first, $second);
|
||||
}
|
||||
// If they are both strings, we send it through the string parser
|
||||
@else if type-of($first) == 'string' and type-of($second) == 'string' {
|
||||
$parsed: breakpoint-parse-double-string($first, $second);
|
||||
}
|
||||
// If it's a string/number pair, we parse it as a normal double
|
||||
@else {
|
||||
$parsed: breakpoint-parse-double-default($first, $second);
|
||||
}
|
||||
|
||||
@return $leader + $parsed;
|
||||
}
|
82
_sass/vendor/breakpoint/parsers/_query.scss
vendored
Normal file
82
_sass/vendor/breakpoint/parsers/_query.scss
vendored
Normal file
@ -0,0 +1,82 @@
|
||||
@function breakpoint-parse-query($query) {
|
||||
// Parse features out of an individual query
|
||||
$feature-holder: ();
|
||||
$query-holder: ();
|
||||
$length: length($query);
|
||||
|
||||
@if $length == 2 {
|
||||
// If we've got a string/number, number/string, check to see if it's a valid string/number pair or two singles
|
||||
@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') {
|
||||
|
||||
$number: '';
|
||||
$value: '';
|
||||
|
||||
@if type-of(nth($query, 1)) == 'string' {
|
||||
$number: nth($query, 2);
|
||||
$value: nth($query, 1);
|
||||
}
|
||||
@else {
|
||||
$number: nth($query, 1);
|
||||
$value: nth($query, 2);
|
||||
}
|
||||
|
||||
// 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.
|
||||
@if breakpoint-single-string($value) {
|
||||
@if unitless($number) {
|
||||
$feature-holder: append($value, $number, space);
|
||||
$query-holder: append($query-holder, $feature-holder, comma);
|
||||
@return $query-holder;
|
||||
}
|
||||
}
|
||||
// If the string is a media type, split the query
|
||||
@if breakpoint-is-media($value) {
|
||||
$query-holder: append($query-holder, nth($query, 1));
|
||||
$query-holder: append($query-holder, nth($query, 2));
|
||||
@return $query-holder;
|
||||
}
|
||||
// If it's not a single feature, we're just going to assume it's a proper string/value pair, and roll with it.
|
||||
@else {
|
||||
$feature-holder: append($value, $number, space);
|
||||
$query-holder: append($query-holder, $feature-holder, comma);
|
||||
@return $query-holder;
|
||||
}
|
||||
|
||||
}
|
||||
// If they're both numbers, we assume it's a double and roll with that
|
||||
@else if (type-of(nth($query, 1)) == 'number' and type-of(nth($query, 2)) == 'number') {
|
||||
$feature-holder: append(nth($query, 1), nth($query, 2), space);
|
||||
$query-holder: append($query-holder, $feature-holder, comma);
|
||||
@return $query-holder;
|
||||
}
|
||||
// If they're both strings and neither are singles, we roll with that.
|
||||
@else if (type-of(nth($query, 1)) == 'string' and type-of(nth($query, 2)) == 'string') {
|
||||
@if not breakpoint-single-string(nth($query, 1)) and not breakpoint-single-string(nth($query, 2)) {
|
||||
$feature-holder: append(nth($query, 1), nth($query, 2), space);
|
||||
$query-holder: append($query-holder, $feature-holder, comma);
|
||||
@return $query-holder;
|
||||
}
|
||||
}
|
||||
}
|
||||
@else if $length == 3 {
|
||||
// If we've got three items and none is a list, we check to see
|
||||
@if type-of(nth($query, 1)) != 'list' and type-of(nth($query, 2)) != 'list' and type-of(nth($query, 3)) != 'list' {
|
||||
// If none of the items are single string values and none of the values are media values, we're good.
|
||||
@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)))) {
|
||||
$feature-holder: append(nth($query, 1), nth($query, 2), space);
|
||||
$feature-holder: append($feature-holder, nth($query, 3), space);
|
||||
$query-holder: append($query-holder, $feature-holder, comma);
|
||||
@return $query-holder;
|
||||
}
|
||||
// let's check to see if the first item is a media type
|
||||
@else if breakpoint-is-media(nth($query, 1)) {
|
||||
$query-holder: append($query-holder, nth($query, 1));
|
||||
$feature-holder: append(nth($query, 2), nth($query, 3), space);
|
||||
$query-holder: append($query-holder, $feature-holder);
|
||||
@return $query-holder;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If it's a single item, or if it's not a special case double or triple, we can simply return the query.
|
||||
@return $query;
|
||||
}
|
31
_sass/vendor/breakpoint/parsers/_resolution.scss
vendored
Normal file
31
_sass/vendor/breakpoint/parsers/_resolution.scss
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
@import "resolution/resolution";
|
||||
|
||||
@function breakpoint-build-resolution($query-print, $query-resolution, $empty-media, $first) {
|
||||
$leader: '';
|
||||
// If we're forcing
|
||||
@if not ($empty-media) or not ($first) {
|
||||
$leader: 'and ';
|
||||
}
|
||||
|
||||
@if breakpoint-get('transform resolutions') and $query-resolution {
|
||||
$resolutions: breakpoint-make-resolutions($query-resolution);
|
||||
$length: length($resolutions);
|
||||
$query-holder: '';
|
||||
|
||||
@for $i from 1 through $length {
|
||||
$query: '#{$query-print} #{$leader}#{nth($resolutions, $i)}';
|
||||
@if $i == 1 {
|
||||
$query-holder: $query;
|
||||
}
|
||||
@else {
|
||||
$query-holder: '#{$query-holder}, #{$query}';
|
||||
}
|
||||
}
|
||||
|
||||
@return $query-holder;
|
||||
}
|
||||
@else {
|
||||
// Return with attached resolution
|
||||
@return $query-print;
|
||||
}
|
||||
}
|
26
_sass/vendor/breakpoint/parsers/_single.scss
vendored
Normal file
26
_sass/vendor/breakpoint/parsers/_single.scss
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
//////////////////////////////
|
||||
// Import Pieces
|
||||
//////////////////////////////
|
||||
@import "single/default";
|
||||
|
||||
@function breakpoint-parse-single($feature, $empty-media, $first) {
|
||||
$parsed: '';
|
||||
$leader: '';
|
||||
// If we're forcing
|
||||
@if not ($empty-media) or not ($first) {
|
||||
$leader: 'and ';
|
||||
}
|
||||
|
||||
// If it's a single feature that can stand alone, we let it
|
||||
@if (breakpoint-single-string($feature)) {
|
||||
$parsed: $feature;
|
||||
// Set Context
|
||||
$context-setter: private-breakpoint-set-context($feature, $feature);
|
||||
}
|
||||
// If it's not a stand alone feature, we pass it off to the default handler.
|
||||
@else {
|
||||
$parsed: breakpoint-parse-default($feature);
|
||||
}
|
||||
|
||||
@return $leader + '(' + $parsed + ')';
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user