From 8b63be6466242048ce69728c0b73c4ee8243d39b Mon Sep 17 00:00:00 2001 From: JonathanDcstr Date: Fri, 5 Jun 2015 09:17:50 +0200 Subject: [PATCH] initial commit --- .bowerrc | 3 + .editorconfig | 44 +++ .gitignore | 8 + .nvmrc | 1 + CONTRIBUTING.md | 74 ++++ Gemfile | 11 + Gemfile.lock | 71 ++++ LICENSE.md | 29 ++ _config.yml | 2 + _gulp/config.js | 86 +++++ _gulp/tasks/browsersync.js | 20 ++ _gulp/tasks/compressjs.js | 17 + _gulp/tasks/default.js | 13 + _gulp/tasks/javascript.js | 23 ++ _gulp/tasks/jekyll.js | 26 ++ _gulp/tasks/scss.js | 29 ++ _gulp/tasks/svg2png.js | 17 + _gulp/tasks/watch.js | 16 + _includes/components.alerts.html | 19 ++ _includes/components.browser-alert.html | 5 + _includes/components.buttons.html | 38 +++ _includes/components.footer.html | 17 + _includes/components.forms.html | 307 +++++++++++++++++ _includes/components.header.html | 15 + _includes/components.header1.html | 27 ++ _includes/components.image-header2.html | 165 +++++++++ _includes/components.logo.html | 15 + _includes/components.pagination.html | 27 ++ _includes/elements.base.html | 215 ++++++++++++ _includes/generic.head.html | 33 ++ _includes/generic.javascript.html | 15 + _includes/objects.media.html | 17 + _includes/trumps.colors.html | 151 +++++++++ _includes/trumps.helpers.html | 11 + _layouts/default.html | 29 ++ _layouts/styleguide.html | 47 +++ apple-touch-icon.png | Bin 0 -> 97 bytes bower.json | 9 + documentation.html | 9 + favicon.ico | Bin 0 -> 1342 bytes favicon.png | Bin 0 -> 130 bytes grid.html | 161 +++++++++ gulpfile.js | 9 + img/_source/icons.sketch | Bin 0 -> 40960 bytes img/png/chopsticks.png | Bin 0 -> 6551 bytes img/png/cloud-left--large.png | Bin 0 -> 5400 bytes img/png/header-bg-text.png | Bin 0 -> 22278 bytes img/png/icon-bits.png | Bin 0 -> 3581 bytes img/png/icon-fly--header--v2.png | Bin 0 -> 15297 bytes img/png/icon-fly--header.png | Bin 0 -> 15869 bytes img/png/icon-fly.png | Bin 0 -> 15507 bytes img/png/icon-menu.png | Bin 0 -> 582 bytes img/png/icon-modular.png | Bin 0 -> 12836 bytes img/png/icon-scalable.png | Bin 0 -> 6594 bytes img/png/icon-singledept.png | Bin 0 -> 6206 bytes img/png/image-header2--small.png | Bin 0 -> 21932 bytes img/png/image-header2.png | Bin 0 -> 21961 bytes img/png/installation--1.png | Bin 0 -> 12974 bytes img/png/installation--2.png | Bin 0 -> 14837 bytes img/png/line-1to2.png | Bin 0 -> 4815 bytes img/png/line-2to3.png | Bin 0 -> 4477 bytes img/png/line-between-steps.png | Bin 0 -> 1662 bytes img/png/logo--mobile.png | Bin 0 -> 7522 bytes img/png/logo.png | Bin 0 -> 8141 bytes img/png/toggle--sprite.png | Bin 0 -> 582 bytes img/png/wijs-logo.png | Bin 0 -> 6865 bytes img/svg/chopsticks.svg | 11 + img/svg/cloud-left--large.svg | 25 ++ img/svg/header-bg-text.svg | 10 + img/svg/icon-bits.svg | 95 ++++++ img/svg/icon-fly--header--v2.svg | 16 + img/svg/icon-fly--header.svg | 10 + img/svg/icon-fly-footer.svg | 87 +++++ img/svg/icon-fly.svg | 82 +++++ img/svg/icon-github.svg | 12 + img/svg/icon-menu.svg | 9 + img/svg/icon-modular.svg | 50 +++ img/svg/icon-scalable.svg | 110 ++++++ img/svg/icon-singledept.svg | 81 +++++ img/svg/image-header2--small.svg | 164 +++++++++ img/svg/image-header2.svg | 160 +++++++++ img/svg/installation--1.svg | 9 + img/svg/installation--2.svg | 10 + img/svg/installation--3.svg | 11 + img/svg/installation-bg--mobile.svg | 25 ++ img/svg/line-1to2.svg | 16 + img/svg/line-2to3.svg | 12 + img/svg/line-3to4.svg | 12 + img/svg/line-between--large.svg | 7 + img/svg/line-between-steps--end.svg | 10 + img/svg/line-between-steps.svg | 7 + img/svg/logo--mobile.svg | 19 ++ img/svg/logo.svg | 38 +++ img/svg/toggle--sprite.svg | 13 + img/svg/wijs-logo.svg | 22 ++ index.html | 187 ++++++++++ js/_components/_animation.js | 56 +++ js/_components/_fittext.js | 7 + js/_components/_hide.js | 22 ++ js/_components/_mobilenav.js | 30 ++ js/_components/_snapsvg.js | 79 +++++ js/_components/_toggle.js | 31 ++ js/loader.js | 1 + js/theme.concat.js | 276 +++++++++++++++ js/theme.js | 43 +++ package.json | 26 ++ scss/_components.alerts.scss | 64 ++++ scss/_components.animatedfly.scss | 12 + scss/_components.brand.scss | 38 +++ scss/_components.buttons.scss | 192 +++++++++++ scss/_components.code.scss | 16 + scss/_components.features.scss | 23 ++ scss/_components.footer-links.scss | 23 ++ scss/_components.forms.scss | 98 ++++++ scss/_components.highlights.scss | 9 + scss/_components.holder.scss | 80 +++++ scss/_components.icons.scss | 37 ++ scss/_components.installation.scss | 209 ++++++++++++ scss/_components.links.scss | 3 + scss/_components.navigation.scss | 95 ++++++ scss/_components.pagination.scss | 25 ++ scss/_components.section-header.scss | 25 ++ scss/_components.styleguide-syntax.scss | 109 ++++++ scss/_components.styleguide.scss | 39 +++ scss/_components.taglines.scss | 33 ++ scss/_components.tiles.scss | 26 ++ scss/_elements.forms.scss | 50 +++ scss/_elements.images.scss | 13 + scss/_elements.page.scss | 37 ++ scss/_elements.tables.scss | 56 +++ scss/_elements.typography.scss | 156 +++++++++ scss/_generic.box-sizing.scss | 26 ++ scss/_generic.normalize.scss | 431 ++++++++++++++++++++++++ scss/_generic.reset.scss | 19 ++ scss/_objects.grid.scss | 33 ++ scss/_objects.inline-list.scss | 14 + scss/_objects.media-embed.scss | 22 ++ scss/_objects.media.scss | 41 +++ scss/_settings.breakpoints.scss | 21 ++ scss/_settings.colors.scss | 117 +++++++ scss/_settings.global.scss | 8 + scss/_settings.grid.scss | 15 + scss/_settings.ms.scss | 30 ++ scss/_settings.typography.scss | 19 ++ scss/_settings.ui.scss | 13 + scss/_tools.buttons.scss | 60 ++++ scss/_tools.functions.scss | 47 +++ scss/_tools.grid.scss | 51 +++ scss/_tools.inputs.scss | 40 +++ scss/_tools.mixins.scss | 166 +++++++++ scss/_tools.spacing.scss | 113 +++++++ scss/_tools.typography.scss | 116 +++++++ scss/_trumps.animation.scss | 48 +++ scss/_trumps.baseline-grid.scss | 16 + scss/_trumps.borders.scss | 38 +++ scss/_trumps.colors.scss | 45 +++ scss/_trumps.debug.scss | 170 ++++++++++ scss/_trumps.print.scss | 65 ++++ scss/_trumps.push.scss | 57 ++++ scss/_trumps.shame.scss | 113 +++++++ scss/_trumps.states.scss | 9 + scss/_trumps.widths.scss | 57 ++++ scss/screen.scss | 140 ++++++++ styleguide.html | 16 + styletile.html | 121 +++++++ 165 files changed, 7487 insertions(+) create mode 100644 .bowerrc create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 .nvmrc create mode 100644 CONTRIBUTING.md create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 LICENSE.md create mode 100644 _config.yml create mode 100644 _gulp/config.js create mode 100644 _gulp/tasks/browsersync.js create mode 100644 _gulp/tasks/compressjs.js create mode 100644 _gulp/tasks/default.js create mode 100644 _gulp/tasks/javascript.js create mode 100644 _gulp/tasks/jekyll.js create mode 100644 _gulp/tasks/scss.js create mode 100644 _gulp/tasks/svg2png.js create mode 100644 _gulp/tasks/watch.js create mode 100644 _includes/components.alerts.html create mode 100644 _includes/components.browser-alert.html create mode 100644 _includes/components.buttons.html create mode 100644 _includes/components.footer.html create mode 100644 _includes/components.forms.html create mode 100644 _includes/components.header.html create mode 100644 _includes/components.header1.html create mode 100644 _includes/components.image-header2.html create mode 100644 _includes/components.logo.html create mode 100644 _includes/components.pagination.html create mode 100644 _includes/elements.base.html create mode 100644 _includes/generic.head.html create mode 100644 _includes/generic.javascript.html create mode 100644 _includes/objects.media.html create mode 100644 _includes/trumps.colors.html create mode 100644 _includes/trumps.helpers.html create mode 100644 _layouts/default.html create mode 100644 _layouts/styleguide.html create mode 100644 apple-touch-icon.png create mode 100644 bower.json create mode 100644 documentation.html create mode 100644 favicon.ico create mode 100644 favicon.png create mode 100755 grid.html create mode 100644 gulpfile.js create mode 100644 img/_source/icons.sketch create mode 100644 img/png/chopsticks.png create mode 100644 img/png/cloud-left--large.png create mode 100644 img/png/header-bg-text.png create mode 100644 img/png/icon-bits.png create mode 100644 img/png/icon-fly--header--v2.png create mode 100644 img/png/icon-fly--header.png create mode 100644 img/png/icon-fly.png create mode 100644 img/png/icon-menu.png create mode 100644 img/png/icon-modular.png create mode 100644 img/png/icon-scalable.png create mode 100644 img/png/icon-singledept.png create mode 100644 img/png/image-header2--small.png create mode 100644 img/png/image-header2.png create mode 100644 img/png/installation--1.png create mode 100644 img/png/installation--2.png create mode 100644 img/png/line-1to2.png create mode 100644 img/png/line-2to3.png create mode 100644 img/png/line-between-steps.png create mode 100644 img/png/logo--mobile.png create mode 100644 img/png/logo.png create mode 100644 img/png/toggle--sprite.png create mode 100644 img/png/wijs-logo.png create mode 100644 img/svg/chopsticks.svg create mode 100644 img/svg/cloud-left--large.svg create mode 100644 img/svg/header-bg-text.svg create mode 100644 img/svg/icon-bits.svg create mode 100644 img/svg/icon-fly--header--v2.svg create mode 100644 img/svg/icon-fly--header.svg create mode 100644 img/svg/icon-fly-footer.svg create mode 100644 img/svg/icon-fly.svg create mode 100644 img/svg/icon-github.svg create mode 100644 img/svg/icon-menu.svg create mode 100644 img/svg/icon-modular.svg create mode 100644 img/svg/icon-scalable.svg create mode 100644 img/svg/icon-singledept.svg create mode 100644 img/svg/image-header2--small.svg create mode 100644 img/svg/image-header2.svg create mode 100644 img/svg/installation--1.svg create mode 100644 img/svg/installation--2.svg create mode 100644 img/svg/installation--3.svg create mode 100644 img/svg/installation-bg--mobile.svg create mode 100644 img/svg/line-1to2.svg create mode 100644 img/svg/line-2to3.svg create mode 100644 img/svg/line-3to4.svg create mode 100644 img/svg/line-between--large.svg create mode 100644 img/svg/line-between-steps--end.svg create mode 100644 img/svg/line-between-steps.svg create mode 100644 img/svg/logo--mobile.svg create mode 100644 img/svg/logo.svg create mode 100644 img/svg/toggle--sprite.svg create mode 100644 img/svg/wijs-logo.svg create mode 100755 index.html create mode 100644 js/_components/_animation.js create mode 100644 js/_components/_fittext.js create mode 100644 js/_components/_hide.js create mode 100644 js/_components/_mobilenav.js create mode 100644 js/_components/_snapsvg.js create mode 100644 js/_components/_toggle.js create mode 100644 js/loader.js create mode 100755 js/theme.concat.js create mode 100755 js/theme.js create mode 100644 package.json create mode 100644 scss/_components.alerts.scss create mode 100644 scss/_components.animatedfly.scss create mode 100644 scss/_components.brand.scss create mode 100644 scss/_components.buttons.scss create mode 100644 scss/_components.code.scss create mode 100644 scss/_components.features.scss create mode 100644 scss/_components.footer-links.scss create mode 100644 scss/_components.forms.scss create mode 100644 scss/_components.highlights.scss create mode 100644 scss/_components.holder.scss create mode 100644 scss/_components.icons.scss create mode 100644 scss/_components.installation.scss create mode 100644 scss/_components.links.scss create mode 100644 scss/_components.navigation.scss create mode 100644 scss/_components.pagination.scss create mode 100644 scss/_components.section-header.scss create mode 100644 scss/_components.styleguide-syntax.scss create mode 100644 scss/_components.styleguide.scss create mode 100644 scss/_components.taglines.scss create mode 100644 scss/_components.tiles.scss create mode 100644 scss/_elements.forms.scss create mode 100644 scss/_elements.images.scss create mode 100644 scss/_elements.page.scss create mode 100644 scss/_elements.tables.scss create mode 100644 scss/_elements.typography.scss create mode 100644 scss/_generic.box-sizing.scss create mode 100644 scss/_generic.normalize.scss create mode 100644 scss/_generic.reset.scss create mode 100644 scss/_objects.grid.scss create mode 100644 scss/_objects.inline-list.scss create mode 100644 scss/_objects.media-embed.scss create mode 100644 scss/_objects.media.scss create mode 100644 scss/_settings.breakpoints.scss create mode 100644 scss/_settings.colors.scss create mode 100644 scss/_settings.global.scss create mode 100644 scss/_settings.grid.scss create mode 100644 scss/_settings.ms.scss create mode 100644 scss/_settings.typography.scss create mode 100644 scss/_settings.ui.scss create mode 100644 scss/_tools.buttons.scss create mode 100644 scss/_tools.functions.scss create mode 100644 scss/_tools.grid.scss create mode 100644 scss/_tools.inputs.scss create mode 100644 scss/_tools.mixins.scss create mode 100644 scss/_tools.spacing.scss create mode 100644 scss/_tools.typography.scss create mode 100644 scss/_trumps.animation.scss create mode 100644 scss/_trumps.baseline-grid.scss create mode 100644 scss/_trumps.borders.scss create mode 100644 scss/_trumps.colors.scss create mode 100644 scss/_trumps.debug.scss create mode 100644 scss/_trumps.print.scss create mode 100644 scss/_trumps.push.scss create mode 100644 scss/_trumps.shame.scss create mode 100644 scss/_trumps.states.scss create mode 100644 scss/_trumps.widths.scss create mode 100644 scss/screen.scss create mode 100644 styleguide.html create mode 100644 styletile.html diff --git a/.bowerrc b/.bowerrc new file mode 100644 index 0000000..8f98a03 --- /dev/null +++ b/.bowerrc @@ -0,0 +1,3 @@ +{ + "directory": "vendor" +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..68fa807 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,44 @@ +# EditorConfig helps developers define and maintain consistent +# coding styles between different editors and IDEs +# editorconfig.org + +root = true + +[*] +# Indentation style +indent_style = space +indent_size = 4 + +# Settings +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.css] +# Indentation style +indent_style = space +indent_size = 4 + +[*.scss] +# Indentation style +indent_style = space +indent_size = 4 + +[*.js] +# Indentation style +indent_style = space +indent_size = 4 + +[*.md] +trim_trailing_whitespace = false + +[*.json] +# Indentation style +indent_style = space +indent_size = 2 + +[*.yml] +# Indentation style +indent_style = space +indent_size = 2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1cdfe98 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +.sass-cache +.DS_Store +_site/ +css/ +vendor/ +bower_components/ +node_modules/ +npm-debug.log diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..26acbf0 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +0.12.2 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..d22243b --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,74 @@ +# Contributing + +You are free to contribute to Chopstick via GitHub Pull Requests. We have a couple of simple guidelines we try to follow, of which most are taken from the [CSS Tricks Sass Style Guide](http://css-tricks.com/sass-style-guide) + + +## Git branch model +[A successful git branching model](http://nvie.com/posts/a-successful-git-branching-model/) + + +## Releases +[Semantic versioning](http://semver.org/) + + +## How to pull request + +1. [Fork](https://github.com/getchopstick/chopstick-boilerplate/fork) this repo. +2. Create a branch `git checkout -b feature--name` +3. Commit your changes `git commit -am "New feature"` +4. Push to the branch `git push origin feature--name` +5. Open a [Pull Request](https://github.com/getchopstick/chopstick-boilerplate/pulls) + + +## Coding style + +We use [Editorconfig](http://editorconfig.org/) to maintain a consistent coding style. Please take care of proper spacing and indenting. + + +## Naming and namespaces +We use the [BEM](http://csswizardry.com/2013/01/mindbemding-getting-your-head-round-bem-syntax/) naming methodology: + +- `.block` for sole root of the component (eg: .c-widget) +- `.block__element` for a component part of the block (eg: .c-widget__title) +- `.block--modifier` for a variant or extension of the block (eg: .c-widget--full) + +Follow these rules for namespacing: +- `.o-` for object classes (eg: .o-media) +- `.c-` for component classes (eg: .c-widget) +- `.t-` for theming classes (eg: .t-header) +- `.u-` for utility classes (eg: .u-1-of-2) +- `.is-`/`.has-` for stateful classes (eg: .is-active) +- .js for javascript hooks +- `._` for temporary hacks/fixes + +## SCSS order + +1. Regular styles +2. @includes + +Example: + + .c-component { + background: #fff; + @include transition(all 0.3s ease); + } + + +## Extends + +Don't use @extends as they have a tendency to cause css bloat and long selectors. + + +## Nesting + +Try to avoid nesting. We follow a single-depth-class-based architecture. + + +## Global files + +Only `@include` in the global screen.scss file. Never write SCSS directly in screen.scss. Order of importing is always as described in `screen.scss`. + + +## Be generous with comments + +Comments get filtered out when compiling. If you do *anything* that can not be immediately understood: comment it. diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..b1fd089 --- /dev/null +++ b/Gemfile @@ -0,0 +1,11 @@ +# ~/Gemfile + +source "http://rubygems.org" + +group :development do + # CSS Preprocessing + gem 'sass' + + # Jekyll + gem 'jekyll' +end diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..d4e8d3d --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,71 @@ +GEM + remote: http://rubygems.org/ + specs: + blankslate (2.1.2.4) + celluloid (0.16.0) + timers (~> 4.0.0) + classifier-reborn (2.0.3) + fast-stemmer (~> 1.0) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.9.1.1) + colorator (0.1) + execjs (2.5.2) + fast-stemmer (1.0.2) + ffi (1.9.8) + hitimes (1.2.2) + jekyll (2.5.3) + classifier-reborn (~> 2.0) + colorator (~> 0.1) + jekyll-coffeescript (~> 1.0) + jekyll-gist (~> 1.0) + jekyll-paginate (~> 1.0) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 1.1) + kramdown (~> 1.3) + liquid (~> 2.6.1) + mercenary (~> 0.3.3) + pygments.rb (~> 0.6.0) + redcarpet (~> 3.1) + safe_yaml (~> 1.0) + toml (~> 0.1.0) + jekyll-coffeescript (1.0.1) + coffee-script (~> 2.2) + jekyll-gist (1.2.1) + jekyll-paginate (1.1.0) + jekyll-sass-converter (1.3.0) + sass (~> 3.2) + jekyll-watch (1.2.1) + listen (~> 2.7) + kramdown (1.6.0) + liquid (2.6.2) + listen (2.10.0) + celluloid (~> 0.16.0) + rb-fsevent (>= 0.9.3) + rb-inotify (>= 0.9) + mercenary (0.3.5) + parslet (1.5.0) + blankslate (~> 2.0) + posix-spawn (0.3.11) + pygments.rb (0.6.3) + posix-spawn (~> 0.3.6) + yajl-ruby (~> 1.2.0) + rb-fsevent (0.9.4) + rb-inotify (0.9.5) + ffi (>= 0.5.0) + redcarpet (3.2.3) + safe_yaml (1.0.4) + sass (3.4.13) + timers (4.0.1) + hitimes + toml (0.1.2) + parslet (~> 1.5.0) + yajl-ruby (1.2.1) + +PLATFORMS + ruby + +DEPENDENCIES + jekyll + sass diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..d7f7d11 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,29 @@ +# Chopstick License + +Copyright (C) 2013–2015 [Wijs](https://wijs.be/en) + +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. + +# Inuit CSS License + +Inuit is used for: + +- _base.box-sizing.scss + +Copyright 2014 Harry Roberts + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..2aa32bf --- /dev/null +++ b/_config.yml @@ -0,0 +1,2 @@ +title: Chopstick +exclude: ['_site','scss','*scss','Gem*','Guard*','*rb','.sass-cache','.git*','config.rb','*.md','*.json','docroot','node_modules','gulpfile.js'] diff --git a/_gulp/config.js b/_gulp/config.js new file mode 100644 index 0000000..758f672 --- /dev/null +++ b/_gulp/config.js @@ -0,0 +1,86 @@ +// --- +// CONFIG FILE +// Define your tasks & variables here +// --- + +module.exports = { + + scss: { + screen : 'scss/screen.scss', + src : 'scss/**/*.scss', + settings : { + bundleExec: true, + sourcemap: true, + style: 'compact' + }, + cssDest : 'css/', + jekyllCssDes : '_site/css/', + prefix : [ // Autoprefixer supported browsers + 'last 2 version', + '> 1%', + 'ie 8', + 'ie 9', + 'ios 6', + 'android 4' + ] + }, + + js : { + src : [ // source js file + 'js/theme.js', + 'js/_components/*.js', + 'js/loader.js' + + ], + concatFilename : 'theme.concat.js', // result filename + jekyllJsDest : '_site/js/', + jsDest : 'js/' + }, + + jekyll : { + buildMessage: 'Building jekyll' + }, + + browsersync : { + server: { + baseDir: './_site', + reloadDelay: 2000, + debounce: 200, + notify: true, + ghostMode: { + clicks: true, + location: true, + forms: true, + scroll: false + } + } + }, + + watch : { + jekyllSource : [ // Files that trigger a Jekyll rebuild + 'img/*.png', + 'img/*.jpg', + 'img/*.svg', + '_includes/**/*.html', + '_layouts/*.html', + '_posts/*.md', + '_data/*.yml', + '*.html' + ] + }, + + compressjs : { + src : 'js/*.js', + dest : '_site/js/' + }, + + svg2png : { + src: "./img/svg/*.svg", + settings : { + scaling : 2, // The scaling factor (optional; default=1.0) + verbose: false // Logs progress information (optional; default=false) + }, + dest : "./img/png" + } + +}; diff --git a/_gulp/tasks/browsersync.js b/_gulp/tasks/browsersync.js new file mode 100644 index 0000000..f6bbfbf --- /dev/null +++ b/_gulp/tasks/browsersync.js @@ -0,0 +1,20 @@ +// --- +// BROWSERSYNC +// --- + +// plugins +var gulp = require('gulp'), + browserSync = require('browser-sync'); + +// configfile +var config = require('../config').browsersync; + + +// tasks +gulp.task('browsersync', function() { + browserSync.init(config); +}); + +gulp.task('browsersyncReload', function() { + browserSync.reload(); +}); \ No newline at end of file diff --git a/_gulp/tasks/compressjs.js b/_gulp/tasks/compressjs.js new file mode 100644 index 0000000..a431955 --- /dev/null +++ b/_gulp/tasks/compressjs.js @@ -0,0 +1,17 @@ +// --- +// COMPRESSJS TASK +// (puts files together, minifies and saves as 'scripts.min.js') +// --- + +// plugins +var gulp = require('gulp'), + uglyfly = require('gulp-uglyfly'); + +var config = require('../config').compressjs; + +//task +gulp.task('compressjs', function() { + gulp.src(config.src) + .pipe(uglyfly()) + .pipe(gulp.dest(config.dest)) +}); \ No newline at end of file diff --git a/_gulp/tasks/default.js b/_gulp/tasks/default.js new file mode 100644 index 0000000..af02863 --- /dev/null +++ b/_gulp/tasks/default.js @@ -0,0 +1,13 @@ +// --- +// DEFAULT TASK (when calling gulp) +// --- + +// plugins +var gulp = require('gulp'); + +// task +gulp.task('default', [ + 'scss', + 'js', + 'jekyll--build' +]); \ No newline at end of file diff --git a/_gulp/tasks/javascript.js b/_gulp/tasks/javascript.js new file mode 100644 index 0000000..00144ed --- /dev/null +++ b/_gulp/tasks/javascript.js @@ -0,0 +1,23 @@ +// --- +// JS TASK &--reload +// --- + +// plugins +var gulp = require('gulp'), + plumber = require('gulp-plumber'), + concat = require('gulp-concat'); + + +// configfile +var config = require('../config').js; + +// tasks +gulp.task('js', function () { + return gulp.src(config.src) + .pipe(plumber()) + .pipe(concat(config.concatFilename)) + .pipe(gulp.dest(config.jekyllJsDest)) + .pipe(gulp.dest(config.jsDest)); +}); + +gulp.task('js--reload', ['js', 'browsersyncReload']); \ No newline at end of file diff --git a/_gulp/tasks/jekyll.js b/_gulp/tasks/jekyll.js new file mode 100644 index 0000000..638738e --- /dev/null +++ b/_gulp/tasks/jekyll.js @@ -0,0 +1,26 @@ +// --- +// ALL TASKS TO DO WITH JEKYLL +// --- + +// plugins +var gulp = require('gulp'); +var browserSync = require('browser-sync'); +var cp = require('child_process'); + + +// configfile +var config = require('../config').jekyll; + +// tasks +gulp.task('jekyll--build', function (done) { + browserSync.notify(config.buildMessage); + return cp + .spawn('bundle', ['exec', 'jekyll', 'build', '--config=_config.yml'], { + stdio: 'inherit' + }) + .on('close', done); +}); + +gulp.task('jekyll--rebuild', ['jekyll--build'], function () { + browserSync.reload(); +}); diff --git a/_gulp/tasks/scss.js b/_gulp/tasks/scss.js new file mode 100644 index 0000000..faafdf0 --- /dev/null +++ b/_gulp/tasks/scss.js @@ -0,0 +1,29 @@ +// --- +// SCSS TASK +// --- + +// plugins +var gulp = require('gulp'); + plumber = require('gulp-plumber'), + sass = require('gulp-ruby-sass'), + prefix = require('gulp-autoprefixer'), + filesize = require('gulp-filesize'), + browserSync = require('browser-sync'), + sourcemaps = require('gulp-sourcemaps'); + +// configfile +var config = require('../config').scss; + +// // task +gulp.task('scss', function () { + return sass(config.screen, config.settings) + .on('error', function (err) { + console.error('Error', err.message); + }) + .pipe(prefix(config.prefix)) + .pipe(filesize()) + .pipe(sourcemaps.write('.')) + .pipe(gulp.dest(config.jekyllCssDes)) + .pipe(browserSync.reload({stream:true})) + .pipe(gulp.dest(config.cssDest)) +}); diff --git a/_gulp/tasks/svg2png.js b/_gulp/tasks/svg2png.js new file mode 100644 index 0000000..3168820 --- /dev/null +++ b/_gulp/tasks/svg2png.js @@ -0,0 +1,17 @@ +// --- +// SVG2PNG +// --- + +// plugins +var gulp = require('gulp'), + svg2png = require('gulp-svg2png'); + +// configfile +var config = require('../config').svg2png; + +// task +gulp.task('svg2png', function () { + gulp.src(config.src) + .pipe(svg2png(config.settings)) + .pipe(gulp.dest(config.dest)); +}); \ No newline at end of file diff --git a/_gulp/tasks/watch.js b/_gulp/tasks/watch.js new file mode 100644 index 0000000..b769034 --- /dev/null +++ b/_gulp/tasks/watch.js @@ -0,0 +1,16 @@ +// --- +// WATCH TASK +// --- + +// plugins +var gulp = require('gulp'); + +// configs +var config = require('../config'); + +// task +gulp.task('watch', ['browsersync'], function () { + gulp.watch(config.scss.src, ['scss']); + gulp.watch(config.js.src, ['js--reload']); + gulp.watch(config.watch.jekyllSource, ['jekyll--rebuild']); +}); diff --git a/_includes/components.alerts.html b/_includes/components.alerts.html new file mode 100644 index 0000000..d0dfc31 --- /dev/null +++ b/_includes/components.alerts.html @@ -0,0 +1,19 @@ +
+

Cras sed ante. Phasellus in massa. Curabitur dolor eros, gravida et, hendrerit ac, cursus non, massa. Aliquam lorem.

+ × +
+ +
+

Cras sed ante. Phasellus in massa. Curabitur dolor eros, gravida et, hendrerit ac, cursus non, massa. Aliquam lorem.

+ × +
+ +
+

Cras sed ante. Phasellus in massa. Curabitur dolor eros, gravida et, hendrerit ac, cursus non, massa. Aliquam lorem.

+ × +
+ +
+

Cras sed ante. Phasellus in massa. Curabitur dolor eros, gravida et, hendrerit ac, cursus non, massa. Aliquam lorem.

+ × +
diff --git a/_includes/components.browser-alert.html b/_includes/components.browser-alert.html new file mode 100644 index 0000000..41aeb3c --- /dev/null +++ b/_includes/components.browser-alert.html @@ -0,0 +1,5 @@ + diff --git a/_includes/components.buttons.html b/_includes/components.buttons.html new file mode 100644 index 0000000..e19d2a2 --- /dev/null +++ b/_includes/components.buttons.html @@ -0,0 +1,38 @@ +

+ Different types +

+

+ Link + + + +

+

+ Button colors +

+

+ Alpha ui + Beta ui +

+

+ Button row +

+

+ Button 1 + Button 2 + Button 3 +

+

+ Button sizes +

+

+ Small button + Normal button + Big button +

+

+ Block button +

+

+ Block Button +

diff --git a/_includes/components.footer.html b/_includes/components.footer.html new file mode 100644 index 0000000..e081679 --- /dev/null +++ b/_includes/components.footer.html @@ -0,0 +1,17 @@ + diff --git a/_includes/components.forms.html b/_includes/components.forms.html new file mode 100644 index 0000000..c7a53eb --- /dev/null +++ b/_includes/components.forms.html @@ -0,0 +1,307 @@ + +
+

Example 1: Standard contact form

+ +
+

Cras sed ante. Phasellus in massa. Curabitur dolor eros, gravida et, hendrerit ac, cursus non, massa. Aliquam lorem.

+ × +
+ +
+

+ + +

+

+ + +

+

+ + + This field is required. +

+

+ + +

+

+ +

+
+
+ +
+ +
+

Example 2: Form built with grids

+ +
+

+

+
+ + +
+
+ + +
+
+

+ +

+

+
+ + +
+
+ + +
+
+

+ +

+

+
+ + +
+
+ + + This field is required. +
+
+

+ +

+

+
+ + +
+
+

+ +

+

+
+ + Vorige +
+
+

+
+
+ +
+ +
+

Example 3: Form with pre- en postfixes

+ +
+
+
+ +
+
+ +
+
+
+ +
+
+
+ + This field is required. +
+
+ +
+
+
+ +
+
+
+ +
+
+ +
+
+
+
+ +
+ +
+

Example 4: overview of all input elements

+ +
+

+ + +

+ +

+ + +

+ +

+ + +

+ +

+ + +

+ +

+ + +

+ +

+ + +

+ +

+ + +

+ +

+ + +

+ +

+ + +

+ +

+ + - + + - + +

+ +

+ + +

+ +

+ + +

+ +

+ +

+ +

+ + +

+ +

+ + +

+ +

+ + +

+ +

+ + +

+ +

+ + +

+ +

+ + +

+ +

+ + +

+ +

+ + + + 0 + + +

+ +

+ + +

+ +

+ + +

+ +

+ + +

+ +

+ + +

+ +

+ + +

+ +

+ + +

+
+
diff --git a/_includes/components.header.html b/_includes/components.header.html new file mode 100644 index 0000000..9a275ee --- /dev/null +++ b/_includes/components.header.html @@ -0,0 +1,15 @@ +
+
+
+
+ {% include components.logo.html %} + +
+
+
+
diff --git a/_includes/components.header1.html b/_includes/components.header1.html new file mode 100644 index 0000000..09ab92e --- /dev/null +++ b/_includes/components.header1.html @@ -0,0 +1,27 @@ +
+
+
+
+

How designing in the browser should be

+ Download + + + + + + + + + + + + +
+
+
+
diff --git a/_includes/components.image-header2.html b/_includes/components.image-header2.html new file mode 100644 index 0000000..13a0b7d --- /dev/null +++ b/_includes/components.image-header2.html @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_includes/components.logo.html b/_includes/components.logo.html new file mode 100644 index 0000000..c8c65bb --- /dev/null +++ b/_includes/components.logo.html @@ -0,0 +1,15 @@ +{% if page.section != 'home' %} +

+{% endif %} + + {{ site.title }} + +{% if page.section != 'home' %} + +

+{% else %} +

+{% endif %} diff --git a/_includes/components.pagination.html b/_includes/components.pagination.html new file mode 100644 index 0000000..4c65432 --- /dev/null +++ b/_includes/components.pagination.html @@ -0,0 +1,27 @@ + + +
+ + diff --git a/_includes/elements.base.html b/_includes/elements.base.html new file mode 100644 index 0000000..6331fc3 --- /dev/null +++ b/_includes/elements.base.html @@ -0,0 +1,215 @@ +

Level 1 heading lorem ipsum dolor sit amet consectetur adipisicing elit

+

Sed scelerisque sagittis lorem. Phasellus sodales. Nulla urna justo, vehicula in, suscipit nec, molestie sed, tellus. Quisque justo. Nam libero leo, elementum in, dapibus a, suscipit vitae, purus. Duis arcu. Integer dignissim fermentum enim. Morbi convallis felis vel nibh. Etiam viverra augue non enim.

+

Sed scelerisque sagittis lorem. Phasellus sodales. Nulla urna justo, vehicula in, suscipit nec, molestie sed, tellus. Quisque justo. Nam libero leo, elementum in, dapibus a, suscipit vitae, purus. Duis arcu. Integer dignissim fermentum enim. Morbi convallis felis vel nibh. Etiam viverra augue non enim.

+ +

Level 02 Heading lorem ipsum dolor sit amet consectetur adipisicing elit

+

Sed scelerisque sagittis lorem. Phasellus sodales. Nulla urna justo, vehicula in, suscipit nec, molestie sed, tellus. Quisque justo. Nam libero leo, elementum in, dapibus a, suscipit vitae, purus. Duis arcu. Integer dignissim fermentum enim. Morbi convallis felis vel nibh. Etiam viverra augue non enim.

+ +

Level 03 Heading lorem ipsum dolor sit amet consectetur adipisicing elit mollitia expedita reprehenderit quas aspernatur

+

Sed scelerisque sagittis lorem. Phasellus sodales. Nulla urna justo, vehicula in, suscipit nec, molestie sed, tellus. Quisque justo. Nam libero leo, elementum in, dapibus a, suscipit vitae, purus. Duis arcu. Integer dignissim fermentum enim. Morbi convallis felis vel nibh. Etiam viverra augue non enim.

+ +

Level 04 Heading lorem ipsum dolor sit amet consectetur adipisicing elit mollitia expedita reprehenderit quas aspernatur

+

Sed scelerisque sagittis lorem. Phasellus sodales. Nulla urna justo, vehicula in, suscipit nec, molestie sed, tellus. Quisque justo. Nam libero leo, elementum in, dapibus a, suscipit vitae, purus. Duis arcu. Integer dignissim fermentum enim. Morbi convallis felis vel nibh. Etiam viverra augue non enim.

+ +
+

Paragraph inside Blockquote: Nam libero leo, elementum in, dapibus a, suscipit vitae, purus. Duis arcu. Integer dignissim fermentum enim. Morbi convallis felis vel nibh. Sed scelerisque sagittis lorem.

+
+ +

+ Small element Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aspernatur molestiae voluptates fuga, reprehenderit nostrum ratione. Itaque nostrum quidem, assumenda delectus, quo, illum nam voluptas commodi pariatur at molestias velit sequi! + + +

+ +
    +
  1. Ordered list 01
  2. +
  3. Ordered list 02
  4. +
  5. Ordered list 03 +
      +
    1. Ordered list inside list level 2
    2. +
    3. Ordered list inside list level 2 +
        +
      1. Ordered list inside list level 3
      2. +
      3. Ordered list inside list level 3
      4. +
      +
    4. +
    +
  6. +
+ +
Address: Example address 224, Sweden
+ +
+    Preformated:Testing one row
+    and another
+
+ +

+ I am the a tag example
+ I am the abbr tag example
+ I am the acronym tag example
+ I am the b tag example
+ I am the big tag example
+ I am the cite tag example
+ I am the code tag example
+ I am the del tag example
+ I am the dfn tag example
+ I am the em tag example
+ I am the font tag example
+ I am the i tag example
+ I am the ins tag example
+ I am the kbd tag example
+ I am the q tag inside a q tag example
+ I am the s tag example
+ I am the samp tag example
+ I am the small tag example
+ I am the span tag example
+ I am the strike tag example
+ I am the strong tag example
+ I am the sub tag example
+ I am the sup tag example
+ I am the tt tag example
+ I am the var tag example
+ I am the u tag example +

+ + + +
+
Description list title 01
+
Description list description 01
+
Description list title 02
+
Description list description 02
+
Description list description 03
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Dit is de titel
YearOpponentSeason Record (W-L)
1900Last00-00
1918Chicago Cubs75-51
1915Philadelphia Phillies101-50
1918Chicago Cubs75-51
1915Philadelphia Phillies101-50
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Overzicht telefoontarieven
VoorafbetaaldAbonnement
Overdag's AvondsOverdag's Avonds
België
Vaste nummers0,5 €0,25 €0,30 €0,15 €
Mobiele nummers0,10 €0,05 €0,08 €0,04 €
Andere operatoren0,20 €0,10 €0,15 €0,10 €
Buitenland
Vaste nummers1,00 €0,75 €0,80 €0,65 €
Mobiele nummers0,60 €0,55 €0,58 €0,54 €
Andere operatoren0,70 €0,60 €0,65 €0,55 €
diff --git a/_includes/generic.head.html b/_includes/generic.head.html new file mode 100644 index 0000000..cd327ad --- /dev/null +++ b/_includes/generic.head.html @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + {{ site.title }} + + + + + + + + + + + + + + + + diff --git a/_includes/generic.javascript.html b/_includes/generic.javascript.html new file mode 100644 index 0000000..5612864 --- /dev/null +++ b/_includes/generic.javascript.html @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/_includes/objects.media.html b/_includes/objects.media.html new file mode 100644 index 0000000..2b1a6f8 --- /dev/null +++ b/_includes/objects.media.html @@ -0,0 +1,17 @@ +
+
+ Placeholder +
+
+

The media object is an image to the left, with descriptive content to the right. The content area on the right can contain any other objects. In this case, it contains text, but we could put lists, grids, or even other media objects inside.

+
+
+ +
+
+ Placeholder +
+
+

The media object is an image to the left, with descriptive content to the right. The content area on the right can contain any other objects. In this case, it contains text, but we could put lists, grids, or even other media objects inside.

+
+
diff --git a/_includes/trumps.colors.html b/_includes/trumps.colors.html new file mode 100644 index 0000000..bdf2cdc --- /dev/null +++ b/_includes/trumps.colors.html @@ -0,0 +1,151 @@ + +
+
+

Text colors

+
+ +
+
+

$alpha-text-color

+
+
+
+

$alpha-text-color-light

+
+
+
+

$alpha-text-color-dark

+
+
+
+

$beta-text-color

+
+
+
+

$beta-text-color-light

+
+
+
+

$beta-text-color-dark

+
+
+ + + +
+
+

UI colors

+
+ +
+
+

$alpha-ui-color

+
+
+
+

$alpha-ui-color-light

+
+
+
+

$alpha-ui-color-dark

+
+
+
+

$beta-ui-color

+
+
+
+

$beta-ui-color-light

+
+
+
+

$beta-ui-color-dark

+
+
+
+

$gamma-ui-color

+
+
+
+

$gamma-ui-color-light

+
+
+
+

$gamma-ui-color-dark

+
+
+
+

$delta-ui-color

+
+
+
+

$delta-ui-color-light

+
+
+
+

$delta-ui-color-dark

+
+
+ + + +
+
+

Link colors

+
+ +
+ +

$alpha-link-color

+
+
+ +

$alpha-link-colorhover

+
+
+ +

$alpha-link-colorfocus

+
+
+ +

$alpha-link-coloractive

+
+
+ +

$alpha-link-colorvisited

+
+
+ + + +
+
+

Greyscale of alpha-ui-color

+
+ +
+
+

$grey-00

+
+
+
+

$grey-01

+
+
+
+

$grey-02

+
+
+
+

$grey-03

+
+
+
+

$grey-04

+
+
+
+

$grey-05

+
+
+ diff --git a/_includes/trumps.helpers.html b/_includes/trumps.helpers.html new file mode 100644 index 0000000..daf7115 --- /dev/null +++ b/_includes/trumps.helpers.html @@ -0,0 +1,11 @@ +

Responsive Media Embed

+ +
+ +
+ +

Warning for old browsers

+ +
+

You are using an outdated browser. Please upgrade your browser or activate Google Chrome Frame to improve your experience.

+
diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 0000000..cd5af97 --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,29 @@ + + + + + +{% include generic.head.html %} + + + + + {% include components.browser-alert.html %} + + + + {% include components.header.html %} + + + {{ content }} + + + {% include components.footer.html %} + + + + {% include generic.javascript.html %} + + + + diff --git a/_layouts/styleguide.html b/_layouts/styleguide.html new file mode 100644 index 0000000..94303d1 --- /dev/null +++ b/_layouts/styleguide.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + {{ site.title }} + + + + + + + + + + + + + + + + + + + + + +
+ {{ content }} +
+ + {% include generic.javascript.html %} + + diff --git a/apple-touch-icon.png b/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bcf4c1b63f42c15231055196a575374f58174f99 GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^GeDS;8AvMeY)S%B%mF?juJ7v^)+V2?19BxjT^vIy s7~dXb + + diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1f595495effaf93061711e19f98b31ceceb6ab89 GIT binary patch literal 1342 zcmZQzU<5(|0R|wcz@Wj(z#zuJz@P!dKp~(AL>x#lFaYH+K>hpw45N573`Wzy$V>wm J1;WS@001!hZX*By literal 0 HcmV?d00001 diff --git a/favicon.png b/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..66a35cc69e915eea75d53a66bfe38fd11a5f3199 GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyYymzYuJ7xCEC$Q(>1{wtvcxr_ zBsf2bP0l+XkKy$d2i literal 0 HcmV?d00001 diff --git a/grid.html b/grid.html new file mode 100755 index 0000000..c7c4584 --- /dev/null +++ b/grid.html @@ -0,0 +1,161 @@ +--- +layout: default +title: Grid +section: grid +--- + +
+ +
+
+
+
+ u-1-of-2-bp3 +
+
+
+
+ u-1-of-2-bp3 +
+
+
+
+ + + +
+
+
+
+ u-1-of-3-bp3 +
+
+
+
+ u-1-of-3-bp3 +
+
+
+
+ u-1-of-3-bp3 +
+
+
+
+ + + +
+
+
+
+ u-1-of-3-bp3 +
+
+
+
+ u-2-of-3-bp3 +
+
+
+
+ + + +
+
+
+
+ u-1-of-5-bp4 +
+
+
+
+ u-1-of-5-bp4 +
+
+
+
+ u-1-of-5-bp4 +
+
+
+
+ u-1-of-5-bp4 +
+
+
+
+ u-1-of-5-bp3 +
+
+
+
+ + + +
+
+
+
+ u-2-of-5-bp2 +
+
+
+
+ u-3-of-5-bp2 +
+
+
+
+ + + +
+
+
+
+ u-3-of-5-bp3 + u-push-1-of-5-bp3 +
+
+
+
+ + + +
+
+
+
+ u-2-of-6-bp2 u-1-of-6-bp4 +
+
+
+
+ u-2-of-6-bp2 u-1-of-6-bp4 +
+
+
+
+ u-2-of-6-bp2 u-1-of-6-bp4 +
+
+
+
+ u-2-of-6-bp2 u-1-of-6-bp4 +
+
+
+
+ u-2-of-6-bp2 u-1-of-6-bp4 +
+
+
+
+ u-2-of-6-bp2 u-1-of-6-bp4 +
+
+
+
+ +
diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..10b395b --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,9 @@ +/* + gulpfile.js + =========== +*/ + +var requireDir = require('require-dir'); + +// Require all tasks in gulp/tasks, including subfolders +requireDir('./_gulp/tasks', { recurse: true }); diff --git a/img/_source/icons.sketch b/img/_source/icons.sketch new file mode 100644 index 0000000000000000000000000000000000000000..02b58e53084a635491bfa8551b0d669e06b2e0c8 GIT binary patch literal 40960 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 qSRb=KZ#`l?ZarrUu_Cnzn*#l^J`Yp93k;^IyL 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 literal 0 HcmV?d00001 diff --git a/img/png/cloud-left--large.png b/img/png/cloud-left--large.png new file mode 100644 index 0000000000000000000000000000000000000000..5d5cf40320f0bc3f0945c1e241cba819b757c7a8 GIT binary patch literal 5400 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 literal 0 HcmV?d00001 diff --git a/img/png/header-bg-text.png b/img/png/header-bg-text.png new file mode 100644 index 0000000000000000000000000000000000000000..1b2fc361d509843ad6733bd6edce94c77a136da3 GIT binary patch literal 22278 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 literal 0 HcmV?d00001 diff --git a/img/png/icon-bits.png b/img/png/icon-bits.png new file mode 100644 index 0000000000000000000000000000000000000000..52b37137cba1037a7b2e1dda3a611774b790fc23 GIT binary patch literal 3581 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 X=4Ayg`jregzYUU;QkJZQ83p}66P;1e literal 0 HcmV?d00001 diff --git a/img/png/icon-fly.png b/img/png/icon-fly.png new file mode 100644 index 0000000000000000000000000000000000000000..0393d01f86f5f7c2c7b5d9f9295e5bc6189a1be4 GIT binary patch literal 15507 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 literal 0 HcmV?d00001 diff --git a/img/png/icon-menu.png b/img/png/icon-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..0c25491786ee26b02396f8b7e13e75950829169a GIT binary patch literal 582 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�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 OQIu7a`7He=;Qs)^VGAt) literal 0 HcmV?d00001 diff --git a/img/png/icon-scalable.png b/img/png/icon-scalable.png new file mode 100644 index 0000000000000000000000000000000000000000..6d5058420fbbcac9fcd12b92734031291ba1ad57 GIT binary patch literal 6594 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 literal 0 HcmV?d00001 diff --git a/img/png/image-header2.png b/img/png/image-header2.png new file mode 100644 index 0000000000000000000000000000000000000000..5c080e5f5d2a5e03c3e6d63eef76f4c10fec1e36 GIT binary patch literal 21961 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%0Dr~sp8KJl4tOw$6R|wuo$Tob@?EE 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 VMCjm?0k9Vk`NG(h9Ql#A`Q|l-6bMOr{sC~ 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 literal 0 HcmV?d00001 diff --git a/img/png/line-1to2.png b/img/png/line-1to2.png new file mode 100644 index 0000000000000000000000000000000000000000..df9e3e97ee48dccd5ec0e7ab93e09d95558c6ae0 GIT binary patch literal 4815 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 Ks#M4E$v*%Io#)*E literal 0 HcmV?d00001 diff --git a/img/png/line-between-steps.png b/img/png/line-between-steps.png new file mode 100644 index 0000000000000000000000000000000000000000..2650a2c6ab00b92358febda59eda1d984c9cd09c GIT binary patch literal 1662 zcmeAS@N?(olHy`uVBq!ia0y~yV4MKNIvi|3k+<8Q9s*J<#ZI0f96(URkly zCIYk#8#osb&EK%{=i}=4u{Gt@h5O(C-X3rNde=Kw^ErRs9y@q&^R(LuUc0U_CwR35 zy|Nb9|5ql{ALRA&cil$0ZFSeP#C;|<95``!?p*EEP`$aO(x<9k@A-aU3MWTTOaz~O z{$572R-pVz>AmGlbt?MY41$b|3Q7tLE-Wk!9SsZuf&vUmOiT_g4h$U}9JG}*FuG#3 zLiaty&H zZ{D7@x3t^0E8_fpou$$1o~iri+gE0!M_1>)UL17l+v{}a@awl% z|7?zzul=>%KC~n3R~GUuPw^bV|_g#BKA|zB8Z2I$1@*;M0>IKe8-E`>$U+ z{Ghf`P@kpeOYHZ}*Q67IX&tx(Bh>BJVY_+$ zURJE3j79K==E}9~2SjXl)RY%KT>JF*=hE#Gr%rB?ZhI`v&VD}XeUql3fW_0v+46BS z&xd_~ZBSxwapv@4>wbB86JXe0{`%cY`Jii(8(I zj7{|Qn-^yuul)H8l;A$NW=EuI?y-Ol1cG@PZeV>1Pw2y`c^ToB%@>4=@+WxK4`1*P7;lKUS zIZc|cqWBv$e}4LO_h?RR*|}X;jrP>vt4=rtbnv|RU;j>3eK;#q#{&%Qh1b>&juidM zU{4k_8Gk>2za}b65}E>v-mmVD&pH44@aDYQm;VYuzQ}sbXy7{k?!LdL6GPXZ-?dBP sRn^V%yU%y`%hg`262}pg*o95L%R3v~I{V*A&IqKy)78&qol`;+0Kl^*BLDyZ literal 0 HcmV?d00001 diff --git a/img/png/logo--mobile.png b/img/png/logo--mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..df33b175e98771870c97b0849a5816f2d617475f GIT binary patch literal 7522 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 XM~G$Bv2t13A21AbO`cTiyn6S)#RcY% literal 0 HcmV?d00001 diff --git a/img/png/toggle--sprite.png b/img/png/toggle--sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..0c25491786ee26b02396f8b7e13e75950829169a GIT binary patch literal 582 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 literal 0 HcmV?d00001 diff --git a/img/svg/chopsticks.svg b/img/svg/chopsticks.svg new file mode 100644 index 0000000..e0e2d6c --- /dev/null +++ b/img/svg/chopsticks.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/img/svg/cloud-left--large.svg b/img/svg/cloud-left--large.svg new file mode 100644 index 0000000..28ce371 --- /dev/null +++ b/img/svg/cloud-left--large.svg @@ -0,0 +1,25 @@ + + + + + + + + + + diff --git a/img/svg/header-bg-text.svg b/img/svg/header-bg-text.svg new file mode 100644 index 0000000..078714b --- /dev/null +++ b/img/svg/header-bg-text.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/img/svg/icon-bits.svg b/img/svg/icon-bits.svg new file mode 100644 index 0000000..923038e --- /dev/null +++ b/img/svg/icon-bits.svg @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/svg/icon-fly--header--v2.svg b/img/svg/icon-fly--header--v2.svg new file mode 100644 index 0000000..acca27b --- /dev/null +++ b/img/svg/icon-fly--header--v2.svg @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/img/svg/icon-fly--header.svg b/img/svg/icon-fly--header.svg new file mode 100644 index 0000000..af756c1 --- /dev/null +++ b/img/svg/icon-fly--header.svg @@ -0,0 +1,10 @@ + + + + + diff --git a/img/svg/icon-fly-footer.svg b/img/svg/icon-fly-footer.svg new file mode 100644 index 0000000..ebe03ac --- /dev/null +++ b/img/svg/icon-fly-footer.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/svg/icon-fly.svg b/img/svg/icon-fly.svg new file mode 100644 index 0000000..f00f51d --- /dev/null +++ b/img/svg/icon-fly.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/svg/icon-github.svg b/img/svg/icon-github.svg new file mode 100644 index 0000000..8758d72 --- /dev/null +++ b/img/svg/icon-github.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/img/svg/icon-menu.svg b/img/svg/icon-menu.svg new file mode 100644 index 0000000..9c64747 --- /dev/null +++ b/img/svg/icon-menu.svg @@ -0,0 +1,9 @@ + + + + + + + + diff --git a/img/svg/icon-modular.svg b/img/svg/icon-modular.svg new file mode 100644 index 0000000..cecbd26 --- /dev/null +++ b/img/svg/icon-modular.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/svg/icon-scalable.svg b/img/svg/icon-scalable.svg new file mode 100644 index 0000000..b82749b --- /dev/null +++ b/img/svg/icon-scalable.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/svg/icon-singledept.svg b/img/svg/icon-singledept.svg new file mode 100644 index 0000000..591a1f8 --- /dev/null +++ b/img/svg/icon-singledept.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/svg/image-header2--small.svg b/img/svg/image-header2--small.svg new file mode 100644 index 0000000..127bc34 --- /dev/null +++ b/img/svg/image-header2--small.svg @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/svg/image-header2.svg b/img/svg/image-header2.svg new file mode 100644 index 0000000..797be88 --- /dev/null +++ b/img/svg/image-header2.svg @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/svg/installation--1.svg b/img/svg/installation--1.svg new file mode 100644 index 0000000..b0d9fb8 --- /dev/null +++ b/img/svg/installation--1.svg @@ -0,0 +1,9 @@ + + + + + + + + diff --git a/img/svg/installation--2.svg b/img/svg/installation--2.svg new file mode 100644 index 0000000..61c8554 --- /dev/null +++ b/img/svg/installation--2.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/img/svg/installation--3.svg b/img/svg/installation--3.svg new file mode 100644 index 0000000..335dfd6 --- /dev/null +++ b/img/svg/installation--3.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/img/svg/installation-bg--mobile.svg b/img/svg/installation-bg--mobile.svg new file mode 100644 index 0000000..96c1aaf --- /dev/null +++ b/img/svg/installation-bg--mobile.svg @@ -0,0 +1,25 @@ + + + + + + + + + + diff --git a/img/svg/line-1to2.svg b/img/svg/line-1to2.svg new file mode 100644 index 0000000..8710d83 --- /dev/null +++ b/img/svg/line-1to2.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/img/svg/line-2to3.svg b/img/svg/line-2to3.svg new file mode 100644 index 0000000..1a6c689 --- /dev/null +++ b/img/svg/line-2to3.svg @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/img/svg/line-3to4.svg b/img/svg/line-3to4.svg new file mode 100644 index 0000000..b44e2c0 --- /dev/null +++ b/img/svg/line-3to4.svg @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/img/svg/line-between--large.svg b/img/svg/line-between--large.svg new file mode 100644 index 0000000..beae572 --- /dev/null +++ b/img/svg/line-between--large.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/img/svg/line-between-steps--end.svg b/img/svg/line-between-steps--end.svg new file mode 100644 index 0000000..22aa386 --- /dev/null +++ b/img/svg/line-between-steps--end.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/img/svg/line-between-steps.svg b/img/svg/line-between-steps.svg new file mode 100644 index 0000000..0e8d5a8 --- /dev/null +++ b/img/svg/line-between-steps.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/img/svg/logo--mobile.svg b/img/svg/logo--mobile.svg new file mode 100644 index 0000000..1f73d94 --- /dev/null +++ b/img/svg/logo--mobile.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + diff --git a/img/svg/logo.svg b/img/svg/logo.svg new file mode 100644 index 0000000..b2f4b37 --- /dev/null +++ b/img/svg/logo.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/svg/toggle--sprite.svg b/img/svg/toggle--sprite.svg new file mode 100644 index 0000000..0594f25 --- /dev/null +++ b/img/svg/toggle--sprite.svg @@ -0,0 +1,13 @@ + + + + toggle--sprite + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/img/svg/wijs-logo.svg b/img/svg/wijs-logo.svg new file mode 100644 index 0000000..135a6f0 --- /dev/null +++ b/img/svg/wijs-logo.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + diff --git a/index.html b/index.html new file mode 100755 index 0000000..9a74794 --- /dev/null +++ b/index.html @@ -0,0 +1,187 @@ +--- +layout: styleguide +title: Patterns +section: styletile +--- +{% include components.header.html %} + +{% include components.header1.html %} + +
+
+
+ +
+

What is chopstick?

+

A kick-ass front-end framework

+
+ +
+

BEM naming methodology

+

Do you wanna know why I use a knife? Guns are too quick. You can't savor all the ... little emotions. You see, in their last moments, people show you who they really are. So er a way, I knew your friends better than you ever did. Would you like to know which of them were cowards?

+
+ +
+

SASS

+

Do you wanna know why I use a knife? Guns are too quick. You can't savor all the ... little emotions. You see, in their last moments, people show you who they really are. So in a way, I knew your friends better than you ever did. Would you like to know which of them were cowards?

+
+ +
+

Jekyll

+

Do you wanna know why I use a knife? Guns are too quick. You can't savor all the ... little emotions. You see, in their last moments, people show you who they really are. So in a way, I knew your friends better than you ever did. Would you like to know which of them were cowards?

+
+ +
+
+
+ +
+
+
+

The key features

+

Why you should use Chopstick

+
+ +
+
+ scalable-icon +

scalable

+
+ +
+ modular-icon +

modular

+
+ +
+ singledept-icon +

single dept class based

+
+ +
+ bits-icon +

the bits that build the bits

+
+
+ +
+
+ +
+ +
+
+
+
+
+

Learn from us

+

Just follow along with these screencasts

+
+ +
01: Getting to know Chopstick
+ +
+
+
+
+ +{% include components.footer.html %} diff --git a/js/_components/_animation.js b/js/_components/_animation.js new file mode 100644 index 0000000..23bc028 --- /dev/null +++ b/js/_components/_animation.js @@ -0,0 +1,56 @@ +chopstick.animation = +{ + init: function() + { + chopstick.animation.flyAnimation(); + chopstick.animation.footerAnimation(); + }, + + flyAnimation: function() { + // construct timelines + var tl = new TimelineMax({yoyo: true, repeat: -1}), + tl2 = new TimelineMax({yoyo: true, repeat: -1}); + + var screenWidth = $( document ).innerWidth(); + + // set fly position in 100 different spots + for (var i = 0; i < 100; i++) { + + var randomX = Math.floor((Math.random() * screenWidth/8) + 1), + randomY = Math.floor((Math.random() * 200) + 1), + randomTiming = Math.floor((Math.random() * 1) + 1); + + tl.to(".js-animatedfly", randomTiming, { + scale: 1, + x: randomX + "px", + y: randomY + "px", + ease: Expo.easeInOut + }); + + tl2.to(".js-right-wing", 0.2, { + scale: 1, + rotation: "30_cw", + ease: Expo.easeIn, + transformOrigin:"left 80%" + },"flap1"); + + tl2.to(".js-left-wing", 0.2, { + scale: 1, + rotation: "330_ccw", + ease: Expo.easeIn, + transformOrigin: "right 80%" + },"flap1"); + }; + }, + + footerAnimation: function() { + var controller = new ScrollMagic.Controller(); + + // build scene + var scene = new ScrollMagic.Scene({triggerElement: ".js-footer-animation-trigger"}) + // trigger animation by adding a css class + .setClassToggle(".c-holder--footer", "js-animation-footer") + //.addIndicators({name: "1 - add a class"}) // add indicators (requires plugin) + .addTo(controller); + } +}; diff --git a/js/_components/_fittext.js b/js/_components/_fittext.js new file mode 100644 index 0000000..00d951a --- /dev/null +++ b/js/_components/_fittext.js @@ -0,0 +1,7 @@ +chopstick.fittext = +{ + init: function() { + //console.log('fittext loaded'); + // jQuery(".c-responsive-headline").fitText(1, { minFontSize: '41px', maxFontSize: '91px' }); + } +}; diff --git a/js/_components/_hide.js b/js/_components/_hide.js new file mode 100644 index 0000000..70e67c2 --- /dev/null +++ b/js/_components/_hide.js @@ -0,0 +1,22 @@ +chopstick.hide = +{ + settings: + { + hide: $('.js-hide') + }, + + init: function() + { + settings = this.settings; + chopstick.hide.hideContent(); + }, + + hideContent: function () + { + settings.hide.on('click', function(e) + { + e.preventDefault(); + $(this).closest(settings.hide).parent().addClass('is-hidden'); + }); + } +}; diff --git a/js/_components/_mobilenav.js b/js/_components/_mobilenav.js new file mode 100644 index 0000000..67e5f71 --- /dev/null +++ b/js/_components/_mobilenav.js @@ -0,0 +1,30 @@ +chopstick.mobileNav = +{ + settings: + { + navHolder: $('.js-nav-holder'), + trigger: $('.js-nav-trigger'), + }, + + init: function() + { + settings = this.settings; + + chopstick.mobileNav.enableMobileNav(); + chopstick.mobileNav.buildMobileNav(); + }, + + enableMobileNav: function() + { + $("html").addClass("c-mobile-nav"); + }, + + // build mobile nav + buildMobileNav: function() + { + settings.trigger.on('click', function() { + $('.js-nav').toggle(); + $(this).toggleClass("is-active"); + }); + } +}; diff --git a/js/_components/_snapsvg.js b/js/_components/_snapsvg.js new file mode 100644 index 0000000..e4c4f22 --- /dev/null +++ b/js/_components/_snapsvg.js @@ -0,0 +1,79 @@ +chopstick.snapsvg = +{ + init: function() + { + window.onload = function () { + console.log('test'); + + var flyicon = Snap.select("#headerfly"), + background = flyicon.select("#background"), + wingLeft = flyicon.select("#wing--left"), + wingRight = flyicon.select("#wing--right"), + upperstick = flyicon.select("#upperstick"), + lowerstick = flyicon.select("#lowerstick"), + timer; // om animatie mogelijk te maken + + + + function onHoverIn() { + clearTimeout(timer); + + upperstick.animate({ + transform: "t0,0r20" + // transform: "t-20,20r5" + }, 100, mina.easein); + + lowerstick.animate({ + transform: "t0,0r-20" + // transform: "t-20,20r5" + }, 100, mina.easein); + + // wingLeft.animate({ + // transform: "t0,0r-20" + // // transform: "t-20,20r5" + // }, 100, mina.easein); + + // wingRight.animate({ + // transform: "t0,0r20" + // // transform: "t-20,20r5" + // }, 100, mina.easein); + + } + + + + function onHoverOut() { + clearTimeout(timer); + + upperstick.animate({ + transform: "t0,0r0" + }, 1000, mina.elastic); + + lowerstick.animate({ + transform: "t0,0r0" + // transform: "t-20,20r5" + }, 1000, mina.elastic); + + wingLeft.animate({ + transform: "t0,0r0" + // transform: "t-20,20r5" + }, 100, mina.easein); + + + wingRight.animate({ + transform: "t0,0r0" + // transform: "t-20,20r5" + }, 100, mina.easein); + } + + timer = setTimeout(onHoverOut, 500); + + flyicon.hover(onHoverIn, + function () { + timer = setTimeout(onHoverOut, 100); + } + ); + + } + } +}; diff --git a/js/_components/_toggle.js b/js/_components/_toggle.js new file mode 100644 index 0000000..687823a --- /dev/null +++ b/js/_components/_toggle.js @@ -0,0 +1,31 @@ +chopstick.toggle = +{ + init: function() { + // The toggle is called with the '.js-toggle' class and one or more data-targets + // Use the 'is-hidden' class to hide your elements" + var toggle = $('.js-toggle'); + + // Toggle functionality + toggle.on('touchstart click', function(e){ + // Prevent the default action on links + e.preventDefault(); + + // Split the targets if multiple + var targets = $(this).data("target").replace(" ", "").split(","); + + // Loop trough targets and toggle the 'is-hidden' class + for (var i = targets.length - 1; i >= 0; i--) { + if(targets[i]){ + // Toggle the 'is-hidden' class + $(targets[i]).toggleClass('is-hidden'); + } + } + + // Add an 'is-toggled' class to the trigger. + // Use this class to style your icons, active states, etc. + $(this).toggleClass('is-toggled'); + + return false; + }); + } +}; diff --git a/js/loader.js b/js/loader.js new file mode 100644 index 0000000..5710596 --- /dev/null +++ b/js/loader.js @@ -0,0 +1 @@ +$(chopstick.init); diff --git a/js/theme.concat.js b/js/theme.concat.js new file mode 100755 index 0000000..556523f --- /dev/null +++ b/js/theme.concat.js @@ -0,0 +1,276 @@ +var chopstick = +{ + // init, something like a constructor + init: function() + { + // chopstick.loadObject(chopstick.mobileNav, 'chopstick.mobileNav'); + // chopstick.loadObject(chopstick.hide, 'chopstick.hide'); + // chopstick.loadObject(chopstick.toggle, 'chopstick.toggle'); + // chopstick.loadObject(chopstick.snapsvg, 'chopstick.snapsvg'); + // chopstick.loadObject(chopstick.fittext, 'chopstick.fittext'); + chopstick.loadObject(chopstick.animation, 'chopstick.animation'); + + console.log("javascript is locked and loaded!"); // for testing purposes. Check your console. Delete after you finished reading this. :-) + }, + + /** + * This function will load an object by a given name + * + * If the object doesn't exist no error will be thrown + * But if object exists but doesn't have an init method it will throw an error + * + * If everything is ok we'll initiate the given object + */ + loadObject: function(obj, name) + { + // create object based on a name + // var objName = window[objName]; + + // check if object exists + if(typeof obj != 'undefined') { + + // check if object has a method init + if (typeof obj.init == 'undefined') { + // we will throw an error so the designer / developer know there's a problem + throw new Error('ERROR: "' + name + '" does not have an init function'); + + } else { + // everything is fine so initiate + obj.init(); + } + } + } + }; + +chopstick.animation = +{ + init: function() + { + chopstick.animation.flyAnimation(); + chopstick.animation.footerAnimation(); + }, + + flyAnimation: function() { + // construct timelines + var tl = new TimelineMax({yoyo: true, repeat: -1}), + tl2 = new TimelineMax({yoyo: true, repeat: -1}); + + var screenWidth = $( document ).innerWidth(); + + // set fly position in 100 different spots + for (var i = 0; i < 100; i++) { + + var randomX = Math.floor((Math.random() * screenWidth/8) + 1), + randomY = Math.floor((Math.random() * 200) + 1), + randomTiming = Math.floor((Math.random() * 1) + 1); + + tl.to(".js-animatedfly", randomTiming, { + scale: 1, + x: randomX + "px", + y: randomY + "px", + ease: Expo.easeInOut + }); + + tl2.to(".js-right-wing", 0.2, { + scale: 1, + rotation: "30_cw", + ease: Expo.easeIn, + transformOrigin:"left 80%" + },"flap1"); + + tl2.to(".js-left-wing", 0.2, { + scale: 1, + rotation: "330_ccw", + ease: Expo.easeIn, + transformOrigin: "right 80%" + },"flap1"); + }; + }, + + footerAnimation: function() { + var controller = new ScrollMagic.Controller(); + + // build scene + var scene = new ScrollMagic.Scene({triggerElement: ".js-footer-animation-trigger"}) + // trigger animation by adding a css class + .setClassToggle(".c-holder--footer", "js-animation-footer") + //.addIndicators({name: "1 - add a class"}) // add indicators (requires plugin) + .addTo(controller); + } +}; + +chopstick.fittext = +{ + init: function() { + //console.log('fittext loaded'); + // jQuery(".c-responsive-headline").fitText(1, { minFontSize: '41px', maxFontSize: '91px' }); + } +}; + +chopstick.hide = +{ + settings: + { + hide: $('.js-hide') + }, + + init: function() + { + settings = this.settings; + chopstick.hide.hideContent(); + }, + + hideContent: function () + { + settings.hide.on('click', function(e) + { + e.preventDefault(); + $(this).closest(settings.hide).parent().addClass('is-hidden'); + }); + } +}; + +chopstick.mobileNav = +{ + settings: + { + navHolder: $('.js-nav-holder'), + trigger: $('.js-nav-trigger'), + }, + + init: function() + { + settings = this.settings; + + chopstick.mobileNav.enableMobileNav(); + chopstick.mobileNav.buildMobileNav(); + }, + + enableMobileNav: function() + { + $("html").addClass("c-mobile-nav"); + }, + + // build mobile nav + buildMobileNav: function() + { + settings.trigger.on('click', function() { + $('.js-nav').toggle(); + $(this).toggleClass("is-active"); + }); + } +}; + +chopstick.snapsvg = +{ + init: function() + { + window.onload = function () { + console.log('test'); + + var flyicon = Snap.select("#headerfly"), + background = flyicon.select("#background"), + wingLeft = flyicon.select("#wing--left"), + wingRight = flyicon.select("#wing--right"), + upperstick = flyicon.select("#upperstick"), + lowerstick = flyicon.select("#lowerstick"), + timer; // om animatie mogelijk te maken + + + + function onHoverIn() { + clearTimeout(timer); + + upperstick.animate({ + transform: "t0,0r20" + // transform: "t-20,20r5" + }, 100, mina.easein); + + lowerstick.animate({ + transform: "t0,0r-20" + // transform: "t-20,20r5" + }, 100, mina.easein); + + // wingLeft.animate({ + // transform: "t0,0r-20" + // // transform: "t-20,20r5" + // }, 100, mina.easein); + + // wingRight.animate({ + // transform: "t0,0r20" + // // transform: "t-20,20r5" + // }, 100, mina.easein); + + } + + + + function onHoverOut() { + clearTimeout(timer); + + upperstick.animate({ + transform: "t0,0r0" + }, 1000, mina.elastic); + + lowerstick.animate({ + transform: "t0,0r0" + // transform: "t-20,20r5" + }, 1000, mina.elastic); + + wingLeft.animate({ + transform: "t0,0r0" + // transform: "t-20,20r5" + }, 100, mina.easein); + + + wingRight.animate({ + transform: "t0,0r0" + // transform: "t-20,20r5" + }, 100, mina.easein); + } + + timer = setTimeout(onHoverOut, 500); + + flyicon.hover(onHoverIn, + function () { + timer = setTimeout(onHoverOut, 100); + } + ); + + } + } +}; + +chopstick.toggle = +{ + init: function() { + // The toggle is called with the '.js-toggle' class and one or more data-targets + // Use the 'is-hidden' class to hide your elements" + var toggle = $('.js-toggle'); + + // Toggle functionality + toggle.on('touchstart click', function(e){ + // Prevent the default action on links + e.preventDefault(); + + // Split the targets if multiple + var targets = $(this).data("target").replace(" ", "").split(","); + + // Loop trough targets and toggle the 'is-hidden' class + for (var i = targets.length - 1; i >= 0; i--) { + if(targets[i]){ + // Toggle the 'is-hidden' class + $(targets[i]).toggleClass('is-hidden'); + } + } + + // Add an 'is-toggled' class to the trigger. + // Use this class to style your icons, active states, etc. + $(this).toggleClass('is-toggled'); + + return false; + }); + } +}; + +$(chopstick.init); diff --git a/js/theme.js b/js/theme.js new file mode 100755 index 0000000..54160be --- /dev/null +++ b/js/theme.js @@ -0,0 +1,43 @@ +var chopstick = +{ + // init, something like a constructor + init: function() + { + // chopstick.loadObject(chopstick.mobileNav, 'chopstick.mobileNav'); + // chopstick.loadObject(chopstick.hide, 'chopstick.hide'); + // chopstick.loadObject(chopstick.toggle, 'chopstick.toggle'); + // chopstick.loadObject(chopstick.snapsvg, 'chopstick.snapsvg'); + // chopstick.loadObject(chopstick.fittext, 'chopstick.fittext'); + chopstick.loadObject(chopstick.animation, 'chopstick.animation'); + + console.log("javascript is locked and loaded!"); // for testing purposes. Check your console. Delete after you finished reading this. :-) + }, + + /** + * This function will load an object by a given name + * + * If the object doesn't exist no error will be thrown + * But if object exists but doesn't have an init method it will throw an error + * + * If everything is ok we'll initiate the given object + */ + loadObject: function(obj, name) + { + // create object based on a name + // var objName = window[objName]; + + // check if object exists + if(typeof obj != 'undefined') { + + // check if object has a method init + if (typeof obj.init == 'undefined') { + // we will throw an error so the designer / developer know there's a problem + throw new Error('ERROR: "' + name + '" does not have an init function'); + + } else { + // everything is fine so initiate + obj.init(); + } + } + } + }; diff --git a/package.json b/package.json new file mode 100644 index 0000000..44e242f --- /dev/null +++ b/package.json @@ -0,0 +1,26 @@ +{ + "name": "Chopstick-boilerplate", + "version": "0.3.3", + "repository": { + "type": "git", + "url": "git@github.com:getchopstick/chopstick-boilerplate.git" + }, + "description": "Chopstick is a mobile-first responsive Design Framework built with Sass", + "main": "gulpfile.js", + "devDependencies": { + "browser-sync": "2.6.4", + "gulp": "3.8.11", + "gulp-autoprefixer": "2.1.0", + "gulp-concat": "2.5.2", + "gulp-filesize": "0.0.6", + "gulp-filter": "2.0.2", + "gulp-minify-css": "1.0.0", + "gulp-plumber": "1.0.0", + "gulp-ruby-sass": "^1.0.1", + "gulp-sourcemaps": "1.5.2", + "gulp-svg2png": "0.3.0", + "gulp-uglyfly": "1.4.2", + "gulp-util": "3.0.4", + "require-dir": "0.3.0" + } +} diff --git a/scss/_components.alerts.scss b/scss/_components.alerts.scss new file mode 100644 index 0000000..6250fe4 --- /dev/null +++ b/scss/_components.alerts.scss @@ -0,0 +1,64 @@ +/* + Components: alerts + --- + Alert boxes +*/ + +.c-alert-box { + position: relative; + @include padding-tb(1,1); + @include px-padding-lr(1,1); + @include block-skin; + + // Only add margin top when 2 elements follow each other + // (http://alistapart.com/article/axiomatic-css-and-lobotomized-owls) + * + & { + @include margin-top(1); + } + + & .c-alert-box__link { + @include text-color($gamma-ui-color); + } +} + +.c-alert-box--error { + @include block-skin($error-color); + + & .c-alert-box__link { + @include text-color($error-color); + } +} + +.c-alert-box--success { + @include block-skin($success-color); + + & .c-alert-box__link { + @include text-color($success-color); + } +} + +.c-alert-box--notice { + @include block-skin($notice-color); + + & .c-alert-box__link { + @include text-color($notice-color); + } +} + + .c-alert-box__link { + text-decoration: underline; + + &:hover, + &:focus { + text-decoration: none; + } + } + + .c-alert-box__close { + cursor: pointer; + position: absolute; + top: #{$alpha-line-height/6}em; + right: #{$alpha-line-height/3}em; + line-height: 1; + text-decoration: none; + } diff --git a/scss/_components.animatedfly.scss b/scss/_components.animatedfly.scss new file mode 100644 index 0000000..1c46f79 --- /dev/null +++ b/scss/_components.animatedfly.scss @@ -0,0 +1,12 @@ +.c-animatedfly { + width: 5%; + height: auto; + position: absolute; + top: 15%; + left: 40%; + z-index: 0; + + @include media-query("palm") { + width: 10%; + } +} diff --git a/scss/_components.brand.scss b/scss/_components.brand.scss new file mode 100644 index 0000000..6263d57 --- /dev/null +++ b/scss/_components.brand.scss @@ -0,0 +1,38 @@ +/* + Components: brand + --- + Logo, brand elements, etc. +*/ + +.c-logo { + float: left; + font-family: $alpha-font-family; + font-weight: $alpha-font-weight; + margin-bottom: 0; + @include text-dimensions(30,1,0,1,1); + + @include mq($bp3) { + @include padding-tb(1.25,1.25); + } + + @include media-query("palm") { + @include text-dimensions(15,1,0,1,1); + } +} + + .c-logo__link { + display: block; + text-decoration: none; + color: $brand-primary-color; + text-indent: -9999px; + @include svg-bg(logo, $position: center center, $repeat: no-repeat); + + &:hover, + &:focus { + color: $alpha-text-color; + } + + @include media-query("palm") { + @include svg-bg(logo--mobile, $position: left center, $repeat: no-repeat); + } + } diff --git a/scss/_components.buttons.scss b/scss/_components.buttons.scss new file mode 100644 index 0000000..0e0a4c9 --- /dev/null +++ b/scss/_components.buttons.scss @@ -0,0 +1,192 @@ +/* + Components: buttons + --- + Button sizes, styles, etc. +*/ + +.c-button { + display: inline-block; + margin: 0; + text-align: center; + text-transform: uppercase; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 3px solid transparent; + white-space: nowrap; + transition: all .1s ease-in-out; + transition-property: background, color, border; + outline: none; + line-height: normal; + font-weight: 600; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + -webkit-font-smoothing: antialiased; + @include px-margin-right(2); + @include margin-tb(2,2); + + &:hover, + &:focus { + text-decoration: none; + } + + &:active { + outline: 0; + background-image: none; + } +} + +// Button display + +.c-button--block { + display: block; + width: 100%; +} + +.c-button--fll { + @include button-float(left); +} + +.c-button--flr { + @include button-float(right); +} + +// Button sizes + +.c-button--sm { + padding: em(5) em(10); +} + +.c-button--md { + padding: em(9) em(25); +} + +.c-button--lg { + padding: em(14.5) em(20); +} + +// Button colors + +.c-button--alpha { + background-color: $white; + border-color: $brand-primary-color; + color: $brand-primary-color; + + &, + &:visited { + color: $brand-primary-color; + } + + &:hover, + &:focus { + background-color: $brand-primary-color; + color: $white; + } + + &:active { + background-color: $brand-primary-color; + } + +} + +.c-button--beta { + background-color: lighten($brand-secondary-color,3); + border-color: $brand-primary-color; + + // &, + // &:visited { + // color: $brand-primary-color; + // } + + &:hover, + &:focus { + background-color: $white; + color: $brand-primary-color; + border-color: $white; + } + + &:active { + background-color: $brand-secondary-color; + } +} + +// Button to use on a $brand-secondary-color background +.c-button--gamma { + background-color: $brand-primary-color; + border-color: $brand-primary-color; + color: $white; + + &, + &:visited { + color: $white; + } + + &:hover, + &:focus { + background-color: $brand-secondary-color; + color: $brand-primary-color; + border-color: $brand-primary-color; + } + + &:active { + background-color: $brand-secondary-color; + } +} + +.c-button--delta { + + background-color: transparent; + border-color: $brand-primary-color; + color: $white; + font-size: $ms1 + px; + + &, + &:visited { + color: $brand-primary-color; + } + + &:hover, + &:focus { + background-color: $brand-primary-color; + color: white; + border-color: $brand-primary-color; + } + + &:active { + background-color: $brand-secondary-color; + } +} + +// Modifiers + +.c-button--postfix { + border-radius: 0 $radius $radius 0; + border-left: 0; +} + +// Button-group + +.c-button-group { + position: relative; + + .c-button--fll { + @include px-margin-right(1); + } + + .c-button--flr { + @include px-margin-right(1); + } + + @include clearfix; +} + +// firefox inner border fix + +button::-moz-focus-inner, +input[type="button"]::-moz-focus-inner, +input[type="submit"]::-moz-focus-inner { + border: 0; + padding: 0; +} diff --git a/scss/_components.code.scss b/scss/_components.code.scss new file mode 100644 index 0000000..0fff872 --- /dev/null +++ b/scss/_components.code.scss @@ -0,0 +1,16 @@ +.c-code { + font-family: $beta-font-family; +} + +.c-code--inline { + font-size: 16px; + background: black; + // background: #BAB397; + color: white; + padding: 3px 10px; +} + +.c-codeblock { + background: $brand-secondary-color; + padding: 30px; +} diff --git a/scss/_components.features.scss b/scss/_components.features.scss new file mode 100644 index 0000000..0bbd104 --- /dev/null +++ b/scss/_components.features.scss @@ -0,0 +1,23 @@ +/* + Components: features + --- + styles to display the features, etc. +*/ + +.c-feature { + @include padding-tb(1,0); +} + + .c-feature__icon { + margin: 0 auto; + width: 40%; + display: block; + } + + .c-feature__text { + text-transform: uppercase; + font-weight: 900; + color: white; + text-align: center; + @include margin-top(1.5); + } diff --git a/scss/_components.footer-links.scss b/scss/_components.footer-links.scss new file mode 100644 index 0000000..dc6912d --- /dev/null +++ b/scss/_components.footer-links.scss @@ -0,0 +1,23 @@ +.c-footer-links { + text-align: center; + padding-left: 1rem; + font-weight: 600; +} + + .c-footer-links__item { + + &:after { + content: "●"; + color: $brand-primary-color; + padding-left: 1rem; + padding-right: 1rem; + + + } + + &:last-child { + &:after { + content: ""; + } + } + } diff --git a/scss/_components.forms.scss b/scss/_components.forms.scss new file mode 100644 index 0000000..ea6ae6a --- /dev/null +++ b/scss/_components.forms.scss @@ -0,0 +1,98 @@ +/* + Component: forms + --- + Form styling, input sizes, etc. +*/ + +// Input elements + +.c-input-text { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-smoothing: antialiased; + background-color: $delta-ui-color; + border-radius: $radius; + border: $border-width $border-style $gamma-ui-color; + color: lighten($alpha-text-color, 30); + font-family: $alpha-font-family; + margin: 0; + width: 100%; + display: block; + outline: none; + line-height: normal; + border-radius: $radius; + @include input-md; + + &:focus { + color: $alpha-text-color; + border-color: $alpha-ui-color; + box-shadow: 0 0 2px rgba($alpha-ui-color,.5); + } + + &.has-error { + border: 1px solid $error-color; + + &:focus { + border-color: $error-color; + box-shadow: 0 0 2px rgba($error-color,.5); + } + } +} + +.c-input-option { + margin: 0; + display: inline-block; + vertical-align: middle; +} + +// Input sizes +.c-input-text--sm { + @include input-sm; +} + +.c-input-text--lg { + @include input-lg; +} + +// Input modifiers +.c-input-text--prefix { + border-radius: $radius 0 0 $radius; + border-right: 0; +} + +// Input states +.c-input-text.has-error { + border: 1px solid $error-color; + + &:focus { + border-color: $error-color; + box-shadow: 0 0 2px rgba($error-color,.5); + } +} + +// Labels +.c-label { + color: $beta-text-color; + @include text-dimensions($ms-1,1); + + &.has-error { + color: $error-color; + } +} + +.c-label--option { + margin: 0; + padding: 0; + width: auto; + display: inline-block; +} + +// Errors +.c-inline-error { + display: block; + color: $error-color; + text-align: right; + @include text-dimensions($ms-2,1); +} diff --git a/scss/_components.highlights.scss b/scss/_components.highlights.scss new file mode 100644 index 0000000..af60db7 --- /dev/null +++ b/scss/_components.highlights.scss @@ -0,0 +1,9 @@ +/* + Components: highlights + --- + styles for highlighting important things in text. +*/ + +.c-highlight { + background: $brand-secondary-color; +} diff --git a/scss/_components.holder.scss b/scss/_components.holder.scss new file mode 100644 index 0000000..f511717 --- /dev/null +++ b/scss/_components.holder.scss @@ -0,0 +1,80 @@ +/* + Component: holders + --- + Creates a horizontal row with padding +*/ + +.c-holder { + @include px-padding-lr(10,10); + + @include mq($bp1) { + @include px-padding-lr(2,2); + } +} + .c-holder--navigation { + @include padding-tb(2,2); + @include px-padding-lr(3,3); + background-color: $brand-secondary-color; + + @include mq($bp1) { + @include px-padding-lr(2,2); + } + } + + .c-holder--header { + background-color: $brand-secondary-color; + @include padding-tb(2,5); + + @include mq($bp1) { + @include padding-tb(0,4); + } + } + + .c-holder--install { + @include px-padding-lr(3,3); + background: url("../img/svg/cloud-left--large.svg"); + // @TODO: add png fallback + background-attachment: fixed; + background-size: cover; + + @include media-query("palm") { + @include svg-bg("installation-bg--mobile"); + } + } + + // secondary brand color background + .c-holder--alpha { + background-color: $brand-secondary-color; + @include padding-tb(4,4); + } + + // white background holder + .c-holder--beta { + background-color: $white; + color: $brand-main-text-color; + @include padding-tb(4,4); + } + + // primary brand color background + .c-holder--accent { + color: $brand-primary-color; + background-color: $brand-primary-color; + @include padding-tb(4,4); + + h2, .c-feature-text { + color: white; + } + + h3 { + color: $brand-accent-color; + } + + } + + .c-holder--footer { + @include padding-tb(3,1); + background: $brand-secondary-color; + + @include svg-bg("header-bg-text", $position: center center); + background-size: cover; + } diff --git a/scss/_components.icons.scss b/scss/_components.icons.scss new file mode 100644 index 0000000..4a70ded --- /dev/null +++ b/scss/_components.icons.scss @@ -0,0 +1,37 @@ +/* + Component: icons + --- + Icons +*/ + +.c-icon { + display: inline-block; + width: 16px; + height: 16px; + position: relative; + top: 1px; + background-repeat: no-repeat; + background-position: center top; + + @include hide-text; +} + + .c-icon--toggle { + background-image: url('../img/png/toggle--sprite.png'); + + .svg & { + background-image: url('../img/svg/toggle--sprite.svg'); + } + + .is-toggled & { + background-position: center -16px; + } + } + + .c-icon--wijs-logo { + width: 55px; + height: 45px; + margin: 0 5px; + } + + diff --git a/scss/_components.installation.scss b/scss/_components.installation.scss new file mode 100644 index 0000000..05598d3 --- /dev/null +++ b/scss/_components.installation.scss @@ -0,0 +1,209 @@ +.c-list-item { + // it's recommended to just use the single-colon for best browser support. + &:after { + content: ""; + position: relative; + + @include mq($bp4) { + width: 500px; + height: 300px; + } + } +} + + + +// .c-list-item--alpha { +// height: 200px; + +// &:after { +// background: url(../img/svg/line-between-steps.svg); +// background-repeat: no-repeat; +// height: 150px; +// width: 20px; +// //@TODO: fix dirty fix +// left: 10px; +// top: -160px; +// } + +// @include mq($bp2) { +// &:after { +// //@TODO: fix dirty fix +// top: -127px; +// } +// } + +// @include mq($bp4) { +// &:after { +// background: url(../img/svg/line-1to2.svg); +// background-repeat: no-repeat; +// width: 500px; +// height: 300px; + +// //@TODO: fix dirty fix +// left: 90%; +// top: -200px; +// } +// } +// } + +.c-list-item--beta { + //@TODO: andere mogelijkheid? + height: 200px; + + &:after { + background: url(../img/svg/line-between-steps.svg); + background-repeat: no-repeat; + height: 150px; + width: 20px; + + //@TODO: fix dirty fix + left: 10px; + top: -160px; + } + + @include mq($bp2) { + &:after { + //@TODO: fix dirty fix + top: -127px; + } + } + + @include mq($bp4) { + height: 250px; + + &:after { + background: url(../img/svg/line-2to3.svg); + background-repeat: no-repeat; + width: 500px; + height: 300px; + //@TODO: fix dirty fix + // left: -125%; + // top: -200px; + + position: relative; + top: -170px; + left: 0; + margin-left: 530px; + } + } +} + +.c-list-item--gamma { + //@TODO: andere mogelijkheid? + height: 200px; + + @include mq($bp4) { + height: 250px; + } + + +} + +.c-list-item--delta { + + height: 200px; + position: relative; + + &:before { + content: " "; + position: absolute; + background: url(../img/svg/line-between-steps.svg) no-repeat; + height: 80%; + width: 100%; + top: -162px; + left: 10px; + + @include mq($bp4) { + background: url(../img/svg/line-1to2.svg) no-repeat; + height: 100%; + width: 100%; + top: -100%; + left: -100%; + } + } + + &:after { + content: " "; + position: absolute; + background: url(../img/svg/line-between-steps.svg) no-repeat; + height: 80%; + width: 100%; + top: 38px; + left: 10px; + + @include mq($bp4) { + background: url(../img/svg/line-2to3.svg) no-repeat; + height: 100%; + width: 100%; + top: 0; + left: -100%; + } + } + +} + +.c-list-item--alpha { + height: 200px; + position: relative; + // temp fix + // overflow: hidden; + + &:before { + content: " "; + position: absolute; + background: url(../img/svg/line-between-steps--large.svg) no-repeat; + height: 80%; + width: 100%; + top: -162px; + left: 10px; + + @include mq($bp4) { + background: url(../img/svg/line-1to2.svg) no-repeat; + height: 100%; + width: 60%; + top: -75%; + left: -57%; + } + + + } + +} + + .c-list-item__number { + width: 5px; + height: 5px; + padding: 5px 12px; + border-radius: 50%; + border: 4px solid $brand-primary-color; + + text-align: center; + font-weight: 900; + color: $brand-primary-color; + background: $brand-secondary-color--light; + } + + .c-list-item__title { + @include mq($bp1) { + @include padding-top(1); + } + + @include mq($bp4) { + @include padding-top(0); + } + } + + .c-list-item__list { + padding-left: 0; + list-style-type: none; + } + + .c-list-item__list__item { + color: $brand-primary-color; + margin: 0; + } + + .c-list-item__list__item--subtitle { + @include margin-top(1); + } diff --git a/scss/_components.links.scss b/scss/_components.links.scss new file mode 100644 index 0000000..e8aefa7 --- /dev/null +++ b/scss/_components.links.scss @@ -0,0 +1,3 @@ +.c-link--underlined { + border-bottom: 1px $brand-primary-color dotted; +} diff --git a/scss/_components.navigation.scss b/scss/_components.navigation.scss new file mode 100644 index 0000000..cbfac21 --- /dev/null +++ b/scss/_components.navigation.scss @@ -0,0 +1,95 @@ +/* + Component: navigation + --- + Site navigation, breadcrumbs, etc. +*/ + +.c-main-nav { + width: 100%; + + @include mq($bp3) { + display: block !important; + width: auto; + float: right; + + li { + @include px-margin-lr(2,0); + } + } + + @include media-query("palm") { + width: auto; + } +} + + .c-main-nav__list { + font-family: $alpha-font-family; + //border-top: 3px solid $brand-primary-color; + @include list-nav; + @include margin-bottom(.75); + @include padding-top(.75); + + @include mq($bp3) { + border-top: none; + padding-top: 0; + margin-bottom: 0; + @include horizontal-nav(); + } + + @include clearfix; + } + + .c-main-nav__list-item { + + } + + .c-main-nav__link { + display: block; + text-decoration: none; + text-transform: uppercase; + font-weight: 600; + float: left; + @include text-dimensions(16,1,0,.25,.25); + + @include mq($bp3) { + @include padding-tb(1.25,1.25); + } + + &:hover, + .is-selected & { + // color: darken($alpha-link-color,50); + // text-decoration: underline; + border-bottom: 3px solid $brand-primary-color + } + + @include media-query("palm") { + @include text-dimensions(18,1,0,.25,.25); + @include px-margin-lr(2,2); + } + } + +.c-main-nav-trigger { + display: block; + height: 2em; + width: 2em; + margin-top: 0.75em; + float: right; + text-indent: -9999px; + background-color: $brand-primary-color; + background-repeat: no-repeat; + background-position: 50%; + @include text-dimensions($alpha-font-size,1,0); + + .svg & { + background-image: url('../img/svg/icon-menu.svg'); + } + + @include mq($bp3) { + display: none; + } + + &.is-active { + background-color: $alpha-link-color; + color: blue; + } +} diff --git a/scss/_components.pagination.scss b/scss/_components.pagination.scss new file mode 100644 index 0000000..8a06ab3 --- /dev/null +++ b/scss/_components.pagination.scss @@ -0,0 +1,25 @@ +/* + Component: pagination + --- + Pagination +*/ + +.c-pagination { + border: 1px solid $gamma-ui-color; +} + +.c-pagination--centered { + text-align: center; +} + + .c-pagination__item { + & + & { + border-left: 1px dotted $gamma-ui-color; + } + } + + .c-pagination__link { + display: block; + @include px-padding-lr(.3,.3); + @include padding-tb(.3,.3); + } diff --git a/scss/_components.section-header.scss b/scss/_components.section-header.scss new file mode 100644 index 0000000..9f1bea5 --- /dev/null +++ b/scss/_components.section-header.scss @@ -0,0 +1,25 @@ +/* + Component: section-header + --- + style header of each section +*/ + +// @TODO: maxwidth geven aan titel zonder dat alles toeklapt + +// .c-section-header { +// max-width: 33%; +// width: +// } + + .c-section-header__subtitle { + @include text-dimensions(22,1.2); + font-style: italic; + color: $brand-main-text-color; + @include margin-tb(0.25,2); + } + +.c-section-header__subtitle--light { + color: white; +} + + diff --git a/scss/_components.styleguide-syntax.scss b/scss/_components.styleguide-syntax.scss new file mode 100644 index 0000000..f94847d --- /dev/null +++ b/scss/_components.styleguide-syntax.scss @@ -0,0 +1,109 @@ +/* + Component: styleguide syntax + --- + Solarized Dark + For use with Jekyll and Pygments + http://ethanschoonover.com/solarized +*/ + +// SOLARIZED HEX ROLE +// --------- -------- ------------------------------------------ +// base01 #586e75 comments / secondary content +// base1 #93a1a1 body text / default code / primary content +// orange #cb4b16 constants +// red #dc322f regex, special keywords +// blue #268bd2 reserved keywords +// cyan #2aa198 strings, numbers +// green #859900 operators, other keywords + +.highlighttable { + @include padding-tb(0,0); + @include margin-tb(.5,.5); + display: block; + overflow: auto; + font-size: 90%; + width: 100%; + color: $alpha-text-color; + border: $border-width $border-style $gamma-ui-color; + border-radius: $radius; +} + + .linenos { + @include px-padding-lr(.5,.5); + color: $beta-text-color; + background-color: lighten($gamma-ui-color,10); + border-right: 1px solid $gamma-ui-color; + } + + .code { + @include px-padding-lr(1,0); + } + +.highlight .c { color: #586e75 } /* Comment */ +.highlight .err { color: #93a1a1 } /* Error */ +.highlight .g { color: #93a1a1 } /* Generic */ +.highlight .k { color: #859900 } /* Keyword */ +.highlight .l { color: #93a1a1 } /* Literal */ +.highlight .n { color: #93a1a1 } /* Name */ +.highlight .o { color: #859900 } /* Operator */ +.highlight .x { color: #cb4b16 } /* Other */ +.highlight .p { color: #93a1a1 } /* Punctuation */ +.highlight .cm { color: #586e75 } /* Comment.Multiline */ +.highlight .cp { color: #859900 } /* Comment.Preproc */ +.highlight .c1 { color: #586e75 } /* Comment.Single */ +.highlight .cs { color: #859900 } /* Comment.Special */ +.highlight .gd { color: #2aa198 } /* Generic.Deleted */ +.highlight .ge { color: #93a1a1; 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: #93a1a1 } /* Generic.Output */ +.highlight .gp { color: #93a1a1 } /* Generic.Prompt */ +.highlight .gs { color: #93a1a1; font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #cb4b16 } /* Generic.Subheading */ +.highlight .gt { color: #93a1a1 } /* Generic.Traceback */ +.highlight .kc { color: #cb4b16 } /* Keyword.Constant */ +.highlight .kd { color: #268bd2 } /* Keyword.Declaration */ +.highlight .kn { color: #859900 } /* Keyword.Namespace */ +.highlight .kp { color: #859900 } /* Keyword.Pseudo */ +.highlight .kr { color: #268bd2 } /* Keyword.Reserved */ +.highlight .kt { color: #dc322f } /* Keyword.Type */ +.highlight .ld { color: #93a1a1 } /* Literal.Date */ +.highlight .m { color: #2aa198 } /* Literal.Number */ +.highlight .s { color: #2aa198 } /* Literal.String */ +.highlight .na { color: #93a1a1 } /* Name.Attribute */ +.highlight .nb { color: #B58900 } /* Name.Builtin */ +.highlight .nc { color: #268bd2 } /* Name.Class */ +.highlight .no { color: #cb4b16 } /* Name.Constant */ +.highlight .nd { color: #268bd2 } /* Name.Decorator */ +.highlight .ni { color: #cb4b16 } /* Name.Entity */ +.highlight .ne { color: #cb4b16 } /* Name.Exception */ +.highlight .nf { color: #268bd2 } /* Name.Function */ +.highlight .nl { color: #93a1a1 } /* Name.Label */ +.highlight .nn { color: #93a1a1 } /* Name.Namespace */ +.highlight .nx { color: #93a1a1 } /* Name.Other */ +.highlight .py { color: #93a1a1 } /* Name.Property */ +.highlight .nt { color: #268bd2 } /* Name.Tag */ +.highlight .nv { color: #268bd2 } /* Name.Variable */ +.highlight .ow { color: #859900 } /* Operator.Word */ +.highlight .w { color: #93a1a1 } /* 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: #586e75 } /* Literal.String.Backtick */ +.highlight .sc { color: #2aa198 } /* Literal.String.Char */ +.highlight .sd { color: #93a1a1 } /* Literal.String.Doc */ +.highlight .s2 { color: #2aa198 } /* Literal.String.Double */ +.highlight .se { color: #cb4b16 } /* Literal.String.Escape */ +.highlight .sh { color: #93a1a1 } /* 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: #268bd2 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #268bd2 } /* Name.Variable.Class */ +.highlight .vg { color: #268bd2 } /* Name.Variable.Global */ +.highlight .vi { color: #268bd2 } /* Name.Variable.Instance */ +.highlight .il { color: #2aa198 } /* Literal.Number.Integer.Long */ diff --git a/scss/_components.styleguide.scss b/scss/_components.styleguide.scss new file mode 100644 index 0000000..80d97c5 --- /dev/null +++ b/scss/_components.styleguide.scss @@ -0,0 +1,39 @@ +/* + Component: styleguide + --- + Styleguide specific scaffolding and demo styles +*/ + +.c-scss { + display: block; + color: $alpha-text-color; + background-color: lighten($gamma-ui-color,10); + border: $border-width $border-style $gamma-ui-color; + border-radius: $radius; + @include margin-tb(0, 1); + @include padding-tb(.5, .5); + @include px-padding-lr(1,1); +} + +.c-swatch { + width: 100%; + height: 60px; + box-shadow: 0 0 1px 3px $white, 0 0 5px 2px rgba($black,.33); +} + +.c-swatch-caption { + color: $beta-text-color; + min-height: 55px; + @include text-dimensions(14,.8,0,.5,.3); +} + +.c-grid-test { + +} + + .c-grid-test__item { + background-color: $grey-05; + text-align: center; + @include padding-tb(.5,.5); + @include margin-tb(1,1); + } diff --git a/scss/_components.taglines.scss b/scss/_components.taglines.scss new file mode 100644 index 0000000..d63b207 --- /dev/null +++ b/scss/_components.taglines.scss @@ -0,0 +1,33 @@ +/* + Components: taglines + --- + styles for taglines/catchphrases, etc. +*/ + +.c-tagline { + color: $brand-main-text-color; + @include padding-bottom(1); +} + +// Modifires +.c-tagline--header { + font-weight: 900; + text-transform: uppercase; + text-align: center; + color: $brand-primary-color; + @include margin-top(0.5); +} + +.c-tagline--tiles { + font-weight: 900; + @include padding-top(2); +} + +.c-tagline--code-example { + font-style: italic; +} + +.c-tagline--install { + font-weight: 600; + font-size: 35px; +} diff --git a/scss/_components.tiles.scss b/scss/_components.tiles.scss new file mode 100644 index 0000000..43eef36 --- /dev/null +++ b/scss/_components.tiles.scss @@ -0,0 +1,26 @@ +/* + Components: tiles + --- + styles to display colored tiles in styletile. +*/ + +.c-tile { + float: left; + display: block; + width: 100%; + height: 100px; +} + +.c-tile--primary-color { + background: $brand-primary-color; +} + +.c-tile--secondary-color { + background: $brand-secondary-color; +} + +.c-tile--main-text-color { + background: $brand-main-text-color; +} + + diff --git a/scss/_elements.forms.scss b/scss/_elements.forms.scss new file mode 100644 index 0000000..f86f697 --- /dev/null +++ b/scss/_elements.forms.scss @@ -0,0 +1,50 @@ +/* + Elements: forms + --- + Default markup for the form elements +*/ + +fieldset { + // Only add margin top when 2 elements follow each other + // (http://alistapart.com/article/axiomatic-css-and-lobotomized-owls) + * + & { + @include margin-top(1); + } +} + +legend, +label { + display: block; + width: 100%; + cursor: pointer; + @include text-dimensions($alpha-font-size,1,0,0,.25); +} + +textarea { + height: auto; + resize: none; +} + +// Select, depends on the project. Use a custom select plugin to properly style these. + +select, +select[multiple] { + +} + +// Placeholders + +::-webkit-input-placeholder { + font-family: $beta-font-family; + font-style: italic; +} + +::-moz-placeholder { + font-family: $beta-font-family; + font-style: italic; +} + +:-ms-input-placeholder { + font-family: $beta-font-family; + font-style: italic; +} diff --git a/scss/_elements.images.scss b/scss/_elements.images.scss new file mode 100644 index 0000000..e14de59 --- /dev/null +++ b/scss/_elements.images.scss @@ -0,0 +1,13 @@ +/* + Elements: forms + --- + Default markup for images +*/ + +// Fix a > img problem + +img { + max-width: 100%; + vertical-align: top; + border: 0; +} diff --git a/scss/_elements.page.scss b/scss/_elements.page.scss new file mode 100644 index 0000000..c967cde --- /dev/null +++ b/scss/_elements.page.scss @@ -0,0 +1,37 @@ +/* + Elements: forms + --- + Default markup for page level elements +*/ + +html { + font: $alpha-font-weight $alpha-font-size/16*100%/#{$alpha-line-height} $alpha-font-family ; + -webkit-overflow-scrolling: touch; + background-color: white; + @include mq($bp5) { + font-size: $alpha-font-size/16*112.5%; + } + + // @include mq($bp4) { + // font-size: $alpha-font-size/16*105.5%; + // } +} + +body { + -webkit-font-smoothing: antialiased; + text-rendering: optimizelegibility; + color: $alpha-text-color; + background-color: white; +} + +::-moz-selection { + background-color: $brand-primary-color; + color: $brand-secondary-color; + text-shadow: none; +} + +::selection { + background-color: $brand-primary-color; + color: $brand-secondary-color; + text-shadow: none; +} diff --git a/scss/_elements.tables.scss b/scss/_elements.tables.scss new file mode 100644 index 0000000..2035e08 --- /dev/null +++ b/scss/_elements.tables.scss @@ -0,0 +1,56 @@ +/* + Elements: tables + --- + Default markup for tables +*/ + +table { + text-align: left; + width: 100%; + font-family: $alpha-font-family; + border-spacing: 0; + border-collapse: collapse; + @include text-dimensions(14,1,2); +} + +tr { + border-bottom: 1px solid lighten($gamma-ui-color, 5); +} + +th, thead { + display: none; +} + +td { + display: block; + padding: .25em 1em .25em 0; + + &:before { + content: attr(headers)": "; + font-weight: bold; + + // options + width: 50%; // faux th width + display: inline-block; + // end options + } +} + +@include mq($bp2) { + thead { + display: table-header-group; + } + + th { + display: table-cell; + padding: .25em 1em .25em 0; + } + + td { + display: table-cell; + + &:before { + display: none; + } + } +} diff --git a/scss/_elements.typography.scss b/scss/_elements.typography.scss new file mode 100644 index 0000000..08433e6 --- /dev/null +++ b/scss/_elements.typography.scss @@ -0,0 +1,156 @@ +/* + Elements: forms + --- + Default markup for typographic elements +*/ + +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: $alpha-font-family; + font-weight: $alpha-font-weight; + text-rendering: optimizelegibility; + color: $brand-primary-color; + + // Only add margin top when 2 elements follow each other + // (http://alistapart.com/article/axiomatic-css-and-lobotomized-owls) + * + & { + @include margin-top($alpha-line-height); + } +} + +h1 { + @include text-dimensions(55,3); + line-height: 1.148; + font-weight: 900; + text-transform: uppercase; + max-width: 70%; + @include margin-tb(0,3); + + @include mq($bp3) { + @include text-dimensions(70,3); + max-width: 56%; + } +} + +h2 { + @include text-dimensions($ms3,1.5); + line-height: 1.148; + font-weight: 900; + text-transform: uppercase; +} + +h3 { + @include text-dimensions(30,1.2); + @include margin-bottom(1); + font-weight: 900; + color: $brand-primary-color; +} + +h4 { + @include text-dimensions(24,1.2); + font-weight: 900; + color: $brand-main-text-color; +} + +h5 { + @include text-dimensions(35,1.5); + color: $brand-primary-color; +} +h6 { + @include text-dimensions($ms1,1); + font-weight: $beta-font-weight; + color: $brand-main-text-color; +} + +p, +ol, +ul, +dl, +table, +address { + @include text-dimensions($alpha-font-size,1.25); +} + +pre { + tab-size: 2; +} + +ul, +blockquote { + padding-left: 2em; + @include margin-bottom(2); +} + +ol, +li { + + @include margin-top(1); + // Only add margin top when 2 elements follow each other + // (http://alistapart.com/article/axiomatic-css-and-lobotomized-owls) + * + & { + @include padding-bottom(0); + } + + nav & { + @include margin-top(0); + } + +} + +blockquote { + font-style: italic; +} + +caption { + font-family: $alpha-font-family; + text-align: left; + border-bottom: 1px solid lighten($alpha-text-color,50); + font-weight: $beta-font-weight; + text-align: center; + @include padding-bottom(.5); + @include margin-bottom(.5); +} + +small { + @include text-dimensions($ms-1,1,$alpha-line-height); +} + +strong { + font-weight: 700; +} + +hr { + border: 1px solid $brand-primary-color; + border-width: 1px 0 0; + clear: both; + margin-top: 0; + @include margin-tb(1,1); +} + +// Links + +a { + text-decoration: none; + color: darken($brand-primary-color,5); + transition: color .22s ease-in-out; + + &:hover { + // text-decoration: underline; + color: $alpha-link-colorhover; + } + + &:focus { + outline: thin dotted; + color: $alpha-link-colorfocus; + } + + &:hover, + &:active { + outline: 0; + } + +} diff --git a/scss/_generic.box-sizing.scss b/scss/_generic.box-sizing.scss new file mode 100644 index 0000000..49a703c --- /dev/null +++ b/scss/_generic.box-sizing.scss @@ -0,0 +1,26 @@ +/* + Generic: box sizing + --- + Taken from [Inuit CSS](https://github.com/inuitcss/generic.box-sizing) + --- + Set the global `box-sizing` state to `border-box`. + css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice + paulirish.com/2012/box-sizing-border-box-ftw +*/ + +html { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +* { + &, + &:before, + &:after { + -webkit-box-sizing: inherit; + -moz-box-sizing: inherit; + box-sizing: inherit; + } +} + diff --git a/scss/_generic.normalize.scss b/scss/_generic.normalize.scss new file mode 100644 index 0000000..9cd00d7 --- /dev/null +++ b/scss/_generic.normalize.scss @@ -0,0 +1,431 @@ +/* + Generic: normalize + --- + License: normalize.css v3.0.2 | 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, +menu, +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-color: 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; +} diff --git a/scss/_generic.reset.scss b/scss/_generic.reset.scss new file mode 100644 index 0000000..cca1093 --- /dev/null +++ b/scss/_generic.reset.scss @@ -0,0 +1,19 @@ +/* + Generic: reset + --- + Reset all HTML elements +*/ + +html, body, body div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp, small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, figure, footer, header, hgroup, menu, nav, section, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + outline: 0; + font-size: 100%; + vertical-align: baseline; + background: transparent; +} + +article, aside, figure, footer, header, hgroup, nav, section, main { + display: block; +} diff --git a/scss/_objects.grid.scss b/scss/_objects.grid.scss new file mode 100644 index 0000000..15c9f57 --- /dev/null +++ b/scss/_objects.grid.scss @@ -0,0 +1,33 @@ +/* + Object: grid + --- + Grid system objects, works together with utility width classes +*/ + +.o-container { + margin: 0 auto; + max-width: $bp5; +} + +// No gutters + +.o-grid { + @include clearfix; +} + +// Default gutter + +.o-grid--gutter { + @include px-margin-lr(-($columns-gutter),-($columns-gutter)); +} + + // Grid item, takes the full width by default + + .o-grid__item { + float: left; + width: 100%; + + .o-grid--gutter > & { + @include px-padding-lr($columns-gutter,$columns-gutter); + } + } diff --git a/scss/_objects.inline-list.scss b/scss/_objects.inline-list.scss new file mode 100644 index 0000000..631f5ae --- /dev/null +++ b/scss/_objects.inline-list.scss @@ -0,0 +1,14 @@ +/* + Object: Inline list + --- + Inline list with no bullets +*/ + +.o-list-inline { + list-style: none; + padding-left: 0; +} + + .o-list-inline__item { + display: inline-block; + } diff --git a/scss/_objects.media-embed.scss b/scss/_objects.media-embed.scss new file mode 100644 index 0000000..cb771c5 --- /dev/null +++ b/scss/_objects.media-embed.scss @@ -0,0 +1,22 @@ +/* + Object: Media embed + --- + Responsive media embedding object, for use with iframes +*/ + +.o-media-embed { + width: 100%; + height: 0; + padding-bottom: 62.5%; + position: relative; + overflow: hidden; + @include margin-bottom(1.5); + + & > iframe { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + } +} diff --git a/scss/_objects.media.scss b/scss/_objects.media.scss new file mode 100644 index 0000000..1ba4116 --- /dev/null +++ b/scss/_objects.media.scss @@ -0,0 +1,41 @@ +/* + Object: media + --- + http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code/ + --- + The media object is an image to the left, with descriptive content to the right. + Use a grid class to determine the size of the image. The content will take the remaining space. + --- + Example usage: +
+
+ placekitten +
+
+ The media object is an image to the left, with descriptive content to the right. +
+
+*/ + +.o-media { + @include clearfix; +} + + .o-media__img { + float: left; + @include px-padding-lr(0,1); + @include margin-bottom(1); + + img { + display: block; + } + } + + .o-media__img--reverse { + float: right; + @include px-padding-lr(1,0); + } + + .o-media__body { + overflow: hidden; + } diff --git a/scss/_settings.breakpoints.scss b/scss/_settings.breakpoints.scss new file mode 100644 index 0000000..aca9f7e --- /dev/null +++ b/scss/_settings.breakpoints.scss @@ -0,0 +1,21 @@ +// +// Settings: breakpoints +// --- +// Set your breakpoints +// + +$bp1: 320/16*1em; +$bp2: 480/16*1em; +$bp3: 680/16*1em; +$bp4: 960/16*1em; +$bp5: 1140/16*1em; +$bp6: 1380/16*1em; + +$breakpoints: ( + "palm" "screen and (max-width: 44.9375em)", + "lap" "screen and (min-width: 45em) and (max-width: 63.9375em)", + "lap-and-up" "screen and (min-width: 45em)", + "portable" "screen and (max-width: 63.9375em)", + "desk" "screen and (min-width: 64em)", + "retina" "(-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi), (min-resolution: 2dppx)" +) !default; diff --git a/scss/_settings.colors.scss b/scss/_settings.colors.scss new file mode 100644 index 0000000..548ae23 --- /dev/null +++ b/scss/_settings.colors.scss @@ -0,0 +1,117 @@ +// +// Settings: colors +// --- +// Set your colors +// +// Defaults by https://github.com/mrmrs/colors +// - Cool +// - Warm +// - Gray Scale +// - Semantic +// + +// Chopstick theme colors + +// THEME #1 + +$brand-primary-color : #DA2327; +$brand-secondary-color : #FEF5CC; +$brand-secondary-color--light: #FFFBE9; +$brand-main-text-color : #182223; +$brand-accent-color : #2B0709; + + +// THEME #2 + +// $brand-primary-color : #5A5E50; +// $brand-secondary-color : #CBFFE4; +// $brand-main-text-color : #182223; + + +// THEME #3 + +// $brand-primary-color : #DA2327; +// $brand-secondary-color : #182223; +// $brand-main-text-color : #182223; + +// ___________________________________ + +// Cool + +$aqua : #7FDBFF; +$blue : #0074D9; +$navy : #001F3F; +$teal : #39CCCC; +$green : #2ECC40; +$olive : #3D9970; +$lime : #01FF70; + +// Warm + +$yellow : #FFDC00; +$orange : #FF851B; +$red : #FF4136; +$fuchsia : #F012BE; +$purple : #B10DC9; +$maroon : #85144B; + +// Gray Scale + +$white : #fff; +$silver : #ddd; +$gray : #aaa; +$black : #111; + +// Semantic classes + +$alpha-neutral : $white; +$beta-neutral : $black; + +$alpha-text-color : $brand-main-text-color; +$alpha-text-color-light : mix($alpha-text-color, $alpha-neutral, 50%); +$alpha-text-color-dark : mix($alpha-text-color, $beta-neutral, 50%); + +$beta-text-color : $brand-main-text-color; +$beta-text-color-light : $brand-main-text-color; +$beta-text-color-dark : mix($beta-text-color, $beta-neutral, 50%); + +// Primary elements +$alpha-ui-color : $blue; +$alpha-ui-color-light : mix($alpha-ui-color, $alpha-neutral, 50%); +$alpha-ui-color-dark : mix($alpha-ui-color, $beta-neutral, 50%); + +// Secondary elements +$beta-ui-color : $gray; +$beta-ui-color-light : mix($beta-ui-color, $alpha-neutral, 50%); +$beta-ui-color-dark : mix($beta-ui-color, $beta-neutral, 50%); + +// Used for borders +$gamma-ui-color : $silver; +$gamma-ui-color-light : mix($gamma-ui-color, $alpha-neutral, 50%); +$gamma-ui-color-dark : mix($gamma-ui-color, $beta-neutral, 50%); + +// Used for backgrounds +$delta-ui-color : $white; +$delta-ui-color-light : mix($delta-ui-color, $alpha-neutral, 50%); +$delta-ui-color-dark : mix($delta-ui-color, $beta-neutral, 50%); + +$error-color : $red; +$success-color : $green; +$notice-color : $yellow; + +// Greyscale of alpha-ui-color + +$grey-00 : hsl(hue($alpha-ui-color),10,45); +$grey-01 : hsl(hue($alpha-ui-color),10,55); +$grey-02 : hsl(hue($alpha-ui-color),15,65); +$grey-03 : hsl(hue($alpha-ui-color),15,75); +$grey-04 : hsl(hue($alpha-ui-color),15,85); +$grey-05 : hsl(hue($alpha-ui-color),25,95); + +// Links + +$alpha-link-color : $brand-primary-color; +$alpha-link-colorhover : darken($alpha-link-color, 10); +$alpha-link-colorfocus : darken($alpha-link-color, 10); +$alpha-link-coloractive : lighten($alpha-link-color, 10); +$alpha-link-colorvisited : lighten($alpha-link-color, 5); diff --git a/scss/_settings.global.scss b/scss/_settings.global.scss new file mode 100644 index 0000000..d28169c --- /dev/null +++ b/scss/_settings.global.scss @@ -0,0 +1,8 @@ +// +// Settings: global +// --- +// Turn global settings on/off +// + + +$debug-mode: false; // toggles the debug mode diff --git a/scss/_settings.grid.scss b/scss/_settings.grid.scss new file mode 100644 index 0000000..5f8bad9 --- /dev/null +++ b/scss/_settings.grid.scss @@ -0,0 +1,15 @@ +// +// Settings: Grid system +// --- +// Set your amount of columns and gutter width +// + +$columns-gutter: 1 !default; // This number is based on the baseline + +$columns: ( + 2, + 3, + 4, + 5, + 6 +) !default; diff --git a/scss/_settings.ms.scss b/scss/_settings.ms.scss new file mode 100644 index 0000000..c947314 --- /dev/null +++ b/scss/_settings.ms.scss @@ -0,0 +1,30 @@ +// +// Settings: Modular scale +// --- +// Set your modular scale setting and define a fixed modular scale +// + +$ratio : 1.414; +$importantnumber : 44; +$leading : 1; +$base-size : $alpha-font-size/16*1em; + +// manual modular scale font sizes +// based on http://modularscale.com/scale/?px1=16&px2=18&ra1=1.333&ra2=0 + +$ms-3 : 11; +$ms-2 : 12; +$ms-1 : 14; +$ms1 : 18; +$ms2 : 27; +$ms3 : 41; +$ms4 : 61; +$ms5 : 91; +$ms6 : 137; +// $ms7 : 42; +// $ms8 : 50; +// $ms10 : 56; +// $ms11 : 67; +// $ms12 : 75; +// $ms13 : 89; +// $ms14 : 100; diff --git a/scss/_settings.typography.scss b/scss/_settings.typography.scss new file mode 100644 index 0000000..f7f641d --- /dev/null +++ b/scss/_settings.typography.scss @@ -0,0 +1,19 @@ +// +// Settings: Typography +// --- +// Set your baseline, font family, font size, etc. +// + +$show-baseline-grid : false; // toggle the visibility of the baseline (true/false) +$baseline-holder : c-holder; // set the classname of the element which will show the baseline +$grid-color : rgba(#000,.1); // set the baseline grid color and opacity + +$alpha-font-family : "Source Sans Pro", sans-serif; +$alpha-font-size : 18; // pixel-value +$alpha-font-weight : 400; +$alpha-line-height : 1.5; +$alpha-baseline-grid : 7; // pixel-value +$alpha-leading : 1.666; // multiplier + +$beta-font-family : "Source Code Pro", sans-serif; +$beta-font-weight : 900; diff --git a/scss/_settings.ui.scss b/scss/_settings.ui.scss new file mode 100644 index 0000000..330d55e --- /dev/null +++ b/scss/_settings.ui.scss @@ -0,0 +1,13 @@ +// +// Settings: UI +// --- +// Set your basic UI preferences like border-radius, border-width, etc. +// + +$radius : 5px; +$border-width : 1px; +$border-style : solid; +$depth : 0%; // Range: 0-100% +$contrast : 91%; // Range: 0-100% +$shadow : 21%; // Range: 0-100% +$highlight : 0%; // Range: 0-100% diff --git a/scss/_tools.buttons.scss b/scss/_tools.buttons.scss new file mode 100644 index 0000000..d7d4283 --- /dev/null +++ b/scss/_tools.buttons.scss @@ -0,0 +1,60 @@ +// +// Tools: Buttons +// --- +// Button specific mixins +// + +// Button display + +@mixin button-inlineblock { + display: inline-block; + width: auto; +} + +@mixin button-float($float:left) { + display: block; + float: $float; +} + +// Button color +// use: @mixin button-color(color1[,color2]); + +@mixin button-color($c1: $alpha-ui-color, $c2: lighten($c1, $depth)) { + + border: $border-width $border-style $c1; + + background-color: $c1; + @if $depth > 0 { + background-image: linear-gradient($c1, $c2); + } + + @if $highlight { + box-shadow: inset 0 1px 0 rgba(#FFF, $highlight/100%); + } + + @include text-color($c1); + + &:hover, + &:focus { + border: $border-width $border-style lighten($c1, 100-$contrast); + background-color: lighten($c1, 100-$contrast); + @if $depth > 0 { + background-image: linear-gradient(lighten($c1, 100-$contrast), lighten($c2, 100-$contrast)); + } + @include text-color(lighten($c1, 100-$contrast)); + } + + &:active { + background-color: lighten($c1, 100-$contrast); + @if $depth > 0 { + background-image: linear-gradient(lighten($c2, 100-$contrast), lighten($c1, 100-$contrast)); + } + + box-shadow: none; + @include text-color(lighten($c1, 100-$contrast)); + } + + &:visited { + @include text-color($c1); + } +} diff --git a/scss/_tools.functions.scss b/scss/_tools.functions.scss new file mode 100644 index 0000000..3ae8718 --- /dev/null +++ b/scss/_tools.functions.scss @@ -0,0 +1,47 @@ +// +// Tools: Functions +// --- +// Global functions +// + +// Em calculator: convert pixel values to ems +// eg. for a relational value of 12px write em(12) when the parent is the $alpha-font-size +// if the parent is another value say 24px write em(12, 24) + +@function em($pxval, $base: $alpha-font-size) { + @return ($pxval / $base) * 1em; +} + +// Strip units +@function su($value) { + @return $value / ($value * 0 + 1); +} + +// Modular scale +// use ms($value, $increment, $ratio) +// Example: +// div { +// // Increment Up GR with positive value +// font-size: ms(14px, 1, 1.618); // returns: 22.652px +// +// // Increment Down GR with negative value +// font-size: ms(14px, -1, 1.618); // returns: 8.653px +// } +// + +@function ms($increment, $value: $alpha-font-size, $ratio: $ratio) { + @if $increment > 0 { + @for $i from 1 through $increment { + $value: ($value * $ratio); + } + } + + @if $increment < 0 { + $increment: abs($increment); + @for $i from 1 through $increment { + $value: ($value / $ratio); + } + } + + @return $value; +} diff --git a/scss/_tools.grid.scss b/scss/_tools.grid.scss new file mode 100644 index 0000000..7c5c1b6 --- /dev/null +++ b/scss/_tools.grid.scss @@ -0,0 +1,51 @@ +// +// Tools: Grid +// --- +// Mixins to build a grid system +// + +// A mixin to spit out our width classes. Pass in the columns we want the widths +// to have, and an optional suffix for responsive widths. E.g. to create thirds +// and quarters for a small breakpoint: + +// @include widths(3 4, -$bp); + +@mixin widths($columns, $breakpoint: null) { + + // Loop through the number of columns for each denominator of our fractions. + @each $denominator in $columns { + + // Begin creating a numberator for our fraction up until we hit the + // denominator. + @for $numerator from 1 through $denominator { + + // Build a class in the format `.u-3/4` + .u-#{$numerator}-of-#{$denominator}#{$breakpoint} { + width: ($numerator / $denominator) * 100% !important; + } + } + } +} + +// A mixin to spit out our push classes. Pass in the columns we want the push +// to have, and an optional suffix for responsive push. E.g. to create thirds +// and quarters for a small breakpoint: + +// @include push(3 4, -$bp); + +@mixin push($columns, $breakpoint: null) { + + // Loop through the number of columns for each denominator of our fractions. + @each $denominator in $columns { + + // Begin creating a numberator for our fraction up until we hit the + // denominator. + @for $numerator from 1 through $denominator { + + // Build a class in the format `.u-3/4` + .u-push-#{$numerator}-of-#{$denominator}#{$breakpoint} { + margin-left: ($numerator / $denominator) * 100% !important; + } + } + } +} diff --git a/scss/_tools.inputs.scss b/scss/_tools.inputs.scss new file mode 100644 index 0000000..a3f4fc5 --- /dev/null +++ b/scss/_tools.inputs.scss @@ -0,0 +1,40 @@ +// +// Tools: Inputs +// --- +// Input specific mixins +// + +@mixin baseline-dimensions-form($msi: 0, $pt: 0, $pb: 0, $l: $alpha-leading) { + + @include baseline-dimensions($msi, $pt, $pb, $l); + + @if $msi == 0 { + $line-height: ((ceil($alpha-font-size/$alpha-baseline-grid)*$alpha-baseline-grid)+($alpha-baseline-grid*$l))/$alpha-font-size; + $padding-top: $alpha-baseline-grid/$alpha-font-size*$pt*1em; + $padding-bottom: $alpha-baseline-grid/$alpha-font-size*$pb*1em; + height: $line-height + $padding-top + $padding-bottom; + } + + @if $msi != 0 { + $line-height: ((ceil(ms($msi)/$alpha-baseline-grid)*$alpha-baseline-grid)+($alpha-baseline-grid*$l))/(ms($msi)); + $padding-top: $alpha-baseline-grid*$pt/ms($msi)*1em; + $padding-bottom: $alpha-baseline-grid*$pb/ms($msi)*1em; + height: $line-height + $padding-top + $padding-bottom; + } + +} + +@mixin input-lg { + @include px-padding-lr(1,1); + @include input-dimensions($ms-1,1,0,1,1); +} + +@mixin input-md { + @include px-padding-lr(.75,.75); + @include input-dimensions($ms-1,1,0,.75,.75); +} + +@mixin input-sm { + @include px-padding-lr(.5,.5); + @include input-dimensions($ms-2,1,0,.5,.5); +} diff --git a/scss/_tools.mixins.scss b/scss/_tools.mixins.scss new file mode 100644 index 0000000..0265fa5 --- /dev/null +++ b/scss/_tools.mixins.scss @@ -0,0 +1,166 @@ +// +// Tools: Mixins +// --- +// Global mixins +// + +// Horizontal responsive navigation. +// @include list-nav on
    or
      ; +// @include horizontal-nav on
        or
          ; + +@mixin list-nav { + list-style: none; + margin: 0; + padding: 0; +} + +@mixin horizontal-nav { + li, a { + display: block; + float: left; + zoom: 1; + } +} + +// Calculate text-color based on background-color + +@mixin text-color($c1) { + // Calculations based on https://vimeo.com/60224584 + @if (.2126*red($c1) + .7152*green($c1) + .0722*blue($c1))/255 <= .5 { + color: mix(#FFF,$c1,95%); + } @else { + color: mix(#000,$c1,70%); + } +} + +// UI mixins. + +// Make a block with various properties +// @include block-skin; + +@mixin block-skin($bgcolor: $gamma-ui-color, $fgcolor: $alpha-text-color, $block-radius: $radius, $block-border-width: $border-width, $block-border-style: $border-style) { + + background-color: $bgcolor; + border-color: darken($bgcolor,100%-$contrast); + border-style: $border-style; + + @if (su($block-radius) > 0) { + border-radius: $block-radius; + } + + @if (su($block-border-width) > 0) { + border-width: $block-border-width; + } + + @include text-color($bgcolor); + +} + +// Cross browser background opacity. + +@mixin background-opacity($color, $alpha) { + $rgba: rgba($color, $alpha); + $ie-hex-str: ie-hex-str($rgba); + background-color: transparent; + background-color: $rgba; + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#{$ie-hex-str},endColorstr=#{$ie-hex-str}); + zoom: 1; +} + +// Border-box polyfill helper. +// @include border-box; + +@mixin border-box { + box-sizing: border-box; +} + +// Progressive svg backgrounds with png fallback. +// Requires modernizr class .svg. +// @include svg-bg("path/file", ".extension", $delta-ui-color, 0 50%, no-repeat); + +@mixin mdrn-svg { .svg & { @content } } + +@mixin svg-bg($name, $extension: png, $color: transparent, $position: 0 0, $repeat: no-repeat) { + background: url(../img/png/#{$name}.#{$extension}) $color $position $repeat; + background: none, url(../img/svg/#{$name}.svg) $color $position $repeat; +} + +// +// Media Query mixin (old version) +// @include mq(#point, #query1, #query2); +// +@mixin mq($point, $query1: min, $query2: width) { + @media (#{$query1}-#{$query2}: $point) { + @content; + } +} + +// +// Media Query mixin (new version) +// @include mq(#point); +// + +@mixin media-query($mq) { + // Loop through the list of breakpoints we’ve provided in our settings file. + @each $breakpoint in $breakpoints { + + // Grab the alias and the condition from their respective locations in + // the list. + $alias: nth($breakpoint, 1); + $condition: nth($breakpoint, 2); + + // If the media query we’ve specified has an alias and a condition... + @if ($mq == $alias and $condition) { + + // ...tell the mixin that we’ve found it... + $breakpoint-found: true; + + // ...and spit it out here. + @media #{$condition} { + @content; + } + } + } +} + +// Vertically center any object within its container. Works in IE9 and up. +// @include vertical-center; + +@mixin vertical-center { + position: relative; + top: 50%; + transform: translateY(-50%); +} + +// Clearfix. +// @mixin clearfix + +@mixin clearfix { + *zoom : 1; + + &:before, + &:after { + display: table; + content : ""; + } + + &:after { + clear : both; + } +} + +// Prevent Long URL’s From Breaking Out of Container. +// http://css-tricks.com/snippets/css/prevent-long-urls-from-breaking-out-of-container + +@mixin word-break { + word-break: break-all; + hyphens: auto; +} + +@mixin hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} diff --git a/scss/_tools.spacing.scss b/scss/_tools.spacing.scss new file mode 100644 index 0000000..172383c --- /dev/null +++ b/scss/_tools.spacing.scss @@ -0,0 +1,113 @@ +// +// Tools: Spacing +// --- +// Mixins to add padding and margin +// + +// Horizontal spacing + +// horizontal padding based on the alpha font size in rem +// use: @include em-padding-lr(#left, #right); + +@mixin em-padding-lr($left: 1, $right: $left) { + padding-left: $left * 1em; + padding-left: $left * 1rem; + padding-right: $right * 1em; + padding-right: $right * 1rem; +} + +// horizontal padding based on the alpha font size +// use: @include px-padding-lr(#left, #right); + +@mixin px-padding-lr($left: 1, $right: $left) { + padding-left: $left * $alpha-font-size * 1px; + padding-right: $right * $alpha-font-size * 1px; +} + +@mixin px-padding-left($left: 1) { + padding-left: $left * $alpha-font-size * 1px; +} + +@mixin px-padding-right($right: 1) { + padding-right: $right * $alpha-font-size * 1px; +} + +// horizontal margin based on the alpha font size in rem +// use: @include em-margin-lr(#left, #right); + +@mixin em-margin-lr($left: 1, $right: $left) { + margin-left: $left * 1em; + margin-left: $left * 1rem; + margin-right: $right * 1em; + margin-right: $right * 1rem; +} + +// horizontal margin based on the alpha font size +// use: @include px-margin-lr(#left, #right); + +@mixin px-margin-lr($left: 1, $right: $left) { + margin-left: $left * $alpha-font-size * 1px; + margin-right: $right * $alpha-font-size * 1px; +} + +@mixin px-margin-left($left: 1) { + margin-left: $left * $alpha-font-size * 1px; +} + +@mixin px-margin-right($right: 1) { + margin-right: $right * $alpha-font-size * 1px; +} + +// Vertical spacing + +// vertical padding based on the alpha font size in rem +// use: @include padding-tb(#top, #bottom); + +@mixin padding-tb($top: 1, $bottom: 0) { + padding-top: $top * $alpha-font-size * 1px; + padding-top: $top * 1rem; + padding-bottom: $bottom * $alpha-font-size * 1px; + padding-bottom: $bottom * 1rem; +} + +// vertical padding based on the alpha font size in rem +// use: @include padding-bottom(#bottom); + +@mixin padding-bottom($bottom: 1) { + padding-bottom: $bottom * $alpha-font-size * 1px; + padding-bottom: $bottom * 1rem; +} + +// vertical padding based on the alpha font size in rem +// use: @include padding-top(#top); + +@mixin padding-top($top: 1) { + padding-top: $top * $alpha-font-size * 1px; + padding-top: $top * 1rem; +} + +// vertical margin based on the alpha font size in rem +// use: @include margin-tb(#top, #bottom); + +@mixin margin-tb($top: 1, $bottom: 0) { + margin-top: $top * $alpha-font-size * 1px; + margin-top: $top * 1rem; + margin-bottom: $bottom * $alpha-font-size * 1px; + margin-bottom: $bottom * 1rem; +} + +// vertical margin based on the alpha font size in rem +// use: @include margin-bottom(#bottom); + +@mixin margin-bottom($bottom: 1) { + margin-bottom: $bottom * $alpha-font-size * 1px; + margin-bottom: $bottom * 1rem; +} + +// vertical margin based on the alpha font size in rem +// use: @include margin-top(#top); + +@mixin margin-top($top: 1) { + margin-top: $top * $alpha-font-size * 1px; + margin-top: $top * 1rem; +} diff --git a/scss/_tools.typography.scss b/scss/_tools.typography.scss new file mode 100644 index 0000000..d381def --- /dev/null +++ b/scss/_tools.typography.scss @@ -0,0 +1,116 @@ +// +// Tools: Typography +// --- +// Typographic mixins +// + +// baseline formula based on the $alpha-line-height variable +// use: @include text-dimensions(#font-size, #line-height, #margin-bottom, #padding-top) + +$baseline-unit: $alpha-font-size * $alpha-line-height; +$basefontpercent: $alpha-font-size/16 * 100; + +@mixin text-dimensions($fs: 16, $lh: 1, $mb: 0, $pt: 0, $pb: 0, $mt: 0){ + font-size: #{$fs}px; + font-size: #{$fs / $alpha-font-size}rem; + line-height: #{($baseline-unit / $fs) * $lh}em; + + @if $mb > 0 { + @include margin-bottom($mb); + } + + @if $mt > 0 { + @include margin-top($mt); + } + + @if $pt > 0 { + @include padding-top($pt); + } + + @if $pb > 0 { + @include padding-bottom($pb); + } + +} + +@mixin input-dimensions($fs: 1, $lh: 1, $mb: 0, $pt: 0, $pb: 0, $mt: 0){ + font-size: #{$fs}px; + font-size: $fs/$alpha-font-size*1rem; + + @if $mb > 0 { + @include margin-bottom($mb); + } + + @if $mt > 0 { + @include margin-top($mt); + } + + @if $pt > 0 { + @include padding-top($pt); + } + + @if $pb > 0 { + @include padding-bottom($pb); + } +} + +@mixin button-dimensions($fs: 1, $lh: 1, $mb: 0, $pt: 0, $pb: 0, $mt: 0){ + font-size: #{$fs}px; + font-size: $fs/$alpha-font-size*1rem; + height: #{($baseline-unit / $fs) * $lh}em; + // line-height: #{($baseline-unit / $fs) * $lh}em; + line-height: #{$baseline-unit * $lh - 2}px; + + @if $mb > 0 { + margin-bottom: $mb * $alpha-font-size * 1px; + margin-bottom: $mb * 1rem; + } + + @if $mt > 0 { + margin-top: $mt * $alpha-font-size * 1px; + margin-top: $mt * 1rem; + } + + @if $pt > 0 { + padding-top: $pt * $alpha-font-size * 1px; + padding-top: $pt * 1rem; + } + @if $pb > 0 { + padding-bottom: $pb * $alpha-font-size * 1px; + padding-bottom: $pb * 1rem; + } +} + + +// baseline formulas based on the $alpha-baseline-grid variable +// use: @include baseline-dimensions(#modular-scale-increment, #padding-top, #padding-bottom, #leading) + +@mixin baseline-dimensions($msi: 0, $pt: 0, $pb: 0, $l: $alpha-leading) { + + @if $msi == 0 { + font-size: 1em; + line-height: ((ceil($alpha-font-size/$alpha-baseline-grid)*$alpha-baseline-grid)+($alpha-baseline-grid*$l))/$alpha-font-size; + + @if $pt > 0 { + padding-top: $alpha-baseline-grid/$alpha-font-size*$pt*1em; + } + + @if $pb > 0 { + padding-bottom: $alpha-baseline-grid/$alpha-font-size*$pb*1em; + } + } + + @if $msi != 0 { + font-size: ms($msi)/$alpha-font-size*1em; + line-height: ((ceil(ms($msi)/$alpha-baseline-grid)*$alpha-baseline-grid)+($alpha-baseline-grid*$l))/(ms($msi)); + + @if $pt > 0 { + padding-top: $alpha-baseline-grid*$pt/ms($msi)*1em; + } + + @if $pb > 0 { + padding-bottom: $alpha-baseline-grid*$pb/ms($msi)*1em; + } + } + +} diff --git a/scss/_trumps.animation.scss b/scss/_trumps.animation.scss new file mode 100644 index 0000000..bea9afe --- /dev/null +++ b/scss/_trumps.animation.scss @@ -0,0 +1,48 @@ +.js-animation-footer { + -webkit-animation-duration: 0.9s; + animation-duration: 0.9s; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease; + animation-name: bounceInUp; +} + +@-webkit-keyframes bounceInUp { + 0% { + opacity: 0; + -webkit-transform: translateY(200px); + } + 20% { + opacity: 1; + -webkit-transform: translateY(0px); + } + 80% { + -webkit-transform: translateY(0px); + } + 100% { + -webkit-transform: translateY(0); + } +} + +@keyframes bounceInUp { + 0% { + opacity: 0; + transform: translateY(200px); + } + 30% { + opacity: 1; + //transform: translateY(0px); + } + 80% { + transform: translateY(0px); + } + 100% { + transform: translateY(0); + } +} + +.bounceInUp { + -webkit-animation-name: bounceInUp; + animation-name: bounceInUp; +} diff --git a/scss/_trumps.baseline-grid.scss b/scss/_trumps.baseline-grid.scss new file mode 100644 index 0000000..ca39463 --- /dev/null +++ b/scss/_trumps.baseline-grid.scss @@ -0,0 +1,16 @@ +/* + Trumps: Baseline grid + --- + This can be toggled in the _settings.scss file (default is false) + There are also options to set the color of the grid and the classname (default is '.holder') + (inspired by the baseline grid in OOCSS --> http://bit.ly/PF6NhY) +*/ + +@if $show-baseline-grid == true { + + .#{$baseline-holder} { + background-image: linear-gradient(transparent 50%, $grid-color 50%); // draw the baseline grid + background-size: em($alpha-baseline-grid) em($alpha-baseline-grid); // calculate the baselinegrid in em's + } + +} diff --git a/scss/_trumps.borders.scss b/scss/_trumps.borders.scss new file mode 100644 index 0000000..7cab28c --- /dev/null +++ b/scss/_trumps.borders.scss @@ -0,0 +1,38 @@ +/* + Trumps: Borders + --- + Borders that could be used to create dividers between elements. +*/ + +// Predefine the variables below in order to alter and enable specific features. + +// @TODO: define namespace variable + +$border-color: $gamma-ui-color !default; +$border-width: 1px !default; +$border-style: solid !default; + +.u-border { + border-top: $border-width $border-style $border-color; + border-left: $border-width $border-style $border-color; + border-right: $border-width $border-style $border-color; + border-bottom: $border-width $border-style $border-color; +} + +.u-border-lr { + border-left: $border-width $border-style $border-color; + border-right: $border-width $border-style $border-color; +} + +.u-border-top { + border-top: $border-width $border-style $border-color; +} + +.u-border-bottom { + border-bottom: $border-width $border-style $border-color; +} + +.u-border-tb { + border-top: $border-width $border-style $border-color; + border-bottom: $border-width $border-style $border-color; +} diff --git a/scss/_trumps.colors.scss b/scss/_trumps.colors.scss new file mode 100644 index 0000000..39ee058 --- /dev/null +++ b/scss/_trumps.colors.scss @@ -0,0 +1,45 @@ +/* + Trumps: Colors + --- + Background color utilities +*/ + +.u-bgcolor-alpha-neutral { background-color: $alpha-neutral} +.u-bgcolor-beta-neutral { background-color: $beta-neutral} + +.u-bgcolor-alpha-text { background-color: $alpha-text-color} +.u-bgcolor-alpha-text-light { background-color: $alpha-text-color-light} +.u-bgcolor-alpha-text-dark { background-color: $alpha-text-color-dark} + +.u-bgcolor-beta-text { background-color: $beta-text-color} +.u-bgcolor-beta-text-light { background-color: $beta-text-color-light} +.u-bgcolor-beta-text-dark { background-color: $beta-text-color-dark} + +.u-bgcolor-alpha-ui { background-color: $alpha-ui-color} +.u-bgcolor-alpha-ui-light { background-color: $alpha-ui-color-light} +.u-bgcolor-alpha-ui-dark { background-color: $alpha-ui-color-dark} + +.u-bgcolor-beta-ui { background-color: $beta-ui-color} +.u-bgcolor-beta-ui-light { background-color: $beta-ui-color-light} +.u-bgcolor-beta-ui-dark { background-color: $beta-ui-color-dark} + +.u-bgcolor-gamma-ui { background-color: $gamma-ui-color} +.u-bgcolor-gamma-ui-light { background-color: $gamma-ui-color-light} +.u-bgcolor-gamma-ui-dark { background-color: $gamma-ui-color-dark} + +.u-bgcolor-delta-ui { background-color: $delta-ui-color} +.u-bgcolor-delta-ui-light { background-color: $delta-ui-color-light} +.u-bgcolor-delta-ui-dark { background-color: $delta-ui-color-dark} + +.u-bgcolor-alpha-link { background-color: $alpha-link-color} +.u-bgcolor-alpha-link-hover { background-color: $alpha-link-colorhover} +.u-bgcolor-alpha-link-focus { background-color: $alpha-link-colorfocus} +.u-bgcolor-alpha-link-active { background-color: $alpha-link-coloractive} +.u-bgcolor-alpha-link-visited { background-color: $alpha-link-colorvisited} + +.u-bgcolor-grey-00 { background-color: $grey-00 } +.u-bgcolor-grey-01 { background-color: $grey-01 } +.u-bgcolor-grey-02 { background-color: $grey-02 } +.u-bgcolor-grey-03 { background-color: $grey-03 } +.u-bgcolor-grey-04 { background-color: $grey-04 } +.u-bgcolor-grey-05 { background-color: $grey-05 } diff --git a/scss/_trumps.debug.scss b/scss/_trumps.debug.scss new file mode 100644 index 0000000..cae58e8 --- /dev/null +++ b/scss/_trumps.debug.scss @@ -0,0 +1,170 @@ +/* + Trumps: Debug + --- + _debug.css is used from Inuit.css Framework + https://github.com/csswizardry/inuit.css +*/ + +@if $debug-mode == true{ + /*------------------------------------*\ + $DEBUG + \*------------------------------------*/ + /** + * Enable this stylesheet to visually detect any improperly nested or + * potentially invalid markup, or any potentially inaccessible code. + * + * Red == definite error + * Yellow == double-check + * None == should be fine + * + * Please note that this method of checking markup quality should not be relied + * upon entirely. Validate your markup! + */ + + + /** + * Are there any empty elements in your page? + */ + :empty { + outline: 5px solid yellow; + } + + + /** + * Images require `alt` attributes, empty `alt`s are fine but should be + * double-checked, no `alt` is bad and is flagged red. + */ + img { + outline: 5px solid red; + } + img[alt] { + outline: none; + } + img[alt=""] { + outline: 5px solid yellow; + } + + + /** + * Links sometimes, though not always, benefit from `title` attributes. Links + * without are never invalid but it’s a good idea to check. + */ + a { + outline: 5px solid yellow; + } + a[title] { + outline: none; + } + + + /** + * Double-check any links whose `href` is something questionable. + */ + a[href="#"], + a[href*="javascript"] { + outline: 5px solid yellow; + } + + + /** + * The `target` attribute ain’t too nice... + */ + a[target] { + outline: 5px solid yellow; + } + + + /** + * Ensure any lists only contain `li`s as children. + */ + ul, + ol { + > *:not(li) { + outline: 5px solid red; + } + } + + + /** + * It’s always nice to give `th`s `scope` attributes. + */ + th { + outline: 5px solid yellow; + } + th[scope] { + outline: none; + } + + + /** + * `tr`s as children of `table`s ain’t great, did you need a `thead`/`tbody`? + */ + table > tr { + outline: 5px solid yellow; + } + + + /** + * `tfoot` needs to come *before* `tbody`. + */ + tbody + tfoot { + outline: 5px solid yellow; + } + + + /** + * Forms require `action` attributes + */ + form { + outline: 5px solid red; + } + form[action] { + outline: none; + } + + + /** + * Various form-field types have required attributes. `input`s need `type` + * attributes, `textarea`s need `rows` and `cols` attributes and submit buttons + * need a `value` attribute. + */ + textarea, + input { + outline: 5px solid red; + } + input[type] { + outline: none; + } + textarea[rows][cols] { + outline: none; + } + input[type=submit] { + outline: 5px solid red; + } + input[type=submit][value] { + outline: none; + } + + + /** + * Avoid inline styles where possible. + */ + [style] { + outline: 5px solid yellow; + } + + + /** + * You should avoid using IDs for CSS, is this doing any styling? + */ + [id] { + outline: 5px solid yellow; + } + + + /** + * Todo: Are you using the grid system correctly? + */ + + +}/* endif */ diff --git a/scss/_trumps.print.scss b/scss/_trumps.print.scss new file mode 100644 index 0000000..29ebf75 --- /dev/null +++ b/scss/_trumps.print.scss @@ -0,0 +1,65 @@ +/* + Trumps: Print + --- + Print stylesheet +*/ + +@media print { + * { + background: transparent !important; + color: black !important; + box-shadow: none !important; + text-shadow: none !important; + filter: none !important; + } + + @page { + margin: 0.5cm; + } + + h2, h3 { + orphans: 3; + widows: 3; + page-break-after: avoid; + } + + p { + orphans: 3; + widows: 3; + } + + pre, blockquote { + border: 1px solid #ccc; + page-break-inside: avoid; + } + + abbr[title]:after { + content: " (" attr(title) ")"; + } + + a, a:visited { + text-decoration: underline; + } + + a[href]:after { + content: " (" attr(href) ")"; + } + + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + + img { + max-width: 100% !important; + page-break-inside: avoid; + } + + thead { + display: table-header-group; + } + + tr { + page-break-inside: avoid; + } +} diff --git a/scss/_trumps.push.scss b/scss/_trumps.push.scss new file mode 100644 index 0000000..de8e815 --- /dev/null +++ b/scss/_trumps.push.scss @@ -0,0 +1,57 @@ +/* + Trumps: Push + --- + Push elements +*/ + +// Loop through each of our column sizes and generate its push classes. +// eg. u-push-1-of-2 + +@each $column in $columns { + @include push($column); +} + +// -bp1 breakpoint +// eg. u-push-1-of-2-bp1 + +@include mq($bp1) { + @each $column in $columns { + @include push($column, -bp1); + } +} + +// -bp2 breakpoint +// eg. u-push-1-of-2-bp2 + +@include mq($bp2) { + @each $column in $columns { + @include push($column, -bp2); + } +} + +// -bp3 breakpoint +// eg. u-push-1-of-2-bp3 + +@include mq($bp3) { + @each $column in $columns { + @include push($column, -bp3); + } +} + +// -bp4 breakpoint +// eg. u-push-1-of-2-bp4 + +@include mq($bp4) { + @each $column in $columns { + @include push($column, -bp4); + } +} + +// -bp5 breakpoint +// eg. u-push-1-of-2-bp5 + +@include mq($bp5) { + @each $column in $columns { + @include push($column, -bp5); + } +} diff --git a/scss/_trumps.shame.scss b/scss/_trumps.shame.scss new file mode 100644 index 0000000..c5d93dc --- /dev/null +++ b/scss/_trumps.shame.scss @@ -0,0 +1,113 @@ +/* + Trumps: Shame + --- + Hacks +*/ + +// Google maps images fix https://coderwall.com/p/nl1lba/img-max-width-100-breaks-google-maps +.gmap img { + max-width: none !important; +} + +.pink { + background-color: pink; +} + +.u-s-50 { + height: 50px; +} + +.u-size-percent-30 { + width: 30%; +} + +.u-no-list-indicator { + list-style-type: none; +} + +.u-center { + text-align: center; + margin: 0 auto; + display: block; +} + +.u-align--right { + text-align: right; +} + +.u-float--right { + float: right; +} + +.u-margin-reset { + margin: 0; +} + +.u-padding-reset { + padding: 0; +} + +.u-offset--25p { + margin-left: 25%; +} + +.u-offset--30p { + margin-left: 30%; +} + +.u-offset--40p { + margin-left: 40%; +} + +.u-offset--60p { + margin-left: 60%; +} + +// utility classes for spacing +.u-mt--1 { + @include margin-top(1); +} + +.u-mt--2 { + @include margin-top(2); +} + +.u-mb--1 { + @include margin-bottom(1); +} + +.u-mb--2 { + @include margin-bottom(2); +} + +.u-mb--3 { + @include margin-bottom(3); +} + +.u-mtb--2-2 { + @include padding-tb(4,6); +} + +.u-mtb--4-6 { + @include padding-tb(4,6); +} + +.u-mtb--5-5 { + @include padding-tb(5,5); +} + +.u-mtb--5-6 { + @include padding-tb(5,6); +} + +.u-pb--2 { + @include padding-bottom(2); +} + +.u-ptb--7-9 { + @include padding-tb(7,9); +} + +.u-pt--7 { + @include padding-top(7); +} diff --git a/scss/_trumps.states.scss b/scss/_trumps.states.scss new file mode 100644 index 0000000..39a17d2 --- /dev/null +++ b/scss/_trumps.states.scss @@ -0,0 +1,9 @@ +/* + States + --- + Component states +*/ + +.is-hidden { + display: none !important; +} diff --git a/scss/_trumps.widths.scss b/scss/_trumps.widths.scss new file mode 100644 index 0000000..1d74ad2 --- /dev/null +++ b/scss/_trumps.widths.scss @@ -0,0 +1,57 @@ +/* + Trumps: Widths + --- + Width utility classes +*/ + +// Loop through each of our column sizes and generate its width classes. +// eg. u-1-of-2 + +@each $column in $columns { + @include widths($column); +} + +// -bp1 breakpoint +// eg. u-1-of-2-bp1 + +@include mq($bp1) { + @each $column in $columns { + @include widths($column, -bp1); + } +} + +// -bp2 breakpoint +// eg. u-1-of-2-bp2 + +@include mq($bp2) { + @each $column in $columns { + @include widths($column, -bp2); + } +} + +// -bp3 breakpoint +// eg. u-1-of-2-bp3 + +@include mq($bp3) { + @each $column in $columns { + @include widths($column, -bp3); + } +} + +// -bp4 breakpoint +// eg. u-1-of-2-bp4 + +@include mq($bp4) { + @each $column in $columns { + @include widths($column, -bp4); + } +} + +// -bp5 breakpoint +// eg. u-1-of-2-bp5 + +@include mq($bp5) { + @each $column in $columns { + @include widths($column, -bp5); + } +} diff --git a/scss/screen.scss b/scss/screen.scss new file mode 100644 index 0000000..4b00cc8 --- /dev/null +++ b/scss/screen.scss @@ -0,0 +1,140 @@ +/* + * Chopstick index + * --- + * Chopstick is a framework based on the [ITCSS](http://itcss.io/) + * architecture and a series of principles. It creates a structure + * to easily set-up and build bespoke web projects. + * --- + * The settings and tools layer don't compile any code. + * Therefore they get the number 0 and are put in single line comments. + * --- + * + * 0. Settings + * - settings.global + * - settings.breakpoints + * - settings.grid + * - settings.colors + * - settings.typography + * - settings.ms + * - settings.ui + * + * 0. Tools + * - tools.functions + * - tools.mixins + * - tools.grid + * - tools.spacing + * - tools.typography + * - tools.buttons + * - tools.inputs + * + * 1. Generic + * - generic.normalize + * - generic.reset + * - generic.box-sizing + * + * 2. Elements + * - elements.page + * - elements.typography + * - elements.images + * - elements.forms + * - elements.tables + * + * 3. Objects + * - objects.grid + * - objects.media + * - objects.media-embed + * + * 4. Components + * - components.navigation + * - components.brand + * - components.forms + * - components.holder + * - components.icons + * - components.alerts + * - components.buttons + * - components.pagination + * - components.styleguide + * - components.styleguide-syntax + * + * 5. Trumps + * - trumps.widths + * - trumps.push + * - trumps.colors + * - trumps.borders + * - trumps.states + * - trumps.shame + * - trumps.debug + * - trumps.baseline-grid + * - trumps.print + */ + + // 0. Settings + @import "settings.global"; + @import "settings.breakpoints"; + @import "settings.grid"; + @import "settings.colors"; + @import "settings.typography"; + @import "settings.ms"; + @import "settings.ui"; + + // 0. Tools + @import "tools.functions"; + @import "tools.mixins"; + @import "tools.grid"; + @import "tools.spacing"; + @import "tools.typography"; + @import "tools.buttons"; + @import "tools.inputs"; + + /* 1. Generic */ + @import "generic.normalize"; + @import "generic.reset"; + @import "generic.box-sizing"; + + /* 2. Elements */ + @import "elements.page"; + @import "elements.typography"; + @import "elements.images"; + @import "elements.forms"; + @import "elements.tables"; + + /* 3. Objects */ + @import "objects.grid"; + @import "objects.media"; + @import "objects.media-embed"; + @import "objects.inline-list"; + + /* 4. Components */ + @import "components.navigation"; + @import "components.brand"; + @import "components.forms"; + @import "components.holder"; + @import "components.icons"; + // @import "components.alerts"; + @import "components.buttons"; + // @import "components.pagination"; + // @import "components.styleguide"; + // @import "components.styleguide-syntax"; + @import "components.section-header"; + + @import "components.taglines"; + // @import "components.tiles"; + @import "components.features"; + @import "components.highlights"; + @import "components.code"; + @import "components.animatedfly"; + @import "components.links"; + @import "components.installation"; + @import "components.footer-links"; + + /* 5. Trumps */ + @import "trumps.widths"; + @import "trumps.push"; + @import "trumps.colors"; + @import "trumps.borders"; + @import "trumps.states"; + @import "trumps.shame"; + @import "trumps.debug"; + @import "trumps.baseline-grid"; + @import "trumps.print"; + @import "trumps.animation"; diff --git a/styleguide.html b/styleguide.html new file mode 100644 index 0000000..e121e77 --- /dev/null +++ b/styleguide.html @@ -0,0 +1,16 @@ +--- +layout: default +title: Patterns +section: styleguide +--- +
          +
          +
          +
          +
          + {% include elements.base.html %} +
          +
          +
          +
          +
          diff --git a/styletile.html b/styletile.html new file mode 100644 index 0000000..d5097bd --- /dev/null +++ b/styletile.html @@ -0,0 +1,121 @@ +--- +layout: styleguide +title: Patterns +section: styletile +--- +{% include components.header.html %} + +{% include components.header1.html %} + +
          +
          +
          +
          +
          +

          #DA2327

          +
          +
          +
          +

          #FEF5CC

          +
          +
          +
          +

          #182223

          +
          +
          +
          +
          + +
          +
          +
          +
          +

          Getting started is easy

          +

          And, it doesn’t take alot of time

          +

          Fed up with frameworks that make every website look and feel like a framework? You want a custom design, so you override defaults. Every time again. You have grown out of that. You are ready to leave Bootstrap or Foundation behind. Time to get proper support for your slick design skills.

          + Read more +
          +
          +
          +
          + +
          +
          +
          +
          +
          +
          scalable
          +

          scalable

          +
          +
          +
          +
          +
          modular
          +

          modular

          +
          +
          +
          +
          +
          Chopstick
          +
          +
          +
          +
          +
          single dept classes
          +

          single dept class based

          +
          +
          +
          +
          +
          the bits that build the bits
          +

          the bits that build the bits

          +
          +
          +
          +
          +
          + +
          +
          +
          +
          +

          Ordered list

          +

          The SCSS part of Chopstick consists of two main folders ( scss/shared, scss/theme ) and two main files ( scss/_settings.scss, scss/screen.scss ).

          + +
            +
          1. The scss/shared folder contains all of the necessary mixins, includes, extends and other stuffto help you code faster. Nothing in this folder is ever directly compiled to CSS.You need to reference components of Chopstick from within your theme’s SCSS code.
          2. + +
          3. The scss/theme folder will contain your theme. Everything in this folder will be compiled to CSS when you@import it in screen.scss. We have prepared what we believe are some sensible defaults in the directoryroot and theme-specific modules in the modules folder, but feel free to delete anything in this folder youdon’t like. Also remember to remove the import rules from the screen.scss file.
          4. +
          +
          +
          +
          +
          + +
          +
          + Download +
          +
          + +
          +
          +
          +
          +

          Some code

          +

          Easy to understand

          + box-($amount, $left, $right); +

          Give an element a grid width (1, 2, 3, 8, . . .), gutter left & right in ems.

          +

          Example:

          +
          + .blog-detail {
          +    @include box-(12, 1, 1);
          +    // Span 12 columns
          + } +
          + +
          +
          +
          +
          +
+
+ +
+

Easy setup guide

+

Get it up and running quickly

+
+ +
+ + +
+ +
+
+ 2 +
+ +
+

Get it on your system

+
    +
  • Click here to download chopstick
  • +
  • Extract the chopstick folder
  • +
+
+
+ +
+ +
+ +
+
+ 3 +
+ +
+

Setup chopstick

+
    +
  • Open the chopstick folder in the terminal
  • +
  • a. Install bundler +
      +
    • gem update --system
    • +
    • gem install bundler
    • +
    +
  • +
  • b. Install bower +
      +
    • npm install -g bower
    • +
    • bower install
    • +
    +
  • +
  • c. Install gulp +
      +
    • npm install -g gulp
    • +
    • npm install
    • +
    +
  • +
+
+
+ +
+ +
+ +
+
+ 4 +
+ +
+

Enjoy Chopstick

+
    +
  • Just run
  • +
  • gulp watch
  • +
+
+
+ +
+
+
+