├── .gitignore ├── LICENSE ├── README.md ├── assets ├── js │ ├── breakpoints.min.js │ ├── browser.min.js │ ├── demo.js │ ├── jquery.min.js │ ├── jquery.scrollex.min.js │ ├── jquery.scrolly.min.js │ ├── main.js │ └── util.js └── sass │ ├── base │ ├── _page.scss │ ├── _reset.scss │ └── _typography.scss │ ├── components │ ├── _actions.scss │ ├── _banner.scss │ ├── _box.scss │ ├── _button.scss │ ├── _form.scss │ ├── _gallery.scss │ ├── _icon.scss │ ├── _icons.scss │ ├── _image.scss │ ├── _index.scss │ ├── _items.scss │ ├── _list.scss │ ├── _row.scss │ ├── _section.scss │ ├── _spotlight.scss │ ├── _table.scss │ └── _wrapper.scss │ ├── layout │ └── _wrapper.scss │ ├── libs │ ├── _breakpoints.scss │ ├── _functions.scss │ ├── _html-grid.scss │ ├── _mixins.scss │ ├── _vars.scss │ └── _vendor.scss │ ├── main.scss │ └── noscript.scss ├── exampleSite ├── .gitignore ├── archetypes │ └── default.md ├── config │ ├── _default │ │ └── hugo.toml │ ├── development │ │ └── hugo.toml │ └── production │ │ └── hugo.toml ├── data │ ├── banner.yml │ ├── gallery.yml │ ├── items.yml │ ├── spotlight1.yml │ ├── spotlight2.yml │ └── spotlight3.yml ├── hugo.toml ├── layouts │ ├── _default │ │ └── baseof.html │ ├── index.html │ └── partials │ │ ├── banner.html │ │ ├── elements.html │ │ ├── elements_reference.html │ │ ├── favicon.html │ │ ├── footer.html │ │ ├── gallery.html │ │ ├── head.html │ │ ├── item.html │ │ ├── items.html │ │ ├── modifiers.html │ │ ├── picture.html │ │ ├── scripts.html │ │ ├── spotlight-01-left.html │ │ ├── spotlight-02-right.html │ │ ├── spotlight-03-left.html │ │ └── spotlight.html └── static │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── apple-touch-icon.png │ ├── browserconfig.xml │ ├── css │ └── fontawesome-all.min.css │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── images │ ├── banner.jpg │ ├── gallery │ │ ├── fulls │ │ │ ├── 01.jpg │ │ │ ├── 02.jpg │ │ │ ├── 03.jpg │ │ │ ├── 04.jpg │ │ │ ├── 05.jpg │ │ │ ├── 06.jpg │ │ │ ├── 07.jpg │ │ │ ├── 08.jpg │ │ │ ├── 09.jpg │ │ │ ├── 10.jpg │ │ │ ├── 11.jpg │ │ │ └── 12.jpg │ │ └── thumbs │ │ │ ├── 01.jpg │ │ │ ├── 02.jpg │ │ │ ├── 03.jpg │ │ │ ├── 04.jpg │ │ │ ├── 05.jpg │ │ │ ├── 06.jpg │ │ │ ├── 07.jpg │ │ │ ├── 08.jpg │ │ │ ├── 09.jpg │ │ │ ├── 10.jpg │ │ │ ├── 11.jpg │ │ │ └── 12.jpg │ ├── pic01.jpg │ ├── pic02.jpg │ ├── spotlight01.jpg │ ├── spotlight02.jpg │ └── spotlight03.jpg │ ├── js │ └── fontawesome-all.min.js │ ├── mstile-150x150.png │ ├── safari-pinned-tab.svg │ ├── site.webmanifest │ └── webfonts │ ├── fa-brands-400.ttf │ ├── fa-brands-400.woff2 │ ├── fa-duotone-900.ttf │ ├── fa-duotone-900.woff2 │ ├── fa-light-300.ttf │ ├── fa-light-300.woff2 │ ├── fa-regular-400.ttf │ ├── fa-regular-400.woff2 │ ├── fa-sharp-solid-900.ttf │ ├── fa-sharp-solid-900.woff2 │ ├── fa-solid-900.ttf │ ├── fa-solid-900.woff2 │ ├── fa-thin-100.ttf │ ├── fa-thin-100.woff2 │ ├── fa-v4compatibility.ttf │ └── fa-v4compatibility.woff2 ├── images ├── device-screenshots.png ├── screenshot.png └── tn.png ├── layouts ├── _default │ └── baseof.html ├── index.html └── partials │ ├── banner.html │ ├── elements.html │ ├── elements_reference.html │ ├── favicon.html │ ├── footer.html │ ├── gallery.html │ ├── head.html │ ├── item.html │ ├── items.html │ ├── modifiers.html │ ├── picture.html │ ├── scripts.html │ ├── spotlight-01-left.html │ ├── spotlight-02-right.html │ ├── spotlight-03-left.html │ └── spotlight.html ├── static ├── android-chrome-192x192.png ├── android-chrome-512x512.png ├── apple-touch-icon.png ├── browserconfig.xml ├── css │ └── fontawesome-all.min.css ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon.ico ├── images │ ├── banner.jpg │ ├── gallery │ │ ├── fulls │ │ │ ├── 01.jpg │ │ │ ├── 02.jpg │ │ │ ├── 03.jpg │ │ │ ├── 04.jpg │ │ │ ├── 05.jpg │ │ │ ├── 06.jpg │ │ │ ├── 07.jpg │ │ │ ├── 08.jpg │ │ │ ├── 09.jpg │ │ │ ├── 10.jpg │ │ │ ├── 11.jpg │ │ │ └── 12.jpg │ │ └── thumbs │ │ │ ├── 01.jpg │ │ │ ├── 02.jpg │ │ │ ├── 03.jpg │ │ │ ├── 04.jpg │ │ │ ├── 05.jpg │ │ │ ├── 06.jpg │ │ │ ├── 07.jpg │ │ │ ├── 08.jpg │ │ │ ├── 09.jpg │ │ │ ├── 10.jpg │ │ │ ├── 11.jpg │ │ │ └── 12.jpg │ ├── pic01.jpg │ ├── pic02.jpg │ ├── spotlight01.jpg │ ├── spotlight02.jpg │ └── spotlight03.jpg ├── js │ └── fontawesome-all.min.js ├── mstile-150x150.png ├── safari-pinned-tab.svg ├── site.webmanifest └── webfonts │ ├── fa-brands-400.ttf │ ├── fa-brands-400.woff2 │ ├── fa-duotone-900.ttf │ ├── fa-duotone-900.woff2 │ ├── fa-light-300.ttf │ ├── fa-light-300.woff2 │ ├── fa-regular-400.ttf │ ├── fa-regular-400.woff2 │ ├── fa-sharp-solid-900.ttf │ ├── fa-sharp-solid-900.woff2 │ ├── fa-solid-900.ttf │ ├── fa-solid-900.woff2 │ ├── fa-thin-100.ttf │ ├── fa-thin-100.woff2 │ ├── fa-v4compatibility.ttf │ └── fa-v4compatibility.woff2 └── theme.toml /.gitignore: -------------------------------------------------------------------------------- 1 | # General 2 | .DS_Store 3 | .AppleDouble 4 | .LSOverride 5 | 6 | # Icon must end with two \r 7 | Icon 8 | 9 | # Thumbnails 10 | ._* 11 | 12 | # Files that might appear in the root of a volume 13 | .DocumentRevisions-V100 14 | .fseventsd 15 | .Spotlight-V100 16 | .TemporaryItems 17 | .Trashes 18 | .VolumeIcon.icns 19 | .com.apple.timemachine.donotpresent 20 | 21 | # Directories potentially created on remote AFP share 22 | .AppleDB 23 | .AppleDesktop 24 | Network Trash Folder 25 | Temporary Items 26 | .apdisk 27 | 28 | .vscode/* 29 | !.vscode/settings.json 30 | !.vscode/tasks.json 31 | !.vscode/launch.json 32 | !.vscode/extensions.json 33 | !.vscode/*.code-snippets 34 | 35 | # Local History for Visual Studio Code 36 | .history/ 37 | 38 | # Built Visual Studio Code Extensions 39 | *.vsix 40 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | # License 2 | 3 | The Hugo Story theme is licensed under the [Creative Commons Attribution 3.0 License](https://creativecommons.org/licenses/by/3.0/). -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Hugo Story 2 | ## A (modular, highly tweakable) responsive one-page theme for Hugo. 3 | 4 | ![](images/device-screenshots.png) 5 | 6 | Hugo Story is a port of the static HTML template Story by HTML5 UP. It is designed to mirror the look and feel of the original template as closely as possible while incorporating some of the features Hugo has to offer. 7 | 8 | This theme is designed for those who are comfortable editing HTML and integrating Hugo short codes and variables to customize the theme to their liking. 9 | 10 | ## Features 11 | 12 | - Minimalist Design 13 | - Fully Responsive 14 | - Templates 15 | - Header 16 | - Footer 17 | - FootScripts 18 | - Favicon 19 | - Partials for each element type 20 | - Banner 21 | - Spotlight 22 | - Gallery 23 | - Items 24 | - Image gallery 25 | - Short Codes 26 | - Site Title 27 | - Site Subtitle 28 | - Site Logo 29 | - Social Icons 30 | - Favicon and Social icons 31 | - FontAwesome Icon Support 32 | - SASS and AutoMinify Support 33 | - Google Analytics Support 34 | 35 | ## Demo 36 | https://caressofsteel.github.io/demos/hugo/hugo-story/ 37 | 38 | ## Using 39 | ### 1. Install Hugo. 40 | 41 | [Install Hugo (Extended Version)](https://gohugo.io/overview/installing/) 42 | 43 | > _This theme uses Hugo Pipes to compile SCSS & Sass so you'll have to use the **extended** version of Hugo. See the official [Hugo Quick Start Guide](https://gohugo.io/getting-started/quick-start/) for more information._ 44 | ### 2. Create a new example site called `mystory`. 45 | 46 | ``` 47 | hugo new site mystory 48 | ``` 49 | ### 3. Clone the Git repository. 50 | 51 | ``` 52 | cd mystory 53 | git clone https://github.com/caressofsteel/hugo-story.git themes/hugo-story 54 | ``` 55 | 56 | > _Hint: See a note for non-Git users [here](https://gohugo.io/getting-started/quick-start/#step-3-add-a-theme)._ 57 | ### 4. Copy contents of `themes/hugo-story/exampleSite/` to `mystory` root folder with overwrite. 58 | ``` 59 | cp -r themes/hugo-story/exampleSite/* ./ 60 | ``` 61 | > _Hint: This sets up the `mystory` example website with a copy of the theme `assets`, `layouts`, `data`, and `configuration` files in the site's root folder and outside of the theme folder._ 62 | 63 | > _Hint: Theme assets in the site root, `if present`, take precedence over files in the theme folder._ 64 | > 65 | ### 5. Start Hugo Server. 66 | ``` 67 | hugo server 68 | ``` 69 | ### 6. Open Hugo Server in your browser. 70 | ``` 71 | http://localhost:1313/ 72 | ``` 73 | Here you'll see the site running on the local Hugo server. You can now edit the theme and Hugo will rebuild the site when changes are detected. 74 | 75 | ### 7. Further steps. 76 | 77 | - Edit the contents of `YML` files in the `data` folder. 78 | - _Altering `banner.yml` will change the top block on the site. See more details [here](https://gohugo.io/templates/data-templates/)._ 79 | 80 | - Create a custom site layout. 81 | - Edit the `index.html` within `mystory/layouts/` to customize the layout the site. 82 | 83 | - By manipulating the the `{{ partial ... }}` tags within this file you can create a custom layout for the site. See more details [here](https://gohugo.io/templates/partials/). 84 | 85 | - Continue exploring Hugo and the template! 86 | ## Credits 87 | 88 | This theme was created using the _Story_ template by [HTML5 UP](https://html5up.net/uploads/demos/story/). 89 | 90 | ## License 91 | 92 | Creative Commons License 93 | 94 | This Hugo theme is licensed under the [Creative Commons Attribution 3.0 License](LICENSE). 95 | -------------------------------------------------------------------------------- /assets/js/breakpoints.min.js: -------------------------------------------------------------------------------- 1 | /* breakpoints.js v1.0 | @ajlkn | MIT licensed */ 2 | var breakpoints=function(){"use strict";function e(e){t.init(e)}var t={list:null,media:{},events:[],init:function(e){t.list=e,window.addEventListener("resize",t.poll),window.addEventListener("orientationchange",t.poll),window.addEventListener("load",t.poll),window.addEventListener("fullscreenchange",t.poll)},active:function(e){var n,a,s,i,r,d,c;if(!(e in t.media)){if(">="==e.substr(0,2)?(a="gte",n=e.substr(2)):"<="==e.substr(0,2)?(a="lte",n=e.substr(2)):">"==e.substr(0,1)?(a="gt",n=e.substr(1)):"<"==e.substr(0,1)?(a="lt",n=e.substr(1)):"!"==e.substr(0,1)?(a="not",n=e.substr(1)):(a="eq",n=e),n&&n in t.list)if(i=t.list[n],Array.isArray(i)){if(r=parseInt(i[0]),d=parseInt(i[1]),isNaN(r)){if(isNaN(d))return;c=i[1].substr(String(d).length)}else c=i[0].substr(String(r).length);if(isNaN(r))switch(a){case"gte":s="screen";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: -1px)";break;case"not":s="screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (max-width: "+d+c+")"}else if(isNaN(d))switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen";break;case"gt":s="screen and (max-width: -1px)";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+")";break;default:s="screen and (min-width: "+r+c+")"}else switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+"), screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (min-width: "+r+c+") and (max-width: "+d+c+")"}}else s="("==i.charAt(0)?"screen and "+i:i;t.media[e]=!!s&&s}return t.media[e]!==!1&&window.matchMedia(t.media[e]).matches},on:function(e,n){t.events.push({query:e,handler:n,state:!1}),t.active(e)&&n()},poll:function(){var e,n;for(e=0;e0:!!("ontouchstart"in window),e.mobile="wp"==e.os||"android"==e.os||"ios"==e.os||"bb"==e.os}};return e.init(),e}();!function(e,n){"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?module.exports=n():e.browser=n()}(this,function(){return browser}); 3 | -------------------------------------------------------------------------------- /assets/js/jquery.scrollex.min.js: -------------------------------------------------------------------------------- 1 | /* jquery.scrollex v0.2.1 | (c) @ajlkn | github.com/ajlkn/jquery.scrollex | MIT licensed */ 2 | !function(t){function e(t,e,n){return"string"==typeof t&&("%"==t.slice(-1)?t=parseInt(t.substring(0,t.length-1))/100*e:"vh"==t.slice(-2)?t=parseInt(t.substring(0,t.length-2))/100*n:"px"==t.slice(-2)&&(t=parseInt(t.substring(0,t.length-2)))),t}var n=t(window),i=1,o={};n.on("scroll",function(){var e=n.scrollTop();t.map(o,function(t){window.clearTimeout(t.timeoutId),t.timeoutId=window.setTimeout(function(){t.handler(e)},t.options.delay)})}).on("load",function(){n.trigger("scroll")}),jQuery.fn.scrollex=function(l){var s=t(this);if(0==this.length)return s;if(this.length>1){for(var r=0;r=i&&o>=t};break;case"bottom":h=function(t,e,n,i,o){return n>=i&&o>=n};break;case"middle":h=function(t,e,n,i,o){return e>=i&&o>=e};break;case"top-only":h=function(t,e,n,i,o){return i>=t&&n>=i};break;case"bottom-only":h=function(t,e,n,i,o){return n>=o&&o>=t};break;default:case"default":h=function(t,e,n,i,o){return n>=i&&o>=t}}return c=function(t){var i,o,l,s,r,a,u=this.state,h=!1,c=this.$element.offset();i=n.height(),o=t+i/2,l=t+i,s=this.$element.outerHeight(),r=c.top+e(this.options.top,s,i),a=c.top+s-e(this.options.bottom,s,i),h=this.test(t,o,l,r,a),h!=u&&(this.state=h,h?this.options.enter&&this.options.enter.apply(this.element):this.options.leave&&this.options.leave.apply(this.element)),this.options.scroll&&this.options.scroll.apply(this.element,[(o-r)/(a-r)])},p={id:a,options:u,test:h,handler:c,state:null,element:this,$element:s,timeoutId:null},o[a]=p,s.data("_scrollexId",p.id),p.options.initialize&&p.options.initialize.apply(this),s},jQuery.fn.unscrollex=function(){var e=t(this);if(0==this.length)return e;if(this.length>1){for(var n=0;n1){for(o=0;o $window.height()) 48 | $x.css('height', 'auto'); 49 | else 50 | $x.css('height', '100vh'); 51 | 52 | }, 250); 53 | 54 | }).triggerHandler('resize.flexbox-fix'); 55 | 56 | })(); 57 | 58 | // Object fit workaround. 59 | if (!browser.canUse('object-fit')) 60 | (function() { 61 | 62 | $('.banner .image, .spotlight .image').each(function() { 63 | 64 | var $this = $(this), 65 | $img = $this.children('img'), 66 | positionClass = $this.parent().attr('class').match(/image-position-([a-z]+)/); 67 | 68 | // Set image. 69 | $this 70 | .css('background-image', 'url("' + $img.attr('src') + '")') 71 | .css('background-repeat', 'no-repeat') 72 | .css('background-size', 'cover'); 73 | 74 | // Set position. 75 | switch (positionClass.length > 1 ? positionClass[1] : '') { 76 | 77 | case 'left': 78 | $this.css('background-position', 'left'); 79 | break; 80 | 81 | case 'right': 82 | $this.css('background-position', 'right'); 83 | break; 84 | 85 | default: 86 | case 'center': 87 | $this.css('background-position', 'center'); 88 | break; 89 | 90 | } 91 | 92 | // Hide original. 93 | $img.css('opacity', '0'); 94 | 95 | }); 96 | 97 | })(); 98 | 99 | // Smooth scroll. 100 | $('.smooth-scroll').scrolly(); 101 | $('.smooth-scroll-middle').scrolly({ anchor: 'middle' }); 102 | 103 | // Wrapper. 104 | $wrapper.children() 105 | .scrollex({ 106 | top: '30vh', 107 | bottom: '30vh', 108 | initialize: function() { 109 | $(this).addClass('is-inactive'); 110 | }, 111 | terminate: function() { 112 | $(this).removeClass('is-inactive'); 113 | }, 114 | enter: function() { 115 | $(this).removeClass('is-inactive'); 116 | }, 117 | leave: function() { 118 | 119 | var $this = $(this); 120 | 121 | if ($this.hasClass('onscroll-bidirectional')) 122 | $this.addClass('is-inactive'); 123 | 124 | } 125 | }); 126 | 127 | // Items. 128 | $('.items') 129 | .scrollex({ 130 | top: '30vh', 131 | bottom: '30vh', 132 | delay: 50, 133 | initialize: function() { 134 | $(this).addClass('is-inactive'); 135 | }, 136 | terminate: function() { 137 | $(this).removeClass('is-inactive'); 138 | }, 139 | enter: function() { 140 | $(this).removeClass('is-inactive'); 141 | }, 142 | leave: function() { 143 | 144 | var $this = $(this); 145 | 146 | if ($this.hasClass('onscroll-bidirectional')) 147 | $this.addClass('is-inactive'); 148 | 149 | } 150 | }) 151 | .children() 152 | .wrapInner('
'); 153 | 154 | // Gallery. 155 | $('.gallery') 156 | .wrapInner('
') 157 | .prepend(browser.mobile ? '' : '
') 158 | .scrollex({ 159 | top: '30vh', 160 | bottom: '30vh', 161 | delay: 50, 162 | initialize: function() { 163 | $(this).addClass('is-inactive'); 164 | }, 165 | terminate: function() { 166 | $(this).removeClass('is-inactive'); 167 | }, 168 | enter: function() { 169 | $(this).removeClass('is-inactive'); 170 | }, 171 | leave: function() { 172 | 173 | var $this = $(this); 174 | 175 | if ($this.hasClass('onscroll-bidirectional')) 176 | $this.addClass('is-inactive'); 177 | 178 | } 179 | }) 180 | .children('.inner') 181 | //.css('overflow', 'hidden') 182 | .css('overflow-y', browser.mobile ? 'visible' : 'hidden') 183 | .css('overflow-x', browser.mobile ? 'scroll' : 'hidden') 184 | .scrollLeft(0); 185 | 186 | // Style #1. 187 | // ... 188 | 189 | // Style #2. 190 | $('.gallery') 191 | .on('wheel', '.inner', function(event) { 192 | 193 | var $this = $(this), 194 | delta = (event.originalEvent.deltaX * 10); 195 | 196 | // Cap delta. 197 | if (delta > 0) 198 | delta = Math.min(25, delta); 199 | else if (delta < 0) 200 | delta = Math.max(-25, delta); 201 | 202 | // Scroll. 203 | $this.scrollLeft( $this.scrollLeft() + delta ); 204 | 205 | }) 206 | .on('mouseenter', '.forward, .backward', function(event) { 207 | 208 | var $this = $(this), 209 | $inner = $this.siblings('.inner'), 210 | direction = ($this.hasClass('forward') ? 1 : -1); 211 | 212 | // Clear move interval. 213 | clearInterval(this._gallery_moveIntervalId); 214 | 215 | // Start interval. 216 | this._gallery_moveIntervalId = setInterval(function() { 217 | $inner.scrollLeft( $inner.scrollLeft() + (5 * direction) ); 218 | }, 10); 219 | 220 | }) 221 | .on('mouseleave', '.forward, .backward', function(event) { 222 | 223 | // Clear move interval. 224 | clearInterval(this._gallery_moveIntervalId); 225 | 226 | }); 227 | 228 | // Lightbox. 229 | $('.gallery.lightbox') 230 | .on('click', 'a', function(event) { 231 | 232 | var $a = $(this), 233 | $gallery = $a.parents('.gallery'), 234 | $modal = $gallery.children('.modal'), 235 | $modalImg = $modal.find('img'), 236 | href = $a.attr('href'); 237 | 238 | // Not an image? Bail. 239 | if (!href.match(/\.(jpg|gif|png|mp4|webp|avif)$/)) 240 | return; 241 | 242 | // Prevent default. 243 | event.preventDefault(); 244 | event.stopPropagation(); 245 | 246 | // Locked? Bail. 247 | if ($modal[0]._locked) 248 | return; 249 | 250 | // Lock. 251 | $modal[0]._locked = true; 252 | 253 | // Set src. 254 | $modalImg.attr('src', href); 255 | 256 | // Set visible. 257 | $modal.addClass('visible'); 258 | 259 | // Focus. 260 | $modal.focus(); 261 | 262 | // Delay. 263 | setTimeout(function() { 264 | 265 | // Unlock. 266 | $modal[0]._locked = false; 267 | 268 | }, 600); 269 | 270 | }) 271 | .on('click', '.modal', function(event) { 272 | 273 | var $modal = $(this), 274 | $modalImg = $modal.find('img'); 275 | 276 | // Locked? Bail. 277 | if ($modal[0]._locked) 278 | return; 279 | 280 | // Already hidden? Bail. 281 | if (!$modal.hasClass('visible')) 282 | return; 283 | 284 | // Lock. 285 | $modal[0]._locked = true; 286 | 287 | // Clear visible, loaded. 288 | $modal 289 | .removeClass('loaded') 290 | 291 | // Delay. 292 | setTimeout(function() { 293 | 294 | $modal 295 | .removeClass('visible') 296 | 297 | setTimeout(function() { 298 | 299 | // Clear src. 300 | $modalImg.attr('src', ''); 301 | 302 | // Unlock. 303 | $modal[0]._locked = false; 304 | 305 | // Focus. 306 | $body.focus(); 307 | 308 | }, 475); 309 | 310 | }, 125); 311 | 312 | }) 313 | .on('keypress', '.modal', function(event) { 314 | 315 | var $modal = $(this); 316 | 317 | // Escape? Hide modal. 318 | if (event.keyCode == 27) 319 | $modal.trigger('click'); 320 | 321 | }) 322 | .prepend('') 323 | .find('img') 324 | .on('load', function(event) { 325 | 326 | var $modalImg = $(this), 327 | $modal = $modalImg.parents('.modal'); 328 | 329 | setTimeout(function() { 330 | 331 | // No longer visible? Bail. 332 | if (!$modal.hasClass('visible')) 333 | return; 334 | 335 | // Set loaded. 336 | $modal.addClass('loaded'); 337 | 338 | }, 275); 339 | 340 | }); 341 | 342 | })(jQuery); -------------------------------------------------------------------------------- /assets/js/util.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 3 | /** 4 | * Generate an indented list of links from a nav. Meant for use with panel(). 5 | * @return {jQuery} jQuery object. 6 | */ 7 | $.fn.navList = function() { 8 | 9 | var $this = $(this); 10 | $a = $this.find('a'), 11 | b = []; 12 | 13 | $a.each(function() { 14 | 15 | var $this = $(this), 16 | indent = Math.max(0, $this.parents('li').length - 1), 17 | href = $this.attr('href'), 18 | target = $this.attr('target'); 19 | 20 | b.push( 21 | '' + 26 | '' + 27 | $this.text() + 28 | '' 29 | ); 30 | 31 | }); 32 | 33 | return b.join(''); 34 | 35 | }; 36 | 37 | /** 38 | * Panel-ify an element. 39 | * @param {object} userConfig User config. 40 | * @return {jQuery} jQuery object. 41 | */ 42 | $.fn.panel = function(userConfig) { 43 | 44 | // No elements? 45 | if (this.length == 0) 46 | return $this; 47 | 48 | // Multiple elements? 49 | if (this.length > 1) { 50 | 51 | for (var i=0; i < this.length; i++) 52 | $(this[i]).panel(userConfig); 53 | 54 | return $this; 55 | 56 | } 57 | 58 | // Vars. 59 | var $this = $(this), 60 | $body = $('body'), 61 | $window = $(window), 62 | id = $this.attr('id'), 63 | config; 64 | 65 | // Config. 66 | config = $.extend({ 67 | 68 | // Delay. 69 | delay: 0, 70 | 71 | // Hide panel on link click. 72 | hideOnClick: false, 73 | 74 | // Hide panel on escape keypress. 75 | hideOnEscape: false, 76 | 77 | // Hide panel on swipe. 78 | hideOnSwipe: false, 79 | 80 | // Reset scroll position on hide. 81 | resetScroll: false, 82 | 83 | // Reset forms on hide. 84 | resetForms: false, 85 | 86 | // Side of viewport the panel will appear. 87 | side: null, 88 | 89 | // Target element for "class". 90 | target: $this, 91 | 92 | // Class to toggle. 93 | visibleClass: 'visible' 94 | 95 | }, userConfig); 96 | 97 | // Expand "target" if it's not a jQuery object already. 98 | if (typeof config.target != 'jQuery') 99 | config.target = $(config.target); 100 | 101 | // Panel. 102 | 103 | // Methods. 104 | $this._hide = function(event) { 105 | 106 | // Already hidden? Bail. 107 | if (!config.target.hasClass(config.visibleClass)) 108 | return; 109 | 110 | // If an event was provided, cancel it. 111 | if (event) { 112 | 113 | event.preventDefault(); 114 | event.stopPropagation(); 115 | 116 | } 117 | 118 | // Hide. 119 | config.target.removeClass(config.visibleClass); 120 | 121 | // Post-hide stuff. 122 | window.setTimeout(function() { 123 | 124 | // Reset scroll position. 125 | if (config.resetScroll) 126 | $this.scrollTop(0); 127 | 128 | // Reset forms. 129 | if (config.resetForms) 130 | $this.find('form').each(function() { 131 | this.reset(); 132 | }); 133 | 134 | }, config.delay); 135 | 136 | }; 137 | 138 | // Vendor fixes. 139 | $this 140 | .css('-ms-overflow-style', '-ms-autohiding-scrollbar') 141 | .css('-webkit-overflow-scrolling', 'touch'); 142 | 143 | // Hide on click. 144 | if (config.hideOnClick) { 145 | 146 | $this.find('a') 147 | .css('-webkit-tap-highlight-color', 'rgba(0,0,0,0)'); 148 | 149 | $this 150 | .on('click', 'a', function(event) { 151 | 152 | var $a = $(this), 153 | href = $a.attr('href'), 154 | target = $a.attr('target'); 155 | 156 | if (!href || href == '#' || href == '' || href == '#' + id) 157 | return; 158 | 159 | // Cancel original event. 160 | event.preventDefault(); 161 | event.stopPropagation(); 162 | 163 | // Hide panel. 164 | $this._hide(); 165 | 166 | // Redirect to href. 167 | window.setTimeout(function() { 168 | 169 | if (target == '_blank') 170 | window.open(href); 171 | else 172 | window.location.href = href; 173 | 174 | }, config.delay + 10); 175 | 176 | }); 177 | 178 | } 179 | 180 | // Event: Touch stuff. 181 | $this.on('touchstart', function(event) { 182 | 183 | $this.touchPosX = event.originalEvent.touches[0].pageX; 184 | $this.touchPosY = event.originalEvent.touches[0].pageY; 185 | 186 | }) 187 | 188 | $this.on('touchmove', function(event) { 189 | 190 | if ($this.touchPosX === null 191 | || $this.touchPosY === null) 192 | return; 193 | 194 | var diffX = $this.touchPosX - event.originalEvent.touches[0].pageX, 195 | diffY = $this.touchPosY - event.originalEvent.touches[0].pageY, 196 | th = $this.outerHeight(), 197 | ts = ($this.get(0).scrollHeight - $this.scrollTop()); 198 | 199 | // Hide on swipe? 200 | if (config.hideOnSwipe) { 201 | 202 | var result = false, 203 | boundary = 20, 204 | delta = 50; 205 | 206 | switch (config.side) { 207 | 208 | case 'left': 209 | result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX > delta); 210 | break; 211 | 212 | case 'right': 213 | result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX < (-1 * delta)); 214 | break; 215 | 216 | case 'top': 217 | result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY > delta); 218 | break; 219 | 220 | case 'bottom': 221 | result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY < (-1 * delta)); 222 | break; 223 | 224 | default: 225 | break; 226 | 227 | } 228 | 229 | if (result) { 230 | 231 | $this.touchPosX = null; 232 | $this.touchPosY = null; 233 | $this._hide(); 234 | 235 | return false; 236 | 237 | } 238 | 239 | } 240 | 241 | // Prevent vertical scrolling past the top or bottom. 242 | if (($this.scrollTop() < 0 && diffY < 0) 243 | || (ts > (th - 2) && ts < (th + 2) && diffY > 0)) { 244 | 245 | event.preventDefault(); 246 | event.stopPropagation(); 247 | 248 | } 249 | 250 | }); 251 | 252 | // Event: Prevent certain events inside the panel from bubbling. 253 | $this.on('click touchend touchstart touchmove', function(event) { 254 | event.stopPropagation(); 255 | }); 256 | 257 | // Event: Hide panel if a child anchor tag pointing to its ID is clicked. 258 | $this.on('click', 'a[href="#' + id + '"]', function(event) { 259 | 260 | event.preventDefault(); 261 | event.stopPropagation(); 262 | 263 | config.target.removeClass(config.visibleClass); 264 | 265 | }); 266 | 267 | // Body. 268 | 269 | // Event: Hide panel on body click/tap. 270 | $body.on('click touchend', function(event) { 271 | $this._hide(event); 272 | }); 273 | 274 | // Event: Toggle. 275 | $body.on('click', 'a[href="#' + id + '"]', function(event) { 276 | 277 | event.preventDefault(); 278 | event.stopPropagation(); 279 | 280 | config.target.toggleClass(config.visibleClass); 281 | 282 | }); 283 | 284 | // Window. 285 | 286 | // Event: Hide on ESC. 287 | if (config.hideOnEscape) 288 | $window.on('keydown', function(event) { 289 | 290 | if (event.keyCode == 27) 291 | $this._hide(event); 292 | 293 | }); 294 | 295 | return $this; 296 | 297 | }; 298 | 299 | /** 300 | * Apply "placeholder" attribute polyfill to one or more forms. 301 | * @return {jQuery} jQuery object. 302 | */ 303 | $.fn.placeholder = function() { 304 | 305 | // Browser natively supports placeholders? Bail. 306 | if (typeof (document.createElement('input')).placeholder != 'undefined') 307 | return $(this); 308 | 309 | // No elements? 310 | if (this.length == 0) 311 | return $this; 312 | 313 | // Multiple elements? 314 | if (this.length > 1) { 315 | 316 | for (var i=0; i < this.length; i++) 317 | $(this[i]).placeholder(); 318 | 319 | return $this; 320 | 321 | } 322 | 323 | // Vars. 324 | var $this = $(this); 325 | 326 | // Text, TextArea. 327 | $this.find('input[type=text],textarea') 328 | .each(function() { 329 | 330 | var i = $(this); 331 | 332 | if (i.val() == '' 333 | || i.val() == i.attr('placeholder')) 334 | i 335 | .addClass('polyfill-placeholder') 336 | .val(i.attr('placeholder')); 337 | 338 | }) 339 | .on('blur', function() { 340 | 341 | var i = $(this); 342 | 343 | if (i.attr('name').match(/-polyfill-field$/)) 344 | return; 345 | 346 | if (i.val() == '') 347 | i 348 | .addClass('polyfill-placeholder') 349 | .val(i.attr('placeholder')); 350 | 351 | }) 352 | .on('focus', function() { 353 | 354 | var i = $(this); 355 | 356 | if (i.attr('name').match(/-polyfill-field$/)) 357 | return; 358 | 359 | if (i.val() == i.attr('placeholder')) 360 | i 361 | .removeClass('polyfill-placeholder') 362 | .val(''); 363 | 364 | }); 365 | 366 | // Password. 367 | $this.find('input[type=password]') 368 | .each(function() { 369 | 370 | var i = $(this); 371 | var x = $( 372 | $('
') 373 | .append(i.clone()) 374 | .remove() 375 | .html() 376 | .replace(/type="password"/i, 'type="text"') 377 | .replace(/type=password/i, 'type=text') 378 | ); 379 | 380 | if (i.attr('id') != '') 381 | x.attr('id', i.attr('id') + '-polyfill-field'); 382 | 383 | if (i.attr('name') != '') 384 | x.attr('name', i.attr('name') + '-polyfill-field'); 385 | 386 | x.addClass('polyfill-placeholder') 387 | .val(x.attr('placeholder')).insertAfter(i); 388 | 389 | if (i.val() == '') 390 | i.hide(); 391 | else 392 | x.hide(); 393 | 394 | i 395 | .on('blur', function(event) { 396 | 397 | event.preventDefault(); 398 | 399 | var x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]'); 400 | 401 | if (i.val() == '') { 402 | 403 | i.hide(); 404 | x.show(); 405 | 406 | } 407 | 408 | }); 409 | 410 | x 411 | .on('focus', function(event) { 412 | 413 | event.preventDefault(); 414 | 415 | var i = x.parent().find('input[name=' + x.attr('name').replace('-polyfill-field', '') + ']'); 416 | 417 | x.hide(); 418 | 419 | i 420 | .show() 421 | .focus(); 422 | 423 | }) 424 | .on('keypress', function(event) { 425 | 426 | event.preventDefault(); 427 | x.val(''); 428 | 429 | }); 430 | 431 | }); 432 | 433 | // Events. 434 | $this 435 | .on('submit', function() { 436 | 437 | $this.find('input[type=text],input[type=password],textarea') 438 | .each(function(event) { 439 | 440 | var i = $(this); 441 | 442 | if (i.attr('name').match(/-polyfill-field$/)) 443 | i.attr('name', ''); 444 | 445 | if (i.val() == i.attr('placeholder')) { 446 | 447 | i.removeClass('polyfill-placeholder'); 448 | i.val(''); 449 | 450 | } 451 | 452 | }); 453 | 454 | }) 455 | .on('reset', function(event) { 456 | 457 | event.preventDefault(); 458 | 459 | $this.find('select') 460 | .val($('option:first').val()); 461 | 462 | $this.find('input,textarea') 463 | .each(function() { 464 | 465 | var i = $(this), 466 | x; 467 | 468 | i.removeClass('polyfill-placeholder'); 469 | 470 | switch (this.type) { 471 | 472 | case 'submit': 473 | case 'reset': 474 | break; 475 | 476 | case 'password': 477 | i.val(i.attr('defaultValue')); 478 | 479 | x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]'); 480 | 481 | if (i.val() == '') { 482 | i.hide(); 483 | x.show(); 484 | } 485 | else { 486 | i.show(); 487 | x.hide(); 488 | } 489 | 490 | break; 491 | 492 | case 'checkbox': 493 | case 'radio': 494 | i.attr('checked', i.attr('defaultValue')); 495 | break; 496 | 497 | case 'text': 498 | case 'textarea': 499 | i.val(i.attr('defaultValue')); 500 | 501 | if (i.val() == '') { 502 | i.addClass('polyfill-placeholder'); 503 | i.val(i.attr('placeholder')); 504 | } 505 | 506 | break; 507 | 508 | default: 509 | i.val(i.attr('defaultValue')); 510 | break; 511 | 512 | } 513 | }); 514 | 515 | }); 516 | 517 | return $this; 518 | 519 | }; 520 | 521 | /** 522 | * Moves elements to/from the first positions of their respective parents. 523 | * @param {jQuery} $elements Elements (or selector) to move. 524 | * @param {bool} condition If true, moves elements to the top. Otherwise, moves elements back to their original locations. 525 | */ 526 | $.prioritize = function($elements, condition) { 527 | 528 | var key = '__prioritize'; 529 | 530 | // Expand $elements if it's not already a jQuery object. 531 | if (typeof $elements != 'jQuery') 532 | $elements = $($elements); 533 | 534 | // Step through elements. 535 | $elements.each(function() { 536 | 537 | var $e = $(this), $p, 538 | $parent = $e.parent(); 539 | 540 | // No parent? Bail. 541 | if ($parent.length == 0) 542 | return; 543 | 544 | // Not moved? Move it. 545 | if (!$e.data(key)) { 546 | 547 | // Condition is false? Bail. 548 | if (!condition) 549 | return; 550 | 551 | // Get placeholder (which will serve as our point of reference for when this element needs to move back). 552 | $p = $e.prev(); 553 | 554 | // Couldn't find anything? Means this element's already at the top, so bail. 555 | if ($p.length == 0) 556 | return; 557 | 558 | // Move element to top of parent. 559 | $e.prependTo($parent); 560 | 561 | // Mark element as moved. 562 | $e.data(key, $p); 563 | 564 | } 565 | 566 | // Moved already? 567 | else { 568 | 569 | // Condition is true? Bail. 570 | if (condition) 571 | return; 572 | 573 | $p = $e.data(key); 574 | 575 | // Move element back to its original location (using our placeholder). 576 | $e.insertAfter($p); 577 | 578 | // Unmark element as moved. 579 | $e.removeData(key); 580 | 581 | } 582 | 583 | }); 584 | 585 | }; 586 | 587 | })(jQuery); -------------------------------------------------------------------------------- /assets/sass/base/_page.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Hugo Story by CaressOfSteel 3 | A (modular, highly tweakable) responsive one-page theme for Hugo. 4 | Ported from Story by HTML5UP. 5 | This Hugo theme is licensed under the Creative Commons Attribution 3.0 License. 6 | */ 7 | 8 | /* Basic */ 9 | 10 | // MSIE: Required for IEMobile. 11 | @-ms-viewport { 12 | width: device-width; 13 | } 14 | 15 | // MSIE: Prevents scrollbar from overlapping content. 16 | body { 17 | -ms-overflow-style: scrollbar; 18 | } 19 | 20 | // Ensures page width is always >=320px. 21 | @include breakpoint('<=xsmall') { 22 | html, body { 23 | min-width: 320px; 24 | } 25 | } 26 | 27 | // Set box model to border-box. 28 | // Based on css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice 29 | html { 30 | box-sizing: border-box; 31 | } 32 | 33 | *, *:before, *:after { 34 | box-sizing: inherit; 35 | } 36 | 37 | body { 38 | background: _palette(bg); 39 | 40 | // Stops initial animations until page loads. 41 | &.is-preload { 42 | *, *:before, *:after { 43 | @include vendor('animation', 'none !important'); 44 | @include vendor('transition', 'none !important'); 45 | } 46 | } 47 | 48 | } -------------------------------------------------------------------------------- /assets/sass/base/_reset.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Hugo Story by CaressOfSteel 3 | A (modular, highly tweakable) responsive one-page theme for Hugo. 4 | Ported from Story by HTML5UP. 5 | This Hugo theme is licensed under the Creative Commons Attribution 3.0 License. 6 | */ 7 | 8 | // Reset. 9 | // Based on meyerweb.com/eric/tools/css/reset (v2.0 | 20110126 | License: public domain) 10 | 11 | html, body, div, span, applet, object, 12 | iframe, h1, h2, h3, h4, h5, h6, p, blockquote, 13 | pre, a, abbr, acronym, address, big, cite, 14 | code, del, dfn, em, img, ins, kbd, q, s, samp, 15 | small, strike, strong, sub, sup, tt, var, b, 16 | u, i, center, dl, dt, dd, ol, ul, li, fieldset, 17 | form, label, legend, table, caption, tbody, 18 | tfoot, thead, tr, th, td, article, aside, 19 | canvas, details, embed, figure, figcaption, 20 | footer, header, hgroup, menu, nav, output, ruby, 21 | section, summary, time, mark, audio, video { 22 | margin: 0; 23 | padding: 0; 24 | border: 0; 25 | font-size: 100%; 26 | font: inherit; 27 | vertical-align: baseline; 28 | } 29 | 30 | article, aside, details, figcaption, figure, 31 | footer, header, hgroup, menu, nav, section { 32 | display: block; 33 | } 34 | 35 | body { 36 | line-height: 1; 37 | } 38 | 39 | ol, ul { 40 | list-style:none; 41 | } 42 | 43 | blockquote, q { 44 | quotes: none; 45 | 46 | &:before, 47 | &:after { 48 | content: ''; 49 | content: none; 50 | } 51 | } 52 | 53 | table { 54 | border-collapse: collapse; 55 | border-spacing: 0; 56 | } 57 | 58 | body { 59 | -webkit-text-size-adjust: none; 60 | } 61 | 62 | mark { 63 | background-color: transparent; 64 | color: inherit; 65 | } 66 | 67 | input::-moz-focus-inner { 68 | border: 0; 69 | padding: 0; 70 | } 71 | 72 | input, select, textarea { 73 | -moz-appearance: none; 74 | -webkit-appearance: none; 75 | -ms-appearance: none; 76 | appearance: none; 77 | } -------------------------------------------------------------------------------- /assets/sass/base/_typography.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Hugo Story by CaressOfSteel 3 | A (modular, highly tweakable) responsive one-page theme for Hugo. 4 | Ported from Story by HTML5UP. 5 | This Hugo theme is licensed under the Creative Commons Attribution 3.0 License. 6 | */ 7 | 8 | /* Type */ 9 | 10 | html { 11 | font-size: 18pt; 12 | 13 | @include breakpoint('<=xlarge') { 14 | font-size: 14pt; 15 | } 16 | 17 | @include breakpoint('<=large') { 18 | font-size: 12pt; 19 | } 20 | 21 | @include breakpoint('<=small') { 22 | font-size: 11pt; 23 | } 24 | 25 | @include breakpoint('<=xxsmall') { 26 | font-size: 10pt; 27 | } 28 | } 29 | 30 | body { 31 | background-color: _palette(bg); 32 | color: _palette(fg); 33 | } 34 | 35 | body, input, select, textarea { 36 | font-family: _font(family); 37 | font-size: 1rem; 38 | font-weight: _font(weight); 39 | line-height: 1.65; 40 | } 41 | 42 | a { 43 | @include vendor('transition', 'color #{_duration(transition)} ease-in-out'); 44 | text-decoration: underline; 45 | 46 | &:hover { 47 | text-decoration: none; 48 | } 49 | } 50 | 51 | strong, b { 52 | font-weight: _font(weight-bold); 53 | } 54 | 55 | em, i { 56 | font-style: italic; 57 | } 58 | 59 | p { 60 | margin: 0 0 _size(element-margin) 0; 61 | 62 | &.major { 63 | font-size: 1.25rem; 64 | } 65 | } 66 | 67 | h1, h2, h3, h4, h5, h6 { 68 | font-weight: _font(weight); 69 | line-height: 1.375; 70 | letter-spacing: _font(kerning); 71 | margin: 0 0 (_size(element-margin) * 0.5) 0; 72 | 73 | a { 74 | color: inherit; 75 | text-decoration: none; 76 | } 77 | } 78 | 79 | h1 { 80 | font-size: 3.5rem; 81 | line-height: 1.2; 82 | } 83 | 84 | h2 { 85 | font-size: 2.25rem; 86 | } 87 | 88 | h3 { 89 | font-size: 1.5rem; 90 | } 91 | 92 | h4 { 93 | font-size: 1.1rem; 94 | } 95 | 96 | h5 { 97 | font-size: 0.9rem; 98 | } 99 | 100 | h6 { 101 | font-size: 0.7rem; 102 | } 103 | 104 | sub { 105 | font-size: 0.8rem; 106 | position: relative; 107 | top: 0.5rem; 108 | } 109 | 110 | sup { 111 | font-size: 0.8rem; 112 | position: relative; 113 | top: -0.5rem; 114 | } 115 | 116 | blockquote { 117 | border-left: solid (_size(border-width) * 4); 118 | font-style: italic; 119 | margin: 0 0 _size(element-margin) 0; 120 | padding: (_size(element-margin) / 4) 0 (_size(element-margin) / 4) _size(element-margin); 121 | } 122 | 123 | code { 124 | border-radius: _size(border-radius); 125 | font-family: _font(family-fixed); 126 | font-size: 0.9em; 127 | margin: 0 0.25rem; 128 | padding: 0.25rem 0.325rem; 129 | } 130 | 131 | pre { 132 | -webkit-overflow-scrolling: touch; 133 | font-family: _font(family-fixed); 134 | font-size: 0.9em; 135 | margin: 0 0 _size(element-margin) 0; 136 | 137 | code { 138 | display: block; 139 | line-height: 1.5; 140 | padding: 0.75rem 1rem; 141 | overflow-x: auto; 142 | } 143 | } 144 | 145 | hr { 146 | border: 0; 147 | border-bottom: solid _size(border-width); 148 | margin: (_size(element-margin) * 1.25) 0; 149 | 150 | &.major { 151 | margin: (_size(element-margin) * 1.75) 0; 152 | } 153 | } 154 | 155 | .align-left { 156 | text-align: left; 157 | } 158 | 159 | .align-center { 160 | text-align: center; 161 | } 162 | 163 | .align-right { 164 | text-align: right; 165 | } 166 | 167 | .footerspacer { 168 | padding-left: 15px; 169 | padding-right: 15px; 170 | } 171 | 172 | @include breakpoint('<=small') { 173 | p { 174 | &.major { 175 | font-size: 1.1rem; 176 | } 177 | } 178 | 179 | h1 { 180 | font-size: 2.5rem; 181 | } 182 | 183 | h2 { 184 | font-size: 2rem; 185 | } 186 | 187 | h3 { 188 | font-size: 1.25rem; 189 | } 190 | 191 | h4 { 192 | font-size: 1rem; 193 | } 194 | } 195 | 196 | @mixin color-typography($p: null) { 197 | 198 | @if $p != null { 199 | background-color: _palette($p, bg); 200 | color: _palette($p, fg); 201 | } 202 | 203 | input, select, textarea { 204 | color: _palette($p, fg-bold); 205 | } 206 | 207 | a { 208 | color: _palette($p, fg-bold); 209 | 210 | &:hover { 211 | color: _palette($p, accent); 212 | } 213 | } 214 | 215 | strong, b { 216 | color: _palette($p, fg-bold); 217 | } 218 | 219 | h1, h2, h3, h4, h5, h6 { 220 | color: _palette($p, fg-bold); 221 | } 222 | 223 | blockquote { 224 | border-left-color: _palette($p, border); 225 | } 226 | 227 | code { 228 | background: _palette($p, border-bg); 229 | border-color: _palette($p, border); 230 | } 231 | 232 | hr { 233 | border-bottom-color: _palette($p, border); 234 | } 235 | } 236 | 237 | @include color-typography; -------------------------------------------------------------------------------- /assets/sass/components/_actions.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Hugo Story by CaressOfSteel 3 | A (modular, highly tweakable) responsive one-page theme for Hugo. 4 | Ported from Story by HTML5UP. 5 | This Hugo theme is licensed under the Creative Commons Attribution 3.0 License. 6 | */ 7 | 8 | /* Actions */ 9 | 10 | ul.actions { 11 | @include vendor('display', 'flex'); 12 | cursor: default; 13 | list-style: none; 14 | margin-left: (_size(element-margin) * -0.5); 15 | padding-left: 0; 16 | 17 | li { 18 | padding: 0 0 0 (_size(element-margin) * 0.5); 19 | vertical-align: middle; 20 | } 21 | 22 | &.special { 23 | @include vendor('justify-content', 'center'); 24 | width: 100%; 25 | margin-left: 0; 26 | 27 | li { 28 | &:first-child { 29 | padding-left: 0; 30 | } 31 | } 32 | } 33 | 34 | &.stacked { 35 | @include vendor('flex-direction', 'column'); 36 | margin-left: 0; 37 | 38 | li { 39 | padding: (_size(element-margin) * 0.65) 0 0 0; 40 | 41 | &:first-child { 42 | padding-top: 0; 43 | } 44 | } 45 | } 46 | 47 | &.fit { 48 | width: calc(100% + #{_size(element-margin) * 0.5}); 49 | 50 | li { 51 | @include vendor('flex-grow', '1'); 52 | @include vendor('flex-shrink', '1'); 53 | width: 100%; 54 | 55 | > * { 56 | width: 100%; 57 | } 58 | } 59 | 60 | &.stacked { 61 | width: 100%; 62 | } 63 | } 64 | 65 | @include breakpoint('<=xsmall') { 66 | &:not(.fixed) { 67 | @include vendor('flex-direction', 'column'); 68 | margin-left: 0; 69 | width: 100% !important; 70 | 71 | li { 72 | @include vendor('flex-grow', '1'); 73 | @include vendor('flex-shrink', '1'); 74 | padding: (_size(element-margin) * 0.5) 0 0 0; 75 | text-align: center; 76 | width: 100%; 77 | 78 | > * { 79 | width: 100%; 80 | } 81 | 82 | &:first-child { 83 | padding-top: 0; 84 | } 85 | 86 | input[type="submit"], 87 | input[type="reset"], 88 | input[type="button"], 89 | button, 90 | .button { 91 | width: 100%; 92 | 93 | &.icon { 94 | &:before { 95 | margin-left: -0.5rem; 96 | } 97 | } 98 | } 99 | } 100 | } 101 | } 102 | } -------------------------------------------------------------------------------- /assets/sass/components/_box.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Hugo Story by CaressOfSteel 3 | A (modular, highly tweakable) responsive one-page theme for Hugo. 4 | Ported from Story by HTML5UP. 5 | This Hugo theme is licensed under the Creative Commons Attribution 3.0 License. 6 | */ 7 | 8 | /* Box */ 9 | 10 | .box { 11 | border-radius: _size(border-radius); 12 | border: solid _size(border-width); 13 | margin-bottom: _size(element-margin); 14 | padding: 1.5rem; 15 | 16 | > :last-child, 17 | > :last-child > :last-child, 18 | > :last-child > :last-child > :last-child { 19 | margin-bottom: 0; 20 | } 21 | 22 | &.alt { 23 | border: 0; 24 | border-radius: 0; 25 | padding: 0; 26 | } 27 | } 28 | 29 | @mixin color-box($p: null) { 30 | .box { 31 | border-color: _palette($p, border); 32 | } 33 | } 34 | 35 | @include color-box; -------------------------------------------------------------------------------- /assets/sass/components/_button.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Hugo Story by CaressOfSteel 3 | A (modular, highly tweakable) responsive one-page theme for Hugo. 4 | Ported from Story by HTML5UP. 5 | This Hugo theme is licensed under the Creative Commons Attribution 3.0 License. 6 | */ 7 | 8 | /* Button */ 9 | 10 | input[type="submit"], 11 | input[type="reset"], 12 | input[type="button"], 13 | button, 14 | .button { 15 | @include vendor('appearance', 'none'); 16 | @include vendor('transition', ( 17 | 'background-color #{_duration(transition)} ease-in-out', 18 | 'box-shadow #{_duration(transition)} ease-in-out', 19 | 'color #{_duration(transition)} ease-in-out' 20 | )); 21 | border: 0; 22 | cursor: pointer; 23 | display: inline-block; 24 | font-weight: _font(weight-bold); 25 | letter-spacing: _font(kerning-alt); 26 | text-align: center; 27 | text-decoration: none; 28 | text-transform: uppercase; 29 | white-space: nowrap; 30 | font-size: 0.75rem; 31 | max-width: 20rem; 32 | height: 3.75em; 33 | line-height: 3.75em; 34 | border-radius: 3.75em; 35 | padding: 0 2.5em; 36 | text-overflow: ellipsis; 37 | overflow: hidden; 38 | 39 | &.icon { 40 | &:before { 41 | margin-right: 0.5rem; 42 | } 43 | } 44 | 45 | &.fit { 46 | width: 100%; 47 | } 48 | 49 | &.small { 50 | font-size: 0.6rem; 51 | height: 3.325em; 52 | line-height: 3.325em; 53 | border-radius: 3.325em; 54 | padding: 0 2em; 55 | } 56 | 57 | &.large { 58 | font-size: 0.8rem; 59 | height: 4em; 60 | line-height: 4em; 61 | border-radius: 4em; 62 | padding: 0 3em; 63 | } 64 | 65 | &.wide { 66 | min-width: 14em; 67 | } 68 | 69 | &.disabled, 70 | &:disabled { 71 | @include vendor('pointer-events', 'none'); 72 | opacity: 0.25; 73 | } 74 | } 75 | 76 | @mixin color-button($p: null) { 77 | input[type="submit"], 78 | input[type="reset"], 79 | input[type="button"], 80 | button, 81 | .button { 82 | background-color: transparent; 83 | box-shadow: inset 0 0 0 _size(border-width) _palette($p, border); 84 | color: _palette($p, fg-bold) !important; 85 | 86 | &:hover { 87 | box-shadow: inset 0 0 0 _size(border-width) _palette($p, accent); 88 | color: _palette($p, accent) !important; 89 | } 90 | 91 | &:active { 92 | background-color: transparentize(_palette($p, accent), 0.8); 93 | box-shadow: inset 0 0 0 _size(border-width) _palette($p, accent); 94 | color: _palette($p, accent) !important; 95 | } 96 | 97 | &.primary { 98 | background-color: _palette($p, fg-bold); 99 | box-shadow: none; 100 | color: _palette($p, bg) !important; 101 | 102 | &:hover { 103 | background-color: _palette($p, accent); 104 | } 105 | 106 | &:active { 107 | background-color: darken(_palette($p, accent), 12); 108 | } 109 | } 110 | } 111 | } 112 | 113 | @include color-button; -------------------------------------------------------------------------------- /assets/sass/components/_form.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Hugo Story by CaressOfSteel 3 | A (modular, highly tweakable) responsive one-page theme for Hugo. 4 | Ported from Story by HTML5UP. 5 | This Hugo theme is licensed under the Creative Commons Attribution 3.0 License. 6 | */ 7 | 8 | /* Form */ 9 | 10 | form { 11 | margin: 0 0 _size(element-margin) 0; 12 | 13 | > :last-child { 14 | margin-bottom: 0; 15 | } 16 | 17 | > .fields { 18 | $gutter: (_size(element-margin) * 0.75); 19 | 20 | @include vendor('display', 'flex'); 21 | @include vendor('flex-wrap', 'wrap'); 22 | width: calc(100% + #{$gutter * 2}); 23 | margin: ($gutter * -1) 0 _size(element-margin) ($gutter * -1); 24 | 25 | > .field { 26 | @include vendor('flex-grow', '0'); 27 | @include vendor('flex-shrink', '0'); 28 | padding: $gutter 0 0 $gutter; 29 | width: calc(100% - #{$gutter * 1}); 30 | 31 | &.half { 32 | width: calc(50% - #{$gutter * 0.5}); 33 | } 34 | 35 | &.third { 36 | width: calc(#{100% / 3} - #{$gutter * (1 / 3)}); 37 | } 38 | 39 | &.quarter { 40 | width: calc(25% - #{$gutter * 0.25}); 41 | } 42 | } 43 | } 44 | 45 | @include breakpoint('<=xsmall') { 46 | > .fields { 47 | $gutter: (_size(element-margin) * 0.75); 48 | 49 | width: calc(100% + #{$gutter * 2}); 50 | margin: ($gutter * -1) 0 _size(element-margin) ($gutter * -1); 51 | 52 | > .field { 53 | padding: $gutter 0 0 $gutter; 54 | width: calc(100% - #{$gutter * 1}); 55 | 56 | &.half { 57 | width: calc(100% - #{$gutter * 1}); 58 | } 59 | 60 | &.third { 61 | width: calc(100% - #{$gutter * 1}); 62 | } 63 | 64 | &.quarter { 65 | width: calc(100% - #{$gutter * 1}); 66 | } 67 | } 68 | } 69 | } 70 | } 71 | 72 | label { 73 | display: block; 74 | font-size: 0.9rem; 75 | font-weight: _font(weight-bold); 76 | margin: 0 0 (_size(element-margin) * 0.5) 0; 77 | } 78 | 79 | input[type="text"], 80 | input[type="password"], 81 | input[type="email"], 82 | input[type="tel"], 83 | input[type="search"], 84 | input[type="url"], 85 | select, 86 | textarea { 87 | @include vendor('appearance', 'none'); 88 | background-color: transparent; 89 | border-radius: _size(border-radius); 90 | border: none; 91 | border: solid _size(border-width); 92 | color: inherit; 93 | display: block; 94 | outline: 0; 95 | padding: 0 0.825rem; 96 | text-decoration: none; 97 | width: 100%; 98 | 99 | &:invalid { 100 | box-shadow: none; 101 | } 102 | } 103 | 104 | select { 105 | background-size: 1.25rem; 106 | background-repeat: no-repeat; 107 | background-position: calc(100% - 1rem) center; 108 | height: _size(element-height); 109 | padding-right: _size(element-height); 110 | text-overflow: ellipsis; 111 | 112 | &:focus { 113 | &::-ms-value { 114 | background-color: transparent; 115 | } 116 | } 117 | 118 | &::-ms-expand { 119 | display: none; 120 | } 121 | } 122 | 123 | input[type="text"], 124 | input[type="password"], 125 | input[type="email"], 126 | input[type="tel"], 127 | input[type="search"], 128 | input[type="url"], 129 | select { 130 | height: _size(element-height); 131 | } 132 | 133 | textarea { 134 | padding: 0.75rem 1rem; 135 | } 136 | 137 | input[type="checkbox"], 138 | input[type="radio"], { 139 | @include vendor('appearance', 'none'); 140 | display: block; 141 | float: left; 142 | margin-right: -2rem; 143 | opacity: 0; 144 | width: 1rem; 145 | z-index: -1; 146 | 147 | & + label { 148 | @include icon(false, solid); 149 | @include vendor('user-select', 'none'); 150 | cursor: pointer; 151 | display: inline-block; 152 | font-size: 1rem; 153 | font-weight: _font(weight); 154 | padding-left: (_size(element-height) * 0.6) + 0.75rem; 155 | padding-right: 0.75rem; 156 | position: relative; 157 | margin-bottom: 0; 158 | 159 | &:before { 160 | border-radius: _size(border-radius); 161 | border: solid _size(border-width); 162 | content: ''; 163 | display: inline-block; 164 | font-size: 0.8rem; 165 | height: (_size(element-height) * 0.6); 166 | left: 0; 167 | line-height: (_size(element-height) * 0.6); 168 | position: absolute; 169 | text-align: center; 170 | top: 0; 171 | width: (_size(element-height) * 0.6); 172 | } 173 | } 174 | 175 | &:checked + label { 176 | &:before { 177 | content: '\f00c'; 178 | } 179 | } 180 | } 181 | 182 | input[type="checkbox"] { 183 | & + label { 184 | &:before { 185 | border-radius: _size(border-radius); 186 | } 187 | } 188 | } 189 | 190 | input[type="radio"] { 191 | & + label { 192 | &:before { 193 | border-radius: 100%; 194 | } 195 | } 196 | } 197 | 198 | ::-webkit-input-placeholder { 199 | opacity: 1.0; 200 | } 201 | 202 | :-moz-placeholder { 203 | opacity: 1.0; 204 | } 205 | 206 | ::-moz-placeholder { 207 | opacity: 1.0; 208 | } 209 | 210 | :-ms-input-placeholder { 211 | opacity: 1.0; 212 | } 213 | 214 | @mixin color-form($p: null) { 215 | label { 216 | color: _palette($p, fg-bold); 217 | } 218 | 219 | input[type="text"], 220 | input[type="password"], 221 | input[type="email"], 222 | input[type="tel"], 223 | input[type="search"], 224 | input[type="url"], 225 | select, 226 | textarea { 227 | border-color: _palette($p, border); 228 | 229 | &:focus { 230 | border-color: _palette($p, accent); 231 | box-shadow: 0 0 0 _size(border-width) _palette($p, accent); 232 | } 233 | } 234 | 235 | select { 236 | background-image: svg-url(""); 237 | 238 | option { 239 | color: _palette(fg-bold); 240 | background: _palette(bg); 241 | } 242 | } 243 | 244 | input[type="checkbox"], 245 | input[type="radio"], { 246 | & + label { 247 | color: _palette($p, fg); 248 | 249 | &:before { 250 | border-color: _palette($p, border); 251 | } 252 | } 253 | 254 | &:checked + label { 255 | &:before { 256 | background-color: _palette($p, fg-bold); 257 | border-color: _palette($p, fg-bold); 258 | color: _palette($p, bg); 259 | } 260 | } 261 | 262 | &:focus + label { 263 | &:before { 264 | border-color: _palette($p, accent); 265 | box-shadow: 0 0 0 _size(border-width) _palette($p, accent); 266 | } 267 | } 268 | } 269 | 270 | ::-webkit-input-placeholder { 271 | color: _palette($p, fg-light) !important; 272 | } 273 | 274 | :-moz-placeholder { 275 | color: _palette($p, fg-light) !important; 276 | } 277 | 278 | ::-moz-placeholder { 279 | color: _palette($p, fg-light) !important; 280 | } 281 | 282 | :-ms-input-placeholder { 283 | color: _palette($p, fg-light) !important; 284 | } 285 | } 286 | 287 | @include color-form; -------------------------------------------------------------------------------- /assets/sass/components/_gallery.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Hugo Story by CaressOfSteel 3 | A (modular, highly tweakable) responsive one-page theme for Hugo. 4 | Ported from Story by HTML5UP. 5 | This Hugo theme is licensed under the Creative Commons Attribution 3.0 License. 6 | */ 7 | 8 | /* Gallery (transitions) */ 9 | 10 | .gallery { 11 | 12 | // Mixin. 13 | @mixin transition-gallery($event) { 14 | $x: null; 15 | $y: null; 16 | 17 | @if ($event == 'load') { 18 | $x: 'body.is-preload &'; 19 | $y: _duration(on-load); 20 | } 21 | @else if ($event == 'scroll') { 22 | $x: '&.is-inactive'; 23 | $y: _duration(on-scroll); 24 | } 25 | 26 | &.on#{$event}-fade-in { 27 | article { 28 | .image { 29 | img { 30 | @include vendor('transition', 'opacity #{$y} ease-in-out'); 31 | @include vendor('transition-delay', '#{_misc(gallery-limit) * _duration(gallery-delay)}'); 32 | } 33 | } 34 | 35 | @for $i from 0 through _misc(gallery-limit) { 36 | &:nth-child(#{$i + 1}) { 37 | .image { 38 | img { 39 | @include vendor('transition-delay', '#{$i * _duration(gallery-delay)}'); 40 | } 41 | } 42 | } 43 | } 44 | } 45 | 46 | #{$x} { 47 | article { 48 | .image { 49 | img { 50 | opacity: 0; 51 | } 52 | } 53 | } 54 | } 55 | } 56 | } 57 | 58 | // On Load. 59 | @include transition-gallery('load'); 60 | 61 | // On Scroll. 62 | @include transition-gallery('scroll'); 63 | 64 | } 65 | 66 | /* Gallery (style1) */ 67 | 68 | .gallery.style1 { 69 | @include color-typography(invert); 70 | @include color-button(invert); 71 | @include vendor('align-items', 'center'); 72 | @include vendor('display', 'flex'); 73 | @include vendor('flex-wrap', 'wrap'); 74 | @include vendor('justify-content', 'center'); 75 | position: relative; 76 | width: 100%; 77 | background-color: transparent; 78 | 79 | > .forward, >.backward { 80 | display: none; 81 | } 82 | 83 | > .inner { 84 | @include vendor('align-items', 'inherit'); 85 | @include vendor('display', 'inherit'); 86 | @include vendor('flex-wrap', 'inherit'); 87 | @include vendor('justify-content', 'inherit'); 88 | } 89 | 90 | article { 91 | overflow: hidden; 92 | position: relative; 93 | width: 25%; 94 | 95 | .image { 96 | @include vendor('transition', 'opacity #{_duration(transition)} ease-in-out'); 97 | display: block; 98 | width: 100%; 99 | border-radius: 0; 100 | 101 | img { 102 | display: block; 103 | width: 100%; 104 | border-radius: 0; 105 | } 106 | } 107 | 108 | .caption { 109 | @include vendor('align-items', 'center'); 110 | @include vendor('display', 'flex'); 111 | @include vendor('flex-direction', 'column'); 112 | @include vendor('justify-content', 'center'); 113 | @include vendor('pointer-events', 'none'); 114 | @include vendor('transition', 'opacity #{_duration(transition)} ease-in-out'); 115 | position: absolute; 116 | top: 0; 117 | left: 0; 118 | width: 100%; 119 | height: 100%; 120 | background-color: transparentize(_palette(invert, bg), 1 - _misc(overlay-opacity)); 121 | opacity: 0; 122 | padding: 2rem; 123 | z-index: 1; 124 | font-size: 0.8rem; 125 | 126 | a { 127 | @include vendor('pointer-events', 'auto'); 128 | } 129 | 130 | h2, h3, h4, h5, h6 { 131 | font-size: 1.25rem; 132 | margin-bottom: 0.25rem; 133 | } 134 | 135 | > * { 136 | max-width: 100%; 137 | margin-bottom: 1rem; 138 | } 139 | 140 | > :last-child { 141 | margin-bottom: 0; 142 | } 143 | } 144 | 145 | &:hover { 146 | .caption { 147 | opacity: 1; 148 | } 149 | } 150 | } 151 | 152 | @include breakpoint('<=large') { 153 | article { 154 | width: (100% / 3); 155 | 156 | .caption { 157 | padding: 1rem; 158 | } 159 | } 160 | } 161 | 162 | @include breakpoint('<=medium') { 163 | article { 164 | width: 50%; 165 | 166 | .caption { 167 | padding: 1rem; 168 | } 169 | } 170 | } 171 | 172 | @include breakpoint('<=xsmall') { 173 | article { 174 | width: 100%; 175 | 176 | .caption { 177 | padding: 1rem; 178 | } 179 | } 180 | } 181 | 182 | // Modifiers. 183 | 184 | // size 185 | &.small { 186 | article { 187 | width: 20%; 188 | 189 | .caption { 190 | padding: 1rem; 191 | } 192 | } 193 | 194 | @include breakpoint('<=large') { 195 | article { 196 | width: 25%; 197 | 198 | .caption { 199 | padding: 1rem; 200 | } 201 | } 202 | } 203 | 204 | @include breakpoint('<=medium') { 205 | article { 206 | width: (100% / 3); 207 | 208 | .caption { 209 | padding: 1rem; 210 | } 211 | } 212 | } 213 | 214 | @include breakpoint('<=xsmall') { 215 | article { 216 | width: 50%; 217 | 218 | .caption { 219 | padding: 1rem; 220 | } 221 | } 222 | } 223 | } 224 | 225 | &.medium { 226 | // ... 227 | } 228 | 229 | &.big { 230 | article { 231 | width: (100% / 3); 232 | 233 | .caption { 234 | padding: 3rem; 235 | } 236 | } 237 | 238 | @include breakpoint('<=large') { 239 | article { 240 | width: 50%; 241 | 242 | .caption { 243 | padding: 2rem; 244 | } 245 | } 246 | } 247 | 248 | @include breakpoint('<=medium') { 249 | article { 250 | width: 50%; 251 | 252 | .caption { 253 | padding: 2rem; 254 | } 255 | } 256 | } 257 | 258 | @include breakpoint('<=xsmall') { 259 | article { 260 | width: 100%; 261 | 262 | .caption { 263 | padding: 1rem; 264 | } 265 | } 266 | } 267 | } 268 | 269 | } 270 | 271 | /* Gallery (style2) */ 272 | 273 | .gallery.style2 { 274 | @include color-typography(invert); 275 | @include color-button(invert); 276 | @include vendor('display', 'flex'); 277 | -webkit-overflow-scrolling: touch; 278 | position: relative; 279 | background-color: transparent; 280 | 281 | > .forward, >.backward { 282 | @include icon(false, solid); 283 | @include vendor('transition', 'opacity #{_duration(transition)} ease-in-out'); 284 | position: absolute; 285 | top: 0; 286 | width: 5rem; 287 | height: 100%; 288 | cursor: pointer; 289 | opacity: 0; 290 | z-index: 2; 291 | 292 | &:before { 293 | display: block; 294 | top: calc(50% - 1.5rem); 295 | width: 4rem; 296 | height: 3rem; 297 | line-height: 1em; 298 | font-size: 3rem; 299 | position: absolute; 300 | text-align: center; 301 | } 302 | } 303 | 304 | &:hover { 305 | > .forward, > .backward { 306 | opacity: 1; 307 | } 308 | } 309 | 310 | > .forward { 311 | right: 0; 312 | background-image: linear-gradient(to left, rgba(0,0,0,0.25) 15%, rgba(0,0,0,0)); 313 | 314 | &:before { 315 | content: '\f105'; 316 | right: 0; 317 | } 318 | } 319 | 320 | > .backward { 321 | left: 0; 322 | background-image: linear-gradient(to right, rgba(0,0,0,0.25) 15%, rgba(0,0,0,0)); 323 | 324 | &:before { 325 | content: '\f104'; 326 | left: 0; 327 | } 328 | } 329 | 330 | > .inner { 331 | @include vendor('display', 'inherit'); 332 | overflow-x: auto; 333 | overflow-y: hidden; 334 | position: relative; 335 | width: 100%; 336 | } 337 | 338 | article { 339 | @include vendor('flex-grow', '0'); 340 | @include vendor('flex-shrink', '0'); 341 | display: block; 342 | position: relative; 343 | overflow: hidden; 344 | width: 22.5rem; 345 | max-width: 75vw; 346 | 347 | .image { 348 | display: block; 349 | width: 100%; 350 | border-radius: 0; 351 | 352 | img { 353 | display: block; 354 | width: 100%; 355 | border-radius: 0; 356 | } 357 | } 358 | 359 | .caption { 360 | @include vendor('align-items', 'center'); 361 | @include vendor('display', 'flex'); 362 | @include vendor('flex-direction', 'column'); 363 | @include vendor('justify-content', 'center'); 364 | @include vendor('pointer-events', 'none'); 365 | @include vendor('transition', 'opacity #{_duration(transition)} ease-in-out'); 366 | position: absolute; 367 | top: 0; 368 | left: 0; 369 | width: 100%; 370 | height: 100%; 371 | background-color: transparentize(_palette(invert, bg), 1 - _misc(overlay-opacity)); 372 | opacity: 0; 373 | padding: 3rem; 374 | z-index: 1; 375 | font-size: 0.8rem; 376 | 377 | a { 378 | @include vendor('pointer-events', 'auto'); 379 | } 380 | 381 | h2, h3, h4, h5, h6 { 382 | font-size: 1.25rem; 383 | margin-bottom: 0.25rem; 384 | } 385 | 386 | > * { 387 | max-width: 100%; 388 | margin-bottom: 1rem; 389 | } 390 | 391 | > :last-child { 392 | margin-bottom: 0; 393 | } 394 | } 395 | 396 | &:hover { 397 | .caption { 398 | opacity: 1; 399 | } 400 | } 401 | } 402 | 403 | @include breakpoint('<=medium') { 404 | article { 405 | .caption { 406 | padding: 2rem; 407 | } 408 | } 409 | } 410 | 411 | @include breakpoint('<=small') { 412 | article { 413 | .caption { 414 | padding: 2rem; 415 | } 416 | } 417 | } 418 | 419 | // Modifiers. 420 | 421 | // size 422 | &.small { 423 | article { 424 | width: 17.5rem; 425 | 426 | .caption { 427 | padding: 2rem; 428 | } 429 | } 430 | 431 | @include breakpoint('<=medium') { 432 | article { 433 | .caption { 434 | padding: 2rem; 435 | } 436 | } 437 | } 438 | 439 | @include breakpoint('<=small') { 440 | article { 441 | .caption { 442 | padding: 2rem; 443 | } 444 | } 445 | } 446 | } 447 | 448 | &.medium { 449 | // ... 450 | } 451 | 452 | &.big { 453 | article { 454 | width: 30rem; 455 | 456 | .caption { 457 | padding: 4rem; 458 | } 459 | } 460 | 461 | @include breakpoint('<=medium') { 462 | article { 463 | .caption { 464 | padding: 3rem; 465 | } 466 | } 467 | } 468 | 469 | @include breakpoint('<=small') { 470 | article { 471 | .caption { 472 | padding: 2rem; 473 | } 474 | } 475 | } 476 | } 477 | 478 | } 479 | 480 | /* Gallery (lightbox) */ 481 | 482 | @include keyframes('gallery-modal-spinner') { 483 | 0% { 484 | @include vendor('transform', 'rotate(0deg)'); 485 | } 486 | 487 | 100% { 488 | @include vendor('transform', 'rotate(360deg)'); 489 | } 490 | } 491 | 492 | .gallery.lightbox { 493 | .modal { 494 | @include vendor('display', 'flex'); 495 | @include vendor('align-items', 'center'); 496 | @include vendor('justify-content', 'center'); 497 | @include vendor('pointer-events', 'none'); 498 | @include vendor('user-select', 'none'); 499 | @include vendor('transition', ( 500 | 'opacity #{_duration(gallery-lightbox)} ease', 501 | 'visibility #{_duration(gallery-lightbox)}', 502 | 'z-index #{_duration(gallery-lightbox)}' 503 | )); 504 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 505 | position: fixed; 506 | top: 0; 507 | left: 0; 508 | width: 100%; 509 | height: 100%; 510 | outline: 0; 511 | background-color: transparentize(_palette(invert, bg), 1 - _misc(lightbox-opacity)); 512 | visibility: none; 513 | opacity: 0; 514 | z-index: 0; 515 | 516 | &:before { 517 | @include vendor('animation', 'gallery-modal-spinner 1s infinite linear'); 518 | @include vendor('transition', 'opacity #{_duration(gallery-lightbox) * 0.5} ease'); 519 | @include vendor('transition-delay', '#{_duration(gallery-lightbox)}'); 520 | content: ''; 521 | display: block; 522 | position: absolute; 523 | top: 50%; 524 | left: 50%; 525 | width: 4rem; 526 | height: 4rem; 527 | margin: -2rem 0 0 -2rem; 528 | background-image: svg-url(''); 529 | background-position: center; 530 | background-repeat: no-repeat; 531 | background-size: 4rem; 532 | opacity: 0; 533 | } 534 | 535 | &:after { 536 | content: ''; 537 | display: block; 538 | position: absolute; 539 | top: 0.5rem; 540 | right: 0.5rem; 541 | width: 4rem; 542 | height: 4rem; 543 | cursor: pointer; 544 | background-image: svg-url(''); 545 | background-position: center; 546 | background-repeat: no-repeat; 547 | background-size: 3rem; 548 | } 549 | 550 | .inner { 551 | @include vendor('transform', 'translateY(0.75rem)'); 552 | @include vendor('transition', ( 553 | 'opacity #{_duration(gallery-lightbox) * 0.5} ease', 554 | 'transform #{_duration(gallery-lightbox) * 0.5} ease' 555 | )); 556 | opacity: 0; 557 | 558 | img { 559 | display: block; 560 | max-width: 90vw; 561 | max-height: 85vh; 562 | box-shadow: 0 1rem 3rem 0 rgba(0, 0, 0, 0.35); 563 | } 564 | } 565 | 566 | &.visible { 567 | @include vendor('pointer-events', 'auto'); 568 | visibility: visible; 569 | opacity: 1; 570 | z-index: _misc(z-index-base) + 1; 571 | 572 | &:before { 573 | opacity: 1; 574 | } 575 | } 576 | 577 | &.loaded { 578 | .inner { 579 | @include vendor('transform', 'translateY(0)'); 580 | @include vendor('transition', ( 581 | 'opacity #{_duration(gallery-lightbox)} ease', 582 | 'transform #{_duration(gallery-lightbox)} ease' 583 | )); 584 | opacity: 1; 585 | } 586 | 587 | &:before { 588 | @include vendor('transition-delay', '0s'); 589 | opacity: 0; 590 | } 591 | } 592 | } 593 | 594 | @include breakpoint('<=medium') { 595 | .modal { 596 | .inner { 597 | img { 598 | max-width: 100vw; 599 | } 600 | } 601 | } 602 | } 603 | } 604 | 605 | // Mixin 606 | 607 | @mixin color-gallery($p: null) { 608 | .gallery { 609 | article { 610 | .image { 611 | background-color: transparentize(_palette($p, fg-bold), 0.875); 612 | } 613 | } 614 | } 615 | } 616 | 617 | @include color-gallery; -------------------------------------------------------------------------------- /assets/sass/components/_icon.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Hugo Story by CaressOfSteel 3 | A (modular, highly tweakable) responsive one-page theme for Hugo. 4 | Ported from Story by HTML5UP. 5 | This Hugo theme is licensed under the Creative Commons Attribution 3.0 License. 6 | */ 7 | 8 | /* Icon */ 9 | 10 | .icon { 11 | @include icon; 12 | border-bottom: none; 13 | position: relative; 14 | text-align: center; 15 | 16 | > .label { 17 | display: none; 18 | } 19 | 20 | &:before { 21 | line-height: inherit; 22 | } 23 | 24 | &.solid { 25 | &:before { 26 | font-weight: 900; 27 | } 28 | } 29 | 30 | &.brands { 31 | &:before { 32 | font-family: 'Font Awesome 5 Brands'; 33 | } 34 | } 35 | 36 | &.style2 { 37 | &:before { 38 | border-radius: 2.75em; 39 | display: inline-block; 40 | height: 2.75em; 41 | line-height: 2.75em; 42 | width: 2.75em; 43 | } 44 | } 45 | 46 | &.major { 47 | display: block; 48 | margin: 0 0 (_size(element-margin) * 0.5) 0; 49 | 50 | &:before { 51 | font-size: 1.25rem; 52 | } 53 | } 54 | } 55 | 56 | a.icon { 57 | &.style2 { 58 | &:before { 59 | @include vendor('transition', ( 60 | 'background-color #{_duration(transition)} ease-in-out', 61 | 'box-shadow #{_duration(transition)} ease-in-out', 62 | 'color #{_duration(transition)} ease-in-out' 63 | )); 64 | } 65 | } 66 | } 67 | 68 | @mixin color-icon($p: null) { 69 | .icon { 70 | &.style2 { 71 | &:before { 72 | box-shadow: inset 0 0 0 _size(border-width) _palette($p, border); 73 | } 74 | } 75 | } 76 | 77 | a.icon { 78 | &.style2 { 79 | &:hover { 80 | &:before { 81 | box-shadow: inset 0 0 0 _size(border-width) _palette($p, accent); 82 | color: _palette($p, accent); 83 | } 84 | } 85 | 86 | &:active { 87 | &:before { 88 | background-color: transparentize(_palette($p, accent), 0.9); 89 | box-shadow: inset 0 0 0 _size(border-width) _palette($p, accent); 90 | color: _palette($p, accent); 91 | } 92 | } 93 | } 94 | } 95 | } 96 | 97 | @include color-icon; -------------------------------------------------------------------------------- /assets/sass/components/_icons.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Hugo Story by CaressOfSteel 3 | A (modular, highly tweakable) responsive one-page theme for Hugo. 4 | Ported from Story by HTML5UP. 5 | This Hugo theme is licensed under the Creative Commons Attribution 3.0 License. 6 | */ 7 | 8 | /* Icons */ 9 | 10 | ul.icons { 11 | cursor: default; 12 | list-style: none; 13 | padding-left: 0; 14 | 15 | li { 16 | display: inline-block; 17 | padding: 0 0.75rem 0 0; 18 | 19 | &:last-child { 20 | padding-right: 0; 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /assets/sass/components/_image.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Hugo Story by CaressOfSteel 3 | A (modular, highly tweakable) responsive one-page theme for Hugo. 4 | Ported from Story by HTML5UP. 5 | This Hugo theme is licensed under the Creative Commons Attribution 3.0 License. 6 | */ 7 | 8 | /* Image */ 9 | 10 | .image { 11 | border: 0; 12 | border-radius: _size(border-radius); 13 | display: inline-block; 14 | position: relative; 15 | 16 | img { 17 | display: block; 18 | border-radius: _size(border-radius); 19 | } 20 | 21 | &.left, 22 | &.right { 23 | width: 40%; 24 | max-width: 10rem; 25 | 26 | img { 27 | width: 100%; 28 | } 29 | } 30 | 31 | &.left { 32 | float: left; 33 | margin: 0 1.5rem 1rem 0; 34 | top: 0.25rem; 35 | } 36 | 37 | &.right { 38 | float: right; 39 | margin: 0 0 1rem 1.5rem; 40 | top: 0.25rem; 41 | } 42 | 43 | &.fit { 44 | display: block; 45 | margin: 0 0 _size(element-margin) 0; 46 | width: 100%; 47 | 48 | img { 49 | width: 100%; 50 | } 51 | } 52 | 53 | &.main { 54 | display: block; 55 | margin: 0 0 (_size(element-margin) * 1.5) 0; 56 | width: 100%; 57 | 58 | img { 59 | width: 100%; 60 | } 61 | } 62 | } -------------------------------------------------------------------------------- /assets/sass/components/_index.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Hugo Story by CaressOfSteel 3 | A (modular, highly tweakable) responsive one-page theme for Hugo. 4 | Ported from Story by HTML5UP. 5 | This Hugo theme is licensed under the Creative Commons Attribution 3.0 License. 6 | */ 7 | 8 | /* Index */ 9 | 10 | .index { 11 | > * { 12 | @include padding(3rem, 0); 13 | @include vendor('display', 'flex'); 14 | border-top: solid 1px; 15 | 16 | > header { 17 | @include vendor('flex-grow', '0'); 18 | @include vendor('flex-shrink', '0'); 19 | width: 15rem; 20 | } 21 | 22 | > .content { 23 | @include vendor('flex-grow', '1'); 24 | @include vendor('flex-shrink', '1'); 25 | } 26 | } 27 | 28 | > :first-child { 29 | border-top: 0; 30 | } 31 | 32 | @include breakpoint('<=medium') { 33 | > * { 34 | > header { 35 | width: 11rem; 36 | } 37 | } 38 | } 39 | 40 | @include breakpoint('<=small') { 41 | > * { 42 | > header { 43 | width: 10rem; 44 | } 45 | } 46 | } 47 | 48 | @include breakpoint('<=xsmall') { 49 | > * { 50 | @include vendor('flex-direction', 'column'); 51 | 52 | > header { 53 | width: 100%; 54 | } 55 | } 56 | } 57 | } 58 | 59 | @mixin color-index($p: null) { 60 | .index { 61 | > * { 62 | border-top-color: _palette($p, border); 63 | } 64 | } 65 | } 66 | 67 | @include color-index; -------------------------------------------------------------------------------- /assets/sass/components/_items.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Hugo Story by CaressOfSteel 3 | A (modular, highly tweakable) responsive one-page theme for Hugo. 4 | Ported from Story by HTML5UP. 5 | This Hugo theme is licensed under the Creative Commons Attribution 3.0 License. 6 | */ 7 | 8 | /* Items (transitions) */ 9 | 10 | .items { 11 | 12 | // Mixin. 13 | @mixin transition-items($event) { 14 | $x: null; 15 | $y: null; 16 | 17 | @if ($event == 'load') { 18 | $x: 'body.is-preload &'; 19 | $y: _duration(on-load); 20 | } 21 | @else if ($event == 'scroll') { 22 | $x: '&.is-inactive'; 23 | $y: _duration(on-scroll); 24 | } 25 | 26 | &.on#{$event}-fade-in { 27 | > * { 28 | > .inner { 29 | @include vendor('transition', 'opacity #{$y} ease-in-out'); 30 | @include vendor('transition-delay', '#{_misc(items-limit) * _duration(items-delay)}'); 31 | } 32 | 33 | @for $i from 0 through _misc(items-limit) { 34 | &:nth-child(#{$i + 1}) { 35 | > .inner { 36 | @include vendor('transition-delay', '#{$i * _duration(items-delay)}'); 37 | } 38 | } 39 | } 40 | } 41 | 42 | #{$x} { 43 | > * { 44 | > .inner { 45 | opacity: 0; 46 | } 47 | } 48 | } 49 | } 50 | } 51 | 52 | // On Load. 53 | @include transition-items('load'); 54 | 55 | // On Scroll. 56 | @include transition-items('scroll'); 57 | 58 | } 59 | 60 | /* Items (style1) */ 61 | 62 | @mixin items-style1-size($name, $size, $padding) { 63 | &.#{$name} { 64 | > * { 65 | @include padding($padding, $padding); 66 | width: #{100% / $size}; 67 | 68 | &:nth-child(-n + #{$size}) { 69 | border-top-width: 0; 70 | } 71 | 72 | &:nth-child(#{$size}n + 1) { 73 | border-left-width: 0; 74 | } 75 | } 76 | } 77 | } 78 | 79 | @mixin items-style1-size-reset($name, $size) { 80 | &.#{$name} { 81 | > * { 82 | &:nth-child(-n + #{$size}) { 83 | border-top-width: _size(border-width); 84 | } 85 | 86 | &:nth-child(#{$size}n + 1) { 87 | border-left-width: _size(border-width); 88 | } 89 | } 90 | } 91 | } 92 | 93 | .items.style1 { 94 | @include vendor('display', 'flex'); 95 | @include vendor('flex-wrap', 'wrap'); 96 | @include vendor('justify-content', 'center'); 97 | margin: (_size(element-margin) * 1.5) 0; 98 | position: relative; 99 | 100 | > * { 101 | @include vendor('flex-grow', '0'); 102 | @include vendor('flex-shrink', '0'); 103 | border-style: solid; 104 | border-left-width: _size(border-width); 105 | border-top-width: _size(border-width); 106 | } 107 | 108 | // Modifiers. 109 | 110 | // Size. 111 | @include items-style1-size(big, 2, _size(gutter)); 112 | @include items-style1-size(medium, 3, _size(gutter) * 0.625); 113 | @include items-style1-size(small, 4, _size(gutter) * 0.375); 114 | 115 | @include breakpoint('<=large') { 116 | @include items-style1-size-reset(small, 4); 117 | @include items-style1-size(small, 3, _size(gutter) * 0.625); 118 | } 119 | 120 | @include breakpoint('<=medium') { 121 | @include items-style1-size-reset(medium, 3); 122 | @include items-style1-size(medium, 2, _size(gutter)); 123 | 124 | @include items-style1-size-reset(small, 3); 125 | @include items-style1-size(small, 2, _size(gutter)); 126 | } 127 | 128 | @include breakpoint('<=xsmall') { 129 | @include items-style1-size-reset(big, 2); 130 | @include items-style1-size(big, 1, _size(gutter) * 0.75); 131 | 132 | @include items-style1-size-reset(medium, 2); 133 | @include items-style1-size(medium, 1, _size(gutter) * 0.75); 134 | 135 | @include items-style1-size-reset(small, 2); 136 | @include items-style1-size(small, 1, _size(gutter) * 0.75); 137 | 138 | &.big, 139 | &.medium, 140 | &.small { 141 | > * { 142 | padding-left: 0; 143 | padding-right: 0; 144 | } 145 | 146 | > :first-child { 147 | padding-top: 0; 148 | } 149 | 150 | > :last-child { 151 | padding-bottom: 0; 152 | 153 | > .inner { 154 | > :last-child { 155 | margin-bottom: 0; 156 | } 157 | } 158 | } 159 | } 160 | } 161 | 162 | } 163 | 164 | /* Items (style2) */ 165 | 166 | @mixin items-style2-size($name, $size, $padding) { 167 | &.#{$name} { 168 | > * { 169 | @include padding($padding, $padding); 170 | width: #{100% / $size}; 171 | 172 | &:nth-child(-n + #{$size}) { 173 | border-top-width: 0; 174 | } 175 | 176 | &:nth-child(#{$size}n + 1) { 177 | border-left-width: 0; 178 | } 179 | } 180 | } 181 | } 182 | 183 | @mixin items-style2-size-reset($name, $size) { 184 | &.#{$name} { 185 | > * { 186 | &:nth-child(-n + #{$size}) { 187 | border-top-width: _size(border-width); 188 | } 189 | 190 | &:nth-child(#{$size}n + 1) { 191 | border-left-width: _size(border-width); 192 | } 193 | } 194 | } 195 | } 196 | 197 | .items.style2 { 198 | @include vendor('display', 'flex'); 199 | @include vendor('flex-wrap', 'wrap'); 200 | @include vendor('justify-content', 'center'); 201 | margin: (_size(element-margin) * 1.5) 0; 202 | position: relative; 203 | border: solid _size(border-width); 204 | border-radius: _size(border-radius); 205 | 206 | > * { 207 | @include vendor('flex-grow', '0'); 208 | @include vendor('flex-shrink', '0'); 209 | border-style: solid; 210 | border-left-width: _size(border-width); 211 | border-top-width: _size(border-width); 212 | } 213 | 214 | // Modifiers. 215 | 216 | // Size. 217 | @include items-style2-size(big, 2, _size(gutter)); 218 | @include items-style2-size(medium, 3, _size(gutter) * 0.625); 219 | @include items-style2-size(small, 4, _size(gutter) * 0.375); 220 | 221 | @include breakpoint('<=large') { 222 | @include items-style2-size-reset(small, 4); 223 | @include items-style2-size(small, 3, _size(gutter) * 0.625); 224 | } 225 | 226 | @include breakpoint('<=medium') { 227 | @include items-style2-size-reset(medium, 3); 228 | @include items-style2-size(medium, 2, _size(gutter)); 229 | 230 | @include items-style2-size-reset(small, 3); 231 | @include items-style2-size(small, 2, _size(gutter)); 232 | } 233 | 234 | @include breakpoint('<=xsmall') { 235 | @include items-style2-size-reset(big, 2); 236 | @include items-style2-size(big, 1, _size(gutter) * 0.75); 237 | 238 | @include items-style2-size-reset(medium, 2); 239 | @include items-style2-size(medium, 1, _size(gutter) * 0.75); 240 | 241 | @include items-style2-size-reset(small, 2); 242 | @include items-style2-size(small, 1, _size(gutter) * 0.75); 243 | } 244 | 245 | } 246 | 247 | /* Items (style3) */ 248 | 249 | @mixin items-style3-size($name, $size, $padding) { 250 | &.#{$name} { 251 | > * { 252 | @include padding($padding, $padding); 253 | width: #{100% / $size}; 254 | } 255 | } 256 | } 257 | 258 | .items.style3 { 259 | @include vendor('display', 'flex'); 260 | @include vendor('flex-wrap', 'wrap'); 261 | @include vendor('justify-content', 'center'); 262 | margin: (_size(element-margin) * 1.5) 0; 263 | position: relative; 264 | 265 | > * { 266 | @include vendor('flex-grow', '0'); 267 | @include vendor('flex-shrink', '0'); 268 | } 269 | 270 | // Modifiers. 271 | 272 | // Size. 273 | @include items-style3-size(big, 2, _size(gutter) * 0.5); 274 | @include items-style3-size(medium, 3, _size(gutter) * 0.5 * 0.625); 275 | @include items-style3-size(small, 4, _size(gutter) * 0.5 * 0.375); 276 | 277 | @include breakpoint('<=large') { 278 | @include items-style3-size(small, 3, _size(gutter) * 0.5 * 0.625); 279 | } 280 | 281 | @include breakpoint('<=medium') { 282 | @include items-style3-size(medium, 2, _size(gutter) * 0.5); 283 | @include items-style3-size(small, 2, _size(gutter) * 0.5); 284 | } 285 | 286 | @include breakpoint('<=small') { 287 | margin: _size(element-margin) 0; 288 | } 289 | 290 | @include breakpoint('<=xsmall') { 291 | @include items-style3-size(big, 1, _size(gutter) * 0.5 * 0.75); 292 | @include items-style3-size(medium, 1, _size(gutter) * 0.5 * 0.75); 293 | @include items-style3-size(small, 1, _size(gutter) * 0.5 * 0.75); 294 | 295 | &.big, 296 | &.medium, 297 | &.small { 298 | > * { 299 | padding-left: 0; 300 | padding-right: 0; 301 | } 302 | 303 | > :first-child { 304 | padding-top: 0; 305 | } 306 | 307 | > :last-child { 308 | padding-bottom: 0; 309 | 310 | > .inner { 311 | > :last-child { 312 | margin-bottom: 0; 313 | } 314 | } 315 | } 316 | } 317 | } 318 | 319 | } 320 | 321 | // Mixin 322 | 323 | @mixin color-items($p: null) { 324 | .items.style1 { 325 | > * { 326 | border-color: _palette($p, border); 327 | } 328 | } 329 | 330 | .items.style2 { 331 | border-color: _palette($p, border); 332 | 333 | > * { 334 | border-color: _palette($p, border); 335 | } 336 | } 337 | } 338 | 339 | @include color-items; -------------------------------------------------------------------------------- /assets/sass/components/_list.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Hugo Story by CaressOfSteel 3 | A (modular, highly tweakable) responsive one-page theme for Hugo. 4 | Ported from Story by HTML5UP. 5 | This Hugo theme is licensed under the Creative Commons Attribution 3.0 License. 6 | */ 7 | 8 | /* List */ 9 | 10 | ol { 11 | list-style: decimal; 12 | margin: 0 0 _size(element-margin) 0; 13 | padding-left: 1.25rem; 14 | 15 | li { 16 | padding-left: 0.25rem; 17 | } 18 | } 19 | 20 | ul { 21 | list-style: disc; 22 | margin: 0 0 _size(element-margin) 0; 23 | padding-left: 1rem; 24 | 25 | li { 26 | padding-left: 0.5rem; 27 | } 28 | 29 | &.alt { 30 | list-style: none; 31 | padding-left: 0; 32 | 33 | li { 34 | border-top: solid _size(border-width); 35 | padding: 0.5rem 0; 36 | 37 | &:first-child { 38 | border-top: 0; 39 | padding-top: 0; 40 | } 41 | } 42 | } 43 | } 44 | 45 | dl { 46 | margin: 0 0 _size(element-margin) 0; 47 | 48 | dt { 49 | display: block; 50 | font-weight: _font(weight-bold); 51 | margin: 0 0 (_size(element-margin) * 0.5) 0; 52 | } 53 | 54 | dd { 55 | margin-left: _size(element-margin); 56 | } 57 | 58 | &.style2 { 59 | dt { 60 | width: 25%; 61 | float: left; 62 | } 63 | 64 | dd { 65 | width: 70%; 66 | float: left; 67 | } 68 | 69 | &:after { 70 | content: ''; 71 | display: block; 72 | clear: both; 73 | } 74 | } 75 | } 76 | 77 | @mixin color-list($p: null) { 78 | ul { 79 | &.alt { 80 | li { 81 | border-top-color: _palette($p, border); 82 | } 83 | } 84 | } 85 | } 86 | 87 | @include color-list; -------------------------------------------------------------------------------- /assets/sass/components/_row.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Hugo Story by CaressOfSteel 3 | A (modular, highly tweakable) responsive one-page theme for Hugo. 4 | Ported from Story by HTML5UP. 5 | This Hugo theme is licensed under the Creative Commons Attribution 3.0 License. 6 | */ 7 | 8 | /* Row */ 9 | 10 | .row { 11 | @include html-grid(2rem); 12 | 13 | @include breakpoint('<=xlarge') { 14 | @include html-grid(2rem, 'xlarge'); 15 | } 16 | 17 | @include breakpoint('<=large') { 18 | @include html-grid(2rem, 'large'); 19 | } 20 | 21 | @include breakpoint('<=medium') { 22 | @include html-grid(2rem, 'medium'); 23 | } 24 | 25 | @include breakpoint('<=small') { 26 | @include html-grid(2rem, 'small'); 27 | } 28 | 29 | @include breakpoint('<=xsmall') { 30 | @include html-grid(2rem, 'xsmall'); 31 | } 32 | 33 | @include breakpoint('<=xxsmall') { 34 | @include html-grid(2rem, 'xxsmall'); 35 | } 36 | } -------------------------------------------------------------------------------- /assets/sass/components/_section.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Hugo Story by CaressOfSteel 3 | A (modular, highly tweakable) responsive one-page theme for Hugo. 4 | Ported from Story by HTML5UP. 5 | This Hugo theme is licensed under the Creative Commons Attribution 3.0 License. 6 | */ 7 | 8 | /* Section/Article */ 9 | 10 | section, article { 11 | &.special { 12 | text-align: center; 13 | } 14 | } 15 | 16 | header { 17 | p { 18 | position: relative; 19 | margin: (_size(element-margin) * -0.325) 0 (_size(element-margin) * 0.75) 0; 20 | font-style: italic; 21 | } 22 | 23 | h1 + p { 24 | font-size: 1.375rem; 25 | } 26 | 27 | h2 + p { 28 | font-size: 1.25rem; 29 | } 30 | 31 | h3 + p { 32 | font-size: 1.1rem; 33 | } 34 | 35 | h4 + p, 36 | h5 + p, 37 | h6 + p { 38 | font-size: 0.9rem; 39 | } 40 | } 41 | 42 | @mixin color-section($p: null) { 43 | header { 44 | p { 45 | color: _palette($p, fg-light); 46 | } 47 | } 48 | } 49 | 50 | @include color-section; -------------------------------------------------------------------------------- /assets/sass/components/_table.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Hugo Story by CaressOfSteel 3 | A (modular, highly tweakable) responsive one-page theme for Hugo. 4 | Ported from Story by HTML5UP. 5 | This Hugo theme is licensed under the Creative Commons Attribution 3.0 License. 6 | */ 7 | 8 | /* Table */ 9 | 10 | .table-wrapper { 11 | -webkit-overflow-scrolling: touch; 12 | margin: 0 0 _size(element-margin) 0; 13 | overflow-x: auto; 14 | 15 | > table { 16 | margin-bottom: 0; 17 | } 18 | } 19 | 20 | table { 21 | margin: 0 0 _size(element-margin) 0; 22 | width: 100%; 23 | 24 | tbody { 25 | tr { 26 | border: solid _size(border-width); 27 | border-left: 0; 28 | border-right: 0; 29 | } 30 | } 31 | 32 | td { 33 | padding: 0.75rem 0.75rem; 34 | } 35 | 36 | th { 37 | font-size: 0.9rem; 38 | font-weight: _font(weight-bold); 39 | padding: 0 0.75rem 0.75rem 0.75rem; 40 | text-align: left; 41 | } 42 | 43 | thead { 44 | border-bottom: solid (_size(border-width) * 2); 45 | } 46 | 47 | tfoot { 48 | border-top: solid (_size(border-width) * 2); 49 | } 50 | 51 | &.alt { 52 | border-collapse: separate; 53 | 54 | tbody { 55 | tr { 56 | td { 57 | border: solid _size(border-width); 58 | border-left-width: 0; 59 | border-top-width: 0; 60 | 61 | &:first-child { 62 | border-left-width: _size(border-width); 63 | } 64 | } 65 | 66 | &:first-child { 67 | td { 68 | border-top-width: _size(border-width); 69 | } 70 | } 71 | } 72 | } 73 | 74 | thead { 75 | border-bottom: 0; 76 | } 77 | 78 | tfoot { 79 | border-top: 0; 80 | } 81 | } 82 | 83 | &.fixed { 84 | table-layout: fixed; 85 | } 86 | } 87 | 88 | @mixin color-table($p: null) { 89 | table { 90 | tbody { 91 | tr { 92 | border-color: _palette($p, border); 93 | 94 | &:nth-child(2n + 1) { 95 | background-color: _palette($p, border-bg); 96 | } 97 | 98 | &.alt { 99 | background-color: _palette($p, border-bg) !important; 100 | } 101 | } 102 | } 103 | 104 | th { 105 | color: _palette($p, fg-bold); 106 | } 107 | 108 | thead { 109 | border-bottom-color: _palette($p, border); 110 | } 111 | 112 | tfoot { 113 | border-top-color: _palette($p, border); 114 | } 115 | 116 | &.alt { 117 | tbody { 118 | tr { 119 | td { 120 | border-color: _palette($p, border); 121 | } 122 | } 123 | } 124 | } 125 | 126 | &.uniform { 127 | tbody { 128 | tr { 129 | &:nth-child(2n + 1) { 130 | background-color: transparent; 131 | } 132 | } 133 | } 134 | } 135 | } 136 | } 137 | 138 | @include color-table; -------------------------------------------------------------------------------- /assets/sass/components/_wrapper.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Hugo Story by CaressOfSteel 3 | A (modular, highly tweakable) responsive one-page theme for Hugo. 4 | Ported from Story by HTML5UP. 5 | This Hugo theme is licensed under the Creative Commons Attribution 3.0 License. 6 | */ 7 | 8 | /* Wrapper (style1) */ 9 | 10 | .wrapper.style1 { 11 | > .inner { 12 | @include padding(_size(padding, default), _size(padding, default) * 0.5); 13 | margin: 0 auto; 14 | max-width: 100%; 15 | width: _size(inner); 16 | 17 | &.medium { 18 | width: _size(inner) * 0.75; 19 | } 20 | 21 | &.small { 22 | width: _size(inner) * 0.5; 23 | } 24 | } 25 | 26 | @include breakpoint('<=xlarge') { 27 | > .inner { 28 | @include padding(_size(padding, xlarge), _size(padding, xlarge) * 0.5); 29 | } 30 | } 31 | 32 | @include breakpoint('<=large') { 33 | > .inner { 34 | @include padding(_size(padding, large), _size(padding, large)); 35 | } 36 | } 37 | 38 | @include breakpoint('<=medium') { 39 | > .inner { 40 | @include padding(_size(padding, medium) * 1.5, _size(padding, medium)); 41 | } 42 | } 43 | 44 | @include breakpoint('<=small') { 45 | > .inner { 46 | @include padding(_size(padding, small) * 1.5, _size(padding, small)); 47 | } 48 | } 49 | } 50 | 51 | /* Wrapper (style2) */ 52 | 53 | .wrapper.style2 { 54 | padding: _size(padding, default); 55 | background-color: _palette(bg-alt); 56 | 57 | > .inner { 58 | @include padding(_size(padding, default) * 0.75, _size(padding, default) * 0.5); 59 | background-color: _palette(bg); 60 | border-radius: _size(border-radius-alt); 61 | margin: 0 auto; 62 | max-width: 100%; 63 | position: relative; 64 | width: _size(inner); 65 | z-index: 1; 66 | 67 | &.medium { 68 | width: _size(inner) * 0.75; 69 | } 70 | 71 | &.small { 72 | width: _size(inner) * 0.5; 73 | } 74 | } 75 | 76 | @include breakpoint('<=xlarge') { 77 | padding: _size(padding, xlarge); 78 | 79 | > .inner { 80 | @include padding(_size(padding, xlarge) * 0.75, _size(padding, xlarge) * 0.5); 81 | } 82 | } 83 | 84 | @include breakpoint('<=large') { 85 | padding: _size(padding, large); 86 | 87 | > .inner { 88 | @include padding(_size(padding, large) * 0.75, _size(padding, large) * 0.5); 89 | } 90 | } 91 | 92 | @include breakpoint('<=medium') { 93 | padding: _size(padding, medium) * 0.75; 94 | 95 | > .inner { 96 | @include padding(_size(padding, medium), _size(padding, medium) * 0.75); 97 | } 98 | } 99 | 100 | @include breakpoint('<=small') { 101 | padding: _size(padding, small) * 0.75; 102 | 103 | > .inner { 104 | @include padding(_size(padding, small), _size(padding, small) * 0.75); 105 | } 106 | } 107 | } 108 | 109 | #wrapper { 110 | > .wrapper.style2 { 111 | &.invert { 112 | &:not(.color1):not(.color2):not(.color3):not(.color4):not(.color5):not(.color6):not(.color7) { 113 | background-color: _palette(invert, bg-alt); 114 | } 115 | 116 | > .inner { 117 | background-color: _palette(invert, bg); 118 | } 119 | } 120 | } 121 | } -------------------------------------------------------------------------------- /assets/sass/layout/_wrapper.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Hugo Story by CaressOfSteel 3 | A (modular, highly tweakable) responsive one-page theme for Hugo. 4 | Ported from Story by HTML5UP. 5 | This Hugo theme is licensed under the Creative Commons Attribution 3.0 License. 6 | */ 7 | 8 | /* Wrapper */ 9 | 10 | @mixin wrapper-color($n) { 11 | > .color#{$n} { 12 | background-color: _palette(color#{$n}); 13 | } 14 | } 15 | 16 | #wrapper { 17 | background-color: inherit; 18 | width: 100%; 19 | overflow-x: hidden; 20 | 21 | > .invert { 22 | @include color(invert); 23 | } 24 | 25 | @include wrapper-color(1); 26 | @include wrapper-color(2); 27 | @include wrapper-color(3); 28 | @include wrapper-color(4); 29 | @include wrapper-color(5); 30 | @include wrapper-color(6); 31 | @include wrapper-color(7); 32 | 33 | &.divided { 34 | > * { 35 | box-shadow: inset 0 1px 0 0 _palette(border-alt); 36 | 37 | &:first-child { 38 | box-shadow: none !important; 39 | } 40 | } 41 | 42 | > .invert { 43 | box-shadow: inset 0 1px 0 0 _palette(invert, border-alt); 44 | 45 | &:first-child { 46 | box-shadow: none !important; 47 | } 48 | } 49 | } 50 | } -------------------------------------------------------------------------------- /assets/sass/libs/_breakpoints.scss: -------------------------------------------------------------------------------- 1 | // breakpoints.scss v1.0 | @ajlkn | MIT licensed */ 2 | 3 | // Vars. 4 | 5 | /// Breakpoints. 6 | /// @var {list} 7 | //$breakpoints: () !global; 8 | $breakpoints: null; 9 | 10 | // Mixins. 11 | 12 | /// Sets breakpoints. 13 | /// @param {map} $x Breakpoints. 14 | @mixin breakpoints($x: ()) { 15 | $breakpoints: $x !global; 16 | } 17 | 18 | /// Wraps @content in a @media block targeting a specific orientation. 19 | /// @param {string} $orientation Orientation. 20 | @mixin orientation($orientation) { 21 | @media screen and (orientation: #{$orientation}) { 22 | @content; 23 | } 24 | } 25 | 26 | /// Wraps @content in a @media block using a given query. 27 | /// @param {string} $query Query. 28 | @mixin breakpoint($query: null) { 29 | 30 | $breakpoint: null; 31 | $op: null; 32 | $media: null; 33 | 34 | // Determine operator, breakpoint. 35 | 36 | // Greater than or equal. 37 | @if (str-slice($query, 0, 2) == '>=') { 38 | 39 | $op: 'gte'; 40 | $breakpoint: str-slice($query, 3); 41 | 42 | } 43 | 44 | // Less than or equal. 45 | @elseif (str-slice($query, 0, 2) == '<=') { 46 | 47 | $op: 'lte'; 48 | $breakpoint: str-slice($query, 3); 49 | 50 | } 51 | 52 | // Greater than. 53 | @elseif (str-slice($query, 0, 1) == '>') { 54 | 55 | $op: 'gt'; 56 | $breakpoint: str-slice($query, 2); 57 | 58 | } 59 | 60 | // Less than. 61 | @elseif (str-slice($query, 0, 1) == '<') { 62 | 63 | $op: 'lt'; 64 | $breakpoint: str-slice($query, 2); 65 | 66 | } 67 | 68 | // Not. 69 | @elseif (str-slice($query, 0, 1) == '!') { 70 | 71 | $op: 'not'; 72 | $breakpoint: str-slice($query, 2); 73 | 74 | } 75 | 76 | // Equal. 77 | @else { 78 | 79 | $op: 'eq'; 80 | $breakpoint: $query; 81 | 82 | } 83 | 84 | // Build media. 85 | @if ($breakpoint and map-has-key($breakpoints, $breakpoint)) { 86 | 87 | $a: map-get($breakpoints, $breakpoint); 88 | 89 | // Range. 90 | @if (type-of($a) == 'list') { 91 | 92 | $x: nth($a, 1); 93 | $y: nth($a, 2); 94 | 95 | // Max only. 96 | @if ($x == null) { 97 | 98 | // Greater than or equal (>= 0 / anything) 99 | @if ($op == 'gte') { 100 | $media: 'screen'; 101 | } 102 | 103 | // Less than or equal (<= y) 104 | @elseif ($op == 'lte') { 105 | $media: 'screen and (max-width: ' + $y + ')'; 106 | } 107 | 108 | // Greater than (> y) 109 | @elseif ($op == 'gt') { 110 | $media: 'screen and (min-width: ' + ($y + 1) + ')'; 111 | } 112 | 113 | // Less than (< 0 / invalid) 114 | @elseif ($op == 'lt') { 115 | $media: 'screen and (max-width: -1px)'; 116 | } 117 | 118 | // Not (> y) 119 | @elseif ($op == 'not') { 120 | $media: 'screen and (min-width: ' + ($y + 1) + ')'; 121 | } 122 | 123 | // Equal (<= y) 124 | @else { 125 | $media: 'screen and (max-width: ' + $y + ')'; 126 | } 127 | 128 | } 129 | 130 | // Min only. 131 | @else if ($y == null) { 132 | 133 | // Greater than or equal (>= x) 134 | @if ($op == 'gte') { 135 | $media: 'screen and (min-width: ' + $x + ')'; 136 | } 137 | 138 | // Less than or equal (<= inf / anything) 139 | @elseif ($op == 'lte') { 140 | $media: 'screen'; 141 | } 142 | 143 | // Greater than (> inf / invalid) 144 | @elseif ($op == 'gt') { 145 | $media: 'screen and (max-width: -1px)'; 146 | } 147 | 148 | // Less than (< x) 149 | @elseif ($op == 'lt') { 150 | $media: 'screen and (max-width: ' + ($x - 1) + ')'; 151 | } 152 | 153 | // Not (< x) 154 | @elseif ($op == 'not') { 155 | $media: 'screen and (max-width: ' + ($x - 1) + ')'; 156 | } 157 | 158 | // Equal (>= x) 159 | @else { 160 | $media: 'screen and (min-width: ' + $x + ')'; 161 | } 162 | 163 | } 164 | 165 | // Min and max. 166 | @else { 167 | 168 | // Greater than or equal (>= x) 169 | @if ($op == 'gte') { 170 | $media: 'screen and (min-width: ' + $x + ')'; 171 | } 172 | 173 | // Less than or equal (<= y) 174 | @elseif ($op == 'lte') { 175 | $media: 'screen and (max-width: ' + $y + ')'; 176 | } 177 | 178 | // Greater than (> y) 179 | @elseif ($op == 'gt') { 180 | $media: 'screen and (min-width: ' + ($y + 1) + ')'; 181 | } 182 | 183 | // Less than (< x) 184 | @elseif ($op == 'lt') { 185 | $media: 'screen and (max-width: ' + ($x - 1) + ')'; 186 | } 187 | 188 | // Not (< x and > y) 189 | @elseif ($op == 'not') { 190 | $media: 'screen and (max-width: ' + ($x - 1) + '), screen and (min-width: ' + ($y + 1) + ')'; 191 | } 192 | 193 | // Equal (>= x and <= y) 194 | @else { 195 | $media: 'screen and (min-width: ' + $x + ') and (max-width: ' + $y + ')'; 196 | } 197 | 198 | } 199 | 200 | } 201 | 202 | // String. 203 | @else { 204 | 205 | // Missing a media type? Prefix with "screen". 206 | @if (str-slice($a, 0, 1) == '(') { 207 | $media: 'screen and ' + $a; 208 | } 209 | 210 | // Otherwise, use as-is. 211 | @else { 212 | $media: $a; 213 | } 214 | 215 | } 216 | 217 | } 218 | 219 | // Output. 220 | @media #{$media} { 221 | @content; 222 | } 223 | 224 | } 225 | -------------------------------------------------------------------------------- /assets/sass/libs/_functions.scss: -------------------------------------------------------------------------------- 1 | /// Removes a specific item from a list. 2 | /// @author Hugo Giraudel 3 | /// @param {list} $list List. 4 | /// @param {integer} $index Index. 5 | /// @return {list} Updated list. 6 | @function remove-nth($list, $index) { 7 | 8 | $result: null; 9 | 10 | @if type-of($index) != number { 11 | @warn "$index: #{quote($index)} is not a number for `remove-nth`."; 12 | } 13 | @else if $index == 0 { 14 | @warn "List index 0 must be a non-zero integer for `remove-nth`."; 15 | } 16 | @else if abs($index) > length($list) { 17 | @warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`."; 18 | } 19 | @else { 20 | 21 | $result: (); 22 | $index: if($index < 0, length($list) + $index + 1, $index); 23 | 24 | @for $i from 1 through length($list) { 25 | 26 | @if $i != $index { 27 | $result: append($result, nth($list, $i)); 28 | } 29 | 30 | } 31 | 32 | } 33 | 34 | @return $result; 35 | 36 | } 37 | 38 | /// Gets a value from a map. 39 | /// @author Hugo Giraudel 40 | /// @param {map} $map Map. 41 | /// @param {string} $keys Key(s). 42 | /// @return {string} Value. 43 | @function val($map, $keys...) { 44 | 45 | @if nth($keys, 1) == null { 46 | $keys: remove-nth($keys, 1); 47 | } 48 | 49 | @each $key in $keys { 50 | $map: map-get($map, $key); 51 | } 52 | 53 | @return $map; 54 | 55 | } 56 | 57 | /// Gets a duration value. 58 | /// @param {string} $keys Key(s). 59 | /// @return {string} Value. 60 | @function _duration($keys...) { 61 | @return val($duration, $keys...); 62 | } 63 | 64 | /// Gets a font value. 65 | /// @param {string} $keys Key(s). 66 | /// @return {string} Value. 67 | @function _font($keys...) { 68 | @return val($font, $keys...); 69 | } 70 | 71 | /// Gets a misc value. 72 | /// @param {string} $keys Key(s). 73 | /// @return {string} Value. 74 | @function _misc($keys...) { 75 | @return val($misc, $keys...); 76 | } 77 | 78 | /// Gets a palette value. 79 | /// @param {string} $keys Key(s). 80 | /// @return {string} Value. 81 | @function _palette($keys...) { 82 | @return val($palette, $keys...); 83 | } 84 | 85 | /// Gets a size value. 86 | /// @param {string} $keys Key(s). 87 | /// @return {string} Value. 88 | @function _size($keys...) { 89 | @return val($size, $keys...); 90 | } -------------------------------------------------------------------------------- /assets/sass/libs/_html-grid.scss: -------------------------------------------------------------------------------- 1 | // html-grid.scss v1.0 | @ajlkn | MIT licensed */ 2 | 3 | // Mixins. 4 | 5 | /// Initializes the current element as an HTML grid. 6 | /// @param {mixed} $gutters Gutters (either a single number to set both column/row gutters, or a list to set them individually). 7 | /// @param {mixed} $suffix Column class suffix (optional; either a single suffix or a list). 8 | @mixin html-grid($gutters: 1.5em, $suffix: '') { 9 | 10 | // Initialize. 11 | $cols: 12; 12 | $multipliers: 0, 0.25, 0.5, 1, 1.50, 2.00; 13 | $unit: 100% / $cols; 14 | 15 | // Suffixes. 16 | $suffixes: null; 17 | 18 | @if (type-of($suffix) == 'list') { 19 | $suffixes: $suffix; 20 | } 21 | @else { 22 | $suffixes: ($suffix); 23 | } 24 | 25 | // Gutters. 26 | $guttersCols: null; 27 | $guttersRows: null; 28 | 29 | @if (type-of($gutters) == 'list') { 30 | 31 | $guttersCols: nth($gutters, 1); 32 | $guttersRows: nth($gutters, 2); 33 | 34 | } 35 | @else { 36 | 37 | $guttersCols: $gutters; 38 | $guttersRows: 0; 39 | 40 | } 41 | 42 | // Row. 43 | display: flex; 44 | flex-wrap: wrap; 45 | box-sizing: border-box; 46 | align-items: stretch; 47 | 48 | // Columns. 49 | > * { 50 | box-sizing: border-box; 51 | } 52 | 53 | // Gutters. 54 | &.gtr-uniform { 55 | > * { 56 | > :last-child { 57 | margin-bottom: 0; 58 | } 59 | } 60 | } 61 | 62 | // Alignment. 63 | &.aln-left { 64 | justify-content: flex-start; 65 | } 66 | 67 | &.aln-center { 68 | justify-content: center; 69 | } 70 | 71 | &.aln-right { 72 | justify-content: flex-end; 73 | } 74 | 75 | &.aln-top { 76 | align-items: flex-start; 77 | } 78 | 79 | &.aln-middle { 80 | align-items: center; 81 | } 82 | 83 | &.aln-bottom { 84 | align-items: flex-end; 85 | } 86 | 87 | // Step through suffixes. 88 | @each $suffix in $suffixes { 89 | 90 | // Suffix. 91 | @if ($suffix != '') { 92 | $suffix: '-' + $suffix; 93 | } 94 | @else { 95 | $suffix: ''; 96 | } 97 | 98 | // Row. 99 | 100 | // Important. 101 | > .imp#{$suffix} { 102 | order: -1; 103 | } 104 | 105 | // Columns, offsets. 106 | @for $i from 1 through $cols { 107 | > .col-#{$i}#{$suffix} { 108 | width: $unit * $i; 109 | } 110 | 111 | > .off-#{$i}#{$suffix} { 112 | margin-left: $unit * $i; 113 | } 114 | } 115 | 116 | // Step through multipliers. 117 | @each $multiplier in $multipliers { 118 | 119 | // Gutters. 120 | $class: null; 121 | 122 | @if ($multiplier != 1) { 123 | $class: '.gtr-' + ($multiplier * 100); 124 | } 125 | 126 | &#{$class} { 127 | margin-top: ($guttersRows * $multiplier * -1); 128 | margin-left: ($guttersCols * $multiplier * -1); 129 | 130 | > * { 131 | padding: ($guttersRows * $multiplier) 0 0 ($guttersCols * $multiplier); 132 | } 133 | 134 | // Uniform. 135 | &.gtr-uniform { 136 | margin-top: $guttersCols * $multiplier * -1; 137 | 138 | > * { 139 | padding-top: $guttersCols * $multiplier; 140 | } 141 | } 142 | 143 | } 144 | 145 | } 146 | 147 | } 148 | 149 | } -------------------------------------------------------------------------------- /assets/sass/libs/_mixins.scss: -------------------------------------------------------------------------------- 1 | /// Makes an element's :before pseudoelement a FontAwesome icon. 2 | /// @param {string} $content Optional content value to use. 3 | /// @param {string} $category Optional category to use. 4 | /// @param {string} $where Optional pseudoelement to target (before or after). 5 | @mixin icon($content: false, $category: regular, $where: before) { 6 | 7 | text-decoration: none; 8 | 9 | &:#{$where} { 10 | 11 | @if $content { 12 | content: $content; 13 | } 14 | 15 | -moz-osx-font-smoothing: grayscale; 16 | -webkit-font-smoothing: antialiased; 17 | display: inline-block; 18 | font-style: normal; 19 | font-variant: normal; 20 | text-rendering: auto; 21 | line-height: 1; 22 | text-transform: none !important; 23 | 24 | @if ($category == brands) { 25 | font-family: 'Font Awesome 5 Brands'; 26 | } 27 | @elseif ($category == solid) { 28 | font-family: 'Font Awesome 5 Pro'; 29 | font-weight: 900; 30 | } 31 | @else { 32 | font-family: 'Font Awesome 5 Pro'; 33 | font-weight: 400; 34 | } 35 | 36 | } 37 | 38 | } 39 | 40 | /// Applies padding to an element, taking the current element-margin value into account. 41 | /// @param {mixed} $tb Top/bottom padding. 42 | /// @param {mixed} $lr Left/right padding. 43 | /// @param {list} $pad Optional extra padding (in the following order top, right, bottom, left) 44 | /// @param {bool} $important If true, adds !important. 45 | @mixin padding($tb, $lr, $pad: (0,0,0,0), $important: null) { 46 | 47 | @if $important { 48 | $important: '!important'; 49 | } 50 | 51 | $x: 0.1em; 52 | 53 | @if unit(_size(element-margin)) == 'rem' { 54 | $x: 0.1rem; 55 | } 56 | 57 | padding: ($tb + nth($pad,1)) ($lr + nth($pad,2)) max($x, $tb - _size(element-margin) + nth($pad,3)) ($lr + nth($pad,4)) #{$important}; 58 | 59 | } 60 | 61 | /// Encodes a SVG data URL so IE doesn't choke (via codepen.io/jakob-e/pen/YXXBrp). 62 | /// @param {string} $svg SVG data URL. 63 | /// @return {string} Encoded SVG data URL. 64 | @function svg-url($svg) { 65 | 66 | $svg: str-replace($svg, '"', '\''); 67 | $svg: str-replace($svg, '%', '%25'); 68 | $svg: str-replace($svg, '<', '%3C'); 69 | $svg: str-replace($svg, '>', '%3E'); 70 | $svg: str-replace($svg, '&', '%26'); 71 | $svg: str-replace($svg, '#', '%23'); 72 | $svg: str-replace($svg, '{', '%7B'); 73 | $svg: str-replace($svg, '}', '%7D'); 74 | $svg: str-replace($svg, ';', '%3B'); 75 | 76 | @return url("data:image/svg+xml;charset=utf8,#{$svg}"); 77 | 78 | } -------------------------------------------------------------------------------- /assets/sass/libs/_vars.scss: -------------------------------------------------------------------------------- 1 | // Misc. 2 | $misc: ( 3 | z-index-base: 10000, 4 | overlay-opacity: 0.5, 5 | lightbox-opacity: 0.75, 6 | gallery-limit: 32, 7 | items-limit: 16 8 | ); 9 | 10 | // Duration. 11 | $duration: ( 12 | menu: 0.5s, 13 | transition: 0.2s, 14 | gallery-lightbox: 0.5s, 15 | gallery-delay: 0.15s, 16 | items-delay: 0.15s, 17 | on-load: 0.75s, 18 | on-scroll: 0.75s 19 | ); 20 | 21 | // Size. 22 | $size: ( 23 | border-radius: 4px, 24 | border-radius-alt: 0.5rem, 25 | border-width: 1px, 26 | element-height: 2.75rem, 27 | element-margin: 2rem, 28 | gutter: 3.5rem, 29 | inner: 64rem, 30 | padding: ( 31 | default: 7rem, 32 | xlarge: 5rem, 33 | large: 4rem, 34 | medium: 3rem, 35 | small: 2rem 36 | ) 37 | ); 38 | 39 | // Font. 40 | $font: ( 41 | family: ('Source Sans Pro', Helvetica, sans-serif), 42 | family-fixed: ('Courier New', monospace), 43 | weight: 300, 44 | weight-bold: 400, 45 | kerning: -0.05em, 46 | kerning-alt: 0.125em 47 | ); 48 | 49 | // Palette. 50 | $palette: ( 51 | color1: #30363d, 52 | color2: #db8992, 53 | color3: #ab7aad, 54 | color4: #897cad, 55 | color5: #7794ce, 56 | color6: #64abb4, 57 | color7: #6ba78c, 58 | 59 | bg: #ffffff, 60 | bg-alt: #eeeeee, 61 | fg: #000000, 62 | fg-bold: #000000, 63 | fg-light: rgba(0,0,0,0.75), 64 | border: rgba(0,0,0,0.2), 65 | border-alt: rgba(0,0,0,0.075), 66 | border-bg: rgba(0,0,0,0.05), 67 | accent: #837164, 68 | 69 | invert: ( 70 | bg: #000000, 71 | bg-alt: #222222, 72 | fg: #ffffff, 73 | fg-bold: #ffffff, 74 | fg-light: #ffffff, 75 | border: rgba(255,255,255,1.0), 76 | border-alt: rgba(255,255,255,0.125), 77 | border-bg: rgba(255,255,255,0.125), 78 | accent: #837164 79 | ), 80 | ); -------------------------------------------------------------------------------- /assets/sass/libs/_vendor.scss: -------------------------------------------------------------------------------- 1 | // vendor.scss v1.0 | @ajlkn | MIT licensed */ 2 | 3 | // Vars. 4 | 5 | /// Vendor prefixes. 6 | /// @var {list} 7 | $vendor-prefixes: ( 8 | '-moz-', 9 | '-webkit-', 10 | '-ms-', 11 | '' 12 | ); 13 | 14 | /// Properties that should be vendorized. 15 | /// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org 16 | /// @var {list} 17 | $vendor-properties: ( 18 | 19 | // Animation. 20 | 'animation', 21 | 'animation-delay', 22 | 'animation-direction', 23 | 'animation-duration', 24 | 'animation-fill-mode', 25 | 'animation-iteration-count', 26 | 'animation-name', 27 | 'animation-play-state', 28 | 'animation-timing-function', 29 | 30 | // Appearance. 31 | 'appearance', 32 | 33 | // Backdrop filter. 34 | 'backdrop-filter', 35 | 36 | // Background image options. 37 | 'background-clip', 38 | 'background-origin', 39 | 'background-size', 40 | 41 | // Box sizing. 42 | 'box-sizing', 43 | 44 | // Clip path. 45 | 'clip-path', 46 | 47 | // Filter effects. 48 | 'filter', 49 | 50 | // Flexbox. 51 | 'align-content', 52 | 'align-items', 53 | 'align-self', 54 | 'flex', 55 | 'flex-basis', 56 | 'flex-direction', 57 | 'flex-flow', 58 | 'flex-grow', 59 | 'flex-shrink', 60 | 'flex-wrap', 61 | 'justify-content', 62 | 'order', 63 | 64 | // Font feature. 65 | 'font-feature-settings', 66 | 'font-language-override', 67 | 'font-variant-ligatures', 68 | 69 | // Font kerning. 70 | 'font-kerning', 71 | 72 | // Fragmented borders and backgrounds. 73 | 'box-decoration-break', 74 | 75 | // Grid layout. 76 | 'grid-column', 77 | 'grid-column-align', 78 | 'grid-column-end', 79 | 'grid-column-start', 80 | 'grid-row', 81 | 'grid-row-align', 82 | 'grid-row-end', 83 | 'grid-row-start', 84 | 'grid-template-columns', 85 | 'grid-template-rows', 86 | 87 | // Hyphens. 88 | 'hyphens', 89 | 'word-break', 90 | 91 | // Masks. 92 | 'mask', 93 | 'mask-border', 94 | 'mask-border-outset', 95 | 'mask-border-repeat', 96 | 'mask-border-slice', 97 | 'mask-border-source', 98 | 'mask-border-width', 99 | 'mask-clip', 100 | 'mask-composite', 101 | 'mask-image', 102 | 'mask-origin', 103 | 'mask-position', 104 | 'mask-repeat', 105 | 'mask-size', 106 | 107 | // Multicolumn. 108 | 'break-after', 109 | 'break-before', 110 | 'break-inside', 111 | 'column-count', 112 | 'column-fill', 113 | 'column-gap', 114 | 'column-rule', 115 | 'column-rule-color', 116 | 'column-rule-style', 117 | 'column-rule-width', 118 | 'column-span', 119 | 'column-width', 120 | 'columns', 121 | 122 | // Object fit. 123 | 'object-fit', 124 | 'object-position', 125 | 126 | // Regions. 127 | 'flow-from', 128 | 'flow-into', 129 | 'region-fragment', 130 | 131 | // Scroll snap points. 132 | 'scroll-snap-coordinate', 133 | 'scroll-snap-destination', 134 | 'scroll-snap-points-x', 135 | 'scroll-snap-points-y', 136 | 'scroll-snap-type', 137 | 138 | // Shapes. 139 | 'shape-image-threshold', 140 | 'shape-margin', 141 | 'shape-outside', 142 | 143 | // Tab size. 144 | 'tab-size', 145 | 146 | // Text align last. 147 | 'text-align-last', 148 | 149 | // Text decoration. 150 | 'text-decoration-color', 151 | 'text-decoration-line', 152 | 'text-decoration-skip', 153 | 'text-decoration-style', 154 | 155 | // Text emphasis. 156 | 'text-emphasis', 157 | 'text-emphasis-color', 158 | 'text-emphasis-position', 159 | 'text-emphasis-style', 160 | 161 | // Text size adjust. 162 | 'text-size-adjust', 163 | 164 | // Text spacing. 165 | 'text-spacing', 166 | 167 | // Transform. 168 | 'transform', 169 | 'transform-origin', 170 | 171 | // Transform 3D. 172 | 'backface-visibility', 173 | 'perspective', 174 | 'perspective-origin', 175 | 'transform-style', 176 | 177 | // Transition. 178 | 'transition', 179 | 'transition-delay', 180 | 'transition-duration', 181 | 'transition-property', 182 | 'transition-timing-function', 183 | 184 | // Unicode bidi. 185 | 'unicode-bidi', 186 | 187 | // User select. 188 | 'user-select', 189 | 190 | // Writing mode. 191 | 'writing-mode', 192 | 193 | ); 194 | 195 | /// Values that should be vendorized. 196 | /// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org 197 | /// @var {list} 198 | $vendor-values: ( 199 | 200 | // Cross fade. 201 | 'cross-fade', 202 | 203 | // Element function. 204 | 'element', 205 | 206 | // Filter function. 207 | 'filter', 208 | 209 | // Flexbox. 210 | 'flex', 211 | 'inline-flex', 212 | 213 | // Grab cursors. 214 | 'grab', 215 | 'grabbing', 216 | 217 | // Gradients. 218 | 'linear-gradient', 219 | 'repeating-linear-gradient', 220 | 'radial-gradient', 221 | 'repeating-radial-gradient', 222 | 223 | // Grid layout. 224 | 'grid', 225 | 'inline-grid', 226 | 227 | // Image set. 228 | 'image-set', 229 | 230 | // Intrinsic width. 231 | 'max-content', 232 | 'min-content', 233 | 'fit-content', 234 | 'fill', 235 | 'fill-available', 236 | 'stretch', 237 | 238 | // Sticky position. 239 | 'sticky', 240 | 241 | // Transform. 242 | 'transform', 243 | 244 | // Zoom cursors. 245 | 'zoom-in', 246 | 'zoom-out', 247 | 248 | ); 249 | 250 | // Functions. 251 | 252 | /// Removes a specific item from a list. 253 | /// @author Hugo Giraudel 254 | /// @param {list} $list List. 255 | /// @param {integer} $index Index. 256 | /// @return {list} Updated list. 257 | @function remove-nth($list, $index) { 258 | 259 | $result: null; 260 | 261 | @if type-of($index) != number { 262 | @warn "$index: #{quote($index)} is not a number for `remove-nth`."; 263 | } 264 | @else if $index == 0 { 265 | @warn "List index 0 must be a non-zero integer for `remove-nth`."; 266 | } 267 | @else if abs($index) > length($list) { 268 | @warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`."; 269 | } 270 | @else { 271 | 272 | $result: (); 273 | $index: if($index < 0, length($list) + $index + 1, $index); 274 | 275 | @for $i from 1 through length($list) { 276 | 277 | @if $i != $index { 278 | $result: append($result, nth($list, $i)); 279 | } 280 | 281 | } 282 | 283 | } 284 | 285 | @return $result; 286 | 287 | } 288 | 289 | /// Replaces a substring within another string. 290 | /// @author Hugo Giraudel 291 | /// @param {string} $string String. 292 | /// @param {string} $search Substring. 293 | /// @param {string} $replace Replacement. 294 | /// @return {string} Updated string. 295 | @function str-replace($string, $search, $replace: '') { 296 | 297 | $index: str-index($string, $search); 298 | 299 | @if $index { 300 | @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace); 301 | } 302 | 303 | @return $string; 304 | 305 | } 306 | 307 | /// Replaces a substring within each string in a list. 308 | /// @param {list} $strings List of strings. 309 | /// @param {string} $search Substring. 310 | /// @param {string} $replace Replacement. 311 | /// @return {list} Updated list of strings. 312 | @function str-replace-all($strings, $search, $replace: '') { 313 | 314 | @each $string in $strings { 315 | $strings: set-nth($strings, index($strings, $string), str-replace($string, $search, $replace)); 316 | } 317 | 318 | @return $strings; 319 | 320 | } 321 | 322 | // Mixins. 323 | 324 | /// Wraps @content in vendorized keyframe blocks. 325 | /// @param {string} $name Name. 326 | @mixin keyframes($name) { 327 | 328 | @-moz-keyframes #{$name} { @content; } 329 | @-webkit-keyframes #{$name} { @content; } 330 | @-ms-keyframes #{$name} { @content; } 331 | @keyframes #{$name} { @content; } 332 | 333 | } 334 | 335 | /// Vendorizes a declaration's property and/or value(s). 336 | /// @param {string} $property Property. 337 | /// @param {mixed} $value String/list of value(s). 338 | @mixin vendor($property, $value) { 339 | 340 | // Determine if property should expand. 341 | $expandProperty: index($vendor-properties, $property); 342 | 343 | // Determine if value should expand (and if so, add '-prefix-' placeholder). 344 | $expandValue: false; 345 | 346 | @each $x in $value { 347 | @each $y in $vendor-values { 348 | @if $y == str-slice($x, 1, str-length($y)) { 349 | 350 | $value: set-nth($value, index($value, $x), '-prefix-' + $x); 351 | $expandValue: true; 352 | 353 | } 354 | } 355 | } 356 | 357 | // Expand property? 358 | @if $expandProperty { 359 | @each $vendor in $vendor-prefixes { 360 | #{$vendor}#{$property}: #{str-replace-all($value, '-prefix-', $vendor)}; 361 | } 362 | } 363 | 364 | // Expand just the value? 365 | @elseif $expandValue { 366 | @each $vendor in $vendor-prefixes { 367 | #{$property}: #{str-replace-all($value, '-prefix-', $vendor)}; 368 | } 369 | } 370 | 371 | // Neither? Treat them as a normal declaration. 372 | @else { 373 | #{$property}: #{$value}; 374 | } 375 | 376 | } -------------------------------------------------------------------------------- /assets/sass/main.scss: -------------------------------------------------------------------------------- 1 | @import 'libs/vars'; 2 | @import 'libs/functions'; 3 | @import 'libs/mixins'; 4 | @import 'libs/vendor'; 5 | @import 'libs/breakpoints'; 6 | @import 'libs/html-grid'; 7 | @import 'fontawesome-all.min.css'; 8 | @import url('https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,300i,400,400i'); 9 | 10 | /* 11 | Hugo Story by CaressOfSteel 12 | A (modular, highly tweakable) responsive one-page theme for Hugo. 13 | Ported from Story by HTML5UP. 14 | This Hugo theme is licensed under the Creative Commons Attribution 3.0 License. 15 | */ 16 | 17 | // Breakpoints. 18 | 19 | @include breakpoints(( 20 | xlarge: ( 1281px, 1680px ), 21 | large: ( 981px, 1280px ), 22 | medium: ( 737px, 980px ), 23 | small: ( 481px, 736px ), 24 | xsmall: ( 361px, 480px ), 25 | xxsmall: ( null, 360px ) 26 | )); 27 | 28 | // Mixins. 29 | 30 | @mixin color($p) { 31 | @include color-typography($p); 32 | @include color-box($p); 33 | @include color-button($p); 34 | @include color-form($p); 35 | @include color-icon($p); 36 | @include color-list($p); 37 | @include color-section($p); 38 | @include color-table($p); 39 | @include color-banner($p); 40 | @include color-spotlight($p); 41 | @include color-gallery($p); 42 | @include color-items($p); 43 | @include color-index($p); 44 | } 45 | 46 | // Phone. 47 | 48 | @mixin phone($image-width) { 49 | @include vendor('flex-grow', '0'); 50 | @include vendor('flex-shrink', '0'); 51 | border-radius: 0; 52 | border: solid _size(border-width); 53 | 54 | img { 55 | @include vendor('object-fit', 'cover'); 56 | @include vendor('object-position', 'center'); 57 | display: block; 58 | width: 100%; 59 | height: 100%; 60 | border-radius: 0; 61 | } 62 | 63 | &:before { 64 | content: ''; 65 | display: block; 66 | background-position: center; 67 | background-repeat: no-repeat; 68 | border: solid _size(border-width); 69 | border-bottom: 0; 70 | } 71 | 72 | &:after { 73 | content: ''; 74 | display: block; 75 | background-position: center; 76 | background-repeat: no-repeat; 77 | border: solid _size(border-width); 78 | border-top: 0; 79 | } 80 | 81 | @include resize-phone($image-width, 1); 82 | } 83 | 84 | @mixin resize-phone($image-width, $image-factor) { 85 | $image-pad-top: 2.5rem; 86 | $image-pad-bottom: 3rem; 87 | $image-height: ($image-width * (1920 / 1080)); 88 | 89 | width: ($image-width * $image-factor); 90 | height: (($image-width * $image-factor) * (1920 / 1080)); 91 | margin-top: ($image-pad-top * $image-factor); 92 | margin-bottom: (_size(element-margin) + ($image-pad-bottom * $image-factor)); 93 | 94 | &:before { 95 | height: ($image-pad-top * $image-factor); 96 | background-size: (64px * $image-factor) (32px * $image-factor); 97 | margin-top: (($image-pad-top * $image-factor) * -1); 98 | border-radius: (1rem * $image-factor) (1rem * $image-factor) 0 0; 99 | } 100 | 101 | &:after { 102 | height: ($image-pad-bottom * $image-factor); 103 | background-size: (64px * $image-factor) (32px * $image-factor); 104 | margin-bottom: (($image-pad-bottom * $image-factor) * -1); 105 | border-radius: 0 0 (1rem * $image-factor) (1rem * $image-factor); 106 | } 107 | } 108 | 109 | @mixin color-phone($p) { 110 | border-color: _palette($p, border); 111 | background-color: _palette($p, border); 112 | 113 | @if ($p != 'invert') { 114 | border-width: 0; 115 | } 116 | @else { 117 | border-width: _size(border-width); 118 | } 119 | 120 | &:before { 121 | background-image: svg-url(''); 122 | border-color: _palette($p, border); 123 | 124 | @if ($p == 'invert') { 125 | width: calc(100% + #{_size(border-width) * 2}); 126 | margin-left: (_size(border-width) * -1); 127 | } 128 | @else { 129 | width: 100%; 130 | } 131 | } 132 | 133 | &:after { 134 | background-image: svg-url(''); 135 | border-color: _palette($p, border); 136 | 137 | @if ($p == 'invert') { 138 | width: calc(100% + #{_size(border-width) * 2}); 139 | margin-left: (_size(border-width) * -1); 140 | } 141 | @else { 142 | width: 100%; 143 | } 144 | } 145 | } 146 | 147 | @mixin color-phone-variant($v, $p) { 148 | @if ($v == 'android') { 149 | &:after { 150 | background-image: svg-url(''); 151 | } 152 | } 153 | @else if ($p == 'iphone') { 154 | // ... 155 | } 156 | } 157 | 158 | // Base. 159 | 160 | @import 'base/reset'; 161 | @import 'base/page'; 162 | @import 'base/typography'; 163 | 164 | // Component. 165 | 166 | @import 'components/row'; 167 | @import 'components/box'; 168 | @import 'components/button'; 169 | @import 'components/form'; 170 | @import 'components/icon'; 171 | @import 'components/image'; 172 | @import 'components/list'; 173 | @import 'components/actions'; 174 | @import 'components/icons'; 175 | @import 'components/section'; 176 | @import 'components/table'; 177 | @import 'components/banner'; 178 | @import 'components/spotlight'; 179 | @import 'components/gallery'; 180 | @import 'components/wrapper'; 181 | @import 'components/items'; 182 | @import 'components/index'; 183 | 184 | // Layout. 185 | 186 | @import 'layout/wrapper'; -------------------------------------------------------------------------------- /assets/sass/noscript.scss: -------------------------------------------------------------------------------- 1 | @import 'libs/vars'; 2 | @import 'libs/functions'; 3 | @import 'libs/mixins'; 4 | @import 'libs/vendor'; 5 | @import 'libs/breakpoints'; 6 | @import 'libs/html-grid'; 7 | 8 | /* 9 | Hugo Story by CaressOfSteel 10 | A (modular, highly tweakable) responsive one-page theme for Hugo. 11 | Ported from Story by HTML5UP. 12 | This Hugo theme is licensed under the Creative Commons Attribution 3.0 License. 13 | */ 14 | 15 | /* Banner (transitions) */ 16 | 17 | .banner { 18 | 19 | // Mixin. 20 | @mixin transition-banner($event) { 21 | $x: null; 22 | $y: null; 23 | 24 | @if ($event == 'load') { 25 | $x: 'body.is-preload &'; 26 | $y: _duration(on-load); 27 | } 28 | @else if ($event == 'scroll') { 29 | $x: '&.is-inactive'; 30 | $y: _duration(on-scroll); 31 | } 32 | 33 | // Content. 34 | &.on#{$event}-content-fade-up { 35 | .content { 36 | @include vendor('transition', 'none'); 37 | } 38 | 39 | #{$x} { 40 | .content { 41 | @include vendor('transform', 'none'); 42 | opacity: 1; 43 | } 44 | } 45 | } 46 | 47 | &.on#{$event}-content-fade-down { 48 | .content { 49 | @include vendor('transition', 'none'); 50 | } 51 | 52 | #{$x} { 53 | .content { 54 | @include vendor('transform', 'none'); 55 | opacity: 1; 56 | } 57 | } 58 | } 59 | 60 | &.on#{$event}-content-fade-left { 61 | .content { 62 | @include vendor('transition', 'none'); 63 | } 64 | 65 | #{$x} { 66 | .content { 67 | @include vendor('transform', 'none'); 68 | opacity: 1; 69 | } 70 | } 71 | } 72 | 73 | &.on#{$event}-content-fade-right { 74 | .content { 75 | @include vendor('transition', 'none'); 76 | } 77 | 78 | #{$x} { 79 | .content { 80 | @include vendor('transform', 'none'); 81 | opacity: 1; 82 | } 83 | } 84 | } 85 | 86 | &.on#{$event}-content-fade-in { 87 | .content { 88 | @include vendor('transition', 'none'); 89 | } 90 | 91 | #{$x} { 92 | .content { 93 | @include vendor('transform', 'none'); 94 | opacity: 1; 95 | } 96 | } 97 | } 98 | 99 | // Image. 100 | &.on#{$event}-image-fade-up { 101 | .image { 102 | @include vendor('transition', 'none'); 103 | 104 | img { 105 | @include vendor('transition', 'none'); 106 | } 107 | } 108 | 109 | #{$x} { 110 | .image { 111 | @include vendor('transform', 'none'); 112 | opacity: 1; 113 | 114 | img { 115 | opacity: 1; 116 | } 117 | } 118 | } 119 | } 120 | 121 | &.on#{$event}-image-fade-down { 122 | .image { 123 | @include vendor('transition', 'none'); 124 | 125 | img { 126 | @include vendor('transition', 'none'); 127 | } 128 | } 129 | 130 | #{$x} { 131 | .image { 132 | @include vendor('transform', 'none'); 133 | opacity: 1; 134 | 135 | img { 136 | opacity: 1; 137 | } 138 | } 139 | } 140 | } 141 | 142 | &.on#{$event}-image-fade-left { 143 | .image { 144 | @include vendor('transition', 'none'); 145 | 146 | img { 147 | @include vendor('transition', 'none'); 148 | } 149 | } 150 | 151 | #{$x} { 152 | .image { 153 | @include vendor('transform', 'none'); 154 | opacity: 1; 155 | 156 | img { 157 | opacity: 1; 158 | } 159 | } 160 | } 161 | } 162 | 163 | &.on#{$event}-image-fade-right { 164 | .image { 165 | @include vendor('transition', 'none'); 166 | 167 | img { 168 | @include vendor('transition', 'none'); 169 | } 170 | } 171 | 172 | #{$x} { 173 | .image { 174 | @include vendor('transform', 'none'); 175 | opacity: 1; 176 | 177 | img { 178 | opacity: 1; 179 | } 180 | } 181 | } 182 | } 183 | 184 | &.on#{$event}-image-fade-in { 185 | .image { 186 | img { 187 | @include vendor('transition', 'none'); 188 | } 189 | } 190 | 191 | #{$x} { 192 | .image { 193 | img { 194 | opacity: 1; 195 | } 196 | } 197 | } 198 | } 199 | 200 | } 201 | 202 | // On Load. 203 | @include transition-banner('load'); 204 | 205 | // On Scroll. 206 | @include transition-banner('scroll'); 207 | 208 | } -------------------------------------------------------------------------------- /exampleSite/.gitignore: -------------------------------------------------------------------------------- 1 | .hugo_build.lock 2 | resources/ -------------------------------------------------------------------------------- /exampleSite/archetypes/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ replace .Name "-" " " | title }}" 3 | date: {{ .Date }} 4 | draft: true 5 | --- 6 | 7 | -------------------------------------------------------------------------------- /exampleSite/config/_default/hugo.toml: -------------------------------------------------------------------------------- 1 | ## ----------------------------------------------- 2 | ## Basic Configuration 3 | ## ----------------------------------------------- 4 | 5 | theme = "hugo-story" 6 | 7 | ## ----------------------------------------------- 8 | ## Publish 9 | ## ----------------------------------------------- 10 | 11 | relativeURLs = "true" 12 | #canonifyURLs = "true" 13 | 14 | # Local 15 | baseURL = "/" 16 | publishDir = "public" 17 | 18 | # Remote 19 | #baseURL = "https://caressofsteel.github.io/demos/hugo/hugo-story/" 20 | #publishDir = "//centos/sites/hugodev/hugostory/" 21 | 22 | 23 | ## ----------------------------------------------- 24 | ## Hugo Built-in Features 25 | ## ----------------------------------------------- 26 | 27 | disableKinds = ["taxonomy", "section"] 28 | # googleAnalytics = "G-XXXXXXXXXX" 29 | 30 | ## ----------------------------------------------- 31 | ## Site Parameters 32 | ## ----------------------------------------------- 33 | 34 | [Params] 35 | 36 | [Params.social] 37 | 38 | [Params.asset] 39 | -------------------------------------------------------------------------------- /exampleSite/config/development/hugo.toml: -------------------------------------------------------------------------------- 1 | ## ----------------------------------------------- 2 | ## Basic Configuration 3 | ## ----------------------------------------------- 4 | 5 | title = "Hugo Story" 6 | copyright = "{year}" 7 | 8 | ## ----------------------------------------------- 9 | ## Publish 10 | ## ----------------------------------------------- 11 | 12 | relativeURLs = "true" 13 | #canonifyURLs = "true" 14 | 15 | # Local 16 | baseURL = "/" 17 | publishDir = "public" 18 | 19 | # Remote 20 | #baseURL = "https://caressofsteel.github.io/demos/hugo/hugo-story/" 21 | #publishDir = "//centos/sites/hugodev/hugostory/" 22 | 23 | ## ----------------------------------------------- 24 | ## Hugo Built-in Features 25 | ## ----------------------------------------------- 26 | 27 | disableKinds = ["taxonomy", "section"] 28 | # googleAnalytics = "G-XXXXXXXXXX" 29 | 30 | ## ----------------------------------------------- 31 | ## Site Parameters 32 | ## ----------------------------------------------- 33 | 34 | [Params] 35 | description = "A (modular, highly tweakable) responsive one-page theme for Hugo" 36 | logo = "images/banner.jpg" 37 | favicon = true 38 | 39 | [Params.social] 40 | github = "https://github.com/caressofsteel/" 41 | twitter = "https://twitter.com/caressofsteel_" 42 | email = "caressofsteel@protonmail.com" 43 | instagram = "https://instagram.com" 44 | linkedin = "https://linkedin.com" 45 | telegram = "https://telegram.org" 46 | 47 | [Params.asset] 48 | fontawesome_css = ["css/fontawesome-all.min.css"] 49 | fontawesome_js = ["js/fontawesome-all.min.js"] -------------------------------------------------------------------------------- /exampleSite/config/production/hugo.toml: -------------------------------------------------------------------------------- 1 | ## ----------------------------------------------- 2 | ## Basic Configuration 3 | ## ----------------------------------------------- 4 | 5 | title = "Hugo Story" 6 | copyright = "{year}" 7 | 8 | ## ----------------------------------------------- 9 | ## Publish 10 | ## ----------------------------------------------- 11 | 12 | relativeURLs = "true" 13 | #canonifyURLs = "true" 14 | 15 | # Local 16 | baseURL = "/" 17 | publishDir = "public" 18 | 19 | # Remote 20 | #baseURL = "https://caressofsteel.github.io/demos/hugo/hugo-story/" 21 | #publishDir = "//centos/sites/hugodev/hugostory/" 22 | 23 | ## ----------------------------------------------- 24 | ## Hugo Built-in Features 25 | ## ----------------------------------------------- 26 | 27 | disableKinds = ["taxonomy", "section"] 28 | # googleAnalytics = "G-XXXXXXXXXX" 29 | 30 | ## ----------------------------------------------- 31 | ## Site Parameters 32 | ## ----------------------------------------------- 33 | 34 | [Params] 35 | description = "A (modular, highly tweakable) responsive one-page theme for Hugo" 36 | logo = "images/banner.jpg" 37 | favicon = true 38 | 39 | [Params.social] 40 | github = "https://github.com/caressofsteel/" 41 | twitter = "https://twitter.com/caressofsteel_" 42 | email = "caressofsteel@protonmail.com" 43 | instagram = "https://instagram.com" 44 | linkedin = "https://linkedin.com" 45 | telegram = "https://telegram.org" 46 | 47 | [Params.asset] 48 | fontawesome_css = ["css/fontawesome-all.min.css"] 49 | fontawesome_js = ["js/fontawesome-all.min.js"] -------------------------------------------------------------------------------- /exampleSite/data/banner.yml: -------------------------------------------------------------------------------- 1 | ####################### Banner ######################### 2 | style: "style1 orient-left content-align-left image-position-right fullscreen onload-image-fade-in onload-content-fade-right" 3 | title : "Hugo Story" 4 | subtitle: | 5 | Hugo Story released for free under the Creative Commons. 6 | content : | 7 | This is a Banner element, and it's generally used as an introduction or opening statement. You can customize its appearance with a number of modifiers, as well as assign it an optional onload or onscroll transition modifier (details). 8 | button: 9 | label : "Get Started" 10 | link : "#first" 11 | image : "images/banner.jpg" 12 | 13 | -------------------------------------------------------------------------------- /exampleSite/data/gallery.yml: -------------------------------------------------------------------------------- 1 | title: "Gallery" 2 | style: "style2 medium lightbox onscroll-fade-in" 3 | content: | 4 | This is a Gallery element. It can behave as a lightbox (when given the lightbox class), and you can customize its appearance with a number of modifiers, as well as assign it an optional onload or onscroll transition modifier (details). 5 | pictures: 6 | - title: "Title" 7 | content: "Lorem ipsum dolor amet, consectetur magna etiam elit. Etiam sed ultrices." 8 | image: "images/gallery/fulls/01.jpg" 9 | thumb: "images/gallery/thumbs/01.jpg" 10 | button: "Details" 11 | 12 | - title: "Title" 13 | content: "Lorem ipsum dolor amet, consectetur magna etiam elit. Etiam sed ultrices." 14 | image: "images/gallery/fulls/02.jpg" 15 | thumb: "images/gallery/thumbs/02.jpg" 16 | button: "Details" 17 | 18 | - title: "Title" 19 | content: "Lorem ipsum dolor amet, consectetur magna etiam elit. Etiam sed ultrices." 20 | image: "images/gallery/fulls/03.jpg" 21 | thumb: "images/gallery/thumbs/03.jpg" 22 | button: "Details" 23 | 24 | - title: "Title" 25 | content: "Lorem ipsum dolor amet, consectetur magna etiam elit. Etiam sed ultrices." 26 | image: "images/gallery/fulls/04.jpg" 27 | thumb: "images/gallery/thumbs/04.jpg" 28 | button: "Details" 29 | 30 | - title: "Title" 31 | content: "Lorem ipsum dolor amet, consectetur magna etiam elit. Etiam sed ultrices." 32 | image: "images/gallery/fulls/05.jpg" 33 | thumb: "images/gallery/thumbs/05.jpg" 34 | button: "Details" 35 | 36 | - title: "Title" 37 | content: "Lorem ipsum dolor amet, consectetur magna etiam elit. Etiam sed ultrices." 38 | image: "images/gallery/fulls/06.jpg" 39 | thumb: "images/gallery/thumbs/06.jpg" 40 | button: "Details" 41 | 42 | - title: "Title" 43 | content: "Lorem ipsum dolor amet, consectetur magna etiam elit. Etiam sed ultrices." 44 | image: "images/gallery/fulls/07.jpg" 45 | thumb: "images/gallery/thumbs/07.jpg" 46 | button: "Details" 47 | 48 | - title: "Title" 49 | content: "Lorem ipsum dolor amet, consectetur magna etiam elit. Etiam sed ultrices." 50 | image: "images/gallery/fulls/08.jpg" 51 | thumb: "images/gallery/thumbs/08.jpg" 52 | button: "Details" 53 | 54 | - title: "Title" 55 | content: "Lorem ipsum dolor amet, consectetur magna etiam elit. Etiam sed ultrices." 56 | image: "images/gallery/fulls/09.jpg" 57 | thumb: "images/gallery/thumbs/09.jpg" 58 | button: "Details" 59 | 60 | - title: "Title" 61 | content: "Lorem ipsum dolor amet, consectetur magna etiam elit. Etiam sed ultrices." 62 | image: "images/gallery/fulls/10.jpg" 63 | thumb: "images/gallery/thumbs/10.jpg" 64 | button: "Details" 65 | 66 | - title: "Title" 67 | content: "Lorem ipsum dolor amet, consectetur magna etiam elit. Etiam sed ultrices." 68 | image: "images/gallery/fulls/11.jpg" 69 | thumb: "images/gallery/thumbs/11.jpg" 70 | button: "Details" 71 | 72 | - title: "Title" 73 | content: "Lorem ipsum dolor amet, consectetur magna etiam elit. Etiam sed ultrices." 74 | image: "images/gallery/fulls/12.jpg" 75 | thumb: "images/gallery/thumbs/12.jpg" 76 | button: "Details" 77 | 78 | -------------------------------------------------------------------------------- /exampleSite/data/items.yml: -------------------------------------------------------------------------------- 1 | title : "Items" 2 | content: | 3 | This is an Items element, and it's basically just a grid for organizing items of various types. You can customize its appearance with a number of modifiers, as well as assign it an optional onload or onscroll transition modifier (details). 4 | style: "style1 medium onscroll-fade-in" 5 | items: 6 | # feature item loop 7 | - name : "One" 8 | content : "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi dui turpis, cursus eget orci amet aliquam congue semper. Etiam eget ultrices risus nec tempor elit." 9 | style : "style2 major fa-gem" 10 | 11 | # feature item loop 12 | - name : "Two" 13 | content : "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi dui turpis, cursus eget orci amet aliquam congue semper. Etiam eget ultrices risus nec tempor elit." 14 | style : "solid style2 major fa-save" 15 | 16 | # feature item loop 17 | - name : "Three" 18 | content : "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi dui turpis, cursus eget orci amet aliquam congue semper. Etiam eget ultrices risus nec tempor elit." 19 | style : "solid style2 major fa-chart-bar" 20 | 21 | # feature item loop 22 | - name : "Four" 23 | content : "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi dui turpis, cursus eget orci amet aliquam congue semper. Etiam eget ultrices risus nec tempor elit." 24 | style : "solid style2 major fa-wifi" 25 | 26 | # feature item loop 27 | - name : "Five" 28 | content : "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi dui turpis, cursus eget orci amet aliquam congue semper. Etiam eget ultrices risus nec tempor elit." 29 | style : "solid style2 major fa-cog" 30 | 31 | # feature item loop 32 | - name : "Six" 33 | content : "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi dui turpis, cursus eget orci amet aliquam congue semper. Etiam eget ultrices risus nec tempor elit." 34 | style : "style2 major fa-paper-plane" 35 | 36 | # feature item loop 37 | - name : "Seven" 38 | content : "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi dui turpis, cursus eget orci amet aliquam congue semper. Etiam eget ultrices risus nec tempor elit." 39 | style : "solid style2 major fa-desktop" 40 | 41 | # feature item loop 42 | - name : "Eight" 43 | content : "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi dui turpis, cursus eget orci amet aliquam congue semper. Etiam eget ultrices risus nec tempor elit." 44 | style : "solid style2 major fa-sync-alt" 45 | 46 | # feature item loop 47 | - name : "Nine" 48 | content : "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi dui turpis, cursus eget orci amet aliquam congue semper. Etiam eget ultrices risus nec tempor elit." 49 | style : "solid style2 major fa-hashtag" 50 | 51 | # feature item loop 52 | - name : "Ten" 53 | content : "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi dui turpis, cursus eget orci amet aliquam congue semper. Etiam eget ultrices risus nec tempor elit." 54 | style : "solid style2 major fa-bolt" 55 | 56 | # feature item loop 57 | - name : "Eleven" 58 | content : "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi dui turpis, cursus eget orci amet aliquam congue semper. Etiam eget ultrices risus nec tempor elit." 59 | style : "style2 major fa-envelope" 60 | 61 | # feature item loop 62 | - name : "Twelve" 63 | content : "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi dui turpis, cursus eget orci amet aliquam congue semper. Etiam eget ultrices risus nec tempor elit." 64 | style : "solid style2 major fa-leaf" 65 | -------------------------------------------------------------------------------- /exampleSite/data/spotlight1.yml: -------------------------------------------------------------------------------- 1 | ####################### Spotlight ######################### 2 | style: "style1 orient-right content-align-left image-position-center onscroll-image-fade-in" 3 | id: "first" 4 | title : "Spotlight" 5 | content: | 6 | This is a Spotlight element, and it's generally used – as its name implies – to spotlight a particular feature, subject, or pretty much whatever. You can customize its appearance with a number of modifiers, as well as assign it an optional onload or onscroll transition modifier (details). 7 | button: 8 | label: "Learn More" 9 | link: "#" 10 | image: "images/spotlight01.jpg" 11 | -------------------------------------------------------------------------------- /exampleSite/data/spotlight2.yml: -------------------------------------------------------------------------------- 1 | ####################### Spotlight ######################### 2 | style: "style1 orient-left content-align-left image-position-center onscroll-image-fade-in" 3 | title : "Spotlight" 4 | content: | 5 | This is also a Spotlight element, and it's here because this demo would look a bit empty with just one spotlight. Like all spotlights, you can customize its appearance with a number of modifiers, as well as assign it an optional onload or onscroll transition modifier (details). 6 | button: 7 | label: "Learn More" 8 | link: "#" 9 | image: "images/spotlight02.jpg" 10 | -------------------------------------------------------------------------------- /exampleSite/data/spotlight3.yml: -------------------------------------------------------------------------------- 1 | ####################### Spotlight ######################### 2 | style: "style1 orient-right content-align-left image-position-center onscroll-image-fade-in" 3 | id: "first" 4 | title : "Spotlight" 5 | content: | 6 | And yes, this is another Spotlight element, and it's also here because I need to fill a bit of space. Naturally, like any other spotlight, you can customize its appearance with a number of modifiers, as well as assign it an optional onload or onscroll transition modifier (details). 7 | button: 8 | label: "Learn More" 9 | link: "#" 10 | image: "images/spotlight03.jpg" 11 | -------------------------------------------------------------------------------- /exampleSite/hugo.toml: -------------------------------------------------------------------------------- 1 | ## ----------------------------------------------- 2 | ## Basic Configuration 3 | ## ----------------------------------------------- 4 | 5 | theme = "hugo-story" 6 | 7 | ## ----------------------------------------------- 8 | ## Publish 9 | ## ----------------------------------------------- 10 | 11 | relativeURLs = "true" 12 | #canonifyURLs = "true" 13 | 14 | # Local 15 | baseURL = "/" 16 | publishDir = "public" 17 | 18 | # Remote 19 | #baseURL = "https://caressofsteel.github.io/demos/hugo/hugo-story/" 20 | #publishDir = "//centos/sites/hugodev/hugostory/" 21 | 22 | 23 | ## ----------------------------------------------- 24 | ## Hugo Built-in Features 25 | ## ----------------------------------------------- 26 | 27 | disableKinds = ["taxonomy", "section"] 28 | # googleAnalytics = "your-google-analytics-id" 29 | 30 | ## ----------------------------------------------- 31 | ## Site Parameters 32 | ## ----------------------------------------------- 33 | 34 | [Params] 35 | 36 | [Params.social] -------------------------------------------------------------------------------- /exampleSite/layouts/_default/baseof.html: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | {{ partial "head" . }} 11 | 12 | 13 | 14 | 15 |
16 | {{- block "main" . }}{{- end }} 17 | 18 |
19 | 20 | {{ template "_internal/google_analytics.html" . }} 21 | {{ partial "scripts" . }} 22 | 23 | 24 | -------------------------------------------------------------------------------- /exampleSite/layouts/index.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | 3 | {{ partial "banner" site.Data.banner }} 4 | {{ partial "spotlight" site.Data.spotlight1 }} 5 | {{ partial "spotlight" site.Data.spotlight2 }} 6 | {{ partial "spotlight" site.Data.spotlight3 }} 7 | {{ partial "gallery" site.Data.gallery }} 8 | {{ partial "items" site.Data.items }} 9 | {{ partial "elements" . }} 10 | {{ partial "elements_reference" . }} 11 | {{ partial "footer" . }} 12 | 13 | {{ end }} -------------------------------------------------------------------------------- /exampleSite/layouts/partials/banner.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /exampleSite/layouts/partials/favicon.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /exampleSite/layouts/partials/footer.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |
    5 | {{ with .Site.Params.social.github }}
  • Github
  • {{end}} 6 | {{ with .Site.Params.social.twitter }}
  • Twitter
  • {{end}} 7 | {{ with .Site.Params.social.instagram }}
  • Instagram
  • {{end}} 8 | {{ with .Site.Params.social.linkedin }}
  • LinkedIn
  • {{end}} 9 | {{ with .Site.Params.social.email }}
  • Email
  • {{end}} 10 |
11 |

Hugo Story © 2020 CaressOfSteel 12 | Ported from Story by HTML5UP 13 | Images courtesy of Unsplash

14 |
15 |
16 | 17 | 18 | {{ range .Site.Params.asset.fontawesome_js -}} 19 | 20 | {{- end }} -------------------------------------------------------------------------------- /exampleSite/layouts/partials/gallery.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |

{{ .title }}

5 |

{{ .content | safeHTML }}

6 |
7 | 8 | 9 | 14 |
-------------------------------------------------------------------------------- /exampleSite/layouts/partials/head.html: -------------------------------------------------------------------------------- 1 | 2 | {{ .Site.Title }} 3 | 4 | 5 | 6 | 7 | {{ if .Site.Params.favicon }} 8 | {{ partial "favicon" }} 9 | {{ end }} 10 | 11 | 12 | {{ if hugo.IsServer }} 13 | {{ $style := resources.Get "sass/main.scss" | resources.ExecuteAsTemplate "scss/main.scss" . | toCSS (dict "targetPath" "css/main.css" "outputStyle" "compressed" "enableSourceMap" false) }} 14 | 15 | {{ else }} 16 | {{ $style := resources.Get "sass/main.scss" | resources.ExecuteAsTemplate "scss/main.scss" . | toCSS (dict "targetPath" "css/main.css" "enableSourceMap" false) }} 17 | 18 | {{ end }} 19 | {{ if hugo.IsServer }} 20 | {{ $noscript := resources.Get "sass/noscript.scss" | resources.ExecuteAsTemplate "noscript.scss" . | toCSS (dict "targetPath" "css/noscript.css" "enableSourceMap" false) }} 21 | 22 | {{ else }} 23 | {{ $noscript := resources.Get "sass/noscript.scss" | resources.ExecuteAsTemplate "noscript.scss" . | toCSS (dict "targetPath" "css/noscript.css" "enableSourceMap" false) }} 24 | 25 | {{end}} 26 | 27 | 28 | {{ range .Site.Params.asset.fontawesome_css -}} 29 | 30 | {{- end }} 31 | 32 | 33 | -------------------------------------------------------------------------------- /exampleSite/layouts/partials/item.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |

{{ .name }}

4 |

{{ .content }}

5 |
6 | -------------------------------------------------------------------------------- /exampleSite/layouts/partials/items.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 | {{ with .title }}

{{ . }}

{{ end }} 5 | {{ with .content }}

{{ . | safeHTML }}

{{ end }} 6 |
7 | {{ range .items }} 8 | {{ partial "item" . }} 9 | {{ end }} 10 |
11 |
12 |
-------------------------------------------------------------------------------- /exampleSite/layouts/partials/picture.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 |
6 |

{{ .title }}

7 |

{{ .content }}

8 |
    9 |
  • {{ .button }}
  • 10 |
11 |
12 |
13 | -------------------------------------------------------------------------------- /exampleSite/layouts/partials/scripts.html: -------------------------------------------------------------------------------- 1 | 2 | {{ $jQuery := resources.Get "js/jquery.min.js" }} 3 | {{ $scrollex := resources.Get "js/jquery.scrollex.min.js" }} 4 | {{ $scrolly := resources.Get "js/jquery.scrolly.min.js" }} 5 | {{ $browser := resources.Get "js/browser.min.js" }} 6 | {{ $breakpoints := resources.Get "js/breakpoints.min.js" }} 7 | {{ $util := resources.Get "js/util.js" }} 8 | {{ $main := resources.Get "js/main.js" }} 9 | {{ $demo := resources.Get "js/demo.js" }} 10 | 11 | {{ $js := slice $jQuery $scrollex $scrolly $browser $breakpoints $util $main $demo | resources.Concat "js/bundle.js" | minify }} 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /exampleSite/layouts/partials/spotlight-01-left.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |

Spotlight

5 |

This is a Spotlight element, and it's generally used – as its name implies – to spotlight a particular feature, subject, or pretty much whatever. You can customize its appearance with a number of modifiers, as well as assign it an optional onload or onscroll transition modifier (details).

6 | 9 |
10 |
11 | 12 |
13 |
-------------------------------------------------------------------------------- /exampleSite/layouts/partials/spotlight-02-right.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |

Spotlight

5 |

This is also a Spotlight element, and it's here because this demo would look a bit empty with just one spotlight. Like all spotlights, you can customize its appearance with a number of modifiers, as well as assign it an optional onload or onscroll transition modifier (details).

6 | 9 |
10 |
11 | 12 |
13 |
-------------------------------------------------------------------------------- /exampleSite/layouts/partials/spotlight-03-left.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |

Spotlight

5 |

And yes, this is another Spotlight element, and it's also here because I need to fill a bit of space. Naturally, like any other spotlight, you can customize its appearance with a number of modifiers, as well as assign it an optional onload or onscroll transition modifier (details).

6 | 9 |
10 |
11 | 12 |
13 |
-------------------------------------------------------------------------------- /exampleSite/layouts/partials/spotlight.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 | {{ with .title }}

{{ . }}

{{ end }} 5 | {{ with .content }}

{{ . | safeHTML }}

{{ end }} 6 | {{ with .button }}{{ end }} 9 |
10 | {{ with .image }}
11 | 12 |
{{ end }} 13 |
-------------------------------------------------------------------------------- /exampleSite/static/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/android-chrome-192x192.png -------------------------------------------------------------------------------- /exampleSite/static/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/android-chrome-512x512.png -------------------------------------------------------------------------------- /exampleSite/static/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/apple-touch-icon.png -------------------------------------------------------------------------------- /exampleSite/static/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #da532c 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /exampleSite/static/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/favicon-16x16.png -------------------------------------------------------------------------------- /exampleSite/static/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/favicon-32x32.png -------------------------------------------------------------------------------- /exampleSite/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/favicon.ico -------------------------------------------------------------------------------- /exampleSite/static/images/banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/banner.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/fulls/01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/fulls/01.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/fulls/02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/fulls/02.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/fulls/03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/fulls/03.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/fulls/04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/fulls/04.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/fulls/05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/fulls/05.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/fulls/06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/fulls/06.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/fulls/07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/fulls/07.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/fulls/08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/fulls/08.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/fulls/09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/fulls/09.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/fulls/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/fulls/10.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/fulls/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/fulls/11.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/fulls/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/fulls/12.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/thumbs/01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/thumbs/01.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/thumbs/02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/thumbs/02.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/thumbs/03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/thumbs/03.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/thumbs/04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/thumbs/04.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/thumbs/05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/thumbs/05.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/thumbs/06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/thumbs/06.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/thumbs/07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/thumbs/07.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/thumbs/08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/thumbs/08.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/thumbs/09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/thumbs/09.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/thumbs/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/thumbs/10.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/thumbs/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/thumbs/11.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/gallery/thumbs/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/gallery/thumbs/12.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/pic01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/pic01.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/pic02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/pic02.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/spotlight01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/spotlight01.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/spotlight02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/spotlight02.jpg -------------------------------------------------------------------------------- /exampleSite/static/images/spotlight03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/images/spotlight03.jpg -------------------------------------------------------------------------------- /exampleSite/static/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/mstile-150x150.png -------------------------------------------------------------------------------- /exampleSite/static/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "", 3 | "short_name": "", 4 | "icons": [ 5 | { 6 | "src": "/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "theme_color": "#ffffff", 17 | "background_color": "#ffffff", 18 | "display": "standalone" 19 | } 20 | -------------------------------------------------------------------------------- /exampleSite/static/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /exampleSite/static/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /exampleSite/static/webfonts/fa-duotone-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/webfonts/fa-duotone-900.ttf -------------------------------------------------------------------------------- /exampleSite/static/webfonts/fa-duotone-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/webfonts/fa-duotone-900.woff2 -------------------------------------------------------------------------------- /exampleSite/static/webfonts/fa-light-300.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/webfonts/fa-light-300.ttf -------------------------------------------------------------------------------- /exampleSite/static/webfonts/fa-light-300.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/webfonts/fa-light-300.woff2 -------------------------------------------------------------------------------- /exampleSite/static/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /exampleSite/static/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /exampleSite/static/webfonts/fa-sharp-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/webfonts/fa-sharp-solid-900.ttf -------------------------------------------------------------------------------- /exampleSite/static/webfonts/fa-sharp-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/webfonts/fa-sharp-solid-900.woff2 -------------------------------------------------------------------------------- /exampleSite/static/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /exampleSite/static/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /exampleSite/static/webfonts/fa-thin-100.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/webfonts/fa-thin-100.ttf -------------------------------------------------------------------------------- /exampleSite/static/webfonts/fa-thin-100.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/webfonts/fa-thin-100.woff2 -------------------------------------------------------------------------------- /exampleSite/static/webfonts/fa-v4compatibility.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/webfonts/fa-v4compatibility.ttf -------------------------------------------------------------------------------- /exampleSite/static/webfonts/fa-v4compatibility.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/exampleSite/static/webfonts/fa-v4compatibility.woff2 -------------------------------------------------------------------------------- /images/device-screenshots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/images/device-screenshots.png -------------------------------------------------------------------------------- /images/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/images/screenshot.png -------------------------------------------------------------------------------- /images/tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/images/tn.png -------------------------------------------------------------------------------- /layouts/_default/baseof.html: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | {{ partial "head" . }} 11 | 12 | 13 | 14 | 15 |
16 | {{- block "main" . }}{{- end }} 17 | 18 |
19 | 20 | {{ partial "scripts" . }} 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /layouts/index.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | 3 | {{ partial "banner" site.Data.banner }} 4 | {{ partial "spotlight" site.Data.spotlight1 }} 5 | {{ partial "spotlight" site.Data.spotlight2 }} 6 | {{ partial "spotlight" site.Data.spotlight3 }} 7 | {{ partial "gallery" site.Data.gallery }} 8 | {{ partial "items" site.Data.items }} 9 | {{ partial "elements" . }} 10 | {{ partial "elements_reference" . }} 11 | {{ partial "footer" . }} 12 | 13 | {{ end }} -------------------------------------------------------------------------------- /layouts/partials/banner.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /layouts/partials/favicon.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /layouts/partials/footer.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |
    5 | {{ with .Site.Params.social.github }}
  • Github
  • {{end}} 6 | {{ with .Site.Params.social.twitter }}
  • Twitter
  • {{end}} 7 | {{ with .Site.Params.social.instagram }}
  • Instagram
  • {{end}} 8 | {{ with .Site.Params.social.linkedin }}
  • LinkedIn
  • {{end}} 9 | {{ with .Site.Params.social.email }}
  • Email
  • {{end}} 10 |
11 |

Hugo Story © 2020 CaressOfSteel 12 | Ported from Story by HTML5UP 13 | Images courtesy of Unsplash

14 |
15 |
16 | 17 | 18 | {{ range .Site.Params.asset.fontawesome_js -}} 19 | 20 | {{- end }} -------------------------------------------------------------------------------- /layouts/partials/gallery.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |

{{ .title }}

5 |

{{ .content | safeHTML }}

6 |
7 | 8 | 9 | 14 |
-------------------------------------------------------------------------------- /layouts/partials/head.html: -------------------------------------------------------------------------------- 1 | 2 | {{ .Site.Title }} 3 | 4 | 5 | 6 | 7 | {{ if .Site.Params.favicon }} 8 | {{ partial "favicon" }} 9 | {{ end }} 10 | 11 | 12 | {{ if hugo.IsServer }} 13 | {{ $style := resources.Get "sass/main.scss" | resources.ExecuteAsTemplate "scss/main.scss" . | toCSS (dict "targetPath" "css/main.css" "outputStyle" "compressed" "enableSourceMap" false) }} 14 | 15 | {{ else }} 16 | {{ $style := resources.Get "sass/main.scss" | resources.ExecuteAsTemplate "scss/main.scss" . | toCSS (dict "targetPath" "css/main.css" "enableSourceMap" false) }} 17 | 18 | {{ end }} 19 | {{ if hugo.IsServer }} 20 | {{ $noscript := resources.Get "sass/noscript.scss" | resources.ExecuteAsTemplate "noscript.scss" . | toCSS (dict "targetPath" "css/noscript.css" "enableSourceMap" false) }} 21 | 22 | {{ else }} 23 | {{ $noscript := resources.Get "sass/noscript.scss" | resources.ExecuteAsTemplate "noscript.scss" . | toCSS (dict "targetPath" "css/noscript.css" "enableSourceMap" false) }} 24 | 25 | {{end}} 26 | 27 | 28 | {{ range .Site.Params.asset.fontawesome_css -}} 29 | 30 | {{- end }} 31 | 32 | 33 | -------------------------------------------------------------------------------- /layouts/partials/item.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |

{{ .name }}

4 |

{{ .content }}

5 |
6 | -------------------------------------------------------------------------------- /layouts/partials/items.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 | {{ with .title }}

{{ . }}

{{ end }} 5 | {{ with .content }}

{{ . | safeHTML }}

{{ end }} 6 |
7 | {{ range .items }} 8 | {{ partial "item" . }} 9 | {{ end }} 10 |
11 |
12 |
-------------------------------------------------------------------------------- /layouts/partials/picture.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 |
6 |

{{ .title }}

7 |

{{ .content }}

8 |
    9 |
  • {{ .button }}
  • 10 |
11 |
12 |
13 | -------------------------------------------------------------------------------- /layouts/partials/scripts.html: -------------------------------------------------------------------------------- 1 | 2 | {{ $jQuery := resources.Get "js/jquery.min.js" }} 3 | {{ $scrollex := resources.Get "js/jquery.scrollex.min.js" }} 4 | {{ $scrolly := resources.Get "js/jquery.scrolly.min.js" }} 5 | {{ $browser := resources.Get "js/browser.min.js" }} 6 | {{ $breakpoints := resources.Get "js/breakpoints.min.js" }} 7 | {{ $util := resources.Get "js/util.js" }} 8 | {{ $main := resources.Get "js/main.js" }} 9 | {{ $demo := resources.Get "js/demo.js" }} 10 | 11 | {{ $js := slice $jQuery $scrollex $scrolly $browser $breakpoints $util $main $demo | resources.Concat "js/bundle.js" | minify }} 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /layouts/partials/spotlight-01-left.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |

Spotlight

5 |

This is a Spotlight element, and it's generally used – as its name implies – to spotlight a particular feature, subject, or pretty much whatever. You can customize its appearance with a number of modifiers, as well as assign it an optional onload or onscroll transition modifier (details).

6 | 9 |
10 |
11 | 12 |
13 |
-------------------------------------------------------------------------------- /layouts/partials/spotlight-02-right.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |

Spotlight

5 |

This is also a Spotlight element, and it's here because this demo would look a bit empty with just one spotlight. Like all spotlights, you can customize its appearance with a number of modifiers, as well as assign it an optional onload or onscroll transition modifier (details).

6 | 9 |
10 |
11 | 12 |
13 |
-------------------------------------------------------------------------------- /layouts/partials/spotlight-03-left.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |

Spotlight

5 |

And yes, this is another Spotlight element, and it's also here because I need to fill a bit of space. Naturally, like any other spotlight, you can customize its appearance with a number of modifiers, as well as assign it an optional onload or onscroll transition modifier (details).

6 | 9 |
10 |
11 | 12 |
13 |
-------------------------------------------------------------------------------- /layouts/partials/spotlight.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 | {{ with .title }}

{{ . }}

{{ end }} 5 | {{ with .content }}

{{ . | safeHTML }}

{{ end }} 6 | {{ with .button }}{{ end }} 9 |
10 | {{ with .image }}
11 | 12 |
{{ end }} 13 |
-------------------------------------------------------------------------------- /static/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/android-chrome-192x192.png -------------------------------------------------------------------------------- /static/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/android-chrome-512x512.png -------------------------------------------------------------------------------- /static/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/apple-touch-icon.png -------------------------------------------------------------------------------- /static/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #da532c 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /static/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/favicon-16x16.png -------------------------------------------------------------------------------- /static/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/favicon-32x32.png -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/favicon.ico -------------------------------------------------------------------------------- /static/images/banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/banner.jpg -------------------------------------------------------------------------------- /static/images/gallery/fulls/01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/fulls/01.jpg -------------------------------------------------------------------------------- /static/images/gallery/fulls/02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/fulls/02.jpg -------------------------------------------------------------------------------- /static/images/gallery/fulls/03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/fulls/03.jpg -------------------------------------------------------------------------------- /static/images/gallery/fulls/04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/fulls/04.jpg -------------------------------------------------------------------------------- /static/images/gallery/fulls/05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/fulls/05.jpg -------------------------------------------------------------------------------- /static/images/gallery/fulls/06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/fulls/06.jpg -------------------------------------------------------------------------------- /static/images/gallery/fulls/07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/fulls/07.jpg -------------------------------------------------------------------------------- /static/images/gallery/fulls/08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/fulls/08.jpg -------------------------------------------------------------------------------- /static/images/gallery/fulls/09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/fulls/09.jpg -------------------------------------------------------------------------------- /static/images/gallery/fulls/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/fulls/10.jpg -------------------------------------------------------------------------------- /static/images/gallery/fulls/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/fulls/11.jpg -------------------------------------------------------------------------------- /static/images/gallery/fulls/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/fulls/12.jpg -------------------------------------------------------------------------------- /static/images/gallery/thumbs/01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/thumbs/01.jpg -------------------------------------------------------------------------------- /static/images/gallery/thumbs/02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/thumbs/02.jpg -------------------------------------------------------------------------------- /static/images/gallery/thumbs/03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/thumbs/03.jpg -------------------------------------------------------------------------------- /static/images/gallery/thumbs/04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/thumbs/04.jpg -------------------------------------------------------------------------------- /static/images/gallery/thumbs/05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/thumbs/05.jpg -------------------------------------------------------------------------------- /static/images/gallery/thumbs/06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/thumbs/06.jpg -------------------------------------------------------------------------------- /static/images/gallery/thumbs/07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/thumbs/07.jpg -------------------------------------------------------------------------------- /static/images/gallery/thumbs/08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/thumbs/08.jpg -------------------------------------------------------------------------------- /static/images/gallery/thumbs/09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/thumbs/09.jpg -------------------------------------------------------------------------------- /static/images/gallery/thumbs/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/thumbs/10.jpg -------------------------------------------------------------------------------- /static/images/gallery/thumbs/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/thumbs/11.jpg -------------------------------------------------------------------------------- /static/images/gallery/thumbs/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/gallery/thumbs/12.jpg -------------------------------------------------------------------------------- /static/images/pic01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/pic01.jpg -------------------------------------------------------------------------------- /static/images/pic02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/pic02.jpg -------------------------------------------------------------------------------- /static/images/spotlight01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/spotlight01.jpg -------------------------------------------------------------------------------- /static/images/spotlight02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/spotlight02.jpg -------------------------------------------------------------------------------- /static/images/spotlight03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/images/spotlight03.jpg -------------------------------------------------------------------------------- /static/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/mstile-150x150.png -------------------------------------------------------------------------------- /static/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "", 3 | "short_name": "", 4 | "icons": [ 5 | { 6 | "src": "/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "theme_color": "#ffffff", 17 | "background_color": "#ffffff", 18 | "display": "standalone" 19 | } 20 | -------------------------------------------------------------------------------- /static/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /static/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /static/webfonts/fa-duotone-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/webfonts/fa-duotone-900.ttf -------------------------------------------------------------------------------- /static/webfonts/fa-duotone-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/webfonts/fa-duotone-900.woff2 -------------------------------------------------------------------------------- /static/webfonts/fa-light-300.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/webfonts/fa-light-300.ttf -------------------------------------------------------------------------------- /static/webfonts/fa-light-300.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/webfonts/fa-light-300.woff2 -------------------------------------------------------------------------------- /static/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /static/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /static/webfonts/fa-sharp-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/webfonts/fa-sharp-solid-900.ttf -------------------------------------------------------------------------------- /static/webfonts/fa-sharp-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/webfonts/fa-sharp-solid-900.woff2 -------------------------------------------------------------------------------- /static/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /static/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /static/webfonts/fa-thin-100.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/webfonts/fa-thin-100.ttf -------------------------------------------------------------------------------- /static/webfonts/fa-thin-100.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/webfonts/fa-thin-100.woff2 -------------------------------------------------------------------------------- /static/webfonts/fa-v4compatibility.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/webfonts/fa-v4compatibility.ttf -------------------------------------------------------------------------------- /static/webfonts/fa-v4compatibility.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caressofsteel/hugo-story/e3e2b8d8673085d75d009d6e3dc7f471cbadeba6/static/webfonts/fa-v4compatibility.woff2 -------------------------------------------------------------------------------- /theme.toml: -------------------------------------------------------------------------------- 1 | name = "Hugo Story" 2 | description = "A (modular, highly tweakable) responsive one-page theme for Hugo." 3 | homepage = "https://caressofsteel.github.io/demos/hugo/hugo-story/" 4 | 5 | min_version = "0.67.3 Extended" 6 | tags = ["blog","clean","html5up","modular","one-page","portfolio","responsive"] 7 | features = ["font-awesome","favicon","one-page","responsive","sass","scss"] 8 | 9 | license = "Creative Commons" 10 | licenselink = "https://github.com/caressofsteel/hugo-story/blob/master/LICENSE" 11 | 12 | [author] 13 | name = "caressofsteel" 14 | homepage = "https://github.com/caressofsteel" 15 | repo = "https://github.com/caressofsteel/hugo-story" 16 | 17 | # If porting an existing theme 18 | [original] 19 | author = "HTML5UP" 20 | homepage = "https://html5up.net" 21 | repo = "https://html5up.net/story" --------------------------------------------------------------------------------