├── .babelrc
├── .editorconfig
├── .gitignore
├── .ruby-version
├── .vscode
└── settings.json
├── Gemfile
├── Gemfile.lock
├── README.md
├── config
├── _config.dev.yml
├── _config.yml
└── webpack.config.js
├── humans.txt
├── notes.txt
├── package-lock.json
├── package.json
└── src
├── _data
└── .keep
├── _includes
├── components
│ ├── footer.html
│ └── header.html
├── global
│ ├── head.html
│ ├── javascript.html
│ └── meta.html
└── svg
│ └── .keep
├── _layouts
├── compress.html
└── default.html
├── _pages
├── 404.html
├── example.html
├── index.html
├── markdown.md
├── robots.txt
└── sitemap.xml
├── _posts
└── .keep
└── assets
├── fonts
└── .keep
├── images
└── .keep
├── js
├── components
│ └── example.js
├── index.js
└── pages
│ ├── home.js
│ └── index.js
├── resources
└── .keep
├── sass
├── common
│ ├── _colors.scss
│ ├── _foundation.scss
│ ├── _functions.scss
│ ├── _global.scss
│ ├── _typography.scss
│ ├── _variables.scss
│ └── _vendor.scss
├── components
│ ├── _button.scss
│ ├── _components.scss
│ ├── _form.scss
│ └── _links.scss
├── layouts
│ ├── _footer.scss
│ ├── _global.scss
│ ├── _header.scss
│ └── _layouts.scss
├── main.scss
├── pages
│ ├── _index.scss
│ └── _pages.scss
└── themes
│ └── _themes.scss
└── video
└── .keep
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "plugins": [
3 | "transform-class-properties",
4 | "syntax-decorators",
5 | "transform-decorators-legacy"
6 | ],
7 | "presets": [
8 | "es2015",
9 | "react",
10 | "stage-0"
11 | ],
12 | "env": {
13 | "development": {
14 | "presets": [
15 | "react-hmre"
16 | ]
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | _site
2 | .sass-cache
3 | .jekyll-metadata
4 | _site
5 | jekyll-metadata
6 | *DS_Store
7 | node_modules
8 | dist
9 | src/sass/vendor
10 | _sass
--------------------------------------------------------------------------------
/.ruby-version:
--------------------------------------------------------------------------------
1 | 2.3.0
2 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | // Place your settings in this file to overwrite default and user settings.
2 | {
3 | "workbench.colorCustomizations":{
4 | "statusBarBackground": "#444444",
5 | "statusBar.background" : "#939ed2",
6 | }
7 | }
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | # Ruby gemfile
2 | source "https://rubygems.org"
3 | ruby "2.3.0"
4 | gem "jekyll", "3.3.1"
5 | gem 'jekyll-seo-tag'
6 |
7 | # If you want to use GitHub Pages, remove the "gem "jekyll"" above and
8 | # uncomment the line below. To upgrade, run `bundle update github-pages`.
9 | # gem "github-pages", group: :jekyll_plugins
10 |
11 | # Plugins
12 | group :jekyll_plugins do
13 | # gem "jekyll-feed", "~> 0.6"
14 | # uncomment above for blog. https://github.com/jekyll/jekyll-feed
15 | end
16 |
--------------------------------------------------------------------------------
/Gemfile.lock:
--------------------------------------------------------------------------------
1 | GEM
2 | remote: https://rubygems.org/
3 | specs:
4 | addressable (2.5.1)
5 | public_suffix (~> 2.0, >= 2.0.2)
6 | colorator (1.1.0)
7 | ffi (1.9.18)
8 | forwardable-extended (2.6.0)
9 | jekyll (3.3.1)
10 | addressable (~> 2.4)
11 | colorator (~> 1.0)
12 | jekyll-sass-converter (~> 1.0)
13 | jekyll-watch (~> 1.1)
14 | kramdown (~> 1.3)
15 | liquid (~> 3.0)
16 | mercenary (~> 0.3.3)
17 | pathutil (~> 0.9)
18 | rouge (~> 1.7)
19 | safe_yaml (~> 1.0)
20 | jekyll-sass-converter (1.5.0)
21 | sass (~> 3.4)
22 | jekyll-seo-tag (2.2.3)
23 | jekyll (~> 3.3)
24 | jekyll-watch (1.5.0)
25 | listen (~> 3.0, < 3.1)
26 | kramdown (1.13.2)
27 | liquid (3.0.6)
28 | listen (3.0.8)
29 | rb-fsevent (~> 0.9, >= 0.9.4)
30 | rb-inotify (~> 0.9, >= 0.9.7)
31 | mercenary (0.3.6)
32 | pathutil (0.14.0)
33 | forwardable-extended (~> 2.6)
34 | public_suffix (2.0.5)
35 | rb-fsevent (0.9.8)
36 | rb-inotify (0.9.8)
37 | ffi (>= 0.5.0)
38 | rouge (1.11.1)
39 | safe_yaml (1.0.4)
40 | sass (3.4.23)
41 |
42 | PLATFORMS
43 | ruby
44 |
45 | DEPENDENCIES
46 | jekyll (= 3.3.1)
47 | jekyll-seo-tag
48 |
49 | RUBY VERSION
50 | ruby 2.3.0p0
51 |
52 | BUNDLED WITH
53 | 1.15.0
54 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Jekyll - Webpack Static Website Starter
2 |
3 | ## About
4 |
5 | > Starter files you can use to bootstrap new projects.
6 |
7 | Ideal for:
8 | - Marketing teams that need to iterate website quickly
9 | - Setting up small client projects fast
10 | - Legitamizing business ideas
11 | - Experimenting with react (included) or other technologies
12 | - deploying to AWS, Netlify, or other static site hosting
13 |
14 | This example currently contains React, but this could be easily replaced with Vue, Preact, etc.
15 |
16 | ## Set up
17 |
18 | ### Requirements
19 | - Node >= 6.10.2
20 | - NPM >= 5.1.0
21 | - Ruby >= 2.3.0
22 | - Jekyll >= 3.3.1
23 | - Bundler >= 1.14.4
24 |
25 | ### Install
26 |
27 | 1. Fork this repo to your github account
28 | 2. Clone to your computer
29 | 3. Run set-up scripts
30 |
31 | ```bash
32 | bundle install && npm install
33 | ```
34 |
35 | ## Usage
36 |
37 | Starting the project
38 | ```bash
39 | npm run dev
40 | ```
41 |
42 | Building for production
43 | ```bash
44 | npm run build
45 | ```
--------------------------------------------------------------------------------
/config/_config.dev.yml:
--------------------------------------------------------------------------------
1 | ##
2 | # Dev Configuration file
3 | # For stuff that helps locally only!
4 | # helpful config settings: exclude
5 | assets-base-url: 'http://localhost:3000/assets/'
--------------------------------------------------------------------------------
/config/_config.yml:
--------------------------------------------------------------------------------
1 | ###
2 | # Configuration file
3 | # Contains site data, core jekyll config, plugin config, etc.
4 |
5 | ## Org settings
6 | title: Site title
7 | logo: /assets/images/global/logo.svg
8 | email: email
9 | phone: phone
10 | city: city
11 | state: state
12 | zip: zip
13 |
14 | ## Site Description
15 | # used in meta tags
16 | description: >
17 | I see pride. I see power. I see a badass starter that don't take no crap off of nobody!
18 |
19 | ## Core Site Settings
20 | # jekyll configuration
21 | baseurl: ''
22 | url: 'http://carsonjon.es'
23 | permalink: none
24 | assets-base-url: '/assets/'
25 | source: src
26 | destination: dist
27 | site-theme: default
28 | compress_html:
29 | clippings: all
30 | comments: all
31 | ignore:
32 | envs: ['dev']
33 | # modules
34 | include: ['_pages', '_posts', '_data']
35 | exclude: ['assets', 'js', 'sass', 'node_modules', Gemfile, Gemfile.lock, notes.txt, package.json, README.md, 'bower.json']
36 | keep_files:
37 | - assets
38 | markdown: kramdown
39 | gems:
40 | - jekyll-seo-tag
41 |
42 | # SEO Specific Settings
43 | twitter:
44 | username: carsonjonze
45 | domain: carsonjon.es
46 | facebook:
47 | app_id:
48 | social:
49 | name: Carson Jones
50 | links:
51 | - http://carsonjon.es
52 |
--------------------------------------------------------------------------------
/config/webpack.config.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Webpack Configuration
3 | * client js, bundle Creation
4 | * sass to css
5 | */
6 |
7 | const webpack = require('webpack');
8 | const path = require('path');
9 |
10 | const HtmlWebpackPlugin = require('html-webpack-plugin');
11 | const ExtractTextPlugin = require('extract-text-webpack-plugin');
12 | const autoprefixer = require('autoprefixer');
13 | const CopyWebpackPlugin = require('copy-webpack-plugin');
14 |
15 | const ROOT = '../';
16 | const paths = {
17 | src: path.join(__dirname, ROOT, './src'),
18 | dist: path.join(__dirname, ROOT, './dist'),
19 | js: path.join(__dirname, ROOT, './src/assets/js'),
20 | sass: path.join(__dirname, ROOT, './src/assets/sass'),
21 | images: path.join(__dirname, ROOT, './src/assets/images'),
22 | fonts: path.join(__dirname, ROOT, './src/assets/fonts'),
23 | resources: path.join(__dirname, ROOT, './src/assets/resources'),
24 | }
25 |
26 | const getPlugins = (isProduction) => {
27 | const env = (isProduction) ? 'production' : 'development';
28 | const plugins = [
29 | new webpack.optimize.CommonsChunkPlugin({
30 | name: 'vendor',
31 | minChunks: 2,
32 | filename: isProduction ? 'assets/vendor.js' : 'vendor.js',
33 | }),
34 | new webpack.DefinePlugin({
35 | 'process.env': {
36 | NODE_ENV: JSON.stringify(env),
37 | },
38 | }),
39 | new webpack.NamedModulesPlugin(),
40 | new webpack.LoaderOptionsPlugin({
41 | options: {
42 | postcss: [
43 | autoprefixer({
44 | browsers: [
45 | 'last 3 version',
46 | 'ie >= 10',
47 | ],
48 | }),
49 | ],
50 | context: paths.src,
51 | },
52 | minimize: isProduction ? true : false,
53 | debug: isProduction ? false : true,
54 | }),
55 | new webpack.ProvidePlugin({
56 | $: 'jquery',
57 | jQuery: 'jquery',
58 | 'window.jQuery': 'jquery',
59 | }),
60 | new CopyWebpackPlugin(
61 | [
62 | {
63 | from: path.resolve(__dirname, ROOT, 'src/assets/images/'),
64 | to: path.resolve(__dirname, ROOT, 'dist/assets/images')
65 | },
66 | {
67 | from: path.resolve(__dirname, ROOT, 'src/assets/resources'),
68 | to: path.resolve(__dirname, ROOT, 'dist/assets/resources')
69 | },
70 | {
71 | from: path.resolve(__dirname, ROOT, 'src/assets/video'),
72 | to: path.resolve(__dirname, ROOT, 'dist/assets/video')
73 | },
74 | {
75 | from: path.resolve(__dirname, ROOT, 'src/assets/fonts'),
76 | to: path.resolve(__dirname, ROOT, 'dist/assets/fonts')
77 | }
78 | ],
79 | {
80 | ignore: ['*.keep', '*.psd', '*.sketch']
81 | }
82 | ),
83 | new ExtractTextPlugin({
84 | filename: (isProduction) ? 'assets/main.css' : 'main.css',
85 | allChunks: !isProduction,
86 | })
87 | ]
88 |
89 | if(isProduction){
90 | plugins.push(
91 | new webpack.optimize.UglifyJsPlugin({
92 | compress: {
93 | warnings: false,
94 | screw_ie8: true,
95 | conditionals: true,
96 | unused: true,
97 | comparisons: true,
98 | sequences: true,
99 | dead_code: true,
100 | evaluate: true,
101 | if_return: true,
102 | join_vars: true,
103 | },
104 | output: {
105 | comments: false,
106 | },
107 | })
108 | );
109 | } else {
110 | plugins.push(
111 | new webpack.HotModuleReplacementPlugin()
112 | );
113 | }
114 |
115 | return plugins;
116 | }
117 |
118 | const getRules = (isProduction) => {
119 | const rules = [
120 | {
121 | test: /\.(js|jsx)$/,
122 | exclude: [/node_modules/],
123 | use: [
124 | 'babel-loader',
125 | ],
126 | },
127 | {
128 | test: /\.(png|gif|jpg)$/,
129 | include: paths.images,
130 | use: 'url-loader?limit=20480&name=assets/[name]-[hash].[ext]',
131 | },
132 | {
133 | test: /\.svg$/,
134 | include: paths.images,
135 | use: 'svg-inline-loader?classPrefix',
136 | },
137 | {
138 | test: /\.woff2?(\?v=\d+\.\d+\.\d+)?$/,
139 | include: paths.fonts,
140 | loader: 'url-loader',
141 | options: {
142 | limit: 50000,
143 | mimetype: 'application/font-woff',
144 | name: './assets/fonts/[name].[ext]',
145 | publicPath: '../',
146 | }
147 | }
148 | ]
149 |
150 | if(isProduction) {
151 | rules.push(
152 | {
153 | test: /\.scss$/,
154 | loader: ExtractTextPlugin.extract({
155 | fallback: 'style-loader',
156 | use: 'css-loader!postcss-loader!resolve-url-loader!sass-loader',
157 | }),
158 | }
159 | )
160 | } else {
161 | rules.push(
162 | {
163 | test: /\.scss$/,
164 | use: ExtractTextPlugin.extract({
165 | fallback: 'style-loader',
166 | use: [
167 | { loader: 'css-loader', options: { autoprefixer: false, sourceMap: true, importLoaders: 1 } },
168 | { loader: 'postcss-loader' },
169 | { loader: 'resolve-url-loader' },
170 | { loader: 'sass-loader', options: { sourceMap: (()=>{return !isProduction }) } },
171 | ]
172 | }),
173 | }
174 | );
175 | }
176 |
177 | return rules;
178 | }
179 |
180 | module.exports = (env = {}) => {
181 | const isProduction = env.production === true;
182 | const envInfo = (isProduction) ? 'production' : 'development';
183 | console.log(`Running Webpack: ${envInfo}`);
184 | return {
185 | devtool: (()=>{
186 | if (isProduction) return 'hidden-source-map';
187 | else return 'eval-source-map';
188 | })(),
189 | context: paths.src,
190 | entry: {
191 | js: paths.js
192 | },
193 | output: {
194 | path: paths.dist,
195 | publicPath: '/',
196 | filename: isProduction ? 'assets/main.js' : 'main.js',
197 | },
198 | module: {
199 | rules: getRules(isProduction)
200 | },
201 | resolve: {
202 | extensions: ['.webpack-loader.js', '.web-loader.js', '.loader.js', '.js', '.jsx'],
203 | modules: [
204 | path.resolve(__dirname, ROOT, 'node_modules'),
205 | paths.sass,
206 | paths.js,
207 | paths.fonts
208 | ],
209 | },
210 | plugins: getPlugins(isProduction),
211 | stats: {
212 | excludeAssets: [
213 | /.*assets\/images/,
214 | /.*assets\/fonts/,
215 | /.*assets\/resources/,
216 | /\.(png|jpg)$/
217 | ],
218 | modules: false,
219 | children: false,
220 | },
221 | devServer: {
222 | contentBase: isProduction ? './dist' : './src',
223 | historyApiFallback: true,
224 | port: 3000,
225 | compress: isProduction,
226 | inline: !isProduction,
227 | hot: !isProduction,
228 | host: '0.0.0.0',
229 | stats: {
230 | assets: true,
231 | children: false,
232 | chunks: false,
233 | hash: false,
234 | modules: false,
235 | maxModules: 15,
236 | publicPath: false,
237 | timings: true,
238 | version: false,
239 | warnings: true,
240 | colors: {
241 | green: '\u001b[32m',
242 | },
243 | exclude: [
244 | "node_modules",
245 | "*/assets/images",
246 | "*/assets/fonts",
247 | ]
248 | }
249 | }
250 | };
251 | }
--------------------------------------------------------------------------------
/humans.txt:
--------------------------------------------------------------------------------
1 | # humanstxt.org/
2 |
3 | # TEAM
4 | Carson Jones
5 | @carsonjonze
6 |
7 | # TECHNOLOGY
8 | Node, Ruby
9 | Webpack, Jekyll
10 | ES6, HTML5, SASS, React
11 |
12 | # THANKS
13 |
14 | Open Source Shoutouts:
15 | - generate-jekyll-vars
16 | - create-react-app
--------------------------------------------------------------------------------
/notes.txt:
--------------------------------------------------------------------------------
1 | YEAR-MONTH-DAY-title.MARKUP must be used for _posts titles
2 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "jekyll-static-generator",
3 | "version": "2.1.0",
4 | "description": "Static site generator stack.",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo 'test'",
8 | "start": "npm run dev",
9 | "clean": "rm -rf dist",
10 | "dev": "npm run clean && concurrently 'npm run webpack:dev' 'npm run jekyll:dev'",
11 | "build": "npm run clean && npm run webpack && npm run jekyll",
12 | "build:stage": "npm run clean && npm run webpack && npm run jekyll:stage",
13 | "jekyll": "cross-env JEKYLL_ENV=production bundle exec jekyll build --config config/_config.yml",
14 | "jekyll:stage": "cross-env JEKYLL_ENV=staging bundle exec jekyll build --config config/_config.yml,config/_config.staging.yml",
15 | "jekyll:dev": "cross-env JEKYLL_ENV=development bundle exec jekyll serve --config config/_config.yml,config/_config.dev.yml --watch -H 0.0.0.0 -P 4000",
16 | "webpack": "cross-env NODE_ENV=production webpack --env.production --progress --config config/webpack.config.js --define process.env.NODE_ENV=\"production\"",
17 | "webpack:dev": "cross-env NODE_ENV=development webpack-dev-server --config config/webpack.config.js --colors"
18 | },
19 | "repository": {
20 | "type": "git",
21 | "url": "git+https://github.com/carsonjones/jekyll-static-generator.git"
22 | },
23 | "keywords": [
24 | "jekyll",
25 | "static",
26 | "boilerplate",
27 | "starter",
28 | "files",
29 | "node",
30 | "react",
31 | "webpack"
32 | ],
33 | "author": {
34 | "name": "Carson Jones",
35 | "email": "carsoncjones@gmail.com",
36 | "url": "www.carsonjon.es"
37 | },
38 | "license": "ISC",
39 | "engines": {
40 | "node": "6.9.5",
41 | "npm": "3.10.2"
42 | },
43 | "devDependencies": {
44 | "autoprefixer": "^6.5.3",
45 | "babel-core": "^6.7.2",
46 | "babel-eslint": "^7.1.0",
47 | "babel-loader": "^7.1.2",
48 | "babel-plugin-syntax-decorators": "^6.13.0",
49 | "babel-plugin-transform-class-properties": "^6.6.0",
50 | "babel-plugin-transform-decorators-legacy": "^1.3.4",
51 | "babel-plugin-transform-runtime": "^6.6.0",
52 | "babel-preset-es2015": "^6.22.0",
53 | "babel-preset-react": "^6.5.0",
54 | "babel-preset-react-hmre": "^1.1.1",
55 | "babel-preset-stage-0": "^6.16.0",
56 | "babel-runtime": "^6.6.1",
57 | "concurrently": "^3.4.0",
58 | "copy-webpack-plugin": "^4.0.1",
59 | "cross-env": "^4.0.0",
60 | "css-loader": "0.14.5",
61 | "eslint": "^3.10.1",
62 | "eslint-config-airbnb": "^13.0.0",
63 | "eslint-plugin-import": "^2.2.0",
64 | "eslint-plugin-jsx-a11y": "^2.2.3",
65 | "eslint-plugin-react": "^6.7.1",
66 | "extract-text-webpack-plugin": "^3.0.0",
67 | "file-loader": "^0.9.0",
68 | "html-webpack-plugin": "^2.24.1",
69 | "modularscale-sass": "^3.0.3",
70 | "node-sass": "^4.5.3",
71 | "postcss-loader": "^1.1.1",
72 | "prepush": "^3.1.11",
73 | "resolve-url-loader": "^2.1.0",
74 | "sass-loader": "^6.0.6",
75 | "sass-mq": "^3.3.2",
76 | "style-loader": "^0.13.0",
77 | "svg-inline-loader": "^0.8.0",
78 | "typi": "^3.1.0",
79 | "uglify-es": "^3.0.28",
80 | "uglify-js": "^2.8.29",
81 | "url-loader": "^0.5.7",
82 | "webpack": "^3.5.5",
83 | "webpack-dashboard": "^0.2.0",
84 | "webpack-dev-server": "^2.2.1"
85 | },
86 | "dependencies": {
87 | "jquery": "^3.2.1",
88 | "react": "^15.6.1",
89 | "react-dom": "^15.6.1"
90 | }
91 | }
92 |
--------------------------------------------------------------------------------
/src/_data/.keep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/carsonjones/jekyll-webpack-boilerplate/2c199224327da5625105203e76fdd732bad857c2/src/_data/.keep
--------------------------------------------------------------------------------
/src/_includes/components/footer.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/_includes/components/header.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/_includes/global/head.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | {% if page.title %}
8 | {{ page.title }}
9 | {% else %}
10 | {{ site.title }}
11 | {% endif %}
12 |
13 |
14 | {% if page.description %}
15 |
16 | {% else %}
17 |
18 | {% endif %}
19 |
20 |
21 | {% if site.theme-color %}
22 |
23 | {% endif %}
24 |
25 |
26 | {% if jekyll.environment == 'production' %}
27 | {% if page.page-hidden %}
28 |
29 |
30 | {% endif %}
31 | {% else %}
32 |
33 | {% endif %}
34 |
35 |
36 | {% include global/meta.html %}
37 |
38 |
39 |
40 | {% if jekyll.environment == 'production' %}
41 | {% capture favicon %}{{ "/assets/images/global/favicon.ico" | prepend: site.baseurl }}{% endcapture %}
42 | {% else %}
43 | {% capture favicon %}http://localhost:3000/assets/images/global/favicon.ico"{% endcapture %}
44 | {% endif %}
45 |
46 |
47 |
48 | {% if jekyll.environment == 'production' %}
49 |
50 | {% elsif jekyll.environment == 'development' %}
51 |
52 | {% endif %}
53 |
54 |
55 | {% seo title=false %}
56 |
--------------------------------------------------------------------------------
/src/_includes/global/javascript.html:
--------------------------------------------------------------------------------
1 |
2 | {% if jekyll.environment == 'production' %}
3 |
4 |
5 | {% else %}
6 |
7 |
8 | {% endif %}
--------------------------------------------------------------------------------
/src/_includes/global/meta.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/carsonjones/jekyll-webpack-boilerplate/2c199224327da5625105203e76fdd732bad857c2/src/_includes/global/meta.html
--------------------------------------------------------------------------------
/src/_includes/svg/.keep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/carsonjones/jekyll-webpack-boilerplate/2c199224327da5625105203e76fdd732bad857c2/src/_includes/svg/.keep
--------------------------------------------------------------------------------
/src/_layouts/compress.html:
--------------------------------------------------------------------------------
1 | ---
2 | # Jekyll layout that compresses HTML
3 | # v3.0.2
4 | # http://jch.penibelst.de/
5 | # © 2014–2015 Anatol Broder
6 | # MIT License
7 | ---
8 |
9 | {% capture _LINE_FEED %}
10 | {% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd p rt rp optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains " " %}{% endif %}{% unless _pre_before contains " " and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " ; ; ;" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %} Step Bytes raw {{ content | size }}{% if _profile_endings %} endings {{ _profile_endings }}{% endif %}{% if _profile_startings %} startings {{ _profile_startings }}{% endif %}{% if _profile_comments %} comments {{ _profile_comments }}{% endif %}{% if _profile_collapse %} collapse {{ _profile_collapse }}{% endif %}{% if _profile_clippings %} clippings {{ _profile_clippings }}{% endif %}
{% endif %}{% endif %}
11 |
--------------------------------------------------------------------------------
/src/_layouts/default.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: compress
3 | ---
4 | {% assign theme = site.site-theme %}
5 |
6 | {% for class in page.main-classes %}
7 | {% assign main-classes = '' | append: ' ' | append: class %}
8 | {% endfor %}
9 | {% if page.theme != nil %}
10 | {% capture page_theme %}page.theme{% endcapture %}
11 | {% else %}
12 | {% capture page_theme %}{{ theme }}{% endcapture %}
13 | {% endif %}
14 |
15 |
16 | {% include global/head.html %}
17 |
18 | {% include components/header.html %}
19 |
20 | {{ content }}
21 |
22 | {% include components/footer.html %}
23 | {% include global/javascript.html %}
24 |
25 |
--------------------------------------------------------------------------------
/src/_pages/404.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 |
4 | page-hidden: false
5 | page-name: error
6 | permalink: /404.html
7 |
8 | title: 404! Error Page
9 | description: Page not found.
10 | ---
11 |
12 |
--------------------------------------------------------------------------------
/src/_pages/example.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 |
4 | page-hidden: false
5 | page-name: example
6 | permalink: /example/
7 |
8 | title: Example Title
9 | description: Example Description
10 | ---
11 |
12 | Example Heading 1
13 | This would be a good place for a tagline.
14 |
15 | This is a level 3 heading
16 | Amet pariatur pariatur voluptate veniam nisi.
17 |
18 | This is a level 3 heading
19 | Amet officia sit enim exercitation. Excepteur aliqua et cillum enim eu eu occaecat minim tempor voluptate elit esse ut. Pariatur veniam et culpa incididunt adipisicing ipsum. Id ea exercitation laboris reprehenderit consequat ipsum officia mollit sunt.
20 |
21 | A slightly larger paragraph
22 | Lorem velit exercitation irure et nostrud aliqua incididunt Lorem do. Nisi aliqua enim dolor ex excepteur. Amet deserunt ipsum aute exercitation incididunt nisi ipsum quis exercitation Lorem sunt sunt labore. Dolor magna duis ex aliquip laboris exercitation deserunt ut deserunt cillum cillum aliqua minim tempor.
23 |
24 | Here are some bullets
25 |
26 | Nulla dolor nulla minim cillum adipisicing aute officia.
27 | Nulla dolor nulla minim cillum adipisicing aute officia.
28 | Nulla dolor nulla minim cillum adipisicing aute officia.
29 | Nulla dolor nulla minim cillum adipisicing aute officia.
30 | Nulla dolor nulla minim cillum adipisicing aute officia.
31 |
--------------------------------------------------------------------------------
/src/_pages/index.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 |
4 | page-hidden: false
5 | page-name: main
6 | permalink: /
7 |
8 | title: Homepage Title
9 | description: Homepage Description
10 | ---
11 |
12 | Home Page
13 |
14 |
15 |
16 | Helpful Examples:
17 |
18 | Basic Typography - a html page
19 | Basic Markdown - a markdown page
20 |
--------------------------------------------------------------------------------
/src/_pages/markdown.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 |
4 | page-hidden: false
5 | page-name: markdown
6 | permalink: /markdown/
7 |
8 | main-classes:
9 | - content
10 |
11 | title: Talkin Markdown
12 | description: You talking about markdown?
13 | ---
14 |
15 | # You kick flip
16 |
17 | ## Wit it and you
18 |
19 | ### Don't - stop
20 |
21 | #### I'd like to get to
22 |
23 | ##### Know you, so I can
24 |
25 | ###### Show You!
26 |
27 | ---
28 |
29 | And a one and a two and a
30 |
31 | 1. uno
32 | 2. dos
33 | 3. tres
34 | 4. quatro
35 |
36 | Sometimes we can have short paragraphs.
37 |
38 | Somes we can have long paragraphs and can bring to the table win-win survival strategies to ensure proactive domination. At the end of the day, going forward, a new normal that has evolved from generation X is on the runway heading towards a streamlined soluion.
39 |
40 | > Podcasting operational change management inside of workflows to establish a framework. Taking seamless key performance indicators offline to maximise the long tail!
41 |
42 | - we can get with
43 | - some of this
44 | - some of that
45 | - Lots of these...
46 | - tons of those!
47 |
48 | Sometimes we have *a whole lot* of this a need to do **some of that**. Click [here](#) to see more!
49 |
50 | `Code` that just a bit.
51 |
52 | ```js
53 | class me extends Component() {
54 | props(superman){
55 | }
56 | // Code is hard to read without a scrollllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll bar.
57 | }
58 | ````
59 |
60 | * thank you!
61 | * youre welcome!
62 | * goodnight!
63 |
--------------------------------------------------------------------------------
/src/_pages/robots.txt:
--------------------------------------------------------------------------------
1 | ---
2 | sitemap:
3 | exclude: true
4 | permalink: /robots.txt
5 | ---
6 |
7 | # robots.txt for {{ site.url }}
8 | User-agent: *
9 |
10 | Sitemap: {{ site.url }}/sitemap.xml
11 |
--------------------------------------------------------------------------------
/src/_pages/sitemap.xml:
--------------------------------------------------------------------------------
1 | ---
2 | layout:
3 | sitemap:
4 | exclude: true
5 | permalink: /sitemap.xml
6 | ---
7 |
8 |
9 |
10 | {% for post in site.posts %}
11 | {% unless post.published or page.page_hidden %}
12 |
13 | {{ site.url }}{{ post.url }}
14 | {% if post.sitemap.lastmod %}
15 | {{ post.sitemap.lastmod | date: "%Y-%m-%d" }}
16 | {% elsif post.date %}
17 | {{ post.date | date_to_xmlschema }}
18 | {% else %}
19 | {{ site.time | date_to_xmlschema }}
20 | {% endif %}
21 | {% if post.sitemap.changefreq %}
22 | {{ post.sitemap.changefreq }}
23 | {% else %}
24 | monthly
25 | {% endif %}
26 |
27 | {% endunless %}
28 | {% endfor %}
29 | {% for page in site.pages %}
30 | {% unless page.sitemap.exclude or page.page_hidden %}
31 |
32 | {{ site.url }}{{ page.url | remove: "index.html" }}
33 | {% if page.sitemap.lastmod %}
34 | {{ page.sitemap.lastmod | date: "%Y-%m-%d" }}
35 | {% elsif page.date %}
36 | {{ page.date | date_to_xmlschema }}
37 | {% else %}
38 | {{ site.time | date_to_xmlschema }}
39 | {% endif %}
40 | {% if page.sitemap.changefreq %}
41 | {{ page.sitemap.changefreq }}
42 | {% else %}
43 | weekly
44 | {% endif %}
45 |
46 | {% endunless %}
47 | {% endfor %}
48 |
49 |
--------------------------------------------------------------------------------
/src/_posts/.keep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/carsonjones/jekyll-webpack-boilerplate/2c199224327da5625105203e76fdd732bad857c2/src/_posts/.keep
--------------------------------------------------------------------------------
/src/assets/fonts/.keep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/carsonjones/jekyll-webpack-boilerplate/2c199224327da5625105203e76fdd732bad857c2/src/assets/fonts/.keep
--------------------------------------------------------------------------------
/src/assets/images/.keep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/carsonjones/jekyll-webpack-boilerplate/2c199224327da5625105203e76fdd732bad857c2/src/assets/images/.keep
--------------------------------------------------------------------------------
/src/assets/js/components/example.js:
--------------------------------------------------------------------------------
1 | import React, { Component, PropTypes } from 'react';
2 |
3 | class Example extends Component {
4 | render(){
5 | return(
6 |
7 |
Example React component
8 |
9 | );
10 | }
11 | }
12 |
13 | export default Example;
--------------------------------------------------------------------------------
/src/assets/js/index.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Main.js
3 | * Client-Side JS Bootsrap
4 | * Loads pages and components
5 | */
6 | import Pages from './pages/index.js';
7 |
8 | import '../sass/main.scss';
9 |
10 | function init(){
11 | Pages.init();
12 | }
13 |
14 | document.addEventListener('DOMContentLoaded', (event)=> { init(); });
--------------------------------------------------------------------------------
/src/assets/js/pages/home.js:
--------------------------------------------------------------------------------
1 | export default {
2 | init: ()=>{
3 | console.log('helllo');
4 | }
5 | }
--------------------------------------------------------------------------------
/src/assets/js/pages/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 |
4 | import Example from '../components/example';
5 | import Home from './home.js';
6 |
7 |
8 | const $body = $('body');
9 |
10 | export default {
11 | init: ()=>{
12 | if ($body.hasClass('main-page')){
13 | ReactDOM.render( , document.getElementById('react__root'));
14 | Home.init();
15 | }
16 | }
17 | }
--------------------------------------------------------------------------------
/src/assets/resources/.keep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/carsonjones/jekyll-webpack-boilerplate/2c199224327da5625105203e76fdd732bad857c2/src/assets/resources/.keep
--------------------------------------------------------------------------------
/src/assets/sass/common/_colors.scss:
--------------------------------------------------------------------------------
1 | // Core color palette
2 | $blue: #2d63a8;
3 | $purple: #BA85FF;
4 | $white: #fff;
5 | $black: #050401;
6 | $grey--dark: #050401;
7 | $grey--light: #EDE8F2;
8 | $white--dark: #fcf8fb;
9 | $orange: #FF593F;
10 | $yellow: #FFD452;
11 | $green: #45b359;
12 |
13 | // Common names
14 | $brand: $blue;
15 | $brand--secondary: $purple;
16 | $secondary: $purple;
17 | $accent: $green;
18 |
19 | $default-text-color: $black;
--------------------------------------------------------------------------------
/src/assets/sass/common/_foundation.scss:
--------------------------------------------------------------------------------
1 | html {
2 | -ms-text-size-adjust: 100%;
3 | -webkit-text-size-adjust: 100%;
4 | }
5 | body {
6 | margin: 0;
7 | font: 16px/1 sans-serif;
8 | -moz-osx-font-smoothing: grayscale;
9 | -webkit-font-smoothing: antialiased;
10 | }
11 | h1,
12 | h2,
13 | h3,
14 | h4,
15 | p,
16 | blockquote,
17 | figure,
18 | ol,
19 | ul {
20 | margin: 0;
21 | padding: 0;
22 | }
23 | main,
24 | li {
25 | display: block;
26 | }
27 | h1,
28 | h2,
29 | h3,
30 | h4 {
31 | font-size: inherit;
32 | }
33 | strong {
34 | font-weight: bold;
35 | }
36 | a,
37 | button {
38 | color: inherit;
39 | transition: .3s;
40 | }
41 | a {
42 | text-decoration: none;
43 | }
44 | button {
45 | overflow: visible;
46 | border: 0;
47 | font: inherit;
48 | -webkit-font-smoothing: inherit;
49 | letter-spacing: inherit;
50 | background: none;
51 | cursor: pointer;
52 | }
53 | ::-moz-focus-inner {
54 | padding: 0;
55 | border: 0;
56 | }
57 | :focus {
58 | outline: 0;
59 | }
60 | img {
61 | max-width: 100%;
62 | height: auto;
63 | border: 0;
64 | }
--------------------------------------------------------------------------------
/src/assets/sass/common/_functions.scss:
--------------------------------------------------------------------------------
1 | @function g($number){
2 | @return ($number * 8) * 1px;
3 | }
--------------------------------------------------------------------------------
/src/assets/sass/common/_global.scss:
--------------------------------------------------------------------------------
1 | * {
2 | box-sizing: border-box;
3 | }
4 |
5 | article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
6 | display: block;
7 | }
8 |
9 | @mixin wrapper {
10 | @include mq($until: $xl){
11 | max-width: 1280px;
12 | }
13 | @include mq($from: $xl){
14 | max-width: 1440px;
15 | }
16 | margin: 0 auto;
17 | }
18 |
19 | .wrapper{
20 | @include wrapper;
21 | // padding: 0 24px;
22 | }
23 |
24 | body{
25 | position: absolute;
26 | width:100%;
27 | height: 100%;
28 | overflow-y:scroll;
29 | }
--------------------------------------------------------------------------------
/src/assets/sass/common/_typography.scss:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css?family=Work+Sans:400,700|Open+Sans:400,700');
2 |
3 |
4 | $light: 300;
5 | $regular: 400;
6 | $bold: 500;
7 | $bolder: 600;
8 |
9 | // Import modular scale mixins
10 | $ms-base: 16px 18px;
11 | $ms-ratio: $major-third;
12 |
13 | // Core Typography vars
14 | $base-font-size: 16px;
15 | $base-font-family: 'Open Sans', sans-serif;
16 | $base-font-weight: $regular;
17 | $base-font-color: $default-text-color;
18 |
19 | $heading-font-family: 'Work Sans', sans-serif;
20 | $heading-font-weight: $regular;
21 |
22 | $typi: (
23 | base: (
24 | null: (16px, 1.0),
25 | xs: (16px, 1.4),
26 | md: (16px, 1.333),
27 | ),
28 | h1:(
29 | null: (ms(12), 1.0),
30 | xs: (ms(12)),
31 | md: (ms(12))
32 | ),
33 | h1-content:(
34 | null: (ms(10), 1.0),
35 | xs: (ms(10)),
36 | md: (ms(10))
37 | ),
38 | h2:(
39 | null: (ms(10), 1.0),
40 | xs: (ms(10)),
41 | md: (ms(10))
42 | ),
43 | h2-content:(
44 | null: (ms(7), 1.0),
45 | xs: (ms(7)),
46 | md: (ms(7))
47 | ),
48 | h3:(
49 | null: (ms(6), 1.0),
50 | xs: (ms(7)),
51 | md: (ms(6))
52 | ),
53 | h3-content:(
54 | null: (ms(5), 1.0),
55 | xs: (ms(5)),
56 | md: (ms(5))
57 | ),
58 | h4:(
59 | null: (ms(4), 1.0),
60 | xs: (ms(4)),
61 | md: (ms(4))
62 | ),
63 | h4-content:(
64 | null: (ms(3), 1.0),
65 | xs: (ms(3)),
66 | md: (ms(3))
67 | ),
68 | h5:(
69 | null: (ms(3), 1.0),
70 | xs: (ms(3)),
71 | md: (ms(3))
72 | ),
73 | h5-content:(
74 | null: (ms(2), 1.0),
75 | xs: (ms(2)),
76 | md: (ms(2))
77 | ),
78 | h6:(
79 | null: (ms(2), 1.0),
80 | xs: (ms(2)),
81 | md: (ms(2))
82 | ),
83 | h6-content:(
84 | null: (ms(2), 1.0),
85 | xs: (ms(2)),
86 | md: (ms(2))
87 | ),
88 | p1:(
89 | null: (ms(2), 1.0),
90 | xs: (ms(2)),
91 | md: (ms(2))
92 | ),
93 | p2:(
94 | null: (ms(1), 1.0),
95 | xs: (ms(1)),
96 | md: (ms(1))
97 | )
98 | );
99 | @mixin heading--spacing($heading: 'h1', $line-height-small: '8px', $line-height-large: '16px'){
100 | @include typi($heading);
101 | line-height: $line-height-small;
102 | @include mq($from: $md){
103 | line-height: $line-height-large;
104 | }
105 | }
106 |
107 | @include typi-create-classes;
108 | @include typi-init;
109 |
110 | body {
111 | font-size: $base-font-size;
112 | font-family: $base-font-family;
113 | font-weight: $base-font-weight;
114 | color: $base-font-color;
115 | }
116 |
117 | @mixin heading-font-styles{
118 | font-family: $heading-font-family;
119 | font-weight: $heading-font-weight;
120 | }
121 |
122 | @mixin margin-helpers{
123 | // margins-bottoms
124 | .m0 { margin-bottom: g(0); }
125 | .m1 { margin-bottom: g(1); }
126 | .m2 { margin-bottom: g(2); }
127 | .m3 { margin-bottom: g(3); }
128 | .m4 { margin-bottom: g(4); }
129 | .m5 { margin-bottom: g(5); }
130 | .m6 { margin-bottom: g(6); }
131 | .mb0 { margin-bottom: g(0); }
132 | .mb1 { margin-bottom: g(1); }
133 | .mb2 { margin-bottom: g(2); }
134 | .mb3 { margin-bottom: g(3); }
135 | .mb4 { margin-bottom: g(4); }
136 | .mb5 { margin-bottom: g(5); }
137 | .mb6 { margin-bottom: g(6); }
138 | .mb7 { margin-bottom: g(7); }
139 | .mb8 { margin-bottom: g(8); }
140 | .mb9 { margin-bottom: g(9); }
141 | .mb10 { margin-bottom: g(10); }
142 | .mb11 { margin-bottom: g(11); }
143 | .mb12 { margin-bottom: g(12); }
144 | .mt0 { margin-top: g(0); }
145 | .mt1 { margin-top: g(1); }
146 | .mt2 { margin-top: g(2); }
147 | .mt3 { margin-top: g(3); }
148 | .mt4 { margin-top: g(4); }
149 | .mt5 { margin-top: g(5); }
150 | .mt6 { margin-top: g(6); }
151 | .mt7 { margin-top: g(7); }
152 | .mt8 { margin-top: g(8); }
153 | .mt9 { margin-top: g(9); }
154 | .mt10 { margin-top: g(10); }
155 | .mt11 { margin-top: g(11); }
156 | .mt12 { margin-top: g(12); }
157 | }
158 | @mixin bullets{
159 | padding-left: g(2);
160 | &:not(:first-child){
161 | margin-top: g(1);
162 | }
163 | li{
164 | list-style: disc;
165 | display: list-item;
166 | @include typi('p2');
167 | margin-left: g(2);
168 | position: relative;
169 | line-height: 32px;
170 | }
171 | }
172 | @mixin numbers{
173 | padding-left: g(2);
174 | li{
175 | list-style: decimal;
176 | display: list-item;
177 | @include typi('p2');
178 | margin-left: g(2);
179 | position: relative;
180 | line-height: 32px;
181 | }
182 | }
183 | @mixin code{
184 | code {
185 | color: #062834;
186 | font-family: Menlo, Monaco, Consolas, 'Droid Sans Mono', 'Courier New', monospace;
187 | background: rgba(127, 127, 127, 0.1);
188 | padding: g(.5) g(1);
189 | border-radius: g(.5);
190 | }
191 | pre {
192 | white-space: pre;
193 | margin: 0;
194 | &:not(:first-child) {
195 | margin-top: 1rem;
196 | }
197 | }
198 | pre > code {
199 | font-family: Menlo, Monaco, Consolas, 'Droid Sans Mono', 'Courier New', monospace;
200 | background: rgba(127, 127, 127, 0.05);
201 | display: block;
202 | line-height: 32px;
203 | padding: g(3) g(.5);
204 | border: 1px solid rgba(0, 0, 0, 0.18);
205 | overflow: auto;
206 | margin-bottom: g(4);
207 | }
208 | }
209 |
210 | @mixin h1{
211 | @include heading--spacing('h1', 64px, 72px);
212 | @include heading-font-styles();
213 | }
214 | @mixin h2{
215 | @include heading--spacing('h2', 48px, 64px);
216 | @include heading-font-styles();
217 | }
218 | @mixin h3{
219 | @include heading--spacing('h3', 48px, 56px);
220 | @include heading-font-styles();
221 | }
222 | @mixin h4{
223 | @include heading--spacing('h4', 40px, 48px);
224 | @include heading-font-styles();
225 | }
226 | @mixin h5{
227 | @include heading--spacing('h5', 32px, 32px);
228 | @include heading-font-styles();
229 | }
230 | @mixin h6{
231 | @include heading--spacing('h6', 24px, 24px);
232 | @include heading-font-styles();
233 | }
234 | @mixin p1{
235 | @include typi('p1');
236 | @include heading--spacing('p1', 32px, 32px);
237 | }
238 | @mixin p2{
239 | @include typi('p2');
240 | line-height: 24px;
241 | }
242 |
243 | h1, .h1{
244 | @include h1;
245 | }
246 | h2, .h2{
247 | @include h2;
248 | }
249 | h3, .h3{
250 | @include h3;
251 | }
252 | h4, .h4{
253 | @include h4;
254 | }
255 | h5, .h5{
256 | @include h5;
257 | }
258 | h6, .h6{
259 | @include h6;
260 | }
261 | .p1{
262 | @include p1;
263 | }
264 | p, .p2{
265 | @include p2;
266 | }
267 | ul.bullets{
268 | li{
269 | @include bullets();
270 | }
271 | }
272 | ol.numbers{
273 | li{
274 | @include numbers();
275 | }
276 | }
277 | hr{
278 | margin: g(3) 0;
279 | padding: 0 g(4);
280 | }
--------------------------------------------------------------------------------
/src/assets/sass/common/_variables.scss:
--------------------------------------------------------------------------------
1 | // Mq Responsive Configuration
2 | $mq-responsive: true;
3 | $xs: 480px;
4 | $sm: 768px;
5 | $md: 992px;
6 | $lg: 1200px;
7 | $xl: 1440px;
8 | $mq-breakpoints: (
9 | xs: $xs,
10 | sm: $sm,
11 | md: $md,
12 | lg: $lg,
13 | xl: $xl
14 | );
15 | // static breakpoint (when mq-responsive is false)
16 | // $mq-static-breakpoint: desktop;
17 | // show breakpoints
18 | $mq-show-breakpoints: (xs, sm, md, lg, xl);
19 | // add custom breakpoint
20 | // @include mq-add-breakpoint(tvscreen, 1920px);
21 |
22 | @import 'colors';
23 |
24 |
25 | // Common
26 | $img-border-radius: 5px;
--------------------------------------------------------------------------------
/src/assets/sass/common/_vendor.scss:
--------------------------------------------------------------------------------
1 | @import '~sass-mq/mq';
2 | @import '~modularscale-sass/stylesheets/modularscale';
3 | @import '~typi/scss/typi';
--------------------------------------------------------------------------------
/src/assets/sass/components/_button.scss:
--------------------------------------------------------------------------------
1 | a.btn, button{
2 | border-radius: 4px;
3 | background: $green;
4 | color: #fff;
5 | padding: 16px 24px;
6 | display: inline-block;
7 | font-weight: bold;
8 | min-width: 204px;
9 | text-align: center;
10 | &:hover{
11 | color: #fff;
12 | background: darken($green, 10);
13 | }
14 | }
15 | a.btn--alt, button.btn--alt{
16 | background: $brand;
17 | &:hover{
18 | background: darken($brand, 10);
19 | }
20 | }
21 | a.btn--white{
22 | border-radius: 4px;
23 | background: $white;
24 | color: $brand;
25 | padding: 16px 24px;
26 | display: inline-block;
27 | margin: 8px 0;
28 | font-weight: bold;
29 | &:hover{
30 | color: $brand;
31 | background: darken($white, 10);
32 | }
33 | }
--------------------------------------------------------------------------------
/src/assets/sass/components/_components.scss:
--------------------------------------------------------------------------------
1 | @import 'button';
2 | @import 'form';
3 | @import 'links';
--------------------------------------------------------------------------------
/src/assets/sass/components/_form.scss:
--------------------------------------------------------------------------------
1 | // inputs
2 | .form {
3 | position: relative;
4 | max-width: 100%;
5 | display: flex;
6 | flex-direction: column;
7 | p{
8 | margin: 1rem 0rem;
9 | }
10 | .field {
11 | clear:both;
12 | margin: 0rem 0rem 1rem;
13 | &:last-child{
14 | margin-bottom: 0rem;
15 | }
16 |
17 | label{
18 | display: block;
19 | font-size: 0.8rem;
20 | font-family: $base-font-family;
21 | text-transform: none;
22 | }
23 |
24 | }
25 | .fields{
26 | .field{
27 | clear: both;
28 | margin: 0rem 0rem 1rem;
29 | }
30 | &:last-child .field{
31 | margin-bottom: 0;
32 | }
33 | }
34 |
35 | button{
36 | align-self: center;
37 | min-width: 200px;
38 | }
39 |
40 | textarea,
41 | input:not([type]),
42 | input[type="date"],
43 | input[type="datetime-local"],
44 | input[type="email"],
45 | input[type="number"],
46 | input[type="password"],
47 | input[type="search"],
48 | input[type="tel"],
49 | input[type="time"],
50 | input[type="text"],
51 | input[type="url"] {
52 | width:100%;
53 | vertical-align: top;
54 | margin: 0rem;
55 | outline: none;
56 | tap-highlight-color: rgba(255, 255, 255, 0);
57 | line-height: 1.2rem;
58 | padding: .65rem 1rem;
59 | font-size: 1rem;
60 | font-family: $base-font-family;
61 | background: $white;
62 | border: 1px solid rgba(26, 28, 30, .15);
63 | border-radius: 0.3rem;
64 | -webkit-appearance: none;
65 | // box-shadow: 0em 0em 0em 0em transparent inset;
66 | box-shadow: none !important;
67 | transition: color 0.1s ease, border-color 0.1s ease;
68 | -webkit-validation-bubble-message { display: none; }
69 | }
70 |
71 | textarea{
72 | padding: 0.79rem 1em;
73 | resize: none;
74 | }
75 |
76 | }
77 |
78 | //states
79 | .form {
80 | .error:not(label) {
81 | box-shadow: 0px 0px 0px 100px #FFFAF0 inset !important;
82 | border-color: #E0B4B4 !important;
83 | }
84 | label.error{
85 | color: $brand;
86 | font-weight: 300;
87 | margin-top: .5rem;
88 | }
89 | }
90 |
91 |
92 | // place holders
93 | .form{
94 | &::-webkit-input-placeholder {
95 | color: rgba(140, 140, 140, 0.87);
96 | }
97 | &:focus::-webkit-input-placeholder {
98 | color: rgba(89, 89, 89, 0.87);
99 | }
100 | .error{
101 | &::-webkit-input-placeholder {
102 | color: #da9796;
103 | }
104 | &:focus::-webkit-input-placeholder {
105 | color: #da9796;
106 | }
107 | }
108 | }
109 |
110 | // focus
111 | .form{
112 | input:not([type]):focus,
113 | input[type="date"]:focus,
114 | input[type="datetime-local"]:focus,
115 | input[type="email"]:focus,
116 | input[type="number"]:focus,
117 | input[type="password"]:focus,
118 | input[type="search"]:focus,
119 | input[type="tel"]:focus,
120 | input[type="time"]:focus,
121 | input[type="text"]:focus,
122 | input[type="url"]:focus {
123 | color: rgba(0, 0, 0, 0.95);
124 | border-color: rgba($black, .2);
125 | border-radius: 0.28571429rem;
126 | background: #FFFFFF;
127 | box-shadow: 0px 0em 0em 0em rgba(34, 36, 38, 0.35) inset;
128 | }
129 | textarea:focus {
130 | color: rgba(0, 0, 0, 0.95);
131 | border-color: rgba($black, .2);
132 | border-radius: 0.28571429rem;
133 | background: #FFFFFF;
134 | box-shadow: 0px 0em 0em 0em rgba(34, 36, 38, 0.35) inset;
135 | }
136 | }
137 |
138 |
139 | // errors
140 | .form {
141 | .error.message:not(:empty){
142 | display: block;
143 | }
144 |
145 | .field.error{
146 | label,
147 | .input {
148 | color: #9F3A38;
149 | }
150 |
151 | textarea,
152 | select,
153 | input:not([type]),
154 | input[type="date"],
155 | input[type="datetime-local"],
156 | input[type="email"],
157 | input[type="number"],
158 | input[type="password"],
159 | input[type="search"],
160 | input[type="tel"],
161 | input[type="time"],
162 | input[type="text"],
163 | input[type="url"] {
164 | background: #FFF6F6;
165 | border-color: #E0B4B4;
166 | color: #9F3A38;
167 | border-radius: '';
168 | box-shadow: none;
169 | }
170 |
171 | textarea:focus,
172 | select:focus,
173 | input:not([type]):focus,
174 | input[type="date"]:focus,
175 | input[type="datetime-local"]:focus,
176 | input[type="email"]:focus,
177 | input[type="number"]:focus,
178 | input[type="password"]:focus,
179 | input[type="search"]:focus,
180 | input[type="tel"]:focus,
181 | input[type="time"]:focus,
182 | input[type="text"]:focus,
183 | input[type="url"]:focus{
184 | background: #FFF6F6;
185 | border-color: #E0B4B4;
186 | color: #9F3A38;
187 | box-shadow: none;
188 | }
189 | }
190 | }
191 |
192 | // Forms
193 | // Form Fix
194 | input{
195 | box-sizing:border-box;
196 | width:100%;
197 | }
198 | textarea{
199 | box-sizing:border-box;
200 | width:100%;
201 | }
202 | // Styles
203 | .form-area{
204 | width: 100%;
205 | display:flex;
206 | flex-direction: column;
207 | h2{
208 | font-size: 3rem;
209 | font-weight: 300;
210 | margin-bottom: 20px
211 | }
212 | p{
213 | font-weight: 300;
214 | font-size: 1.2rem;
215 | line-height: 25px;
216 | }
217 | }
218 | .form-container{
219 | position:relative;
220 | &.visible{
221 | opacity: 1;
222 | transition: opacity 2.5s ease;
223 | }
224 | &.hidden{
225 | opacity: 0;
226 | transition: opacity 0.1s ease;
227 | z-index: 9 !important;
228 | }
229 | }
230 | .form-success{
231 | position:absolute;
232 | padding-left: 24px;
233 | text-align: left;
234 | &.hidden{
235 | opacity: 0;
236 | transition: opacity 0.5s ease;
237 | }
238 | &.visible{
239 | opacity: 1;
240 | transition: opacity 1.5s ease;
241 | }
242 | }
243 |
244 | .captcha{
245 | display: flex;
246 | justify-content: center;
247 | }
248 |
249 | .g-recaptcha {
250 | transform:scale(0.77);
251 | transform-origin:0 0;
252 | }
253 |
254 | .field--h{
255 | display:none;
256 | }
257 |
258 |
--------------------------------------------------------------------------------
/src/assets/sass/components/_links.scss:
--------------------------------------------------------------------------------
1 | a.link, span.link{
2 | color: $brand--secondary;
3 | text-decoration: underline;
4 | position: relative;
5 | transition: color ease 250ms;
6 | &:hover{
7 | color: darken($brand--secondary, 10);
8 | }
9 | }
--------------------------------------------------------------------------------
/src/assets/sass/layouts/_footer.scss:
--------------------------------------------------------------------------------
1 | // Footer
--------------------------------------------------------------------------------
/src/assets/sass/layouts/_global.scss:
--------------------------------------------------------------------------------
1 | // Core layout styles
2 |
3 | * {
4 | box-sizing: border-box;
5 | }
6 |
7 | article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
8 | display: block;
9 | }
10 |
11 | @mixin wrapper {
12 | max-width: 1200px;
13 | margin: 0 auto;
14 | }
15 |
16 | .wrapper{
17 | @include wrapper;
18 | padding: 0 24px;
19 | }
20 |
21 | main{
22 | min-height: calc(100vh - 160px);
23 | }
24 |
25 | body{
26 | position: absolute;
27 | width:100%;
28 | height: 100%;
29 | overflow-y:scroll;
30 | }
--------------------------------------------------------------------------------
/src/assets/sass/layouts/_header.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/carsonjones/jekyll-webpack-boilerplate/2c199224327da5625105203e76fdd732bad857c2/src/assets/sass/layouts/_header.scss
--------------------------------------------------------------------------------
/src/assets/sass/layouts/_layouts.scss:
--------------------------------------------------------------------------------
1 | @import 'global';
2 | @import 'header';
3 | @import 'footer';
--------------------------------------------------------------------------------
/src/assets/sass/main.scss:
--------------------------------------------------------------------------------
1 | // Variables everything
2 | @import 'common/variables';
3 | @import 'common/functions';
4 |
5 | // Import Vendor dependencies
6 | @import 'common/vendor';
7 |
8 | // Common
9 | @import 'common/foundation';
10 | @import 'common/typography';
11 | @import 'common/global';
12 |
13 | // Components
14 | @import 'components/components';
15 |
16 | // Layouts
17 | @import 'layouts/layouts';
18 |
19 | // Pages
20 | @import 'pages/pages';
21 |
22 | // Themes
23 | @import 'themes/themes';
--------------------------------------------------------------------------------
/src/assets/sass/pages/_index.scss:
--------------------------------------------------------------------------------
1 | body.main-page{
2 |
3 | }
--------------------------------------------------------------------------------
/src/assets/sass/pages/_pages.scss:
--------------------------------------------------------------------------------
1 | @import 'index';
--------------------------------------------------------------------------------
/src/assets/sass/themes/_themes.scss:
--------------------------------------------------------------------------------
1 | body.default{
2 | main{
3 | background: $white;
4 | color: $black;
5 | padding: 0 g(2);
6 | h1{
7 | @include heading--spacing('h1-content', 56px, 64px);
8 | }
9 | h2{
10 | @include heading--spacing('h2-content', 48px, 48px);
11 | }
12 | h3{
13 | @include heading--spacing('h3-content', 40px, 40px);
14 | }
15 | h4{
16 | @include heading--spacing('h4-content', 32px, 32px);
17 | }
18 | h5{
19 | @include heading--spacing('h5-content', 32px, 32px);
20 | }
21 | h6{
22 | @include heading--spacing('h6-content', 24px, 24px);
23 | }
24 | h1:first-child,
25 | h2:first-child,
26 | h3:first-child,
27 | h4:first-child,
28 | h5:first-child,
29 | h6:first-child {
30 | margin-top: 0;
31 | }
32 | h1,
33 | h2,
34 | h3,
35 | h4{
36 | margin-bottom: g(1.5);
37 | }
38 | h5,
39 | h6{
40 | margin-top: g(1);
41 | margin-bottom: g(1);
42 | }
43 | p{
44 | margin-top: g(2);
45 | margin-bottom: g(1);
46 | line-height: 36px;
47 | &:not(:first-child) {
48 | margin-top: g(1);
49 | }
50 | }
51 | blockquote {
52 | margin: 0 0 g(2) g(.5);
53 | padding: g(1.5) 0 g(1.5) g(1);
54 | border-left: g(.25) solid rgba(#3e515a,.3);
55 | background: rgba(127, 127, 127, 0.05);
56 | border-radius: 0 g(.5) g(.5) 0;
57 | &:not(:first-child) {
58 | margin-top: g(2);
59 | }
60 | p{
61 | margin: 0;
62 | line-height: 28px;
63 | padding-bottom: 4px;
64 | }
65 | }
66 | ul.content{
67 | @include bullets;
68 | }
69 | ol.content{
70 | @include numbers;
71 | }
72 | @include code;
73 | }
74 | main.content{
75 | ul{
76 | @include bullets;
77 | }
78 | ol{
79 | @include bullets;
80 | }
81 | }
82 | }
--------------------------------------------------------------------------------
/src/assets/video/.keep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/carsonjones/jekyll-webpack-boilerplate/2c199224327da5625105203e76fdd732bad857c2/src/assets/video/.keep
--------------------------------------------------------------------------------