Ver código fonte

Merge upstream and upgrade Casper to 2.3.0

master
Angristan 2 anos atrás
pai
commit
573f677d64
24 arquivos alterados com 4611 adições e 76 exclusões
  1. +1
    -1
      .github/ISSUE_TEMPLATE.md
  2. +1
    -1
      assets/built/custom.css.map
  3. +1
    -1
      assets/built/global.css
  4. +1
    -1
      assets/built/global.css.map
  5. +1
    -1
      assets/built/screen.css
  6. +1
    -1
      assets/built/screen.css.map
  7. +5
    -1
      assets/css/global.css
  8. +338
    -22
      assets/css/screen.css
  9. +44
    -12
      assets/js/infinitescroll.js
  10. +1
    -1
      author.hbs
  11. +4
    -1
      default.hbs
  12. +1
    -1
      error-404.hbs
  13. +1
    -1
      error.hbs
  14. +1
    -2
      gulpfile.js
  15. +1
    -1
      index.hbs
  16. +8
    -2
      package.json
  17. +1
    -1
      page.hbs
  18. +72
    -0
      partials/byline-multiple.hbs
  19. +23
    -0
      partials/byline-single.hbs
  20. +1
    -0
      partials/icons/avatar.hbs
  21. +20
    -4
      partials/post-card.hbs
  22. +12
    -20
      post.hbs
  23. +1
    -1
      tag.hbs
  24. +4071
    -0
      yarn.lock

+ 1
- 1
.github/ISSUE_TEMPLATE.md Ver arquivo

@@ -1,4 +1,4 @@
Do you need help or have a question? Please come chat in Slack: https://ghost.org/slack 👫.
Do you need help or have a question? Please come chat in our forum: https://forum.ghost.org 👫.

If you're filing a bug 🐛, please include the following information:



+ 1
- 1
assets/built/custom.css.map Ver arquivo

@@ -1 +1 @@
{"version":3,"sources":["custom.css"],"names":[],"mappings":"AACA,WACI,4BAA+B,AAC/B,kBAAmB,AACnB,gBAAiB,AACjB,wDAA2D,AAC3D,2bAKuF,CAC1F,AAeD,6HACI,yCAA6C,CAChD,AAGD,mBACI,mBAAoB,AAKpB,gBAAkB,CAJrB,AAQD,sBACI,cAAwB,AACxB,cAAgB,CACnB,AAGD,aACI,yBAA8B,CACjC,AAED,0BACI,aACI,2BAA8B,CACjC,CACJ,AAED,yBACI,aACI,mBAAsB,CACzB,CACJ,AAED,kBACI,aAAmB,CACtB,AAGD,yBACI,iBACI,WAAa,CAChB,CACJ,AAGD,+CACI,kBAAmB,AACnB,mBAAqB,CACxB,AAGD,aACI,mBAAqB,CACxB,AAGD,kBACI,eAAmB,CACtB,AAGD,gDACI,gBAAmB,CACtB,AAGD,uBACI,cAAgB,CACnB,AAGD,kBACI,WAAqB,CACxB,AAGD,yBACI,kBACI,oBAAsB,CACzB,CACJ,AAGD,mBACI,cAAe,AACf,WAAa,CAChB,AAGD,mDACI,YAAc,CACjB,AAGD,yBACI,mBACI,gBAAkB,CACrB,CACJ,AAGD,4BACI,gBAAkB,CACrB","file":"custom.css","sourcesContent":["/* source-sans-pro-regular - latin */\n@font-face {\n font-family: 'Source Sans Pro';\n font-style: normal;\n font-weight: 400;\n src: url('../fonts/source-sans-pro-v11-latin-regular.eot'); /* IE9 Compat Modes */\n src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'),\n url('../fonts/source-sans-pro-v11-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n url('../fonts/source-sans-pro-v11-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */\n url('../fonts/source-sans-pro-v11-latin-regular.woff') format('woff'), /* Modern Browsers */\n url('../fonts/source-sans-pro-v11-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */\n url('../fonts/source-sans-pro-v11-latin-regular.svg#SourceSansPro') format('svg'); /* Legacy iOS */\n}\n\n/* Use Source Sans Pro font */\n.post-full-content {\n font-family: 'Source Sans Pro',Georgia,serif;\n}\n.post-full-content h5 {\n font-family: 'Source Sans Pro',Georgia,serif;\n}\n.post-card-excerpt {\n font-family: 'Source Sans Pro',Georgia,serif;\n}\n.site-header-content .author-meta {\n font-family: 'Source Sans Pro',Georgia,serif;\n}\n.subscribe-overlay-description {\n font-family: 'Source Sans Pro',Georgia,serif;\n}\n\n/* Justify post content */\n.post-full-content {\n text-align: justify;\n}\n\n/* Make the post content font size 0.3rem tinier */\n.post-full-content {\n font-size: 1.9rem;\n}\n\n/* Reduce h2 size and add some bottom margin */\n.post-full-content h2 {\n margin: 0.5em 0 0.5em 0;\n font-size: 3rem;\n}\n\n/* Make the thread the same width as the post */\n#isso-thread {\n padding: 0 100px 0 !important;\n}\n\n@media (max-width: 1170px) {\n #isso-thread {\n padding: 5vw 7vw 0 !important;\n }\n}\n\n@media (max-width: 500px) {\n #isso-thread {\n padding: 0 !important;\n }\n}\n/* reduce the bottom padding of the author card */\n.post-full-footer {\n padding: 3vw 0 3vw;\n}\n\n/* Reduce sticked header by 10px on desktop */\n@media (min-width: 900px) {\n .floating-header {\n height: 50px;\n }\n}\n\n/* Make the first paragraph the same size as the post */\n.post-template .kg-card-markdown>p:first-child {\n font-size: inherit;\n line-height: inherit;\n}\n\n/* Reduce padding-bottom of the footer by 20px */\n.site-footer {\n padding-bottom: 20px;\n}\n\n/* Add a bit of padding under the author name in the author card */\n.author-card-name {\n padding: 0 0 5px 0;\n}\n\n/* Reduce margin top and bottom for pictures and videos by 1em */\n.post-full-content img, .post-full-content video {\n margin: 0.5em auto;\n}\n\n/* Reduce margin top and bottom for code */\n.post-full-content pre {\n margin: 0 0 2em;\n}\n\n/* Reduce padding top of the post header by 4vw */\n.post-full-header {\n padding: 3vw 3vw 3vw;\n}\n\n/* Reduce padding top and bottom of the post header on mobile */\n@media (max-width: 500px) {\n .post-full-header {\n padding: 10vw 3vw 8vw;\n }\n}\n\n/* Center the header post image */\n.post-header-image {\n display: block;\n margin: auto;\n}\n\n/* Remove the shadows as we move up the image */\n.post-full-content::before, .post-full-content::after {\n display: none;\n}\n\n/* Add padding under the header post image on mobile */\n@media (max-width: 500px) {\n .post-full-content {\n padding: 30px 0 0;\n }\n}\n\n/* Fix the blog title */\n.floating-header-blog-title {\n margin-right: 1px;\n}"],"sourceRoot":"/source/"}
{"version":3,"sources":["custom.css"],"names":[],"mappings":"AACA,WACI,4BAA+B,AAC/B,kBAAmB,AACnB,gBAAiB,AACjB,wDAA2D,AAC3D,2bAKuF,CAC1F,AAeD,6HACI,yCAA6C,CAChD,AAGD,mBACI,mBAAoB,AAKpB,gBAAkB,CAJrB,AAQD,sBACI,cAAwB,AACxB,cAAgB,CACnB,AAGD,aACI,yBAA8B,CACjC,AAED,0BACI,aACI,2BAA8B,CACjC,CACJ,AAED,yBACI,aACI,mBAAsB,CACzB,CACJ,AAED,kBACI,aAAmB,CACtB,AAGD,yBACI,iBACI,WAAa,CAChB,CACJ,AAGD,+CACI,kBAAmB,AACnB,mBAAqB,CACxB,AAGD,aACI,mBAAqB,CACxB,AAGD,kBACI,eAAmB,CACtB,AAGD,gDACI,gBAAmB,CACtB,AAGD,uBACI,cAAgB,CACnB,AAGD,kBACI,WAAqB,CACxB,AAGD,yBACI,kBACI,oBAAsB,CACzB,CACJ,AAGD,mBACI,cAAe,AACf,WAAa,CAChB,AAGD,mDACI,YAAc,CACjB,AAGD,yBACI,mBACI,gBAAkB,CACrB,CACJ,AAGD,4BACI,gBAAkB,CACrB","file":"custom.css","sourcesContent":["/* source-sans-pro-regular - latin */\r\n@font-face {\r\n font-family: 'Source Sans Pro';\r\n font-style: normal;\r\n font-weight: 400;\r\n src: url('../fonts/source-sans-pro-v11-latin-regular.eot'); /* IE9 Compat Modes */\r\n src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'),\r\n url('../fonts/source-sans-pro-v11-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\r\n url('../fonts/source-sans-pro-v11-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */\r\n url('../fonts/source-sans-pro-v11-latin-regular.woff') format('woff'), /* Modern Browsers */\r\n url('../fonts/source-sans-pro-v11-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */\r\n url('../fonts/source-sans-pro-v11-latin-regular.svg#SourceSansPro') format('svg'); /* Legacy iOS */\r\n}\r\n\r\n/* Use Source Sans Pro font */\r\n.post-full-content {\r\n font-family: 'Source Sans Pro',Georgia,serif;\r\n}\r\n.post-full-content h5 {\r\n font-family: 'Source Sans Pro',Georgia,serif;\r\n}\r\n.post-card-excerpt {\r\n font-family: 'Source Sans Pro',Georgia,serif;\r\n}\r\n.site-header-content .author-meta {\r\n font-family: 'Source Sans Pro',Georgia,serif;\r\n}\r\n.subscribe-overlay-description {\r\n font-family: 'Source Sans Pro',Georgia,serif;\r\n}\r\n\r\n/* Justify post content */\r\n.post-full-content {\r\n text-align: justify;\r\n}\r\n\r\n/* Make the post content font size 0.3rem tinier */\r\n.post-full-content {\r\n font-size: 1.9rem;\r\n}\r\n\r\n/* Reduce h2 size and add some bottom margin */\r\n.post-full-content h2 {\r\n margin: 0.5em 0 0.5em 0;\r\n font-size: 3rem;\r\n}\r\n\r\n/* Make the thread the same width as the post */\r\n#isso-thread {\r\n padding: 0 100px 0 !important;\r\n}\r\n\r\n@media (max-width: 1170px) {\r\n #isso-thread {\r\n padding: 5vw 7vw 0 !important;\r\n }\r\n}\r\n\r\n@media (max-width: 500px) {\r\n #isso-thread {\r\n padding: 0 !important;\r\n }\r\n}\r\n/* reduce the bottom padding of the author card */\r\n.post-full-footer {\r\n padding: 3vw 0 3vw;\r\n}\r\n\r\n/* Reduce sticked header by 10px on desktop */\r\n@media (min-width: 900px) {\r\n .floating-header {\r\n height: 50px;\r\n }\r\n}\r\n\r\n/* Make the first paragraph the same size as the post */\r\n.post-template .kg-card-markdown>p:first-child {\r\n font-size: inherit;\r\n line-height: inherit;\r\n}\r\n\r\n/* Reduce padding-bottom of the footer by 20px */\r\n.site-footer {\r\n padding-bottom: 20px;\r\n}\r\n\r\n/* Add a bit of padding under the author name in the author card */\r\n.author-card-name {\r\n padding: 0 0 5px 0;\r\n}\r\n\r\n/* Reduce top and bottom margins for pictures and videos by 1em */\r\n.post-full-content img, .post-full-content video {\r\n margin: 0.5em auto;\r\n}\r\n\r\n/* Reduce top and bottom margins for code */\r\n.post-full-content pre {\r\n margin: 0 0 2em;\r\n}\r\n\r\n/* Reduce padding top of the post header by 4vw */\r\n.post-full-header {\r\n padding: 3vw 3vw 3vw;\r\n}\r\n\r\n/* Reduce padding top and bottom of the post header on mobile */\r\n@media (max-width: 500px) {\r\n .post-full-header {\r\n padding: 10vw 3vw 8vw;\r\n }\r\n}\r\n\r\n/* Center the header post image */\r\n.post-header-image {\r\n display: block;\r\n margin: auto;\r\n}\r\n\r\n/* Remove the shadows as we move up the image */\r\n.post-full-content::before, .post-full-content::after {\r\n display: none;\r\n}\r\n\r\n/* Add padding under the header post image on mobile */\r\n@media (max-width: 500px) {\r\n .post-full-content {\r\n padding: 30px 0 0;\r\n }\r\n}\r\n\r\n/* Fix the blog title */\r\n.floating-header-blog-title {\r\n margin-right: 1px;\r\n}"],"sourceRoot":"/source/"}

+ 1
- 1
assets/built/global.css Ver arquivo

@@ -1,2 +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:#3c484e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:1.5rem;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}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:700;text-rendering:optimizeLegibility}h1{margin:0 0 .5em;font-size:5rem;font-weight:700}@media (max-width:500px){h1{font-size:2.2rem}}h2{margin:1.5em 0 .5em;font-size: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}
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:#3c484e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:1.5rem;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:700;text-rendering:optimizeLegibility}h1{margin:0 0 .5em;font-size:5rem;font-weight:700}@media (max-width:500px){h1{font-size:2.2rem}}h2{margin:1.5em 0 .5em;font-size: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}
/*# sourceMappingURL=global.css.map */

+ 1
- 1
assets/built/global.css.map
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


+ 1
- 1
assets/built/screen.css
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


+ 1
- 1
assets/built/screen.css.map
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


+ 5
- 1
assets/css/global.css Ver arquivo

@@ -267,7 +267,6 @@ th {
padding: 0;
}


/* ==========================================================================
Base styles: opinionated defaults
========================================================================== */
@@ -360,6 +359,11 @@ ol {
list-style: decimal;
}

ul,
ol {
max-width: 100%;
}

li {
margin: 0.5em 0;
padding-left: 0.3em;


+ 338
- 22
assets/css/screen.css Ver arquivo

@@ -13,9 +13,12 @@ production stylesheet in assets/built/screen.css
7. Single Post
7.1. Subscribe Form
7.2. Post Footer
7.2.1 Single Author Byline
7.2.2 Multiple Author Byline
7.3. Comments
7.4. Related Posts
7.5. Floating Header
7.6. Koenig Styles
8. Author Template
9. Error Template
10. Subscribe Overlay
@@ -395,9 +398,9 @@ The knock-on effect of this is ugly browser-scroll bars at the bottom, so 80px o
}

.post-card:hover {
box-shadow: 0 0 1px rgba(39,44,49,0.10), 0 3px 16px rgba(39, 44, 49,0.07);
transition: all 0.3s ease;
transform: translate3D(0, -1px, 0);
box-shadow: rgba(39,44,49,0.07) 8px 28px 50px, rgba(39, 44, 49, 0.04) 1px 6px 12px;
transition: all 0.4s ease;
transform: translate3D(0, -1px, 0) scale(1.02);
}

.post-card-image-link {
@@ -416,6 +419,7 @@ The knock-on effect of this is ugly browser-scroll bars at the bottom, so 80px o

.post-card-content-link {
position: relative;
flex-grow: 1;
display: block;
padding: 25px 25px 0;
color: var(--darkgrey);
@@ -452,20 +456,135 @@ The knock-on effect of this is ugly browser-scroll bars at the bottom, so 80px o
}

.post-card-meta {
display: flex;
justify-content: space-between;
align-items: flex-end;
padding: 0 25px 25px;
}

.author-profile-image {
margin-right: 5px;
width: 25px;
height: 25px;
display: block;
background: color(var(--lightgrey) l(+10%));
border-radius: 100%;

object-fit: cover;
}

.post-card-author {
font-size: 1.3rem;
.post-card-meta .profile-image-wrapper,
.post-card-meta .avatar-wrapper {
position: relative;
}

.author-list {
display: flex;
flex-wrap: wrap-reverse;
margin: 0;
padding: 0;
list-style: none;
}

.author-list-item {
position: relative;
flex-shrink: 0;
margin: 0;
padding: 0;
}

.author-list-item:nth-child(1) {
z-index: 10;
}
.author-list-item:nth-child(2) {
z-index: 9;
}
.author-list-item:nth-child(3) {
z-index: 8;
}
.author-list-item:nth-child(4) {
z-index: 7;
}
.author-list-item:nth-child(5) {
z-index: 6;
}
.author-list-item:nth-child(6) {
z-index: 5;
}
.author-list-item:nth-child(7) {
z-index: 4;
}
.author-list-item:nth-child(8) {
z-index: 3;
}
.author-list-item:nth-child(9) {
z-index: 2;
}
.author-list-item:nth-child(10) {
z-index: 1;
}

.static-avatar {
display: block;
overflow: hidden;
margin: 0 -5px;
width: 34px;
height: 34px;
border: #fff 2px solid;
border-radius: 100%;
}

.moving-avatar {
display: block;
overflow: hidden;
margin: 0 -6px;
width: 56px;
height: 56px;
border: #fff 2px solid;
border-radius: 100%;
transition: all 0.5s cubic-bezier(0.4, 0.01, 0.165, 0.99) 0.7s;
}

@media (min-width: 800px) {
.author-list:hover .moving-avatar {
margin: 0;
transition: all 0.3s cubic-bezier(0.4, 0.01, 0.165, 0.99);
}
}

.author-name-tooltip {
position: absolute;
bottom: 105%;
z-index: 999;
display: block;
padding: 2px 8px;
color: white;
font-size: 1.2rem;
letter-spacing: 0.2px;
white-space: nowrap;
background: var(--darkgrey);
border-radius: 3px;
box-shadow: rgba(39,44,49,0.08) 0 12px 26px, rgba(39, 44, 49, 0.03) 1px 3px 8px;
opacity: 0;
transition: all 0.3s cubic-bezier(0.4, 0.01, 0.165, 0.99);
transform: translateY(6px);
pointer-events: none;
}

.author-list-item:hover .author-name-tooltip {
opacity: 1.0;
transform: translateY(0px);
}

@media (max-width: 650px) {
.author-name-tooltip {
display: none;
}
}

.reading-time {
flex-shrink: 0;
margin-left: 20px;
color: var(--midgrey);
font-size: 1.2rem;
line-height: 33px;
font-weight: 500;
letter-spacing: 0.5px;
text-transform: uppercase;
@@ -666,13 +785,6 @@ The first (most recent) post in the list is styled to be bigger than the others
display: none;
}

.kg-card-markdown {
display: flex;
flex-direction: column;
align-items: center;
max-width: 920px;
}

.post-full-content h1,
.post-full-content h2,
.post-full-content h3,
@@ -698,11 +810,6 @@ The first (most recent) post in the list is styled to be bigger than the others
margin: 0;
}

.post-template .kg-card-markdown > p:first-child {
font-size: 1.25em;
line-height: 1.5em;
}

.post-full-content a {
color: #000;
box-shadow: var(--blue) 0 -1px 0 inset;
@@ -1157,9 +1264,11 @@ Usage (In Ghost editor):
max-width: 840px;
}

/* 7.2.1 Single Author Byline
/* ---------------------------------------------------------- */

.author-card {
display: flex;
align-items: center;
}

.author-card .author-profile-image {
@@ -1169,7 +1278,7 @@ Usage (In Ghost editor):
}

.author-card-name {
margin: 0 0 2px 0;
margin: 8px 0 2px 0;
padding: 0;
font-size: 2rem;
}
@@ -1212,6 +1321,137 @@ Usage (In Ghost editor):
text-decoration: none;
}

/* 7.2.2 Multiple Author Byline
/* ---------------------------------------------------------- */

.post-full-authors {
flex-grow: 1;
display: flex;
flex-direction: column;
align-items: center;
margin-top: 20px;
padding-top: 40px;
border-top: color(var(--lightgrey) l(+10%)) 1px solid;
}

.post-full-authors-content {
margin-bottom: 20px;
}

.post-full-authors-content p {
margin-bottom: 0;
color: var(--midgrey);
font-size: 1.4rem;
letter-spacing: 0.2px;
text-align: center;
text-transform: uppercase;
}

.post-full-authors-content a {
display: inline-block;
color: color(var(--darkgrey) l(+20%));
font-size: 1.4rem;
font-weight: 600;
text-transform: uppercase;
}

.post-full-footer .author-list {
justify-content: center;
padding: 10px 20px;
}

.author-card .author-profile-image,
.author-card .avatar-wrapper {
position: relative;
margin-right: 15px;
}

.author-list-item .author-card {
position: absolute;
bottom: 130%;
left: 50%;
z-index: 300;
display: block;
margin-left: -160px;
width: 320px;
font-size: 1.4rem;
letter-spacing: 0.2px;
background: white;
border-radius: 6px;
box-shadow: rgba(39,44,49,0.08) 0 12px 26px, rgba(39, 44, 49, 0.03) 1px 3px 8px;
opacity: 0;
transition: all 0.3s cubic-bezier(0.4, 0.01, 0.165, 0.99);
transform: scale(0.98) translateY(15px);
pointer-events: none;
}

.author-list-item .author-card:before {
content: "";
position: absolute;
top: 100%;
left: 50%;
display: block;
margin-left: -12px;
width: 0;
height: 0;
border-top: 12px solid #fff;
border-right: 12px solid transparent;
border-left: 12px solid transparent;
}

.author-list-item .author-card.hovered {
opacity: 1.0;
transform: scale(1) translateY(0px);
pointer-events: auto;
}

.author-card .basic-info {
display: flex;
flex-direction: column;
align-items: center;
padding: 30px 20px 20px 20px;
color: #fff;
background: var(--darkgrey);
border-radius: 6px 6px 0 0;
}

.author-card .basic-info h2 {
margin: 1em 0 0.5em;
}

.author-card .bio {
padding: 20px 20px 0;
}

@media (max-width: 650px) {
.author-list-item .author-card {
display: none;
}
}

.basic-info .author-profile-image {
margin: 0;
width: 88px;
height: 88px;
border: none;
}

.basic-info .avatar-wrapper {
position: relative;
margin: 0;
width: 88px;
height: 88px;
border: none;
background: rgba(229, 239, 245, 0.1);
}

.basic-info .avatar-wrapper svg {
margin: 0;
width: 88px;
height: 88px;
opacity: 0.15;
}


/* 7.3. Comments
/* ---------------------------------------------------------- */
@@ -1571,6 +1811,82 @@ Usage (In Ghost editor):
}


/* 7.6. Koenig Styles
/* ---------------------------------------------------------- */

/* For Ghost 1.0 */
.kg-card-markdown {
display: flex;
flex-direction: column;
align-items: center;
max-width: 920px;
}

.post-template .kg-card-markdown > p:first-child {
font-size: 1.25em;
line-height: 1.5em;
}
/* ^ .kg-card-markdown will be deprecated */


.post-template .kg-post > p:first-child {
font-size: 1.25em;
line-height: 1.5em;
}

.kg-post {
display: flex;
flex-direction: column;
align-items: center;
max-width: 920px;
}

.post-full-content .kg-image {
max-width: 100%;
}

/* Preventing full-width image overlap with post image. */
.post-full-image + .post-full-content .kg-post *:first-child .kg-image {
width: 100%;
}

.post-full-content .kg-image-wide {
max-width: 1040px;
}

.post-full-content .kg-image-full {
max-width: 100vw;
}

.kg-image-card figcaption {
font-size: 80%;
margin: -1.5em auto 3em;
}

.post-full-content .kg-image-full + figcaption {
max-width: 840px;
}

@media (max-width: 1040px) {
.post-full-content .kg-image-full {
width: 100vw;
}
}

@media (max-width: 1170px) {
.post-full-content .kg-image-full + figcaption {
padding: 0 11vw;
max-width: 100vw;
}
}

@media (max-width: 500px) {
.post-full-content .kg-image-full + figcaption {
padding: 0 4vw;
}
}


/* 8. Author Template
/* ---------------------------------------------------------- */



+ 44
- 12
assets/js/infinitescroll.js Ver arquivo

@@ -1,10 +1,12 @@
/* global maxPages */

// Code snippet inspired by https://github.com/douglasrodrigues5/ghost-blog-infinite-scroll
$(function ($) {
var currentPage = 1;
var pathname = window.location.pathname;
var $document = $(document);
var $result = $('.post-feed');
var buffer = 100;
var buffer = 300;

var ticking = false;
var isLoading = false;
@@ -13,9 +15,6 @@ $(function ($) {
var lastWindowHeight = window.innerHeight;
var lastDocumentHeight = $document.height();

// remove hash params from pathname
pathname = pathname.replace(/#(.*)$/g, '').replace('/\//g', '/');

function onScroll() {
lastScrollY = window.scrollY;
requestTick();
@@ -29,12 +28,34 @@ $(function ($) {

function requestTick() {
if (!ticking) {
requestAnimationFrame(infiniteScroll)
requestAnimationFrame(infiniteScroll);
}
ticking = true;
}

function infiniteScroll () {
function sanitizePathname(path) {
var paginationRegex = /(?:page\/)(\d)(?:\/)$/i;

// remove hash params from path
path = path.replace(/#(.*)$/g, '').replace('////g', '/');

// remove pagination from the path and replace the current pages
// with the actual requested page. E. g. `/page/3/` indicates that
// the user actually requested page 3, so we should request page 4
// next, unless it's the last page already.
if (path.match(paginationRegex)) {
currentPage = parseInt(path.match(paginationRegex)[1]);

path = path.replace(paginationRegex, '');
}

return path;
}

function infiniteScroll() {
// sanitize the pathname from possible pagination or hash params
pathname = sanitizePathname(pathname);

// return if already loading
if (isLoading) {
return;
@@ -46,29 +67,40 @@ $(function ($) {
return;
}

// return if currentPage is the last page already
if (currentPage === maxPages) {
/**
* maxPages is defined in default.hbs and is the value
* of the amount of pagination pages.
* If we reached the last page or are past it,
* we return and disable the listeners.
*/
if (currentPage >= maxPages) {
window.removeEventListener('scroll', onScroll, {passive: true});
window.removeEventListener('resize', onResize);
return;
}

isLoading = true;

// next page
currentPage++;
currentPage += 1;

// Load more
var nextPage = pathname + 'page/' + currentPage + '/';

$.get(nextPage, function (content) {
$result.append($(content).find('.post').hide().fadeIn(100));

var parse = document.createRange().createContextualFragment(content);
var posts = parse.querySelectorAll('.post');
if (posts.length) {
[].forEach.call(posts, function (post) {
$result[0].appendChild(post);
});
}
}).fail(function (xhr) {
// 404 indicates we've run out of pages
if (xhr.status === 404) {
window.removeEventListener('scroll', onScroll, {passive: true});
window.removeEventListener('resize', onResize);
}

}).always(function () {
lastDocumentHeight = $document.height();
isLoading = false;


+ 1
- 1
author.hbs Ver arquivo

@@ -38,7 +38,7 @@
{{/author}}

{{!-- The main content area --}}
<main id="site-main" class="site-main outer" role="main">
<main id="site-main" class="site-main outer">
<div class="inner">

<div class="post-feed">


+ 4
- 1
default.hbs Ver arquivo

@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html>
<html lang="{{lang}}">
<head>

{{!-- Document Settings --}}
@@ -59,6 +59,9 @@

{{#if pagination.pages}}
<script>
// maxPages is a global variable that is needed to determine
// if we need to load more pages for the infinitescroll, or if
// we reached the last page already.
var maxPages = parseInt('{{pagination.pages}}');
</script>
<script src="{{asset "js/infinitescroll.js"}}"></script>


+ 1
- 1
error-404.hbs Ver arquivo

@@ -29,7 +29,7 @@ It's a good idea to keep this template as minimal as possible in terms of both f
</div>
</header>

<main id="site-main" class="site-main outer" role="main">
<main id="site-main" class="site-main outer">
<div class="inner">

<section class="error-message">


+ 1
- 1
error.hbs Ver arquivo

@@ -30,7 +30,7 @@ You'll notice that we *don't* use any JavsScript, or ghost_head / ghost_foot in
</div>
</header>

<main id="site-main" class="site-main outer" role="main">
<main id="site-main" class="site-main outer">
<div class="inner">

<section class="error-message">


+ 1
- 2
gulpfile.js Ver arquivo

@@ -3,7 +3,6 @@ var gulp = require('gulp');
// gulp plugins and utils
var gutil = require('gulp-util');
var livereload = require('gulp-livereload');
var nodemon = require('gulp-nodemon');
var postcss = require('gulp-postcss');
var sourcemaps = require('gulp-sourcemaps');
var zip = require('gulp-zip');
@@ -51,7 +50,7 @@ gulp.task('watch', function () {
gulp.watch('assets/css/**', ['css']);
});

gulp.task('zip', ['css'], function() {
gulp.task('zip', ['css'], function () {
var targetDir = 'dist/';
var themeName = require('./package.json').name;
var filename = themeName + '.zip';


+ 1
- 1
index.hbs Ver arquivo

@@ -20,7 +20,7 @@ into the {body} of the default.hbs template --}}
</header>

{{!-- The main content area --}}
<main id="site-main" class="site-main outer" role="main">
<main id="site-main" class="site-main outer">
<div class="inner">

<div class="post-feed">


+ 8
- 2
package.json Ver arquivo

@@ -2,7 +2,7 @@
"name": "casper-xyz",
"description": "This is the Ghost theme of angristan.xyz, based on Casper.",
"demo": "https://angristan.xyz",
"version": "2.1.9",
"version": "2.3.0",
"engines": {
"ghost": ">=1.2.0"
},
@@ -11,6 +11,10 @@
"desktop": "assets/screenshot-desktop.jpg",
"mobile": "assets/screenshot-mobile.jpg"
},
"scripts": {
"dev": "gulp",
"zip": "gulp zip"
},
"author": {
"name": "Ghost Foundation",
"email": "hello@ghost.org",
@@ -38,7 +42,6 @@
"cssnano": "3.7.1",
"gulp": "3.9.1",
"gulp-livereload": "3.8.1",
"gulp-nodemon": "2.1.0",
"gulp-postcss": "6.1.1",
"gulp-sourcemaps": "1.6.0",
"gulp-util": "3.0.7",
@@ -50,5 +53,8 @@
},
"config": {
"posts_per_page": 25
},
"dependencies": {
"yarn": "^1.7.0"
}
}

+ 1
- 1
page.hbs Ver arquivo

@@ -12,7 +12,7 @@ into the {body} of the default.hbs template --}}
{{!-- Everything inside the #post tags pulls data from the post --}}
{{#post}}

<main id="site-main" class="site-main outer" role="main">
<main id="site-main" class="site-main outer">
<div class="inner">

<article class="post-full {{post_class}} {{#unless feature_image}}no-image{{/unless}}">


+ 72
- 0
partials/byline-multiple.hbs Ver arquivo

@@ -0,0 +1,72 @@
<section class="post-full-authors">

<div class="post-full-authors-content">
<p>This post was a collaboration between</p>
<p>{{authors}}</p>
</div>

<ul class="author-list">
{{#foreach authors}}
<li class="author-list-item">

<div class="author-card">
<div class="basic-info">
{{#if profile_image}}
<img class="author-profile-image" src="{{profile_image}}" alt="{{name}}" />
{{else}}
<div class="author-profile-image">{{> "icons/avatar"}}</div>
{{/if}}
<h2>{{name}}</h2>
</div>
<div class="bio">
{{#if bio}}
<p>{{bio}}</p>
<p><a href="{{url}}">More posts</a> by {{name}}.</p>
{{else}}
<p>Read <a href="{{url}}">more posts</a> by this author.</p>
{{/if}}
</div>
</div>

{{#if profile_image}}
<a href="{{url}}" class="moving-avatar"><img class="author-profile-image" src="{{profile_image}}" alt="{{name}}" /></a>
{{else}}
<a href="{{url}}" class="moving-avatar author-profile-image">{{> "icons/avatar"}}</a>
{{/if}}

</li>
{{/foreach}}

</ul>

</section>

{{#contentFor "scripts"}}
<script>
// Adds delay to author card dropups to disappear. This gives enough
// time for the user to interact with the author card while they move
// the mouse from the avatar to the card. Also makes space for the
// interacted avatar.
$(document).ready(function () {

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}}

+ 23
- 0
partials/byline-single.hbs Ver arquivo

@@ -0,0 +1,23 @@
{{!-- Everything inside the #author tags pulls data from the author --}}
{{#author}}

<section class="author-card">
{{#if profile_image}}
<img class="author-profile-image" src="{{profile_image}}" alt="{{name}}" />
{{else}}
<span class="avatar-wrapper">{{> "icons/avatar"}}</span>
{{/if}}
<section class="author-card-content">
<h4 class="author-card-name"><a href="{{url}}">{{name}}</a></h4>
{{#if bio}}
<p>{{bio}}</p>
{{else}}
<p>Read <a href="{{url}}">more posts</a> by this author.</p>
{{/if}}
</section>
</section>
<div class="post-full-footer-right">
<a class="author-card-button" href="{{url}}">Read More</a>
</div>

{{/author}}

+ 1
- 0
partials/icons/avatar.hbs Ver arquivo

@@ -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>

+ 20
- 4
partials/post-card.hbs Ver arquivo

@@ -17,10 +17,26 @@
</section>
</a>
<footer class="post-card-meta">
{{#if author.profile_image}}
<img class="author-profile-image" src="{{author.profile_image}}" alt="{{author.name}}" />
{{/if}}
<span class="post-card-author">{{author}}</span>

<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="{{profile_image}}" alt="{{name}}" /></a>
{{else}}
<a href="{{url}}" class="static-avatar author-profile-image">{{> "icons/avatar"}}</a>
{{/if}}
</li>
{{/foreach}}
</ul>

<span class="reading-time">{{reading_time}}</span>

</footer>
</div>
</article>

+ 12
- 20
post.hbs Ver arquivo

@@ -12,7 +12,7 @@ into the {body} of the default.hbs template --}}
{{!-- Everything inside the #post tags pulls data from the post --}}
{{#post}}

<main id="site-main" class="site-main outer" role="main">
<main id="site-main" class="site-main outer">
<div class="inner">

<article class="post-full {{post_class}} {{#unless feature_image}}no-image{{/unless}}">
@@ -45,27 +45,18 @@ into the {body} of the default.hbs template --}}
{{/if}}

<footer class="post-full-footer">
{{!-- Everything inside the #author tags pulls data from the author --}}
{{#author}}

<section class="author-card">
{{#if profile_image}}
<img class="author-profile-image" src="{{profile_image}}" alt="{{name}}" />
{{/if}}
<section class="author-card-content">
<h4 class="author-card-name"><a href="{{url}}">{{name}}</a></h4>
{{#if bio}}
<p>{{bio}}</p>
{{else}}
<p>Read <a href="{{url}}">more posts</a> by this author.</p>
{{/if}}
</section>
</section>
<div class="post-full-footer-right">
<a class="author-card-button" href="{{url}}">Read More</a>
</div>
{{!-- There are two options for how we display the byline/author-info.
If the post has more than one author, we load a specific template
from includes/byline-multiple.hbs, otherwise, we just use the
default byline. --}}

{{#has author="count:>1"}}
{{> "byline-multiple"}}
{{else}}
{{> "byline-single"}}
{{/has}}

{{/author}}
</footer>

{{!-- Isso (hardcoded) --}}
@@ -194,6 +185,7 @@ $(document).ready(function () {
window.addEventListener('resize', onResize, false);

update();

});
</script>
{{/contentFor}}

+ 1
- 1
tag.hbs Ver arquivo

@@ -21,7 +21,7 @@
{{/tag}}

{{!-- The main content area --}}
<main id="site-main" class="site-main outer" role="main">
<main id="site-main" class="site-main outer">
<div class="inner">
<div class="post-feed">
{{#foreach posts}}


+ 4071
- 0
yarn.lock
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


Carregando…
Cancelar
Salvar