{{ title }}
12 | 13 | {% if sub_heading %} 14 | 15 |{{ sub_heading }}
16 | 17 | {% endif %} 18 | 19 |├── site
├── blog
│ ├── blog.json
│ ├── index.md
│ ├── post-1
│ │ └── index.md
│ ├── post-2
│ │ └── index.md
│ └── post-3
│ │ └── index.md
├── globals
│ ├── helpers.js
│ └── site.json
├── includes
│ ├── components
│ │ ├── logo.njk
│ │ ├── header.njk
│ │ ├── footer.njk
│ │ ├── social-icons.njk
│ │ ├── nav.njk
│ │ ├── social-meta.njk
│ │ └── mobile-nav.njk
│ └── layouts
│ │ ├── home.njk
│ │ ├── category.njk
│ │ ├── page.njk
│ │ ├── contact.njk
│ │ ├── base.njk
│ │ ├── blog.njk
│ │ └── post.njk
├── robots.njk
├── contact
│ └── index.md
├── categories
│ ├── category
│ │ └── index.md
│ └── index.md
├── 404.md
├── sitemap.njk
├── index.md
└── about
│ └── index.md
├── .gitignore
├── resources
├── scss
│ ├── 04-layout
│ │ ├── _hero.scss
│ │ ├── _footer.scss
│ │ ├── _index.scss
│ │ ├── _main.scss
│ │ ├── _header.scss
│ │ ├── _nav.scss
│ │ ├── _mobile-nav.scss
│ │ └── _site.scss
│ ├── 06-pages
│ │ ├── _home.scss
│ │ ├── _index.scss
│ │ ├── _post.scss
│ │ └── _blog.scss
│ ├── 02-utilities
│ │ ├── _mixins.scss
│ │ ├── _index.scss
│ │ ├── _functions.scss
│ │ ├── _utilities.scss
│ │ └── _variables.scss
│ ├── 03-base
│ │ ├── _index.scss
│ │ ├── _links.scss
│ │ ├── _typography.scss
│ │ └── _reset.scss
│ ├── 01-config
│ │ ├── _index.scss
│ │ └── _config.scss
│ ├── 05-components
│ │ ├── _index.scss
│ │ ├── _pagination.scss
│ │ ├── _forms.scss
│ │ ├── _social-icons.scss
│ │ └── _buttons.scss
│ └── main.scss
└── js
│ ├── main.js
│ ├── modules
│ ├── mobile-nav
│ │ └── index.js
│ └── lazyload
│ │ └── index.js
│ └── utilities
│ ├── helpers
│ └── index.js
│ └── selectors
│ └── index.js
├── favicon.png
├── images
├── meta
│ ├── og.jpg
│ ├── twitter.jpg
│ └── apple-touch-icon.png
├── post-1.jpg
├── post-2.jpg
├── post-3.jpg
└── icons
│ └── icon-library.svg
├── utilities
├── filters
│ ├── helpers.js
│ └── dates.js
└── transforms
│ └── htmlminify.js
├── mix-manifest.json
├── netlify.toml
├── favicon.svg
├── package.json
├── webpack.mix.js
├── js
├── main.js
└── main.min.js
├── eleventy.config.js
├── README.md
└── css
├── main.css
└── main.min.css
/site/blog/blog.json:
--------------------------------------------------------------------------------
1 | {
2 | "layout": "post"
3 | }
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | dist/
4 | package-lock.json
5 |
--------------------------------------------------------------------------------
/resources/scss/04-layout/_hero.scss:
--------------------------------------------------------------------------------
1 |
2 | //========== Hero ==========//
3 |
--------------------------------------------------------------------------------
/resources/scss/06-pages/_home.scss:
--------------------------------------------------------------------------------
1 |
2 | //========== Homepage ==========//
3 |
--------------------------------------------------------------------------------
/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/josephdyer/skeleventy/HEAD/favicon.png
--------------------------------------------------------------------------------
/images/meta/og.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/josephdyer/skeleventy/HEAD/images/meta/og.jpg
--------------------------------------------------------------------------------
/images/post-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/josephdyer/skeleventy/HEAD/images/post-1.jpg
--------------------------------------------------------------------------------
/images/post-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/josephdyer/skeleventy/HEAD/images/post-2.jpg
--------------------------------------------------------------------------------
/images/post-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/josephdyer/skeleventy/HEAD/images/post-3.jpg
--------------------------------------------------------------------------------
/resources/scss/02-utilities/_mixins.scss:
--------------------------------------------------------------------------------
1 |
2 | //========== Mixins ==========//
3 |
4 |
--------------------------------------------------------------------------------
/images/meta/twitter.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/josephdyer/skeleventy/HEAD/images/meta/twitter.jpg
--------------------------------------------------------------------------------
/resources/scss/06-pages/_index.scss:
--------------------------------------------------------------------------------
1 |
2 | @import 'post';
3 | @import 'blog';
4 | @import 'home';
5 |
--------------------------------------------------------------------------------
/resources/scss/03-base/_index.scss:
--------------------------------------------------------------------------------
1 |
2 | @import 'reset';
3 | @import 'typography';
4 | @import 'links';
5 |
--------------------------------------------------------------------------------
/utilities/filters/helpers.js:
--------------------------------------------------------------------------------
1 |
2 | module.exports.spaceless = str => (
3 | str.replace(/\s/g, '')
4 | )
5 |
--------------------------------------------------------------------------------
/resources/js/main.js:
--------------------------------------------------------------------------------
1 |
2 | // Import local modules
3 | import '@modules/mobile-nav'
4 | import '@modules/lazyload'
5 |
--------------------------------------------------------------------------------
/resources/scss/01-config/_index.scss:
--------------------------------------------------------------------------------
1 |
2 | @import 'config';
3 | @import '../../../node_modules/gorko/gorko.scss';
4 |
--------------------------------------------------------------------------------
/images/meta/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/josephdyer/skeleventy/HEAD/images/meta/apple-touch-icon.png
--------------------------------------------------------------------------------
/site/globals/helpers.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 |
3 | // environment helper
4 | 'environment': process.env.ELEVENTY_ENV
5 | };
6 |
--------------------------------------------------------------------------------
/site/includes/components/logo.njk:
--------------------------------------------------------------------------------
1 | Skeleventy
2 |
--------------------------------------------------------------------------------
/resources/scss/02-utilities/_index.scss:
--------------------------------------------------------------------------------
1 |
2 | @import 'variables';
3 | @import 'functions';
4 | @import 'mixins';
5 | @import 'utilities';
6 |
--------------------------------------------------------------------------------
/resources/scss/05-components/_index.scss:
--------------------------------------------------------------------------------
1 |
2 | @import 'buttons';
3 | @import 'pagination';
4 | @import 'forms';
5 | @import 'social-icons';
6 |
--------------------------------------------------------------------------------
/resources/scss/04-layout/_footer.scss:
--------------------------------------------------------------------------------
1 |
2 | //========== Footer ==========//
3 |
4 | .footer-inner {
5 | align-items: center;
6 | justify-content: space-between;
7 | }
8 |
--------------------------------------------------------------------------------
/resources/scss/04-layout/_index.scss:
--------------------------------------------------------------------------------
1 |
2 | @import 'site';
3 | @import 'header';
4 | @import 'nav';
5 | @import 'mobile-nav';
6 | @import 'hero';
7 | @import 'main';
8 | @import 'footer';
9 |
--------------------------------------------------------------------------------
/mix-manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "/js/main.js": "/js/main.js",
3 | "/css/main.css": "/css/main.css",
4 | "/css/main.min.css": "/css/main.min.css",
5 | "/js/main.min.js": "/js/main.min.js"
6 | }
7 |
--------------------------------------------------------------------------------
/site/robots.njk:
--------------------------------------------------------------------------------
1 | ---
2 | permalink: robots.txt
3 | eleventyExcludeFromCollections: true
4 | hide_from_sitemap: true
5 | ---
6 |
7 | User-agent: *
8 | Disallow:
9 |
10 | Sitemap: {{ site.url }}/sitemap.xml
11 |
--------------------------------------------------------------------------------
/netlify.toml:
--------------------------------------------------------------------------------
1 | [build]
2 | command = "npm run production"
3 | publish = "public"
4 |
5 | [[headers]]
6 | for = "/*"
7 | [headers.values]
8 | X-Frame-Options = "SAMEORIGIN"
9 | X-XSS-Protection = "1; mode=block"
10 |
--------------------------------------------------------------------------------
/resources/scss/05-components/_pagination.scss:
--------------------------------------------------------------------------------
1 |
2 | //========== Pagination ==========//
3 |
4 | .pagination {
5 | --gap: #{get-size('1000')};
6 |
7 | .items {
8 | justify-content: space-between;
9 | padding: 0;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/site/includes/components/header.njk:
--------------------------------------------------------------------------------
1 |
2 |
{{ sub_heading }}
14 | 15 | {% endif %} 16 | 17 |Back to all categories
21 | -------------------------------------------------------------------------------- /resources/scss/05-components/_buttons.scss: -------------------------------------------------------------------------------- 1 | 2 | //========== Buttons ==========// 3 | 4 | .button { 5 | display: inline-block; 6 | background-color: get-color('secondary'); 7 | border: 0; 8 | border-radius: v(border-radius); 9 | color: get-color('primary'); 10 | padding: get-size('300') get-size('500'); 11 | transition: background-color v(transition-duration) v(transition-timing); 12 | @include apply-utility('weight', 'bold'); 13 | 14 | &:hover { 15 | @include apply-utility('bg', 'white'); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /utilities/filters/dates.js: -------------------------------------------------------------------------------- 1 | 2 | const to_month = new Intl.DateTimeFormat('en', { month: 'long' }); 3 | 4 | // timestamp date to YYYY-MM-DD 5 | module.exports.timestamp = date => ( 6 | date instanceof Date ? `${date.getUTCFullYear()}-${String(date.getUTCMonth() + 1).padStart(2, '0')}-${String(date.getUTCDate()).padStart(2, '0')}` : '' 7 | ) 8 | 9 | // human readable date for blog posts (DD MM, YYYY) 10 | module.exports.friendly = date => ( 11 | date instanceof Date ? date.getUTCDate() + ' ' + to_month.format(date) + ', ' + date.getUTCFullYear() : '' 12 | ) 13 | -------------------------------------------------------------------------------- /resources/scss/03-base/_links.scss: -------------------------------------------------------------------------------- 1 | 2 | //========== Links ==========// 3 | 4 | a { 5 | text-decoration: none; 6 | transition: color v(transition-duration) v(transition-timing); 7 | 8 | &:not([class]) { 9 | color: currentColor; 10 | border-bottom: v(border-size) solid get-color('secondary'); 11 | padding-bottom: .1rem; 12 | text-decoration-skip-ink: auto; 13 | 14 | &:hover { 15 | @include apply-utility('color', 'secondary'); 16 | } 17 | } 18 | } 19 | 20 | :focus { 21 | outline: 1px solid get-color('secondary'); 22 | outline-offset: .25rem; 23 | } 24 | 25 | -------------------------------------------------------------------------------- /site/globals/site.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Skeleventy", 3 | "url": "https://skeleventy.netlify.app", 4 | "author": { 5 | "name": "Mill Burray", 6 | "handle": "@joe_dyer1" 7 | }, 8 | "images": { 9 | "favicon": "/favicon.png", 10 | "favicon_svg": "/favicon.svg", 11 | "apple_touch_icon": "/images/meta/apple-touch-icon.png", 12 | "twitter": "/images/meta/twitter.jpg", 13 | "og": "/images/meta/og.jpg" 14 | }, 15 | "social_links": { 16 | "github": "https://github.com/josephdyer/skeleventy", 17 | "twitter": "https://twitter.com/joe_dyer1" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /resources/scss/04-layout/_header.scss: -------------------------------------------------------------------------------- 1 | 2 | //========== Header ==========// 3 | 4 | // logo 5 | .logo { 6 | --logo-size: #{get-size('500')}; 7 | font-size: v(logo-size); 8 | margin: 0 auto; 9 | 10 | &:hover { 11 | @include apply-utility('color', 'secondary'); 12 | } 13 | } 14 | 15 | @include media-query('mobileXL') { 16 | 17 | .logo { 18 | --logo-size: #{get-size('600')}; 19 | margin: 0 auto 0 0; 20 | } 21 | } 22 | 23 | @include media-query('mobileXL') { 24 | 25 | .header-inner { 26 | align-items: center; 27 | justify-content: space-between; 28 | } 29 | } 30 | 31 | 32 | -------------------------------------------------------------------------------- /site/includes/layouts/page.njk: -------------------------------------------------------------------------------- 1 | --- 2 | layout: base 3 | --- 4 | 5 |{{ sub_heading }}
16 | 17 | {% endif %} 18 | 19 |{{ sub_heading }}
16 | 17 | {% endif %} 18 | 19 |{{ sub_heading }}
16 | 17 | {% endif %} 18 | 19 | 49 | 50 |