Initial commit
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
node_modules/*
|
||||||
|
dist/*
|
22
LICENSE
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
Copyright (c) 2013-2020 Ghost Foundation
|
||||||
|
|
||||||
|
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.
|
70
README.md
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
# Casper
|
||||||
|
|
||||||
|
The default theme for [Ghost](http://github.com/tryghost/ghost/). This is the latest development version of Casper! If you're just looking to download the latest release, head over to the [releases](https://github.com/TryGhost/Casper/releases) page.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
![screenshot-desktop](https://user-images.githubusercontent.com/353959/66987533-40eae100-f0c1-11e9-822e-cbaf38fb8e3f.png)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# First time using a Ghost theme?
|
||||||
|
|
||||||
|
Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes.
|
||||||
|
|
||||||
|
This theme has lots of code comments to help explain what's going on just by reading the code. Once you feel comfortable with how everything works, we also have full [theme API documentation](https://ghost.org/docs/api/handlebars-themes/) which explains every possible Handlebars helper and template.
|
||||||
|
|
||||||
|
**The main files are:**
|
||||||
|
|
||||||
|
- `default.hbs` - The parent template file, which includes your global header/footer
|
||||||
|
- `index.hbs` - The main template to generate a list of posts, usually the home page
|
||||||
|
- `post.hbs` - The template used to render individual posts
|
||||||
|
- `page.hbs` - Used for individual pages
|
||||||
|
- `tag.hbs` - Used for tag archives, eg. "all posts tagged with `news`"
|
||||||
|
- `author.hbs` - Used for author archives, eg. "all posts written by Jamie"
|
||||||
|
|
||||||
|
One neat trick is that you can also create custom one-off templates by adding the slug of a page to a template file. For example:
|
||||||
|
|
||||||
|
- `page-about.hbs` - Custom template for an `/about/` page
|
||||||
|
- `tag-news.hbs` - Custom template for `/tag/news/` archive
|
||||||
|
- `author-ali.hbs` - Custom template for `/author/ali/` archive
|
||||||
|
|
||||||
|
|
||||||
|
# Development
|
||||||
|
|
||||||
|
Casper styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node](https://nodejs.org/), [Yarn](https://yarnpkg.com/) and [Gulp](https://gulpjs.com) installed globally. After that, from the theme's root directory:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# install dependencies
|
||||||
|
yarn install
|
||||||
|
|
||||||
|
# run development server
|
||||||
|
yarn dev
|
||||||
|
```
|
||||||
|
|
||||||
|
Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically.
|
||||||
|
|
||||||
|
The `zip` Gulp task packages the theme files into `dist/<theme-name>.zip`, which you can then upload to your site.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# create .zip file
|
||||||
|
yarn zip
|
||||||
|
```
|
||||||
|
|
||||||
|
# PostCSS Features Used
|
||||||
|
|
||||||
|
- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser.
|
||||||
|
- Variables - Simple pure CSS variables
|
||||||
|
- [Color Function](https://github.com/postcss/postcss-color-function)
|
||||||
|
|
||||||
|
|
||||||
|
# SVG Icons
|
||||||
|
|
||||||
|
Casper uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`.
|
||||||
|
|
||||||
|
You can add your own SVG icons in the same manner.
|
||||||
|
|
||||||
|
|
||||||
|
# Copyright & License
|
||||||
|
|
||||||
|
Copyright (c) 2013-2020 Ghost Foundation - Released under the [MIT license](LICENSE).
|
2
assets/built/casper.js
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
!function(o){"use strict";o.fn.fitVids=function(e){var t,i,n={customSelector:null,ignore:null};return document.getElementById("fit-vids-style")||(t=document.head||document.getElementsByTagName("head")[0],(i=document.createElement("div")).innerHTML='<p>x</p><style id="fit-vids-style">.fluid-width-video-container{flex-grow: 1;width:100%;}.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}</style>',t.appendChild(i.childNodes[1])),e&&o.extend(n,e),this.each(function(){var e=['iframe[src*="player.vimeo.com"]','iframe[src*="youtube.com"]','iframe[src*="youtube-nocookie.com"]','iframe[src*="kickstarter.com"][src*="video.html"]',"object","embed"];n.customSelector&&e.push(n.customSelector);var r=".fitvidsignore";n.ignore&&(r=r+", "+n.ignore);var e=o(this).find(e.join(","));(e=(e=e.not("object object")).not(r)).each(function(){var e,t,i=o(this);0<i.parents(r).length||"embed"===this.tagName.toLowerCase()&&i.parent("object").length||i.parent(".fluid-width-video-wrapper").length||(i.css("height")||i.css("width")||!isNaN(i.attr("height"))&&!isNaN(i.attr("width"))||(i.attr("height",9),i.attr("width",16)),e=("object"===this.tagName.toLowerCase()||i.attr("height")&&!isNaN(parseInt(i.attr("height"),10))?parseInt(i.attr("height"),10):i.height())/(isNaN(parseInt(i.attr("width"),10))?i.width():parseInt(i.attr("width"),10)),i.attr("name")||(t="fitvid"+o.fn.fitVids._count,i.attr("name",t),o.fn.fitVids._count++),i.wrap('<div class="fluid-width-video-container"><div class="fluid-width-video-wrapper"></div></div>').parent(".fluid-width-video-wrapper").css("padding-top",100*e+"%"),i.removeAttr("height").removeAttr("width"))})})},o.fn.fitVids._count=0}(window.jQuery||window.Zepto),function(e){e.addEventListener("DOMContentLoaded",function(){e.querySelectorAll(".kg-gallery-image img").forEach(function(e){var t=e.closest(".kg-gallery-image"),i=e.attributes.width.value,e=e.attributes.height.value;t.style.flex=i/e+" 1 0%"})})}((window,document)),function(t,i){var r,n,o,s,a,d,l,c=i.querySelector("link[rel=next]");function u(){if(404===this.status)return t.removeEventListener("scroll",f),void t.removeEventListener("resize",v);this.response.querySelectorAll(".post-card").forEach(function(e){r.appendChild(i.importNode(e,!0))});var e=this.response.querySelector("link[rel=next]");e?c.href=e.href:(t.removeEventListener("scroll",f),t.removeEventListener("resize",v)),l=i.documentElement.scrollHeight,s=o=!1}function e(){var e;s||(a+d<=l-n?o=!1:(s=!0,(e=new t.XMLHttpRequest).responseType="document",e.addEventListener("load",u),e.open("GET",c.href),e.send(null)))}function h(){o||t.requestAnimationFrame(e),o=!0}function f(){a=t.scrollY,h()}function v(){d=t.innerHeight,l=i.documentElement.scrollHeight,h()}!c||(r=i.querySelector(".post-feed"))&&(s=o=!(n=300),a=t.scrollY,d=t.innerHeight,l=i.documentElement.scrollHeight,t.addEventListener("scroll",f,{passive:!0}),t.addEventListener("resize",v),h())}(window,document),function(s,a){s.Casper||(s.Casper={}),s.Casper.stickyNavTitle=function(e){var t=a.querySelector(e.navSelector),i=a.querySelector(e.titleSelector),r=s.scrollY,n=!1;function o(){i.getBoundingClientRect().top+s.scrollY+(i.offsetHeight+35)<=r?t.classList.add(e.activeClass):t.classList.remove(e.activeClass),n=!1}s.addEventListener("scroll",function(){r=s.scrollY,function(){n||requestAnimationFrame(o);n=!0}()},{passive:!0}),o()}}(window,document);
|
||||||
|
//# sourceMappingURL=casper.js.map
|
1
assets/built/casper.js.map
Normal file
2
assets/built/global.css
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
a,abbr,acronym,address,applet,article,aside,audio,big,blockquote,body,canvas,caption,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}img{max-width:100%}html{box-sizing:border-box;font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}*,:after,:before{box-sizing:inherit}a{background-color:transparent}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn,em,i{font-style:italic}h1{margin:.67em 0;font-size:2em}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}mark{background-color:#fdffb6}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;color:inherit;font:inherit}button{overflow:visible;border:none}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input:focus{outline:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{padding:0;border:0}textarea{overflow:auto}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}html{overflow-y:scroll;font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body,html{overflow-x:hidden}body{color:#313b3f;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:1.6rem;line-height:1.6em;font-weight:400;font-style:normal;letter-spacing:0;text-rendering:optimizeLegibility;background:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-font-feature-settings:"liga" on}::-moz-selection{text-shadow:none;background:#cbeafb}::selection{text-shadow:none;background:#cbeafb}hr{position:relative;display:block;width:100%;margin:2.5em 0 3.5em;padding:0;height:1px;border:0;border-top:1px solid #e3e9ed}audio,canvas,iframe,img,svg,video{vertical-align:middle}fieldset{margin:0;padding:0;border:0}textarea{resize:vertical}blockquote,dl,ol,p,ul{margin:0 0 1.5em}ol,ul{padding-left:1.3em;padding-right:1.5em}ol ol,ol ul,ul ol,ul ul{margin:.5em 0 1em}ul{list-style:disc}ol{list-style:decimal}ol,ul{max-width:100%}li{margin:.5em 0;padding-left:.3em;line-height:1.6em}dt{float:left;margin:0 20px 0 0;width:120px;color:#15171a;font-weight:500;text-align:right}dd{margin:0 0 5px;text-align:left}blockquote{margin:1.5em 0;padding:0 1.6em;border-left:.5em solid #e5eff5}blockquote p{margin:.8em 0;font-size:1.2em;font-weight:300}blockquote small{display:inline-block;margin:.8em 0 .8em 1.5em;font-size:.9em;opacity:.8}blockquote small:before{content:"\2014 \00A0"}blockquote cite{font-weight:700}blockquote cite a{font-weight:400}a{color:#26a8ed;text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4,h5,h6{margin-top:0;line-height:1.15;font-weight:600;text-rendering:optimizeLegibility}h1{margin:0 0 .5em;font-size:5.5rem;font-weight:600}@media (max-width:500px){h1{font-size:2.2rem}}h2{margin:1.5em 0 .5em;font-size:2.2rem}@media (max-width:500px){h2{font-size:1.8rem}}h3{margin:1.5em 0 .5em;font-size:1.8rem;font-weight:500}@media (max-width:500px){h3{font-size:1.7rem}}h4{margin:1.5em 0 .5em;font-size:1.6rem;font-weight:500}h5,h6{margin:1.5em 0 .5em;font-size:1.4rem;font-weight:500}.isso-postbox>.form-wrapper>.auth-section .post-action>input:hover{background-color:#ddd}.isso-postbox>.form-wrapper>.auth-section .input-wrapper input{padding:.5rem;max-width:100%;border-radius:3px;background-color:#fff;line-height:1.4em;border:1px solid rgba(0,0,0,.2);box-shadow:0 1px 2px rgba(0,0,0,.1);margin-right:.5rem;color:#666}.isso-comment>div.text-wrapper>.isso-comment-header .author{font-weight:700;color:#666}.isso-postbox>.form-wrapper>.auth-section .post-action>input{padding:.5rem 1rem!important;border-radius:2px;border:1px solid #ccc;background-color:#ddd;cursor:pointer;outline:0;line-height:1.4em;box-shadow:0 1px 2px rgba(0,0,0,.1);color:#222}#isso-thread>h4{color:#777;font-weight:700}
|
||||||
|
/*# sourceMappingURL=global.css.map */
|
1
assets/built/global.css.map
Normal file
2
assets/built/isso.css
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
.isso-postbox>.form-wrapper>.auth-section .post-action>input:hover{background-color:#ddd}.isso-postbox>.form-wrapper>.auth-section .input-wrapper input{padding:.5rem;max-width:100%;border-radius:3px;background-color:#fff;line-height:1.4em;border:1px solid rgba(0,0,0,.2);box-shadow:0 1px 2px rgba(0,0,0,.1);margin-right:.5rem;color:#666}.isso-comment>div.text-wrapper>.isso-comment-header .author{font-weight:700;color:#666}.isso-postbox>.form-wrapper>.auth-section .post-action>input{padding:.5rem 1rem!important;border-radius:2px;border:1px solid #ccc;background-color:#ddd;cursor:pointer;outline:0;line-height:1.4em;box-shadow:0 1px 2px rgba(0,0,0,.1);color:#222}#isso-thread>h4{color:#777;font-weight:700}
|
||||||
|
/*# sourceMappingURL=isso.css.map */
|
1
assets/built/isso.css.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"sources":["isso.css"],"names":[],"mappings":"AAAA,mEACI,qBACJ,CAEA,+DACI,aAAe,CACf,cAAe,CACf,iBAAkB,CAClB,qBAAsB,CACtB,iBAAkB,CAClB,+BAAoC,CACpC,mCAAwC,CACxC,kBAAoB,CACpB,UACJ,CAEA,4DACI,eAAiB,CACjB,UACJ,CAEA,6DACI,4BAA+B,CAC/B,iBAAkB,CAClB,qBAAsB,CACtB,qBAAsB,CACtB,cAAe,CACf,SAAU,CACV,iBAAkB,CAClB,mCAAwC,CACxC,UACJ,CAEA,gBACI,UAAW,CACX,eACJ","file":"isso.css","sourcesContent":[".isso-postbox > .form-wrapper > .auth-section .post-action > input:hover {\n background-color: #ddd;\n}\n\n.isso-postbox > .form-wrapper > .auth-section .input-wrapper input {\n padding: 0.5rem;\n max-width: 100%;\n border-radius: 3px;\n background-color: #fff;\n line-height: 1.4em;\n border: 1px solid rgba(0, 0, 0, 0.2);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n margin-right: 0.5rem;\n color: #666;\n}\n\n.isso-comment > div.text-wrapper > .isso-comment-header .author {\n font-weight: bold;\n color: #666;\n}\n\n.isso-postbox > .form-wrapper > .auth-section .post-action > input {\n padding: 0.5rem 1rem !important;\n border-radius: 2px;\n border: 1px solid #ccc;\n background-color: #ddd;\n cursor: pointer;\n outline: 0;\n line-height: 1.4em;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n color: #222;\n}\n\n#isso-thread > h4 {\n color: #777;\n font-weight: bold;\n}\n"]}
|
2
assets/built/screen.css
Normal file
1
assets/built/screen.css.map
Normal file
240
assets/css/csscomb.json
Normal file
@ -0,0 +1,240 @@
|
|||||||
|
{
|
||||||
|
"remove-empty-rulesets": true,
|
||||||
|
"always-semicolon": true,
|
||||||
|
"color-case": "lower",
|
||||||
|
"block-indent": " ",
|
||||||
|
"color-shorthand": true,
|
||||||
|
"element-case": "lower",
|
||||||
|
"eof-newline": true,
|
||||||
|
"leading-zero": true,
|
||||||
|
"quotes": "double",
|
||||||
|
"space-before-colon": "",
|
||||||
|
"space-after-colon": " ",
|
||||||
|
"space-before-combinator": " ",
|
||||||
|
"space-after-combinator": " ",
|
||||||
|
"space-between-declarations": "\n",
|
||||||
|
"space-before-opening-brace": " ",
|
||||||
|
"space-after-opening-brace": "\n",
|
||||||
|
"space-after-selector-delimiter": "\n",
|
||||||
|
"space-before-selector-delimiter": "",
|
||||||
|
"space-before-closing-brace": "\n",
|
||||||
|
"strip-spaces": true,
|
||||||
|
"tab-size": 4,
|
||||||
|
"unitless-zero": true,
|
||||||
|
"sort-order": [ [
|
||||||
|
"content",
|
||||||
|
"visibility",
|
||||||
|
"position",
|
||||||
|
"top",
|
||||||
|
"right",
|
||||||
|
"bottom",
|
||||||
|
"left",
|
||||||
|
"z-index",
|
||||||
|
"order",
|
||||||
|
"flex",
|
||||||
|
"flex-grow",
|
||||||
|
"flex-shrink",
|
||||||
|
"flex-basis",
|
||||||
|
"align-self",
|
||||||
|
"display",
|
||||||
|
"flex-flow",
|
||||||
|
"flex-direction",
|
||||||
|
"justify-content",
|
||||||
|
"align-items",
|
||||||
|
"align-content",
|
||||||
|
"flex-wrap",
|
||||||
|
"flex-order",
|
||||||
|
"flex-pack",
|
||||||
|
"flex-align",
|
||||||
|
"float",
|
||||||
|
"clear",
|
||||||
|
"box-sizing",
|
||||||
|
"width",
|
||||||
|
"height",
|
||||||
|
"min-width",
|
||||||
|
"min-height",
|
||||||
|
"max-width",
|
||||||
|
"max-height",
|
||||||
|
"overflow",
|
||||||
|
"overflow-x",
|
||||||
|
"overflow-y",
|
||||||
|
"clip",
|
||||||
|
"margin",
|
||||||
|
"margin-top",
|
||||||
|
"margin-right",
|
||||||
|
"margin-bottom",
|
||||||
|
"margin-left",
|
||||||
|
"padding",
|
||||||
|
"padding-top",
|
||||||
|
"padding-right",
|
||||||
|
"padding-bottom",
|
||||||
|
"padding-left",
|
||||||
|
"outline",
|
||||||
|
"outline-width",
|
||||||
|
"outline-style",
|
||||||
|
"outline-color",
|
||||||
|
"outline-offset",
|
||||||
|
"border",
|
||||||
|
"border-spacing",
|
||||||
|
"border-collapse",
|
||||||
|
"border-width",
|
||||||
|
"border-style",
|
||||||
|
"border-color",
|
||||||
|
"border-top",
|
||||||
|
"border-top-width",
|
||||||
|
"border-top-style",
|
||||||
|
"border-top-color",
|
||||||
|
"border-right",
|
||||||
|
"border-right-width",
|
||||||
|
"border-right-style",
|
||||||
|
"border-right-color",
|
||||||
|
"border-bottom",
|
||||||
|
"border-bottom-width",
|
||||||
|
"border-bottom-style",
|
||||||
|
"border-bottom-color",
|
||||||
|
"border-left",
|
||||||
|
"border-left-width",
|
||||||
|
"border-left-style",
|
||||||
|
"border-left-color",
|
||||||
|
"border-image",
|
||||||
|
"border-image-source",
|
||||||
|
"border-image-slice",
|
||||||
|
"border-image-width",
|
||||||
|
"border-image-outset",
|
||||||
|
"border-image-repeat",
|
||||||
|
"border-top-image",
|
||||||
|
"border-right-image",
|
||||||
|
"border-bottom-image",
|
||||||
|
"border-left-image",
|
||||||
|
"border-corner-image",
|
||||||
|
"border-top-left-image",
|
||||||
|
"border-top-right-image",
|
||||||
|
"border-bottom-right-image",
|
||||||
|
"border-bottom-left-image",
|
||||||
|
"table-layout",
|
||||||
|
"caption-side",
|
||||||
|
"empty-cells",
|
||||||
|
"list-style",
|
||||||
|
"list-style-position",
|
||||||
|
"list-style-type",
|
||||||
|
"list-style-image",
|
||||||
|
"quotes",
|
||||||
|
"counter-increment",
|
||||||
|
"counter-reset",
|
||||||
|
"vertical-align",
|
||||||
|
"stroke",
|
||||||
|
"fill",
|
||||||
|
"stroke-width",
|
||||||
|
"stroke-opacity",
|
||||||
|
"color",
|
||||||
|
"font",
|
||||||
|
"font-family",
|
||||||
|
"font-size",
|
||||||
|
"line-height",
|
||||||
|
"font-weight",
|
||||||
|
"font-style",
|
||||||
|
"font-variant",
|
||||||
|
"font-size-adjust",
|
||||||
|
"font-stretch",
|
||||||
|
"text-rendering",
|
||||||
|
"font-feature-settings",
|
||||||
|
"letter-spacing",
|
||||||
|
"hyphens",
|
||||||
|
"text-align",
|
||||||
|
"text-align-last",
|
||||||
|
"text-decoration",
|
||||||
|
"text-emphasis",
|
||||||
|
"text-emphasis-position",
|
||||||
|
"text-emphasis-style",
|
||||||
|
"text-emphasis-color",
|
||||||
|
"text-indent",
|
||||||
|
"text-justify",
|
||||||
|
"text-outline",
|
||||||
|
"text-transform",
|
||||||
|
"text-wrap",
|
||||||
|
"text-overflow",
|
||||||
|
"text-overflow-ellipsis",
|
||||||
|
"text-overflow-mode",
|
||||||
|
"text-shadow",
|
||||||
|
"white-space",
|
||||||
|
"word-spacing",
|
||||||
|
"word-wrap",
|
||||||
|
"word-break",
|
||||||
|
"tab-size",
|
||||||
|
"user-select",
|
||||||
|
"src",
|
||||||
|
"resize",
|
||||||
|
"cursor",
|
||||||
|
"nav-index",
|
||||||
|
"nav-up",
|
||||||
|
"nav-right",
|
||||||
|
"nav-down",
|
||||||
|
"nav-left",
|
||||||
|
"background",
|
||||||
|
"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader",
|
||||||
|
"background-color",
|
||||||
|
"background-image",
|
||||||
|
"background-size",
|
||||||
|
"background-attachment",
|
||||||
|
"background-position",
|
||||||
|
"background-position-x",
|
||||||
|
"background-position-y",
|
||||||
|
"background-clip",
|
||||||
|
"background-origin",
|
||||||
|
"background-repeat",
|
||||||
|
"border-radius",
|
||||||
|
"border-top-left-radius",
|
||||||
|
"border-top-right-radius",
|
||||||
|
"border-bottom-right-radius",
|
||||||
|
"border-bottom-left-radius",
|
||||||
|
"box-decoration-break",
|
||||||
|
"box-shadow",
|
||||||
|
"opacity",
|
||||||
|
"filter:progid:DXImageTransform.Microsoft.Alpha(Opacity",
|
||||||
|
"filter",
|
||||||
|
"transition",
|
||||||
|
"transition-delay",
|
||||||
|
"transition-timing-function",
|
||||||
|
"transition-duration",
|
||||||
|
"transition-property",
|
||||||
|
"transform",
|
||||||
|
"transform-origin",
|
||||||
|
"animation",
|
||||||
|
"animation-name",
|
||||||
|
"animation-duration",
|
||||||
|
"animation-play-state",
|
||||||
|
"animation-timing-function",
|
||||||
|
"animation-delay",
|
||||||
|
"animation-iteration-count",
|
||||||
|
"animation-direction",
|
||||||
|
"animation-fill-mode",
|
||||||
|
"pointer-events",
|
||||||
|
"unicode-bidi",
|
||||||
|
"direction",
|
||||||
|
"columns",
|
||||||
|
"column-span",
|
||||||
|
"column-width",
|
||||||
|
"column-count",
|
||||||
|
"column-fill",
|
||||||
|
"column-gap",
|
||||||
|
"column-rule",
|
||||||
|
"column-rule-width",
|
||||||
|
"column-rule-style",
|
||||||
|
"column-rule-color",
|
||||||
|
"break-before",
|
||||||
|
"break-inside",
|
||||||
|
"break-after",
|
||||||
|
"page-break-before",
|
||||||
|
"page-break-inside",
|
||||||
|
"page-break-after",
|
||||||
|
"orphans",
|
||||||
|
"widows",
|
||||||
|
"zoom",
|
||||||
|
"max-zoom",
|
||||||
|
"min-zoom",
|
||||||
|
"user-zoom",
|
||||||
|
"orientation",
|
||||||
|
"-webkit-overflow-scrolling",
|
||||||
|
"-ms-overflow-scrolling"
|
||||||
|
] ]
|
||||||
|
}
|
528
assets/css/global.css
Normal file
@ -0,0 +1,528 @@
|
|||||||
|
/* Variables
|
||||||
|
/* ---------------------------------------------------------- */
|
||||||
|
|
||||||
|
:root {
|
||||||
|
/* Colours */
|
||||||
|
--blue: #3eb0ef;
|
||||||
|
--green: #a4d037;
|
||||||
|
--purple: #ad26b4;
|
||||||
|
--yellow: #fecd35;
|
||||||
|
--red: #f05230;
|
||||||
|
--darkgrey: #15171a;
|
||||||
|
--midgrey: #738a94;
|
||||||
|
--lightgrey: #c5d2d9;
|
||||||
|
--whitegrey: #e5eff5;
|
||||||
|
--pink: #fa3a57;
|
||||||
|
--brown: #a3821a;
|
||||||
|
--darkmode: color(var(--darkgrey) l(+2%));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Reset
|
||||||
|
/* ---------------------------------------------------------- */
|
||||||
|
|
||||||
|
html,
|
||||||
|
body,
|
||||||
|
div,
|
||||||
|
span,
|
||||||
|
applet,
|
||||||
|
object,
|
||||||
|
iframe,
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6,
|
||||||
|
p,
|
||||||
|
blockquote,
|
||||||
|
pre,
|
||||||
|
a,
|
||||||
|
abbr,
|
||||||
|
acronym,
|
||||||
|
address,
|
||||||
|
big,
|
||||||
|
cite,
|
||||||
|
code,
|
||||||
|
del,
|
||||||
|
dfn,
|
||||||
|
em,
|
||||||
|
img,
|
||||||
|
ins,
|
||||||
|
kbd,
|
||||||
|
q,
|
||||||
|
s,
|
||||||
|
samp,
|
||||||
|
small,
|
||||||
|
strike,
|
||||||
|
strong,
|
||||||
|
sub,
|
||||||
|
sup,
|
||||||
|
tt,
|
||||||
|
var,
|
||||||
|
dl,
|
||||||
|
dt,
|
||||||
|
dd,
|
||||||
|
ol,
|
||||||
|
ul,
|
||||||
|
li,
|
||||||
|
fieldset,
|
||||||
|
form,
|
||||||
|
label,
|
||||||
|
legend,
|
||||||
|
table,
|
||||||
|
caption,
|
||||||
|
tbody,
|
||||||
|
tfoot,
|
||||||
|
thead,
|
||||||
|
tr,
|
||||||
|
th,
|
||||||
|
td,
|
||||||
|
article,
|
||||||
|
aside,
|
||||||
|
canvas,
|
||||||
|
details,
|
||||||
|
embed,
|
||||||
|
figure,
|
||||||
|
figcaption,
|
||||||
|
footer,
|
||||||
|
header,
|
||||||
|
hgroup,
|
||||||
|
menu,
|
||||||
|
nav,
|
||||||
|
output,
|
||||||
|
ruby,
|
||||||
|
section,
|
||||||
|
summary,
|
||||||
|
time,
|
||||||
|
mark,
|
||||||
|
audio,
|
||||||
|
video {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
font: inherit;
|
||||||
|
font-size: 100%;
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
ol,
|
||||||
|
ul {
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
blockquote,
|
||||||
|
q {
|
||||||
|
quotes: none;
|
||||||
|
}
|
||||||
|
blockquote:before,
|
||||||
|
blockquote:after,
|
||||||
|
q:before,
|
||||||
|
q:after {
|
||||||
|
content: "";
|
||||||
|
content: none;
|
||||||
|
}
|
||||||
|
table {
|
||||||
|
border-spacing: 0;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
html {
|
||||||
|
box-sizing: border-box;
|
||||||
|
font-family: sans-serif;
|
||||||
|
|
||||||
|
-ms-text-size-adjust: 100%;
|
||||||
|
-webkit-text-size-adjust: 100%;
|
||||||
|
}
|
||||||
|
*,
|
||||||
|
*:before,
|
||||||
|
*:after {
|
||||||
|
box-sizing: inherit;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
a:active,
|
||||||
|
a:hover {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
b,
|
||||||
|
strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
i,
|
||||||
|
em,
|
||||||
|
dfn {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
margin: 0.67em 0;
|
||||||
|
font-size: 2em;
|
||||||
|
}
|
||||||
|
small {
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
sub,
|
||||||
|
sup {
|
||||||
|
position: relative;
|
||||||
|
font-size: 75%;
|
||||||
|
line-height: 0;
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
sup {
|
||||||
|
top: -0.5em;
|
||||||
|
}
|
||||||
|
sub {
|
||||||
|
bottom: -0.25em;
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
svg:not(:root) {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
mark {
|
||||||
|
background-color: #fdffb6;
|
||||||
|
}
|
||||||
|
code,
|
||||||
|
kbd,
|
||||||
|
pre,
|
||||||
|
samp {
|
||||||
|
font-family: monospace, monospace;
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
button,
|
||||||
|
input,
|
||||||
|
optgroup,
|
||||||
|
select,
|
||||||
|
textarea {
|
||||||
|
margin: 0; /* 3 */
|
||||||
|
color: inherit; /* 1 */
|
||||||
|
font: inherit; /* 2 */
|
||||||
|
}
|
||||||
|
button {
|
||||||
|
overflow: visible;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
button,
|
||||||
|
select {
|
||||||
|
text-transform: none;
|
||||||
|
}
|
||||||
|
button,
|
||||||
|
html input[type="button"],
|
||||||
|
/* 1 */
|
||||||
|
input[type="reset"],
|
||||||
|
input[type="submit"] {
|
||||||
|
cursor: pointer; /* 3 */
|
||||||
|
|
||||||
|
-webkit-appearance: button; /* 2 */
|
||||||
|
}
|
||||||
|
button[disabled],
|
||||||
|
html input[disabled] {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
button::-moz-focus-inner,
|
||||||
|
input::-moz-focus-inner {
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
input {
|
||||||
|
line-height: normal;
|
||||||
|
}
|
||||||
|
input:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
input[type="checkbox"],
|
||||||
|
input[type="radio"] {
|
||||||
|
box-sizing: border-box; /* 1 */
|
||||||
|
padding: 0; /* 2 */
|
||||||
|
}
|
||||||
|
input[type="number"]::-webkit-inner-spin-button,
|
||||||
|
input[type="number"]::-webkit-outer-spin-button {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
input[type="search"] {
|
||||||
|
box-sizing: content-box; /* 2 */
|
||||||
|
|
||||||
|
-webkit-appearance: textfield; /* 1 */
|
||||||
|
}
|
||||||
|
input[type="search"]::-webkit-search-cancel-button,
|
||||||
|
input[type="search"]::-webkit-search-decoration {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
}
|
||||||
|
legend {
|
||||||
|
padding: 0; /* 2 */
|
||||||
|
border: 0; /* 1 */
|
||||||
|
}
|
||||||
|
textarea {
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
table {
|
||||||
|
border-spacing: 0;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
td,
|
||||||
|
th {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
Base styles: opinionated defaults
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
html {
|
||||||
|
overflow-x: hidden;
|
||||||
|
overflow-y: scroll;
|
||||||
|
font-size: 62.5%;
|
||||||
|
|
||||||
|
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
overflow-x: hidden;
|
||||||
|
color: color(var(--midgrey) l(-30%));
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
|
||||||
|
Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
|
||||||
|
font-size: 1.6rem;
|
||||||
|
line-height: 1.6em;
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
letter-spacing: 0;
|
||||||
|
text-rendering: optimizeLegibility;
|
||||||
|
background: #fff;
|
||||||
|
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
-moz-font-feature-settings: "liga" on;
|
||||||
|
}
|
||||||
|
|
||||||
|
::selection {
|
||||||
|
text-shadow: none;
|
||||||
|
background: color(var(--blue) lightness(+30%));
|
||||||
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
position: relative;
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
margin: 2.5em 0 3.5em;
|
||||||
|
padding: 0;
|
||||||
|
height: 1px;
|
||||||
|
border: 0;
|
||||||
|
border-top: 1px solid color(var(--lightgrey) l(+10%));
|
||||||
|
}
|
||||||
|
|
||||||
|
audio,
|
||||||
|
canvas,
|
||||||
|
iframe,
|
||||||
|
img,
|
||||||
|
svg,
|
||||||
|
video {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea {
|
||||||
|
resize: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
p,
|
||||||
|
ul,
|
||||||
|
ol,
|
||||||
|
dl,
|
||||||
|
blockquote {
|
||||||
|
margin: 0 0 1.5em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol,
|
||||||
|
ul {
|
||||||
|
padding-left: 1.3em;
|
||||||
|
padding-right: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol ol,
|
||||||
|
ul ul,
|
||||||
|
ul ol,
|
||||||
|
ol ul {
|
||||||
|
margin: 0.5em 0 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
list-style: disc;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol {
|
||||||
|
list-style: decimal;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul,
|
||||||
|
ol {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
margin: 0.5em 0;
|
||||||
|
padding-left: 0.3em;
|
||||||
|
line-height: 1.6em;
|
||||||
|
}
|
||||||
|
|
||||||
|
dt {
|
||||||
|
float: left;
|
||||||
|
margin: 0 20px 0 0;
|
||||||
|
width: 120px;
|
||||||
|
color: var(--darkgrey);
|
||||||
|
font-weight: 500;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
dd {
|
||||||
|
margin: 0 0 5px 0;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
margin: 1.5em 0;
|
||||||
|
padding: 0 1.6em 0 1.6em;
|
||||||
|
border-left: var(--whitegrey) 0.5em solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote p {
|
||||||
|
margin: 0.8em 0;
|
||||||
|
font-size: 1.2em;
|
||||||
|
font-weight: 300;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote small {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0.8em 0 0.8em 1.5em;
|
||||||
|
font-size: 0.9em;
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
/* Quotation marks */
|
||||||
|
blockquote small:before {
|
||||||
|
content: "\2014 \00A0";
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote cite {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
blockquote cite a {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: color(var(--blue) l(-5%));
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6 {
|
||||||
|
margin-top: 0;
|
||||||
|
line-height: 1.15;
|
||||||
|
font-weight: 600;
|
||||||
|
text-rendering: optimizeLegibility;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
margin: 0 0 0.5em 0;
|
||||||
|
font-size: 5.5rem;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
@media (max-width: 500px) {
|
||||||
|
h1 {
|
||||||
|
font-size: 2.2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
margin: 1.5em 0 0.5em 0;
|
||||||
|
font-size: 2.2rem;
|
||||||
|
}
|
||||||
|
@media (max-width: 500px) {
|
||||||
|
h2 {
|
||||||
|
font-size: 1.8rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
margin: 1.5em 0 0.5em 0;
|
||||||
|
font-size: 1.8rem;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
@media (max-width: 500px) {
|
||||||
|
h3 {
|
||||||
|
font-size: 1.7rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
margin: 1.5em 0 0.5em 0;
|
||||||
|
font-size: 1.6rem;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
h5 {
|
||||||
|
margin: 1.5em 0 0.5em 0;
|
||||||
|
font-size: 1.4rem;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
margin: 1.5em 0 0.5em 0;
|
||||||
|
font-size: 1.4rem;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 13. Isso styling */
|
||||||
|
|
||||||
|
.isso-postbox > .form-wrapper > .auth-section .post-action > input:hover {
|
||||||
|
background-color: #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.isso-postbox > .form-wrapper > .auth-section .input-wrapper input {
|
||||||
|
padding: 0.5rem;
|
||||||
|
max-width: 100%;
|
||||||
|
border-radius: 3px;
|
||||||
|
background-color: #fff;
|
||||||
|
line-height: 1.4em;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.2);
|
||||||
|
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
|
||||||
|
margin-right: 0.5rem;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.isso-comment > div.text-wrapper > .isso-comment-header .author {
|
||||||
|
font-weight: bold;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.isso-postbox > .form-wrapper > .auth-section .post-action > input {
|
||||||
|
padding: 0.5rem 1rem !important;
|
||||||
|
border-radius: 2px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
background-color: #ddd;
|
||||||
|
cursor: pointer;
|
||||||
|
outline: 0;
|
||||||
|
line-height: 1.4em;
|
||||||
|
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
|
||||||
|
color: #222;
|
||||||
|
}
|
||||||
|
|
||||||
|
#isso-thread > h4 {
|
||||||
|
color: #777;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
37
assets/css/isso.css
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
.isso-postbox > .form-wrapper > .auth-section .post-action > input:hover {
|
||||||
|
background-color: #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.isso-postbox > .form-wrapper > .auth-section .input-wrapper input {
|
||||||
|
padding: 0.5rem;
|
||||||
|
max-width: 100%;
|
||||||
|
border-radius: 3px;
|
||||||
|
background-color: #fff;
|
||||||
|
line-height: 1.4em;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.2);
|
||||||
|
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
|
||||||
|
margin-right: 0.5rem;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.isso-comment > div.text-wrapper > .isso-comment-header .author {
|
||||||
|
font-weight: bold;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.isso-postbox > .form-wrapper > .auth-section .post-action > input {
|
||||||
|
padding: 0.5rem 1rem !important;
|
||||||
|
border-radius: 2px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
background-color: #ddd;
|
||||||
|
cursor: pointer;
|
||||||
|
outline: 0;
|
||||||
|
line-height: 1.4em;
|
||||||
|
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
|
||||||
|
color: #222;
|
||||||
|
}
|
||||||
|
|
||||||
|
#isso-thread > h4 {
|
||||||
|
color: #777;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
3104
assets/css/screen.css
Normal file
24
assets/js/gallery-card.js
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
/* eslint-env browser */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gallery card support
|
||||||
|
* Used on any individual post/page
|
||||||
|
*
|
||||||
|
* Detects when a gallery card has been used and applies sizing to make sure
|
||||||
|
* the display matches what is seen in the editor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function (window, document) {
|
||||||
|
var resizeImagesInGalleries = function resizeImagesInGalleries() {
|
||||||
|
var images = document.querySelectorAll('.kg-gallery-image img');
|
||||||
|
images.forEach(function (image) {
|
||||||
|
var container = image.closest('.kg-gallery-image');
|
||||||
|
var width = image.attributes.width.value;
|
||||||
|
var height = image.attributes.height.value;
|
||||||
|
var ratio = width / height;
|
||||||
|
container.style.flex = ratio + ' 1 0%';
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
document.addEventListener('DOMContentLoaded', resizeImagesInGalleries);
|
||||||
|
})(window, document);
|
112
assets/js/infinite-scroll.js
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
/* eslint-env browser */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Infinite Scroll
|
||||||
|
* Used on all pages where there is a list of posts (homepage, tag index, etc).
|
||||||
|
*
|
||||||
|
* When the page is scrolled to 300px from the bottom, the next page of posts
|
||||||
|
* is fetched by following the the <link rel="next" href="..."> that is output
|
||||||
|
* by {{ghost_head}}.
|
||||||
|
*
|
||||||
|
* The individual post items are extracted from the fetched pages by looking for
|
||||||
|
* a wrapper element with the class "post-card". Any found elements are appended
|
||||||
|
* to the element with the class "post-feed" in the currently viewed page.
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function (window, document) {
|
||||||
|
// next link element
|
||||||
|
var nextElement = document.querySelector('link[rel=next]');
|
||||||
|
if (!nextElement) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// post feed element
|
||||||
|
var feedElement = document.querySelector('.post-feed');
|
||||||
|
if (!feedElement) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var buffer = 300;
|
||||||
|
|
||||||
|
var ticking = false;
|
||||||
|
var loading = false;
|
||||||
|
|
||||||
|
var lastScrollY = window.scrollY;
|
||||||
|
var lastWindowHeight = window.innerHeight;
|
||||||
|
var lastDocumentHeight = document.documentElement.scrollHeight;
|
||||||
|
|
||||||
|
function onPageLoad() {
|
||||||
|
if (this.status === 404) {
|
||||||
|
window.removeEventListener('scroll', onScroll);
|
||||||
|
window.removeEventListener('resize', onResize);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// append contents
|
||||||
|
var postElements = this.response.querySelectorAll('.post-card');
|
||||||
|
postElements.forEach(function (item) {
|
||||||
|
// document.importNode is important, without it the item's owner
|
||||||
|
// document will be different which can break resizing of
|
||||||
|
// `object-fit: cover` images in Safari
|
||||||
|
feedElement.appendChild(document.importNode(item, true));
|
||||||
|
});
|
||||||
|
|
||||||
|
// set next link
|
||||||
|
var resNextElement = this.response.querySelector('link[rel=next]');
|
||||||
|
if (resNextElement) {
|
||||||
|
nextElement.href = resNextElement.href;
|
||||||
|
} else {
|
||||||
|
window.removeEventListener('scroll', onScroll);
|
||||||
|
window.removeEventListener('resize', onResize);
|
||||||
|
}
|
||||||
|
|
||||||
|
// sync status
|
||||||
|
lastDocumentHeight = document.documentElement.scrollHeight;
|
||||||
|
ticking = false;
|
||||||
|
loading = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function onUpdate() {
|
||||||
|
// return if already loading
|
||||||
|
if (loading) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// return if not scroll to the bottom
|
||||||
|
if (lastScrollY + lastWindowHeight <= lastDocumentHeight - buffer) {
|
||||||
|
ticking = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
loading = true;
|
||||||
|
|
||||||
|
var xhr = new window.XMLHttpRequest();
|
||||||
|
xhr.responseType = 'document';
|
||||||
|
|
||||||
|
xhr.addEventListener('load', onPageLoad);
|
||||||
|
|
||||||
|
xhr.open('GET', nextElement.href);
|
||||||
|
xhr.send(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
function requestTick() {
|
||||||
|
ticking || window.requestAnimationFrame(onUpdate);
|
||||||
|
ticking = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function onScroll() {
|
||||||
|
lastScrollY = window.scrollY;
|
||||||
|
requestTick();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onResize() {
|
||||||
|
lastWindowHeight = window.innerHeight;
|
||||||
|
lastDocumentHeight = document.documentElement.scrollHeight;
|
||||||
|
requestTick();
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener('scroll', onScroll, {passive: true});
|
||||||
|
window.addEventListener('resize', onResize);
|
||||||
|
|
||||||
|
requestTick();
|
||||||
|
})(window, document);
|
89
assets/js/lib/jquery.fitvids.js
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
/*jshint browser:true */
|
||||||
|
/*!
|
||||||
|
* FitVids 1.3
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Copyright 2017, Chris Coyier + Dave Rupert + Ghost Foundation
|
||||||
|
* This is an unofficial release, ported by John O'Nolan
|
||||||
|
* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/
|
||||||
|
* Released under the MIT license
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
;(function( $ ){
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
$.fn.fitVids = function( options ) {
|
||||||
|
var settings = {
|
||||||
|
customSelector: null,
|
||||||
|
ignore: null
|
||||||
|
};
|
||||||
|
|
||||||
|
if(!document.getElementById('fit-vids-style')) {
|
||||||
|
// appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js
|
||||||
|
var head = document.head || document.getElementsByTagName('head')[0];
|
||||||
|
var css = '.fluid-width-video-container{flex-grow: 1;width:100%;}.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}';
|
||||||
|
var div = document.createElement("div");
|
||||||
|
div.innerHTML = '<p>x</p><style id="fit-vids-style">' + css + '</style>';
|
||||||
|
head.appendChild(div.childNodes[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( options ) {
|
||||||
|
$.extend( settings, options );
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.each(function(){
|
||||||
|
var selectors = [
|
||||||
|
'iframe[src*="player.vimeo.com"]',
|
||||||
|
'iframe[src*="youtube.com"]',
|
||||||
|
'iframe[src*="youtube-nocookie.com"]',
|
||||||
|
'iframe[src*="kickstarter.com"][src*="video.html"]',
|
||||||
|
'object',
|
||||||
|
'embed'
|
||||||
|
];
|
||||||
|
|
||||||
|
if (settings.customSelector) {
|
||||||
|
selectors.push(settings.customSelector);
|
||||||
|
}
|
||||||
|
|
||||||
|
var ignoreList = '.fitvidsignore';
|
||||||
|
|
||||||
|
if(settings.ignore) {
|
||||||
|
ignoreList = ignoreList + ', ' + settings.ignore;
|
||||||
|
}
|
||||||
|
|
||||||
|
var $allVideos = $(this).find(selectors.join(','));
|
||||||
|
$allVideos = $allVideos.not('object object'); // SwfObj conflict patch
|
||||||
|
$allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video.
|
||||||
|
|
||||||
|
$allVideos.each(function(){
|
||||||
|
var $this = $(this);
|
||||||
|
if($this.parents(ignoreList).length > 0) {
|
||||||
|
return; // Disable FitVids on this video.
|
||||||
|
}
|
||||||
|
if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; }
|
||||||
|
if ((!$this.css('height') && !$this.css('width')) && (isNaN($this.attr('height')) || isNaN($this.attr('width'))))
|
||||||
|
{
|
||||||
|
$this.attr('height', 9);
|
||||||
|
$this.attr('width', 16);
|
||||||
|
}
|
||||||
|
var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(),
|
||||||
|
width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(),
|
||||||
|
aspectRatio = height / width;
|
||||||
|
if(!$this.attr('name')){
|
||||||
|
var videoName = 'fitvid' + $.fn.fitVids._count;
|
||||||
|
$this.attr('name', videoName);
|
||||||
|
$.fn.fitVids._count++;
|
||||||
|
}
|
||||||
|
$this.wrap('<div class="fluid-width-video-container"><div class="fluid-width-video-wrapper"></div></div>').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+'%');
|
||||||
|
$this.removeAttr('height').removeAttr('width');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// Internal counter for unique video names.
|
||||||
|
$.fn.fitVids._count = 0;
|
||||||
|
|
||||||
|
// Works with either jQuery or Zepto
|
||||||
|
})( window.jQuery || window.Zepto );
|
61
assets/js/sticky-nav-title.js
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
/* eslint-env browser */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Nav/Title replacement
|
||||||
|
* Used on invividual post pages, displays the post title in place of the nav
|
||||||
|
* bar when scrolling past the title
|
||||||
|
*
|
||||||
|
* Usage:
|
||||||
|
* ```
|
||||||
|
* Casper.stickyTitle({
|
||||||
|
* navSelector: '.site-nav-main',
|
||||||
|
* titleSelector: '.post-full-title',
|
||||||
|
* activeClass: 'nav-post-title-active'
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function (window, document) {
|
||||||
|
// set up Casper as a global object
|
||||||
|
if (!window.Casper) {
|
||||||
|
window.Casper = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
window.Casper.stickyNavTitle = function stickyNavTitle(options) {
|
||||||
|
var nav = document.querySelector(options.navSelector);
|
||||||
|
var title = document.querySelector(options.titleSelector);
|
||||||
|
|
||||||
|
var lastScrollY = window.scrollY;
|
||||||
|
var ticking = false;
|
||||||
|
|
||||||
|
function onScroll() {
|
||||||
|
lastScrollY = window.scrollY;
|
||||||
|
requestTick();
|
||||||
|
}
|
||||||
|
|
||||||
|
function requestTick() {
|
||||||
|
if (!ticking) {
|
||||||
|
requestAnimationFrame(update);
|
||||||
|
}
|
||||||
|
ticking = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function update() {
|
||||||
|
var trigger = title.getBoundingClientRect().top + window.scrollY;
|
||||||
|
var triggerOffset = title.offsetHeight + 35;
|
||||||
|
|
||||||
|
// show/hide post title
|
||||||
|
if (lastScrollY >= trigger + triggerOffset) {
|
||||||
|
nav.classList.add(options.activeClass);
|
||||||
|
} else {
|
||||||
|
nav.classList.remove(options.activeClass);
|
||||||
|
}
|
||||||
|
|
||||||
|
ticking = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener('scroll', onScroll, {passive: true});
|
||||||
|
|
||||||
|
update();
|
||||||
|
};
|
||||||
|
})(window, document);
|
BIN
assets/screenshot-desktop.jpg
Executable file
After Width: | Height: | Size: 132 KiB |
BIN
assets/screenshot-mobile.jpg
Executable file
After Width: | Height: | Size: 60 KiB |
61
author.hbs
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
{{!< default}}
|
||||||
|
{{!-- The tag above means - insert everything in this file into the {body} of the default.hbs template --}}
|
||||||
|
|
||||||
|
{{#author}}
|
||||||
|
{{!-- Everything inside the #author tags pulls data from the author --}}
|
||||||
|
|
||||||
|
|
||||||
|
<header class="site-archive-header">
|
||||||
|
{{> site-header}}
|
||||||
|
{{> header-background background=cover_image}} {{!--Special header-image.hbs partial to generate the background image--}}
|
||||||
|
<div class="inner">
|
||||||
|
<div class="site-header-content author-header">
|
||||||
|
{{#if profile_image}}
|
||||||
|
<img class="author-profile-image" src="{{profile_image}}" alt="{{name}}" />
|
||||||
|
{{else}}
|
||||||
|
<span class="author-profile-image">{{> "icons/avatar"}}</span>
|
||||||
|
{{/if}}
|
||||||
|
<div class="author-header-content">
|
||||||
|
<h1 class="site-title">{{name}}</h1>
|
||||||
|
{{#if bio}}
|
||||||
|
<h2 class="author-bio">{{bio}}</h2>
|
||||||
|
{{/if}}
|
||||||
|
<div class="author-meta">
|
||||||
|
{{#if location}}
|
||||||
|
<div class="author-location">{{location}}</div>
|
||||||
|
{{/if}}
|
||||||
|
<div class="author-stats">
|
||||||
|
{{plural ../pagination.total empty='No posts' singular='% post' plural='% posts'}}
|
||||||
|
</div>
|
||||||
|
{{#if website}}
|
||||||
|
<span class="author-social-link"><a href="{{website}}" rel="noopener">Website</a></span>
|
||||||
|
{{/if}}
|
||||||
|
{{#if twitter}}
|
||||||
|
<span class="author-social-link"><a href="{{twitter_url}}" rel="noopener">Twitter</a></span>
|
||||||
|
{{/if}}
|
||||||
|
{{#if facebook}}
|
||||||
|
<span class="author-social-link"><a href="{{facebook_url}}" rel="noopener">Facebook</a></span>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
{{/author}}
|
||||||
|
|
||||||
|
{{!-- The main content area --}}
|
||||||
|
<main id="site-main" class="site-main outer">
|
||||||
|
<div class="inner posts">
|
||||||
|
|
||||||
|
<div class="post-feed">
|
||||||
|
{{#foreach posts}}
|
||||||
|
|
||||||
|
{{!-- The tag below includes the markup for each post - partials/post-card.hbs --}}
|
||||||
|
{{> "post-card"}}
|
||||||
|
|
||||||
|
{{/foreach}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</main>
|
134
default.hbs
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="{{@site.lang}}">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
{{!-- Document Settings --}}
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
|
||||||
|
{{!-- Base Meta --}}
|
||||||
|
<title>{{meta_title}}</title>
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
{{!-- Styles'n'Scripts --}}
|
||||||
|
<link rel="stylesheet" type="text/css" href="{{asset "built/screen.css"}}" />
|
||||||
|
|
||||||
|
{{!-- This tag outputs SEO meta+structured data and other important settings --}}
|
||||||
|
{{ghost_head}}
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="{{body_class}}">
|
||||||
|
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
{{!-- All the main content gets inserted here, index.hbs, post.hbs, etc --}}
|
||||||
|
{{{body}}}
|
||||||
|
|
||||||
|
{{!-- The footer at the very bottom of the screen --}}
|
||||||
|
<footer class="site-footer outer">
|
||||||
|
<div class="site-footer-content inner">
|
||||||
|
<section class="copyright"><a href="{{@site.url}}">{{@site.title}}</a> © {{date format="YYYY"}}</section>
|
||||||
|
<nav class="site-footer-nav">
|
||||||
|
<a href="{{@site.url}}">Najnowsze posty</a>
|
||||||
|
{{#if @site.facebook}}<a href="{{facebook_url @site.facebook}}" rel="noopener">Facebook</a>{{/if}}
|
||||||
|
{{#if @site.twitter}}<a href="{{twitter_url @site.twitter}}" rel="noopener">Twitter</a>{{/if}}
|
||||||
|
<a href="https://www.internet-czas-dzialac.pl/rss/" rel="noopener">RSS</a>
|
||||||
|
<a href="https://patronite.pl/internet-czas-dzialac" rel="noopener">Patronite</a>
|
||||||
|
<a href="https://101010.pl/@midline" rel="noopener">Mastodon</a>
|
||||||
|
<a href="/contact">Nasze social media</a>
|
||||||
|
<a href="/contact">Kontakt</a>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{!-- The big email subscribe modal content --}}
|
||||||
|
{{#if @labs.members}}
|
||||||
|
<div class="subscribe-success-message">
|
||||||
|
<a class="subscribe-close" href="javascript:;"></a>
|
||||||
|
You've successfully subscribed to {{@site.title}}!
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="subscribe" class="subscribe-overlay">
|
||||||
|
<a class="subscribe-close-overlay" href="#"></a>
|
||||||
|
<a class="subscribe-close-button" href="#"></a>
|
||||||
|
<div class="subscribe-overlay-content">
|
||||||
|
{{#if @site.logo}}
|
||||||
|
<img class="subscribe-overlay-logo" src="{{@site.logo}}" alt="{{@site.title}}" />
|
||||||
|
{{/if}}
|
||||||
|
<div class="subscribe-form">
|
||||||
|
<h1 class="subscribe-overlay-title">Subscribe to {{@site.title}}</h1>
|
||||||
|
<p class="subscribe-overlay-description">Stay up to date! Get all the latest & greatest posts delivered straight to your inbox</p>
|
||||||
|
<form data-members-form="subscribe">
|
||||||
|
<div class="form-group">
|
||||||
|
<input class="subscribe-email" data-members-email placeholder="youremail@example.com"
|
||||||
|
autocomplete="false" />
|
||||||
|
<button class="button primary" type="submit">
|
||||||
|
<span class="button-content">Subscribe</span>
|
||||||
|
<span class="button-loader">{{> "icons/loader"}}</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="message-success">
|
||||||
|
<strong>Great!</strong> Check your inbox and click the link to confirm your subscription.
|
||||||
|
</div>
|
||||||
|
<div class="message-error">
|
||||||
|
Please enter a valid email address!
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{!-- jQuery, required for fitvids --}}
|
||||||
|
<script
|
||||||
|
src="https://code.jquery.com/jquery-3.4.1.min.js"
|
||||||
|
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
|
||||||
|
crossorigin="anonymous">
|
||||||
|
</script>
|
||||||
|
{{!-- Fitvids (for responsive video embeds), infinite scroll, floating header, and gallery card support --}}
|
||||||
|
<script src="{{asset "built/casper.js"}}"></script>
|
||||||
|
|
||||||
|
{{!-- Scripts for Members subscription --}}
|
||||||
|
<script>
|
||||||
|
// Parse the URL parameter
|
||||||
|
function getParameterByName(name, url) {
|
||||||
|
if (!url) url = window.location.href;
|
||||||
|
name = name.replace(/[\[\]]/g, "\\$&");
|
||||||
|
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
|
||||||
|
results = regex.exec(url);
|
||||||
|
if (!results) return null;
|
||||||
|
if (!results[2]) return '';
|
||||||
|
return decodeURIComponent(results[2].replace(/\+/g, " "));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Give the parameter a variable name
|
||||||
|
var action = getParameterByName('action');
|
||||||
|
|
||||||
|
$(document).ready(function () {
|
||||||
|
if (action == 'subscribe') {
|
||||||
|
$('body').addClass("subscribe-success");
|
||||||
|
}
|
||||||
|
|
||||||
|
$('.subscribe-success-message .subscribe-close').click(function () {
|
||||||
|
$('.subscribe-success-message').addClass('close');
|
||||||
|
});
|
||||||
|
|
||||||
|
// Reset form on opening subscrion overlay
|
||||||
|
$('.subscribe-button').click(function() {
|
||||||
|
$('.subscribe-overlay form').removeClass();
|
||||||
|
$('.subscribe-email').val('');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{{!-- The #block helper will pull in data from the #contentFor other template files. In this case, there's some JavaScript which we only want to use in post.hbs, but it needs to be included down here, after jQuery has already loaded. --}}
|
||||||
|
{{{block "scripts"}}}
|
||||||
|
|
||||||
|
{{!-- Ghost outputs important scripts and data with this tag - it should always be the very last thing before the closing body tag --}}
|
||||||
|
{{ghost_foot}}
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
30
error-404.hbs
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
{{!--
|
||||||
|
This error template is used for all 404 errors, which might occur on your site.
|
||||||
|
It's a good idea to keep this template as minimal as possible in terms of both file size and complexity.
|
||||||
|
--}}
|
||||||
|
|
||||||
|
{{!< default}}
|
||||||
|
{{!-- The tag above means: insert everything in this file
|
||||||
|
into the {body} of the default.hbs template --}}
|
||||||
|
|
||||||
|
<header class="site-header">
|
||||||
|
{{> site-header}}
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main id="site-main" class="site-main outer error-content">
|
||||||
|
<div class="inner">
|
||||||
|
<section class="error-message">
|
||||||
|
<h1 class="error-code">{{statusCode}}</h1>
|
||||||
|
<p class="error-description">{{message}}</p>
|
||||||
|
<a class="error-link" href="{{@site.url}}">Go to the front page →</a>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{{#get "posts" limit="3" include="authors,tags"}}
|
||||||
|
<div class="post-feed">
|
||||||
|
{{#foreach posts}}
|
||||||
|
{{> "post-card"}}
|
||||||
|
{{/foreach}}
|
||||||
|
</div>
|
||||||
|
{{/get}}
|
||||||
|
</div>
|
||||||
|
</main>
|
66
error.hbs
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
{{!--
|
||||||
|
This error template is used for all 400/500 errors, except 404, which might occur on your site.
|
||||||
|
It's a good idea to keep this template as minimal as possible in terms of both file size and complexity.
|
||||||
|
You'll notice that we *don't* use any JavaScript, or ghost_head / ghost_foot in this file.
|
||||||
|
--}}
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
<title>{{meta_title}}</title>
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="{{asset "built/screen.css"}}" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
<header class="site-header no-image">
|
||||||
|
<div class="site-nav-main outer">
|
||||||
|
<div class="inner">
|
||||||
|
<nav class="site-nav-center">
|
||||||
|
{{#if @site.logo}}
|
||||||
|
<a class="site-nav-logo" href="{{@site.url}}"><img src="{{img_url @site.logo size="xs"}}"
|
||||||
|
alt="{{@site.title}}" /></a>
|
||||||
|
{{else}}
|
||||||
|
<a class="site-nav-logo" href="{{@site.url}}">{{@site.title}}</a>
|
||||||
|
{{/if}}
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main id="site-main" class="site-main outer error-content">
|
||||||
|
<div class="inner">
|
||||||
|
|
||||||
|
<section class="error-message">
|
||||||
|
<h1 class="error-code">{{statusCode}}</h1>
|
||||||
|
<p class="error-description">{{message}}</p>
|
||||||
|
<a class="error-link" href="{{@site.url}}">Go to the front page →</a>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{{#if errorDetails}}
|
||||||
|
<section class="error-stack">
|
||||||
|
<h3>Theme errors</h3>
|
||||||
|
<ul class="error-stack-list">
|
||||||
|
{{#foreach errorDetails}}
|
||||||
|
<li>
|
||||||
|
<em class="error-stack-function">{{{rule}}}</em>
|
||||||
|
|
||||||
|
{{#foreach failures}}
|
||||||
|
<p><span class="error-stack-file">Ref: {{ref}}</span></p>
|
||||||
|
<p><span class="error-stack-file">Message: {{message}}</span></p>
|
||||||
|
{{/foreach}}
|
||||||
|
</li>
|
||||||
|
{{/foreach}}
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
188
gulpfile.js
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
const {series, watch, src, dest, parallel} = require('gulp');
|
||||||
|
const pump = require('pump');
|
||||||
|
const path = require('path');
|
||||||
|
const releaseUtils = require('@tryghost/release-utils');
|
||||||
|
const inquirer = require('inquirer');
|
||||||
|
|
||||||
|
// gulp plugins and utils
|
||||||
|
const livereload = require('gulp-livereload');
|
||||||
|
const postcss = require('gulp-postcss');
|
||||||
|
const zip = require('gulp-zip');
|
||||||
|
const concat = require('gulp-concat');
|
||||||
|
const uglify = require('gulp-uglify');
|
||||||
|
const beeper = require('beeper');
|
||||||
|
const fs = require('fs');
|
||||||
|
|
||||||
|
// postcss plugins
|
||||||
|
const autoprefixer = require('autoprefixer');
|
||||||
|
const colorFunction = require('postcss-color-function');
|
||||||
|
const cssnano = require('cssnano');
|
||||||
|
const customProperties = require('postcss-custom-properties');
|
||||||
|
const easyimport = require('postcss-easy-import');
|
||||||
|
|
||||||
|
const REPO = 'TryGhost/Casper';
|
||||||
|
const REPO_READONLY = 'TryGhost/Casper';
|
||||||
|
const CHANGELOG_PATH = path.join(process.cwd(), '.', 'changelog.md');
|
||||||
|
|
||||||
|
function serve(done) {
|
||||||
|
livereload.listen();
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleError = (done) => {
|
||||||
|
return function (err) {
|
||||||
|
if (err) {
|
||||||
|
beeper();
|
||||||
|
}
|
||||||
|
return done(err);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
function hbs(done) {
|
||||||
|
pump([
|
||||||
|
src(['*.hbs', 'partials/**/*.hbs']),
|
||||||
|
livereload()
|
||||||
|
], handleError(done));
|
||||||
|
}
|
||||||
|
|
||||||
|
function css(done) {
|
||||||
|
pump([
|
||||||
|
src('assets/css/*.css', {sourcemaps: true}),
|
||||||
|
postcss([
|
||||||
|
easyimport,
|
||||||
|
customProperties({preserve: false}),
|
||||||
|
colorFunction(),
|
||||||
|
autoprefixer(),
|
||||||
|
cssnano()
|
||||||
|
]),
|
||||||
|
dest('assets/built/', {sourcemaps: '.'}),
|
||||||
|
livereload()
|
||||||
|
], handleError(done));
|
||||||
|
}
|
||||||
|
|
||||||
|
function js(done) {
|
||||||
|
pump([
|
||||||
|
src([
|
||||||
|
// pull in lib files first so our own code can depend on it
|
||||||
|
'assets/js/lib/*.js',
|
||||||
|
'assets/js/*.js'
|
||||||
|
], {sourcemaps: true}),
|
||||||
|
concat('casper.js'),
|
||||||
|
uglify(),
|
||||||
|
dest('assets/built/', {sourcemaps: '.'}),
|
||||||
|
livereload()
|
||||||
|
], handleError(done));
|
||||||
|
}
|
||||||
|
|
||||||
|
function zipper(done) {
|
||||||
|
const filename = require('./package.json').name + '-' + new Date().toISOString() + '.zip';
|
||||||
|
|
||||||
|
pump([
|
||||||
|
src([
|
||||||
|
'**',
|
||||||
|
'!node_modules', '!node_modules/**',
|
||||||
|
'!dist', '!dist/**'
|
||||||
|
]),
|
||||||
|
zip(filename),
|
||||||
|
dest('dist/')
|
||||||
|
], handleError(done));
|
||||||
|
}
|
||||||
|
|
||||||
|
const cssWatcher = () => watch('assets/css/**', css);
|
||||||
|
const hbsWatcher = () => watch(['*.hbs', 'partials/**/*.hbs'], hbs);
|
||||||
|
const watcher = parallel(cssWatcher, hbsWatcher);
|
||||||
|
const build = series(css, js);
|
||||||
|
|
||||||
|
exports.build = build;
|
||||||
|
exports.zip = series(build, zipper);
|
||||||
|
exports.default = series(build, serve, watcher);
|
||||||
|
|
||||||
|
exports.release = () => {
|
||||||
|
// @NOTE: https://yarnpkg.com/lang/en/docs/cli/version/
|
||||||
|
// require(./package.json) can run into caching issues, this re-reads from file everytime on release
|
||||||
|
var packageJSON = JSON.parse(fs.readFileSync('./package.json'));
|
||||||
|
const newVersion = packageJSON.version;
|
||||||
|
|
||||||
|
if (!newVersion || newVersion === '') {
|
||||||
|
console.log(`Invalid version: ${newVersion}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(`\nCreating release for ${newVersion}...`);
|
||||||
|
|
||||||
|
let config;
|
||||||
|
try {
|
||||||
|
config = require('./config');
|
||||||
|
} catch (err) {
|
||||||
|
config = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!config || !config.github || !config.github.token) {
|
||||||
|
console.log('Please copy config.example.json and configure Github token.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let compatibleWithGhost;
|
||||||
|
|
||||||
|
return inquirer.prompt([{
|
||||||
|
type: 'input',
|
||||||
|
name: 'compatibleWithGhost',
|
||||||
|
message: 'Which version of Ghost is it compatible with?',
|
||||||
|
default: '3.0.0'
|
||||||
|
}])
|
||||||
|
.then(result => {
|
||||||
|
compatibleWithGhost = result.compatibleWithGhost;
|
||||||
|
return Promise.resolve();
|
||||||
|
})
|
||||||
|
.then(() => releaseUtils.releases.get({
|
||||||
|
userAgent: 'Casper',
|
||||||
|
uri: `https://api.github.com/repos/${REPO_READONLY}/releases`
|
||||||
|
}))
|
||||||
|
.then((response) => {
|
||||||
|
if (!response || !response.length) {
|
||||||
|
console.log('No releases found. Skipping...');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let previousVersion = response[0].tag_name || response[0].name;
|
||||||
|
console.log(`Previous version: ${previousVersion}`);
|
||||||
|
return Promise.resolve(previousVersion);
|
||||||
|
})
|
||||||
|
.then((previousVersion) => {
|
||||||
|
const changelog = new releaseUtils.Changelog({
|
||||||
|
changelogPath: CHANGELOG_PATH,
|
||||||
|
folder: path.join(process.cwd(), '.')
|
||||||
|
});
|
||||||
|
|
||||||
|
changelog
|
||||||
|
.write({
|
||||||
|
githubRepoPath: `https://github.com/${REPO}`,
|
||||||
|
lastVersion: previousVersion
|
||||||
|
})
|
||||||
|
.sort()
|
||||||
|
.clean();
|
||||||
|
|
||||||
|
return Promise.resolve();
|
||||||
|
})
|
||||||
|
.then(() => releaseUtils.releases.create({
|
||||||
|
draft: true,
|
||||||
|
preRelease: false,
|
||||||
|
tagName: newVersion,
|
||||||
|
releaseName: newVersion,
|
||||||
|
userAgent: 'Casper',
|
||||||
|
uri: `https://api.github.com/repos/${REPO}/releases`,
|
||||||
|
github: {
|
||||||
|
token: config.github.token
|
||||||
|
},
|
||||||
|
content: [`**Compatible with Ghost ≥ ${compatibleWithGhost}**\n\n`],
|
||||||
|
changelogPath: CHANGELOG_PATH
|
||||||
|
}))
|
||||||
|
.then((response) => {
|
||||||
|
console.log(`\nRelease draft generated: ${response.releaseUrl}\n`);
|
||||||
|
return Promise.resolve();
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.error(err);
|
||||||
|
process.exit(1);
|
||||||
|
});
|
||||||
|
};
|
98
index.hbs
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
{{!< default}}
|
||||||
|
{{!-- The tag above means: insert everything in this file
|
||||||
|
into the {body} of the default.hbs template --}}
|
||||||
|
|
||||||
|
<header class="site-home-header">
|
||||||
|
{{> header-background background=@site.cover_image}} {{!--Special header-image.hbs partial to generate the background image--}}
|
||||||
|
<div class="inner">
|
||||||
|
{{> "site-nav"}}
|
||||||
|
<div class="site-header-content">
|
||||||
|
<h1 class="site-title">
|
||||||
|
{{#if @site.logo}}
|
||||||
|
<img class="site-logo" src="{{img_url @site.logo size="l"}}" alt="{{@site.title}}" />
|
||||||
|
{{else}}
|
||||||
|
{{@site.title}}
|
||||||
|
{{/if}}
|
||||||
|
</h1>
|
||||||
|
<h2 class="site-description">{{@site.description}}</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
{{!-- The main content area --}}
|
||||||
|
<main id="site-main" class="site-main outer">
|
||||||
|
<div class="inner posts">
|
||||||
|
|
||||||
|
<div class="post-feed">
|
||||||
|
{{#foreach posts}}
|
||||||
|
|
||||||
|
{{!-- The tag below includes the markup for each post - partials/post-card.hbs --}}
|
||||||
|
{{> "post-card"}}
|
||||||
|
|
||||||
|
{{/foreach}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
{{> site-header}}
|
||||||
|
|
||||||
|
{{!-- The #contentFor helper here will send everything inside it up to the matching #block helper found in default.hbs --}}
|
||||||
|
{{#contentFor "scripts"}}
|
||||||
|
<script>
|
||||||
|
|
||||||
|
// NOTE: Scroll performance is poor in Safari
|
||||||
|
// - this appears to be due to the events firing much more slowly in Safari.
|
||||||
|
// Dropping the scroll event and using only a raf loop results in smoother
|
||||||
|
// scrolling but continuous processing even when not scrolling
|
||||||
|
$(document).ready(function () {
|
||||||
|
|
||||||
|
var nav = document.querySelector('.site-nav-main .site-nav');
|
||||||
|
var feed = document.querySelector('.post-feed');
|
||||||
|
|
||||||
|
var lastScrollY = window.scrollY;
|
||||||
|
var lastWindowHeight = window.innerHeight;
|
||||||
|
var lastDocumentHeight = $(document).height();
|
||||||
|
var ticking = false;
|
||||||
|
|
||||||
|
function onScroll() {
|
||||||
|
lastScrollY = window.scrollY;
|
||||||
|
requestTick();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onResize() {
|
||||||
|
lastWindowHeight = window.innerHeight;
|
||||||
|
lastDocumentHeight = $(document).height();
|
||||||
|
requestTick();
|
||||||
|
}
|
||||||
|
|
||||||
|
function requestTick() {
|
||||||
|
if (!ticking) {
|
||||||
|
requestAnimationFrame(update);
|
||||||
|
}
|
||||||
|
ticking = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function update() {
|
||||||
|
var trigger = feed.getBoundingClientRect().top + window.scrollY;
|
||||||
|
var progressMax = lastDocumentHeight - lastWindowHeight;
|
||||||
|
|
||||||
|
// show/hide nav
|
||||||
|
if (lastScrollY >= trigger - 20) {
|
||||||
|
nav.classList.add('fixed-nav-active');
|
||||||
|
} else {
|
||||||
|
nav.classList.remove('fixed-nav-active');
|
||||||
|
}
|
||||||
|
|
||||||
|
ticking = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener('scroll', onScroll, { passive: true });
|
||||||
|
window.addEventListener('resize', onResize, false);
|
||||||
|
|
||||||
|
update();
|
||||||
|
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{{/contentFor}}
|
7146
package-lock.json
generated
Normal file
92
package.json
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
{
|
||||||
|
"name": "casper",
|
||||||
|
"description": "A clean, minimal default theme for the Ghost publishing platform",
|
||||||
|
"demo": "https://demo.ghost.io",
|
||||||
|
"version": "3.0.12",
|
||||||
|
"engines": {
|
||||||
|
"ghost": ">=3.0.0",
|
||||||
|
"ghost-api": "v3"
|
||||||
|
},
|
||||||
|
"license": "MIT",
|
||||||
|
"screenshots": {
|
||||||
|
"desktop": "assets/screenshot-desktop.jpg",
|
||||||
|
"mobile": "assets/screenshot-mobile.jpg"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"dev": "gulp",
|
||||||
|
"zip": "gulp zip",
|
||||||
|
"test": "gscan .",
|
||||||
|
"test:ci": "gscan --fatal --verbose .",
|
||||||
|
"pretest": "gulp build",
|
||||||
|
"preship": "yarn test",
|
||||||
|
"ship": "STATUS=$(git status --porcelain); echo $STATUS; if [ -z \"$STATUS\" ]; then yarn version && git push --follow-tags; else echo \"Uncomitted changes found.\" && exit 1; fi",
|
||||||
|
"postship": "git fetch && gulp release"
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"name": "Ghost Foundation",
|
||||||
|
"email": "hello@ghost.org",
|
||||||
|
"url": "https://ghost.org"
|
||||||
|
},
|
||||||
|
"gpm": {
|
||||||
|
"type": "theme",
|
||||||
|
"categories": [
|
||||||
|
"Minimal",
|
||||||
|
"Magazine"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"ghost",
|
||||||
|
"theme",
|
||||||
|
"ghost-theme"
|
||||||
|
],
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/TryGhost/Casper.git"
|
||||||
|
},
|
||||||
|
"bugs": "https://github.com/TryGhost/Casper/issues",
|
||||||
|
"contributors": "https://github.com/TryGhost/Casper/graphs/contributors",
|
||||||
|
"devDependencies": {
|
||||||
|
"@tryghost/release-utils": "0.5.0",
|
||||||
|
"autoprefixer": "9.7.6",
|
||||||
|
"beeper": "2.0.0",
|
||||||
|
"cssnano": "4.1.10",
|
||||||
|
"gscan": "3.4.1",
|
||||||
|
"gulp": "4.0.2",
|
||||||
|
"gulp-concat": "2.6.1",
|
||||||
|
"gulp-livereload": "4.0.2",
|
||||||
|
"gulp-postcss": "8.0.0",
|
||||||
|
"gulp-uglify": "3.0.2",
|
||||||
|
"gulp-zip": "5.0.1",
|
||||||
|
"inquirer": "7.1.0",
|
||||||
|
"postcss-color-function": "4.1.0",
|
||||||
|
"postcss-custom-properties": "9.1.1",
|
||||||
|
"postcss-easy-import": "3.0.0",
|
||||||
|
"pump": "3.0.0"
|
||||||
|
},
|
||||||
|
"browserslist": [
|
||||||
|
"defaults"
|
||||||
|
],
|
||||||
|
"config": {
|
||||||
|
"posts_per_page": 25,
|
||||||
|
"image_sizes": {
|
||||||
|
"xxs": {
|
||||||
|
"width": 30
|
||||||
|
},
|
||||||
|
"xs": {
|
||||||
|
"width": 100
|
||||||
|
},
|
||||||
|
"s": {
|
||||||
|
"width": 300
|
||||||
|
},
|
||||||
|
"m": {
|
||||||
|
"width": 600
|
||||||
|
},
|
||||||
|
"l": {
|
||||||
|
"width": 1000
|
||||||
|
},
|
||||||
|
"xl": {
|
||||||
|
"width": 2000
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
65
page.hbs
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
{{!< default}}
|
||||||
|
{{!-- The tag above means: insert everything in this file
|
||||||
|
into the {body} of the default.hbs template --}}
|
||||||
|
|
||||||
|
{{!-- The big featured header, it uses blog cover image as a BG if available --}}
|
||||||
|
<header class="site-header">
|
||||||
|
<div class="outer site-nav-main">
|
||||||
|
<div class="inner">
|
||||||
|
{{> "site-nav"}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
{{!-- Everything inside the #post tags pulls data from the post --}}
|
||||||
|
{{#post}}
|
||||||
|
|
||||||
|
<main id="site-main" class="site-main outer">
|
||||||
|
<div class="inner">
|
||||||
|
|
||||||
|
<article class="post-full {{post_class}} {{#unless feature_image}}no-image{{/unless}}">
|
||||||
|
|
||||||
|
<header class="post-full-header">
|
||||||
|
<h1 class="post-full-title">{{title}}</h1>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
{{#if feature_image}}
|
||||||
|
<figure class="post-full-image">
|
||||||
|
{{!-- This is a responsive image, it loads different sizes depending on device
|
||||||
|
https://medium.freecodecamp.org/a-guide-to-responsive-images-with-ready-to-use-templates-c400bd65c433 --}}
|
||||||
|
<img
|
||||||
|
srcset="{{img_url feature_image size="s"}} 300w,
|
||||||
|
{{img_url feature_image size="m"}} 600w,
|
||||||
|
{{img_url feature_image size="l"}} 1000w,
|
||||||
|
{{img_url feature_image size="xl"}} 2000w"
|
||||||
|
sizes="(max-width: 800px) 400px,
|
||||||
|
(max-width: 1170px) 1170px,
|
||||||
|
2000px"
|
||||||
|
src="{{img_url feature_image size="xl"}}"
|
||||||
|
alt="{{title}}"
|
||||||
|
/>
|
||||||
|
</figure>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
<section class="post-full-content">
|
||||||
|
<div class="post-content">
|
||||||
|
{{content}}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</article>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
{{/post}}
|
||||||
|
|
||||||
|
{{!-- The #contentFor helper here will send everything inside it up to the matching #block helper found in default.hbs --}}
|
||||||
|
{{#contentFor "scripts"}}
|
||||||
|
<script>
|
||||||
|
$(function() {
|
||||||
|
var $postContent = $(".post-full-content");
|
||||||
|
$postContent.fitVids();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{{/contentFor}}
|
47
partials/header-background.hbs
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
{{!--
|
||||||
|
Wow what the hell is going on in here even?
|
||||||
|
|
||||||
|
Ok so, several templates use this big header with a giant BG image. Nice idea, but big images
|
||||||
|
have a heavy impact on performance, so it's a good idea to make them responsive. Because we
|
||||||
|
can only get the image dynamically using Handlebars, and we can only set the image to properly
|
||||||
|
be a background image using CSS, we end up with a handful of inline styles.
|
||||||
|
|
||||||
|
If the template in question has a background image, then we render responsive image styles
|
||||||
|
for it, and apply those styles to the <header> tag. Else, we just output a <header> tag
|
||||||
|
with a `no-image` class so we can style it accordingly.
|
||||||
|
--}}
|
||||||
|
|
||||||
|
{{#if background}}
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
.responsive-header-img {
|
||||||
|
background-image: url({{img_url background size='xl'}});
|
||||||
|
}
|
||||||
|
|
||||||
|
@media(max-width: 1000px) {
|
||||||
|
.responsive-header-img {
|
||||||
|
background-image: url({{img_url background size='l'}});
|
||||||
|
background-image: -webkit-image-set(url({{img_url background size='l'}}) 1x,
|
||||||
|
url({{img_url background size='xl'}}) 2x);
|
||||||
|
background-image: image-set(url({{img_url background size='l'}}) 1x,
|
||||||
|
url({{img_url background size='xl'}}) 2x);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media(max-width: 600px) {
|
||||||
|
.responsive-header-img {
|
||||||
|
background-image: url({{img_url background size='m'}});
|
||||||
|
background-image: -webkit-image-set(url({{img_url background size='m'}}) 1x,
|
||||||
|
url({{img_url background size='l'}}) 2x);
|
||||||
|
background-image: image-set(url({{img_url background size='m'}}) 1x,
|
||||||
|
url({{img_url background size='l'}}) 2x);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div class="outer site-header-background responsive-header-img">
|
||||||
|
|
||||||
|
{{else}}
|
||||||
|
|
||||||
|
<div class="outer site-header-background no-image">
|
||||||
|
|
||||||
|
{{/if}}
|
1
partials/icons/avatar.hbs
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M3.513 18.998C4.749 15.504 8.082 13 12 13s7.251 2.504 8.487 5.998C18.47 21.442 15.417 23 12 23s-6.47-1.558-8.487-4.002zM12 12c2.21 0 4-2.79 4-5s-1.79-4-4-4-4 1.79-4 4 1.79 5 4 5z" fill="#FFF"/></g></svg>
|
After Width: | Height: | Size: 308 B |
1
partials/icons/facebook.hbs
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="M16 0c8.837 0 16 7.163 16 16s-7.163 16-16 16S0 24.837 0 16 7.163 0 16 0zm5.204 4.911h-3.546c-2.103 0-4.443.885-4.443 3.934.01 1.062 0 2.08 0 3.225h-2.433v3.872h2.509v11.147h4.61v-11.22h3.042l.275-3.81h-3.397s.007-1.695 0-2.187c0-1.205 1.253-1.136 1.329-1.136h2.054V4.911z" /></svg>
|
After Width: | Height: | Size: 350 B |
16
partials/icons/feedly.hbs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
|
||||||
|
sodipodi:docname="feedly.svg"
|
||||||
|
id="svg4"
|
||||||
|
version="1.1"
|
||||||
|
viewBox="0 0 32 32">
|
||||||
|
<path
|
||||||
|
d="m 18.15767,4.3877794 a 3.0260951,3.0260951 0 0 0 -4.321998,0 L 2.9715168,15.450983 a 3.1652899,3.1652899 0 0 0 0,4.402732 l 7.7531512,7.896521 c 0.540075,0.477439 1.244401,0.769747 2.018324,0.769747 h 6.510141 a 3.0344469,3.0344469 0 0 0 2.171439,-0.917293 l 7.60282,-7.742016 a 3.1625061,3.1625061 0 0 0 0,-4.402731 L 18.159062,4.3877794 Z M 17.857009,24.596081 16.77129,25.698504 a 0.43150391,0.43150391 0 0 1 -0.310405,0.132236 h -0.928429 a 0.43567976,0.43567976 0 0 1 -0.286741,-0.11136 l -1.106599,-1.124693 a 0.45238313,0.45238313 0 0 1 0,-0.629161 l 1.55063,-1.578469 a 0.43011196,0.43011196 0 0 1 0.616633,0 l 1.55063,1.579861 a 0.45099118,0.45099118 0 0 1 0,0.62916 z m 0,-6.62428 -4.335918,4.416651 a 0.4342878,0.4342878 0 0 1 -0.310405,0.129451 H 12.28365 a 0.43567976,0.43567976 0 0 1 -0.289526,-0.108566 l -1.103815,-1.124699 a 0.45377508,0.45377508 0 0 1 0,-0.630554 l 4.800829,-4.88852 a 0.43150391,0.43150391 0 0 1 0.616633,0 l 1.550631,1.57986 a 0.44820728,0.44820728 0 0 1 0,0.626377 z m 0,-6.620105 -7.586117,7.725311 A 0.43150391,0.43150391 0 0 1 9.9590959,19.207851 H 9.0306665 A 0.43289585,0.43289585 0 0 1 8.7425332,19.099279 L 7.6373264,17.971801 a 0.44959924,0.44959924 0 0 1 0,-0.626377 L 15.689746,9.1440659 a 0.43150391,0.43150391 0 0 1 0.616633,0 l 1.55063,1.5784691 a 0.45099118,0.45099118 0 0 1 0,0.629161 z" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.8 KiB |
11
partials/icons/loader.hbs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<svg version="1.1" id="loader-1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" width="40px" height="40px" viewBox="0 0 40 40" enable-background="new 0 0 40 40" xml:space="preserve">
|
||||||
|
<path opacity="0.2" fill="#000" d="M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946
|
||||||
|
s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634
|
||||||
|
c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z" />
|
||||||
|
<path fill="#000" d="M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0
|
||||||
|
C22.32,8.481,24.301,9.057,26.013,10.047z">
|
||||||
|
<animateTransform attributeType="xml" attributeName="transform" type="rotate" from="0 20 20" to="360 20 20"
|
||||||
|
dur="0.5s" repeatCount="indefinite" />
|
||||||
|
</path>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 923 B |
27
partials/icons/mastodon.hbs
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
|
<svg xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
|
||||||
|
sodipodi:docname="mastodon.hbs.svg" id="svg4" version="1.1"
|
||||||
|
viewBox="0 0 32 32">
|
||||||
|
<metadata id="metadata10">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs id="defs8" />
|
||||||
|
<g transform="matrix(0.09096694,0,0,0.09096694,-8.6403121,1.8012331)"
|
||||||
|
id="g849">
|
||||||
|
<path d="m 270.41452,-0.65988984 c -40.07626,0.32765 -78.6331,4.68046904 -101.09905,14.99805284 0,0 -44.55901,19.92613 -44.55901,87.928617 0,15.57179 -0.2901,34.18406 0.20307,53.92916 1.61798,66.50273 12.19817,132.05256 73.68481,148.32695 28.35015,7.50386 52.68912,9.08423 72.29236,8.0067 35.54997,-1.97096 55.49568,-12.70627 55.49568,-12.70627 L 325.272,274.03363 c 0,0 -25.42733,8.02557 -53.95818,7.04937 -28.26737,-0.96945 -58.08921,-3.0652 -62.6611,-37.77073 -0.42223,-3.04848 -0.63822,-6.29483 -0.63822,-9.71825 0,0 27.7556,6.77259 62.9222,8.38382 21.50326,0.98632 41.65745,-1.26941 62.13893,-3.71325 39.27741,-4.69012 73.4769,-28.88621 77.77519,-50.99919 6.77255,-34.83386 6.20809,-84.99862 6.20809,-84.99862 0,-68.002487 -44.559,-87.928617 -44.559,-87.928617 C 350.03565,4.0205792 311.47712,-0.33223984 271.40085,-0.65988984 Z M 225.07225,52.486008 c 16.69323,0 29.32525,6.399412 37.68369,19.233479 l 8.12274,13.634593 8.12273,-13.634593 c 8.35676,-12.834067 20.98876,-19.233479 37.6837,-19.233479 14.42671,0 26.05082,5.075377 34.92775,14.969043 8.60503,9.893665 12.90935,23.263152 12.90935,40.091499 v 82.32973 h -32.63598 v -79.92192 c 0,-16.846926 -7.08572,-25.383545 -21.26416,-25.383545 -15.67651,0 -23.52693,10.141614 -23.52693,30.199165 v 43.74675 h -32.43293 v -43.74675 c 0,-20.057551 -7.85041,-30.199165 -23.52692,-30.199165 -14.17844,0 -21.26416,8.536619 -21.26416,25.383545 v 79.92192 h -32.63599 v -82.32973 c 0,-16.828347 4.30263,-30.197834 12.90935,-40.091499 8.87525,-9.893666 20.49935,-14.969041 34.92776,-14.969043 z"
|
||||||
|
style="stroke-width:1.35113" id="path835" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.5 KiB |
26
partials/icons/patronite.hbs
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
id="svg4"
|
||||||
|
version="1.1"
|
||||||
|
viewBox="0 0 32 32">
|
||||||
|
<metadata
|
||||||
|
id="metadata10">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<path
|
||||||
|
d="M 11.88807,29.526908 C 7.7380592,27.872624 7.6379085,27.830386 7.5767461,27.708664 7.5423072,27.64013 6.7234768,25.738665 5.757123,23.483197 L 4.0001141,19.382345 5.7006682,15.131157 7.4012223,10.879969 11.616067,5.8393429 c 2.318164,-2.7723438 4.219706,-5.04593871 4.225649,-5.05243398 0.01669,-0.0182539 8.528865,9.84974408 8.559341,9.92267808 0.01479,0.0354 0.830579,1.934713 1.81286,4.220702 l 1.785969,4.156344 -1.700584,4.251674 -1.700585,4.251674 -4.190383,1.807352 c -2.304712,0.994045 -4.208649,1.810919 -4.230971,1.815278 -0.02232,0.0044 -1.952503,-0.754209 -4.289293,-1.685703 z m 5.99431,-5.319456 c 1.03127,-0.444895 1.920312,-0.829745 1.97565,-0.855223 0.08971,-0.0413 0.186692,-0.261998 0.894486,-2.035414 l 0.793874,-1.98909 -0.844947,-1.96781 -0.844948,-1.96781 -2.000362,-0.804518 -2.000361,-0.804519 -1.946906,0.835132 c -1.070797,0.459322 -1.966101,0.854607 -1.989564,0.878409 -0.04867,0.04938 -1.601406,3.902181 -1.601406,3.973579 0,0.05882 1.656496,3.889542 1.702546,3.937215 0.03031,0.03138 3.891671,1.597226 3.959256,1.605546 0.0152,0.0019 0.871413,-0.360603 1.902682,-0.805497 z"
|
||||||
|
id="path1004" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
24
partials/icons/peertube.hbs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
|
<svg xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
viewBox="0 0 32 32" version="1.1" id="svg4"
|
||||||
|
sodipodi:docname="peertube.hbs.svg"
|
||||||
|
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
|
||||||
|
<metadata id="metadata10">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs id="defs8" />
|
||||||
|
<path id="path830"
|
||||||
|
d="M 6.1464844 0.71875 L 6.1464844 16 L 17.607422 8.359375 L 6.1464844 0.71875 z M 17.607422 8.359375 L 17.607422 23.640625 L 29.066406 16 L 17.607422 8.359375 z M 17.607422 23.640625 L 6.1464844 16 L 6.1464844 31.28125 L 17.607422 23.640625 z" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
1
partials/icons/rss.hbs
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><circle cx="6.18" cy="17.82" r="2.18"/><path d="M4 4.44v2.83c7.03 0 12.73 5.7 12.73 12.73h2.83c0-8.59-6.97-15.56-15.56-15.56zm0 5.66v2.83c3.9 0 7.07 3.17 7.07 7.07h2.83c0-5.47-4.43-9.9-9.9-9.9z"/></svg>
|
After Width: | Height: | Size: 263 B |
33
partials/icons/spotify.hbs
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
|
<svg xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
viewBox="0 0 32 32" version="1.1" id="svg4"
|
||||||
|
sodipodi:docname="spotify.svg"
|
||||||
|
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
|
||||||
|
<sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666"
|
||||||
|
borderopacity="1" objecttolerance="10" gridtolerance="10"
|
||||||
|
guidetolerance="10" inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2" inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1080" id="namedview6" showgrid="false"
|
||||||
|
inkscape:zoom="13.6875" inkscape:cx="15.544736"
|
||||||
|
inkscape:cy="22.067288" inkscape:window-x="0"
|
||||||
|
inkscape:window-y="0" inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg4" />
|
||||||
|
<metadata id="metadata10">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs id="defs8" />
|
||||||
|
<path id="path907"
|
||||||
|
d="M 16.000163,1.9402377 A 14.059819,14.059819 0 0 0 1.9402374,16.000163 14.059819,14.059819 0 0 0 16.000163,30.059762 14.059819,14.059819 0 0 0 30.059763,16.000163 14.059819,14.059819 0 0 0 16.000163,1.9402377 Z m -2.097331,7.4829748 c 4.089798,-0.010535 8.537319,0.8292785 11.797983,2.7649625 0.626234,0.370873 0.831101,1.177829 0.46006,1.801881 -0.369361,0.624893 -1.178677,0.831103 -1.801554,0.460063 h -6.67e-4 C 19.827259,11.758651 12.351042,11.510918 8.0246464,12.823998 7.3299116,13.034702 6.5952894,12.642549 6.3847536,11.947814 6.1742177,11.252743 6.5660264,10.518801 7.261265,10.307594 9.1236638,9.7422198 11.448937,9.4295351 13.902816,9.4232125 Z m -0.272823,4.8403235 c 3.659113,-0.0089 7.371943,0.915744 10.220064,2.665932 0.515426,0.317315 0.678346,0.992334 0.361032,1.507088 -0.317316,0.515762 -0.992317,0.678348 -1.507744,0.361032 C 18.924125,16.474642 13.163388,15.802109 8.6932778,17.159008 8.1135486,17.334119 7.5011752,17.007467 7.325225,16.428746 7.1506178,15.849016 7.4774211,15.237634 8.0561428,15.061349 9.8113589,14.528776 11.71333,14.268176 13.630009,14.263536 Z m 0.161989,4.585862 c 3.161244,-0.0142 5.975603,0.723495 8.407689,2.209807 0.413013,0.253516 0.544046,0.792394 0.29053,1.205408 -0.251836,0.413013 -0.792395,0.544048 -1.205408,0.290531 C 17.983728,20.538767 13.828003,20.08205 8.9339659,21.200208 8.4623589,21.307662 7.992095,21.012221 7.8846444,20.540447 7.7766897,20.068671 8.0709672,19.598575 8.5437496,19.491126 10.384784,19.070515 12.136108,18.856836 13.791998,18.849398 Z" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
14
partials/icons/telegram.hbs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
|
<svg xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
viewBox="0 0 32 32" version="1.1" id="svg4"
|
||||||
|
sodipodi:docname="telegram.svg"
|
||||||
|
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
|
||||||
|
<path id="circle9"
|
||||||
|
d="M 16,0.95625697 A 15.043743,15.043743 0 0 0 0.95625691,16 15.043743,15.043743 0 0 0 16,31.043743 15.043743,15.043743 0 0 0 31.043743,16 15.043743,15.043743 0 0 0 16,0.95625697 Z m 6.150834,9.05645003 c 0.124471,-0.0022 0.402721,0.02863 0.582945,0.174884 0.152242,0.123479 0.19407,0.290375 0.214138,0.407415 0.02007,0.11704 0.04498,0.383815 0.02515,0.59223 -0.226408,2.378717 -1.20604,8.15144 -1.704409,10.815687 -0.210914,1.127379 -0.625818,1.505359 -1.028087,1.542336 -0.87362,0.0804 -1.53699,-0.577409 -2.38314,-1.132041 L 14.50015,20.158067 c -1.485298,-0.978746 -0.522452,-1.516677 0.324029,-2.395833 0.221504,-0.23017 4.070672,-3.73128 4.145138,-4.048883 0.009,-0.03972 0.01796,-0.187741 -0.06999,-0.265969 -0.08795,-0.07822 -0.217789,-0.05117 -0.311452,-0.03021 -0.132776,0.03014 -2.247967,1.428205 -6.345521,4.194207 C 11.641958,18.023668 11.098138,18.2246 10.61093,18.21407 10.073782,18.20246 9.0404993,17.910324 8.2723961,17.660628 7.3302667,17.354396 6.581502,17.192475 6.6467318,16.672383 6.6806685,16.401505 7.0537041,16.124519 7.7658449,15.841274 l 6.01e-5,-6e-5 8.773205,-3.779035 c 4.177826,-1.737701 5.045901,-2.039514 5.611725,-2.049473 z" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
1
partials/icons/twitter.hbs
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M30.063 7.313c-.813 1.125-1.75 2.125-2.875 2.938v.75c0 1.563-.188 3.125-.688 4.625a15.088 15.088 0 0 1-2.063 4.438c-.875 1.438-2 2.688-3.25 3.813a15.015 15.015 0 0 1-4.625 2.563c-1.813.688-3.75 1-5.75 1-3.25 0-6.188-.875-8.875-2.625.438.063.875.125 1.375.125 2.688 0 5.063-.875 7.188-2.5-1.25 0-2.375-.375-3.375-1.125s-1.688-1.688-2.063-2.875c.438.063.813.125 1.125.125.5 0 1-.063 1.5-.25-1.313-.25-2.438-.938-3.313-1.938a5.673 5.673 0 0 1-1.313-3.688v-.063c.813.438 1.688.688 2.625.688a5.228 5.228 0 0 1-1.875-2c-.5-.875-.688-1.813-.688-2.75 0-1.063.25-2.063.75-2.938 1.438 1.75 3.188 3.188 5.25 4.25s4.313 1.688 6.688 1.813a5.579 5.579 0 0 1 1.5-5.438c1.125-1.125 2.5-1.688 4.125-1.688s3.063.625 4.188 1.813a11.48 11.48 0 0 0 3.688-1.375c-.438 1.375-1.313 2.438-2.563 3.188 1.125-.125 2.188-.438 3.313-.875z"/></svg>
|
After Width: | Height: | Size: 888 B |
53
partials/icons/youtube.hbs
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
viewBox="0 0 32 32"
|
||||||
|
version="1.1"
|
||||||
|
id="svg4"
|
||||||
|
sodipodi:docname="youtube.svg"
|
||||||
|
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
|
||||||
|
<metadata
|
||||||
|
id="metadata10">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs8" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1080"
|
||||||
|
id="namedview6"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="19.357048"
|
||||||
|
inkscape:cx="30.420846"
|
||||||
|
inkscape:cy="16.297447"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg4" />
|
||||||
|
<path
|
||||||
|
id="path2"
|
||||||
|
d="m 15.984914,5.6606241 c 0,0 -9.2219608,0.019011 -11.5133038,0.6439223 A 3.7115973,3.7115973 0 0 0 1.8581949,8.9175921 C 1.1651109,12.988987 0.89613536,19.19273 1.8770582,23.10127 a 3.7115973,3.7115973 0 0 0 2.6134151,2.613416 c 2.2913432,0.624911 11.5136737,0.62469 11.5136737,0.62469 0,0 9.221962,1.9e-4 11.513306,-0.62469 A 3.7115973,3.7115973 0 0 0 30.130868,23.10127 C 30.861825,19.024194 31.087246,12.824312 30.112012,8.8987288 A 3.7115973,3.7115973 0 0 0 27.49859,6.285314 C 25.207247,5.6604021 15.984914,5.6606241 15.984914,5.6606241 Z M 13.049723,11.568732 20.700233,16 l -7.65051,4.431266 z"
|
||||||
|
style="stroke-width:0.189368" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.1 KiB |
70
partials/post-card.hbs
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
<article class="post-card {{post_class}} {{#unless feature_image}}no-image{{else}}{{#is "home"}}{{#has index="nth:6"}}post-card-large{{/has}}{{/is}}{{/unless}}">
|
||||||
|
|
||||||
|
{{#if feature_image}}
|
||||||
|
<a class="post-card-image-link" href="{{url}}">
|
||||||
|
{{!-- This is a responsive image, it loads different sizes depending on device
|
||||||
|
https://medium.freecodecamp.org/a-guide-to-responsive-images-with-ready-to-use-templates-c400bd65c433 --}}
|
||||||
|
<img class="post-card-image"
|
||||||
|
srcset="{{img_url feature_image size="s"}} 300w,
|
||||||
|
{{img_url feature_image size="m"}} 600w,
|
||||||
|
{{img_url feature_image size="l"}} 1000w,
|
||||||
|
{{img_url feature_image size="xl"}} 2000w"
|
||||||
|
sizes="(max-width: 1000px) 400px, 700px"
|
||||||
|
loading="lazy"
|
||||||
|
src="{{img_url feature_image size="m"}}"
|
||||||
|
alt="{{title}}"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
<div class="post-card-content">
|
||||||
|
|
||||||
|
<a class="post-card-content-link" href="{{url}}">
|
||||||
|
|
||||||
|
<header class="post-card-header">
|
||||||
|
{{#if primary_tag}}
|
||||||
|
{{#primary_tag}}
|
||||||
|
<div class="post-card-primary-tag">{{name}}</div>
|
||||||
|
{{/primary_tag}}
|
||||||
|
{{/if}}
|
||||||
|
<h2 class="post-card-title">{{title}}</h2>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<section class="post-card-excerpt">
|
||||||
|
{{#if feature_image}}
|
||||||
|
<p>{{excerpt words="30"}}</p>
|
||||||
|
{{else}}
|
||||||
|
<p>{{excerpt words="44"}}</p>
|
||||||
|
{{/if}}
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<footer class="post-card-meta">
|
||||||
|
<ul class="author-list">
|
||||||
|
{{#foreach authors}}
|
||||||
|
<li class="author-list-item">
|
||||||
|
|
||||||
|
<div class="author-name-tooltip">
|
||||||
|
{{name}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{#if profile_image}}
|
||||||
|
<a href="{{url}}" class="static-avatar">
|
||||||
|
<img class="author-profile-image" src="{{img_url profile_image size="xs"}}" alt="{{name}}" />
|
||||||
|
</a>
|
||||||
|
{{else}}
|
||||||
|
<a href="{{url}}" class="static-avatar author-profile-image">{{> "icons/avatar"}}</a>
|
||||||
|
{{/if}}
|
||||||
|
</li>
|
||||||
|
{{/foreach}}
|
||||||
|
</ul>
|
||||||
|
<div class="post-card-byline-content">
|
||||||
|
<span>{{#has author="count:>2"}}Multiple authors{{else}}{{authors}}{{/has}}</span>
|
||||||
|
<span class="post-card-byline-date"><time datetime="{{date format="YYYY-MM-DD"}}">{{date format="D MMM YYYY"}}</time> <span class="bull">•</span> {{reading_time}}</span>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</div>{{!--/.post-card-content--}}
|
||||||
|
|
||||||
|
</article>
|
5
partials/site-header.hbs
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<div class="outer site-nav-main">
|
||||||
|
<div class="inner">
|
||||||
|
{{> "site-nav"}}
|
||||||
|
</div>
|
||||||
|
</div>
|
47
partials/site-nav.hbs
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
<nav class="site-nav">
|
||||||
|
<div class="site-nav-left-wrapper">
|
||||||
|
<div class="site-nav-left">
|
||||||
|
{{#if @site.logo}}
|
||||||
|
<a class="site-nav-logo" href="{{@site.url}}"><img src="{{@site.logo}}" alt="{{@site.title}}" /></a>
|
||||||
|
{{else}}
|
||||||
|
<a class="site-nav-logo" href="{{@site.url}}">{{@site.title}}</a>
|
||||||
|
{{/if}}
|
||||||
|
<div class="site-nav-content">
|
||||||
|
{{#if @site.navigation}}
|
||||||
|
{{navigation}}
|
||||||
|
{{/if}}
|
||||||
|
{{#is "post"}}
|
||||||
|
<span class="nav-post-title {{#unless @site.logo}}dash{{/unless}}">{{post.title}}</span>
|
||||||
|
{{/is}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="site-nav-right">
|
||||||
|
{{#if @site.secondary_navigation}}
|
||||||
|
{{navigation type="secondary"}}
|
||||||
|
{{else}}
|
||||||
|
<div class="social-links">
|
||||||
|
<a class="social-link social-link-mastodon" href="https://101010.pl/@midline" title="Konto „Internet. Czas działać!” na Mastodon" rel="me">{{> "icons/mastodon"}}</a>
|
||||||
|
<a class="social-link social-link-patronite" href="https://patronite.pl/internet-czas-dzialac" title="Wesprzyj nas na Patronite" rel="me">{{> "icons/patronite"}}</a>
|
||||||
|
{{#if @site.facebook}}
|
||||||
|
<a class="social-link social-link-fb" href="{{facebook_url @site.facebook}}" title="Facebook" rel="noopener">{{> "icons/facebook"}}</a>
|
||||||
|
{{/if}}
|
||||||
|
{{#if @site.twitter}}
|
||||||
|
<a class="social-link social-link-tw" href="{{twitter_url @site.twitter}}" title="Twitter" rel="noopener">{{> "icons/twitter"}}</a>
|
||||||
|
{{/if}}
|
||||||
|
<a class="social-link social-link-telegram" href="https://t.me/internet_czas_dzialac" title="Internet Czas Działać - kanał na Telegramie" rel="me">{{> "icons/telegram"}}</a>
|
||||||
|
<a class="social-link social-link-peertube" href="https://video.internet-czas-dzialac.pl/video-channels/internet_czas_dzialac/videos" title="Internet Czas Działać - kanał na Peertube" rel="me">{{> "icons/peertube"}}</a>
|
||||||
|
<a class="social-link social-link-youtube" href="https://www.youtube.com/c/internetczasdzialac" title="Internet Czas Działać - kanał na YouTube" rel="me">{{> "icons/youtube"}}</a>
|
||||||
|
<a class="social-link social-link-spotify" href="https://open.spotify.com/show/2BSREI0uQcADS8W0RHrkxB" title="Internet Czas Działać - podcast na Spotify" rel="me">{{> "icons/spotify"}}</a>
|
||||||
|
</div>
|
||||||
|
{{#unless @labs.members}}
|
||||||
|
<a class="rss-button" href="https://feedly.com/i/subscription/feed/{{@site.url}}/rss/" title="Feedly" rel="noopener">{{> "icons/feedly"}}</a>
|
||||||
|
{{/unless}}
|
||||||
|
<a class="rss-button" href="{{@site.url}}/rss/" title="RSS" rel="noopener">{{> "icons/rss"}}</a>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if @labs.members}}
|
||||||
|
<a class="subscribe-button" href="#subscribe">Subscribe</a>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
</nav>
|
19
partials/subscribe-form.hbs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<section class="subscribe-form">
|
||||||
|
<h3 class="subscribe-form-title">Subscribe to {{@site.title}}</h3>
|
||||||
|
<p class="subscribe-form-description">Get the latest posts delivered right to your inbox</p>
|
||||||
|
<form data-members-form="subscribe">
|
||||||
|
<div class="form-group">
|
||||||
|
<input class="subscribe-email" data-members-email placeholder="youremail@example.com" autocomplete="false" />
|
||||||
|
<button class="button primary" type="submit">
|
||||||
|
<span class="button-content">Subscribe</span>
|
||||||
|
<span class="button-loader">{{> "icons/loader"}}</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="message-success">
|
||||||
|
<strong>Great!</strong> Check your inbox and click the link to confirm your subscription.
|
||||||
|
</div>
|
||||||
|
<div class="message-error">
|
||||||
|
Please enter a valid email address!
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</section>
|
221
post.hbs
Normal file
@ -0,0 +1,221 @@
|
|||||||
|
{{!< default}}
|
||||||
|
|
||||||
|
{{!-- The tag above means: insert everything in this file
|
||||||
|
into the {body} of the default.hbs template --}}
|
||||||
|
|
||||||
|
<header class="site-header">
|
||||||
|
{{> site-header}}
|
||||||
|
</header>
|
||||||
|
|
||||||
|
{{!-- Everything inside the #post tags pulls data from the post --}}
|
||||||
|
{{#post}}
|
||||||
|
|
||||||
|
<main id="site-main" class="site-main outer">
|
||||||
|
<div class="inner">
|
||||||
|
|
||||||
|
<article class="post-full {{post_class}} {{#unless feature_image}}no-image{{/unless}}">
|
||||||
|
|
||||||
|
<header class="post-full-header">
|
||||||
|
|
||||||
|
{{#if primary_tag}}
|
||||||
|
<section class="post-full-tags">
|
||||||
|
{{#primary_tag}}
|
||||||
|
<a href="{{url}}">{{name}}</a>
|
||||||
|
{{/primary_tag}}
|
||||||
|
</section>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
<h1 class="post-full-title">{{title}}</h1>
|
||||||
|
|
||||||
|
{{#if custom_excerpt}}
|
||||||
|
<p class="post-full-custom-excerpt">{{custom_excerpt}}</p>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
<div class="post-full-byline">
|
||||||
|
|
||||||
|
<section class="post-full-byline-content">
|
||||||
|
|
||||||
|
<ul class="author-list">
|
||||||
|
{{#foreach authors}}
|
||||||
|
<li class="author-list-item">
|
||||||
|
|
||||||
|
<div class="author-card">
|
||||||
|
{{#if profile_image}}
|
||||||
|
<img class="author-profile-image" src="{{img_url profile_image size="xs"}}" alt="{{name}}" />
|
||||||
|
{{else}}
|
||||||
|
<div class="author-profile-image">{{> "icons/avatar"}}</div>
|
||||||
|
{{/if}}
|
||||||
|
<div class="author-info">
|
||||||
|
{{#if bio}}
|
||||||
|
<div class="bio">
|
||||||
|
<h2>{{name}}</h2>
|
||||||
|
<p>{{bio}}</p>
|
||||||
|
<p><a href="{{url}}">More posts</a> by {{name}}.</p>
|
||||||
|
</div>
|
||||||
|
{{else}}
|
||||||
|
<h2>{{name}}</h2>
|
||||||
|
<p>Read <a href="{{url}}">more posts</a> by this author.</p>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{#if profile_image}}
|
||||||
|
<a href="{{url}}" class="author-avatar">
|
||||||
|
<img class="author-profile-image" src="{{img_url profile_image size="xs"}}" alt="{{name}}" />
|
||||||
|
</a>
|
||||||
|
{{else}}
|
||||||
|
<a href="{{url}}" class="author-avatar author-profile-image">{{> "icons/avatar"}}</a>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
</li>
|
||||||
|
{{/foreach}}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<section class="post-full-byline-meta">
|
||||||
|
<h4 class="author-name">{{authors}}</h4>
|
||||||
|
<div class="byline-meta-content">
|
||||||
|
<time class="byline-meta-date" datetime="{{date format="YYYY-MM-DD"}}">{{date format="D MMM YYYY"}}</time>
|
||||||
|
<span class="byline-reading-time"><span class="bull">•</span> {{reading_time}}</span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
{{#if feature_image}}
|
||||||
|
<figure class="post-full-image">
|
||||||
|
{{!-- This is a responsive image, it loads different sizes depending on device
|
||||||
|
https://medium.freecodecamp.org/a-guide-to-responsive-images-with-ready-to-use-templates-c400bd65c433 --}}
|
||||||
|
<img
|
||||||
|
srcset="{{img_url feature_image size="s"}} 300w,
|
||||||
|
{{img_url feature_image size="m"}} 600w,
|
||||||
|
{{img_url feature_image size="l"}} 1000w,
|
||||||
|
{{img_url feature_image size="xl"}} 2000w"
|
||||||
|
sizes="(max-width: 800px) 400px,
|
||||||
|
(max-width: 1170px) 1170px,
|
||||||
|
2000px"
|
||||||
|
src="{{img_url feature_image size="xl"}}"
|
||||||
|
alt="{{title}}"
|
||||||
|
/>
|
||||||
|
</figure>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
<section class="post-full-content">
|
||||||
|
<div class="post-content">
|
||||||
|
{{content}}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{{!-- Email subscribe form at the bottom of the page --}}
|
||||||
|
{{#if @labs.members}}
|
||||||
|
{{> subscribe-form}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{!--
|
||||||
|
<section class="post-full-comments">
|
||||||
|
If you want to embed comments, this is a good place to do it!
|
||||||
|
</section>
|
||||||
|
--}}
|
||||||
|
|
||||||
|
</article>
|
||||||
|
<script data-isso="https://www.internet-czas-dzialac.pl/isso"
|
||||||
|
data-isso-lang="pl"
|
||||||
|
data-isso-feed="false"
|
||||||
|
data-isso-gravatar="true"
|
||||||
|
data-isso-avatar="false"
|
||||||
|
src="https://www.internet-czas-dzialac.pl/isso/js/embed.min.js" async></script>
|
||||||
|
|
||||||
|
<section id="isso-thread"></section>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
{{!-- Links to Previous/Next posts --}}
|
||||||
|
<aside class="read-next outer">
|
||||||
|
<div class="inner">
|
||||||
|
<div class="read-next-feed">
|
||||||
|
{{#if primary_tag}}
|
||||||
|
{{#get "posts" filter="tags:{{primary_tag.slug}}+id:-{{id}}" limit="3" as |related_posts|}}
|
||||||
|
{{#if related_posts}}
|
||||||
|
<article class="read-next-card">
|
||||||
|
<header class="read-next-card-header">
|
||||||
|
{{#../primary_tag}}
|
||||||
|
<h3><span>More in</span> <a href="{{url}}">{{name}}</a></h3>
|
||||||
|
{{/../primary_tag}}
|
||||||
|
</header>
|
||||||
|
<div class="read-next-card-content">
|
||||||
|
<ul>
|
||||||
|
{{#foreach related_posts}}
|
||||||
|
<li>
|
||||||
|
<h4><a href="{{url}}">{{title}}</a></h4>
|
||||||
|
<div class="read-next-card-meta">
|
||||||
|
<p><time datetime="{{date format="YYYY-MM-DD"}}">{{date format="D MMM YYYY"}}</time> –
|
||||||
|
{{reading_time}}</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{{/foreach}}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<footer class="read-next-card-footer">
|
||||||
|
<a href="{{#../primary_tag}}{{url}}{{/../primary_tag}}">{{plural meta.pagination.total empty='No posts' singular='% post' plural='See all % posts'}}
|
||||||
|
→</a>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
{{/if}}
|
||||||
|
{{/get}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{!-- If there's a next post, display it using the same markup included from - partials/post-card.hbs --}}
|
||||||
|
{{#next_post}}
|
||||||
|
{{> "post-card"}}
|
||||||
|
{{/next_post}}
|
||||||
|
|
||||||
|
{{!-- If there's a previous post, display it using the same markup included from - partials/post-card.hbs --}}
|
||||||
|
{{#prev_post}}
|
||||||
|
{{> "post-card"}}
|
||||||
|
{{/prev_post}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
{{/post}}
|
||||||
|
|
||||||
|
{{!-- The #contentFor helper here will send everything inside it up to the matching #block helper found in default.hbs --}}
|
||||||
|
{{#contentFor "scripts"}}
|
||||||
|
<script>
|
||||||
|
$(document).ready(function () {
|
||||||
|
// FitVids - start
|
||||||
|
var $postContent = $(".post-full-content");
|
||||||
|
$postContent.fitVids();
|
||||||
|
// FitVids - end
|
||||||
|
|
||||||
|
// Replace nav with title on scroll - start
|
||||||
|
Casper.stickyNavTitle({
|
||||||
|
navSelector: '.site-nav-main',
|
||||||
|
titleSelector: '.post-full-title',
|
||||||
|
activeClass: 'nav-post-title-active'
|
||||||
|
});
|
||||||
|
// Replace nav with title on scroll - end
|
||||||
|
|
||||||
|
// Hover on avatar
|
||||||
|
var hoverTimeout;
|
||||||
|
$('.author-list-item').hover(function () {
|
||||||
|
var $this = $(this);
|
||||||
|
|
||||||
|
clearTimeout(hoverTimeout);
|
||||||
|
|
||||||
|
$('.author-card').removeClass('hovered');
|
||||||
|
$(this).children('.author-card').addClass('hovered');
|
||||||
|
|
||||||
|
}, function () {
|
||||||
|
var $this = $(this);
|
||||||
|
|
||||||
|
hoverTimeout = setTimeout(function () {
|
||||||
|
$this.children('.author-card').removeClass('hovered');
|
||||||
|
}, 800);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{{/contentFor}}
|
32
tag.hbs
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{{!< default}}
|
||||||
|
{{!-- The tag above means - insert everything in this file into the {body} of the default.hbs template --}}
|
||||||
|
|
||||||
|
{{#tag}}
|
||||||
|
<header class="site-archive-header">
|
||||||
|
{{> site-header}}
|
||||||
|
{{> header-background background=feature_image}} {{!--Special header-image.hbs partial to generate the background image--}}
|
||||||
|
<div class="inner site-header-content">
|
||||||
|
<h1 class="site-title">{{name}}</h1>
|
||||||
|
<h2 class="site-description">
|
||||||
|
{{#if description}}
|
||||||
|
{{description}}
|
||||||
|
{{else}}
|
||||||
|
A collection of {{plural ../pagination.total empty='posts' singular='% post' plural='% posts'}}
|
||||||
|
{{/if}}
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
{{/tag}}
|
||||||
|
|
||||||
|
{{!-- The main content area --}}
|
||||||
|
<main id="site-main" class="site-main outer">
|
||||||
|
<div class="inner posts">
|
||||||
|
<div class="post-feed">
|
||||||
|
{{#foreach posts}}
|
||||||
|
{{!-- The tag below includes the markup for each post - partials/post-card.hbs --}}
|
||||||
|
{{> "post-card"}}
|
||||||
|
{{/foreach}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|