├── .github └── dependabot.yml ├── .gitignore ├── .rubocop.yml ├── .ruby-version ├── Gemfile ├── LICENSE.txt ├── README.md ├── Rakefile ├── _config.yml ├── _includes ├── comments.html ├── downloads.html ├── footer.html ├── fork-me.html ├── google-analytics.html ├── head.html ├── header.html └── social.html ├── _layouts ├── default.html └── post.html ├── _posts ├── 2019-01-23-a-post.md ├── 2019-01-29-another-post-with-bigger-title-and-long-text.md └── 2019-01-30-yet-another-post.md ├── _sass ├── fonts.scss ├── jekyll-theme-8bit.scss └── rouge-github.scss ├── assets ├── css │ └── style.scss ├── fonts │ └── Press-Start-2P │ │ ├── OFL.txt │ │ ├── regular.ttf │ │ ├── regular.woff │ │ └── regular.woff2 └── js │ └── scale-fix.js ├── index.html └── jekyll-theme-8bit.gemspec /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: bundler 4 | directory: "/" 5 | schedule: 6 | interval: monthly 7 | open-pull-requests-limit: 10 8 | assignees: 9 | - julianolf 10 | allow: 11 | - dependency-type: direct 12 | - dependency-type: indirect 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.gem 2 | .bundle 3 | .sass-cache 4 | _site 5 | Gemfile.lock 6 | -------------------------------------------------------------------------------- /.rubocop.yml: -------------------------------------------------------------------------------- 1 | inherit_mode: 2 | merge: 3 | - Exclude 4 | 5 | AllCops: 6 | NewCops: enable 7 | Exclude: 8 | - _site/**/* 9 | TargetRubyVersion: 2.6 10 | -------------------------------------------------------------------------------- /.ruby-version: -------------------------------------------------------------------------------- 1 | 3.2.2 2 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | source 'https://rubygems.org' 4 | gemspec 5 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2019 Juliano Fernandes 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # jekyll-theme-8bit 2 | 3 | [![Gem Version](https://badge.fury.io/rb/jekyll-theme-8bit.svg)](https://badge.fury.io/rb/jekyll-theme-8bit) 4 | 5 | A Jekyll theme inspired by classic 8bit games. 6 | 7 | ## Preview 8 | 9 | You can see how the theme looks like [here](https://julianolf.github.io/jekyll-theme-8bit/). 10 | 11 | ## Installation 12 | 13 | Add this line to your Jekyll site's `Gemfile`: 14 | 15 | ```ruby 16 | gem "jekyll-theme-8bit" 17 | ``` 18 | 19 | And add this line to your Jekyll site's `_config.yml`: 20 | 21 | ```yaml 22 | theme: jekyll-theme-8bit 23 | ``` 24 | 25 | Or this, if you’re publishing your Jekyll site on GitHub Pages: 26 | 27 | ```yaml 28 | remote_theme: julianolf/jekyll-theme-8bit 29 | ``` 30 | 31 | And then execute: 32 | 33 | ```bash 34 | bundle 35 | ``` 36 | Or install it yourself as: 37 | 38 | ```bash 39 | gem install jekyll-theme-8bit 40 | ``` 41 | 42 | ## Customization 43 | 44 | Detailed instructions can be found at the [wiki pages](https://github.com/julianolf/jekyll-theme-8bit/wiki). 45 | 46 | ## Contributing 47 | 48 | Bug reports and pull requests are welcome. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. 49 | 50 | Instructions for local development are available at the [wiki pages](https://github.com/julianolf/jekyll-theme-8bit/wiki). 51 | 52 | ## License 53 | 54 | The theme is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT). 55 | 56 | ## Credits 57 | 58 | - 8bit style by [NES.css](https://nostalgic-css.github.io/NES.css/) 59 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'rake/clean' 4 | require 'html-proofer' 5 | require 'w3c_validators' 6 | require 'rubocop/rake_task' 7 | require 'rubygems' 8 | 9 | BUILD_DIR = '_site' 10 | 11 | CLEAN.include(BUILD_DIR, '.sass-cache') 12 | CLOBBER.include('jekyll-theme-8bit-*.gem') 13 | 14 | def validator(file) 15 | extension = File.extname(file) 16 | case extension 17 | when '.html' 18 | W3CValidators::NuValidator.new 19 | when '.css' 20 | W3CValidators::CSSValidator.new 21 | end 22 | end 23 | 24 | def validate(file) 25 | puts "Checking #{file}..." 26 | 27 | path = File.expand_path(file, __dir__) 28 | results = validator(file).validate_file(path) 29 | 30 | return puts 'Valid!' if results.errors.empty? 31 | 32 | results.errors.each { |err| puts err.to_s } 33 | exit 1 34 | end 35 | 36 | # Add Rubocop pre-defined tasks. 37 | RuboCop::RakeTask.new 38 | 39 | desc 'Build 8bit theme Gem' 40 | task build: %i[clobber] do 41 | sh 'gem', 'build', 'jekyll-theme-8bit.gemspec' 42 | end 43 | 44 | desc 'Build a site using 8bit theme' 45 | task build_site: %i[clean] do 46 | sh 'jekyll', 'build' 47 | end 48 | 49 | desc 'Validate HTML and CSS' 50 | task validate: %i[build_site] do 51 | # Validate according to W3C standards 52 | validate(File.join(BUILD_DIR, 'index.html')) 53 | validate(File.join(BUILD_DIR, 'assets', 'css', 'style.css')) 54 | 55 | # Validate the integrity of the HTML 56 | options = { 57 | assume_extension: true, 58 | check_html: true, 59 | disable_external: true 60 | } 61 | HTMLProofer.check_directory(BUILD_DIR, options).run 62 | end 63 | 64 | desc 'Test suite for 8bit theme' 65 | task test: %i[validate rubocop] 66 | 67 | desc 'Build and validate 8bit theme' 68 | task default: %i[test build] 69 | 70 | desc 'Tag and publish the new gem' 71 | task release: %i[build] do 72 | # Make sure we're on the master branch 73 | sh 'git rev-parse --abbrev-ref HEAD | grep -q master' do |ok, out| 74 | unless ok 75 | puts 'Only release from the master branch.' 76 | exit out.exitstatus 77 | end 78 | end 79 | 80 | # Figure out what version we're releasing 81 | version = Gem::Specification.load('jekyll-theme-8bit.gemspec').version 82 | 83 | # Make sure we haven't released this version yeat 84 | sh 'git fetch -t origin' 85 | sh "git tag -l | grep -q '#{version}'" do |ok, _| 86 | if ok 87 | puts "Whoops, there's already a #{version} tag." 88 | exit 1 89 | end 90 | end 91 | 92 | # Tag and publish it 93 | sh "gem push jekyll-theme-8bit-#{version}.gem" 94 | sh "git tag #{version}" 95 | sh 'git push origin master' 96 | sh "git push origin #{version}" 97 | end 98 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | title: Jekyll 8bit 2 | description: A Jekyll theme inspired by classic 8bit games. 3 | remote_theme: julianolf/jekyll-theme-8bit 4 | logo: nes-kirby 5 | show_downloads: true 6 | plugins: 7 | - jekyll-paginate 8 | - jekyll-seo-tag 9 | paginate: 2 10 | social: 11 | twitter: https://twitter.com/username 12 | facebook: https://facebook.com/username 13 | github: https://github.com/username 14 | youtube: https://youtube.com/channel/ID 15 | google: https://plus.google.com/username 16 | medium: https://medium.com/@username 17 | twitch: https://twitch.com/username 18 | reddit: https://www.reddit.com/user/username 19 | whatsapp: tel:+5541999999999 20 | gmail: mailto:username@domain.net 21 | linkedin: https://www.linkedin.com/in/username 22 | disqus: 23 | shortname: jekyll-theme-8bit 24 | -------------------------------------------------------------------------------- /_includes/comments.html: -------------------------------------------------------------------------------- 1 | {% if page.comments != false and jekyll.environment == "production" %} 2 |
3 | 16 | 17 | {% endif %} -------------------------------------------------------------------------------- /_includes/downloads.html: -------------------------------------------------------------------------------- 1 |
2 |

Download

3 |
4 | .ZIP 5 | .TAR 6 |
7 |
8 | -------------------------------------------------------------------------------- /_includes/footer.html: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /_includes/fork-me.html: -------------------------------------------------------------------------------- 1 | 2 |

Fork me
on GitHub

3 | 4 |
5 | -------------------------------------------------------------------------------- /_includes/google-analytics.html: -------------------------------------------------------------------------------- 1 | 2 | 9 | -------------------------------------------------------------------------------- /_includes/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {% seo %} 6 | 7 | 8 | 11 | 12 | {% if jekyll.environment == 'production' and site.google_analytics %} 13 | {% include google-analytics.html %} 14 | {% endif %} 15 | 16 | -------------------------------------------------------------------------------- /_includes/header.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {% if site.logo %} 4 | {% if site.logo contains 'nes-' %} 5 | 6 | {% else %} 7 | Logo 8 | {% endif %} 9 | {% endif %} 10 |

11 | {{ site.title | default: site.github.repository_name }} 12 |

13 |

{{ site.description | default: site.github.project_tagline }}

14 | {% if site.social %} 15 | {% include social.html %} 16 | {% endif %} 17 |
18 | {% if site.show_downloads %} 19 | {% include downloads.html %} 20 | {% endif %} 21 |
22 | -------------------------------------------------------------------------------- /_includes/social.html: -------------------------------------------------------------------------------- 1 |

2 | {% assign networks = "twitter,facebook,github,youtube,google,medium,twitch,reddit,whatsapp,gmail,linkedin" %} 3 | {% for entry in site.social %} 4 | {% if networks contains entry[0] %} 5 | 6 | {% endif %} 7 | {% endfor %} 8 |

9 | -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {% include head.html %} 4 | 5 |
6 | {% include header.html %} 7 | {% if site.github.is_project_page %} 8 | {% include fork-me.html %} 9 | {% endif %} 10 |
11 | {{ content }} 12 |
13 | {% include footer.html %} 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /_layouts/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | comments: true 4 | --- 5 | 6 | {{ page.date | date: "%B %-d, %Y" }} 7 |

{{ page.title }}

8 | by {{ page.author | default: site.author }} 9 | {{ content }} 10 | {% if page.tags %} 11 | Tags: {{ page.tags | join: " " }} 12 | {% endif %} 13 | {% if site.disqus.shortname %} 14 | {% include comments.html %} 15 | {% endif %} 16 | -------------------------------------------------------------------------------- /_posts/2019-01-23-a-post.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: A Post 4 | author: Juliano Fernandes 5 | categories: [blog, examples] 6 | tags: [jekyll, theme, 8bit] 7 | --- 8 | 9 | **Hello world**, this is my first Jekyll blog post. This is how a blog post would look like when using Jekyll 8bit theme. 10 | 11 | I hope you like it! 12 | 13 | * * * 14 | 15 | There's a horizontal rule above this. 16 | 17 | Text can be **bold**, _italic_, or ~~strikethrough~~. 18 | 19 | There should be whitespace between paragraphs. 20 | 21 | # Header 1 22 | 23 | This is a normal paragraph following a header. GitHub is a code hosting platform for version control and collaboration. It lets you and others work together on projects from anywhere. 24 | 25 | ## Header 2 26 | 27 | > This is a blockquote following a header. 28 | -------------------------------------------------------------------------------- /_posts/2019-01-29-another-post-with-bigger-title-and-long-text.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: Another post with bigger title and long text 4 | author: Juliano Fernandes 5 | tags: [lorem, ipsum] 6 | --- 7 | 8 | Here you can take a look on how code blocks, lists, tables and a few headers look like. 9 | 10 | ### Header 3 11 | 12 | ```python 13 | # Python code with syntax highlighting 14 | def say_hello(name): 15 | """Print hello message""" 16 | print(f'Hello {name}') 17 | 18 | ``` 19 | 20 | ```ruby 21 | # Ruby code with syntax highlighting 22 | def say_hello(name) 23 | puts "Hello #{name}" 24 | end 25 | 26 | ``` 27 | 28 | ``` 29 | Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this. 30 | ``` 31 | 32 | #### Header 4 33 | 34 | {:.nes-list .is-disc} 35 | * This is an unordered list following a header. 36 | * This is an unordered list following a header. 37 | * This is an unordered list following a header. 38 | 39 | ##### Header 5 40 | 41 | {:.nes-list .is-circle} 42 | 1. This is an ordered list following a header. 43 | 2. This is an ordered list following a header. 44 | 3. This is an ordered list following a header. 45 | 46 | ###### Header 6 47 | 48 | This is how a table should look like. 49 | 50 | {:.nes-table .is-bordered} 51 | | head1 | head two | three | 52 | |:-------------|:------------------|:------| 53 | | ok | good swedish fish | nice | 54 | | out of stock | good and plenty | nice | 55 | | ok | good `oreos` | hmm | 56 | | ok | good `zoute` drop | yumm | 57 | 58 |
59 | -------------------------------------------------------------------------------- /_posts/2019-01-30-yet-another-post.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: Yet Another Post 4 | author: Anonymous 5 | tags: [ipsum] 6 | --- 7 | 8 | In this post you are going to take a look on how images, nested lists, and definition lists look like. 9 | 10 | ### Small image 11 | 12 | ![Super Mario Bros](https://imgur.com/2hc7x4y.jpg) 13 | 14 | ### Large image 15 | 16 | ![The Legend of Zelda](https://imgur.com/2ffOaOl.jpg) 17 | 18 | ### Here is a nested list: 19 | 20 | {:.nes-list .is-disc} 21 | - level 1 item 22 | - level 2 item 23 | - level 2 item 24 | - level 3 item 25 | - level 3 item 26 | - level 1 item 27 | - level 2 item 28 | - level 2 item 29 | - level 1 item 30 | 31 | ### Definition lists can be used with HTML syntax. 32 | 33 |
34 |
Name
35 |
Godzilla
36 |
Born
37 |
1952
38 |
Birthplace
39 |
Japan
40 |
Color
41 |
Green
42 |
43 | -------------------------------------------------------------------------------- /_sass/fonts.scss: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Press Start 2P'; 3 | font-weight: normal; 4 | font-style: normal; 5 | src: url('../fonts/Press-Start-2P/regular.woff2') format('woff2'), 6 | url('../fonts/Press-Start-2P/regular.woff') format('woff'), 7 | url('../fonts/Press-Start-2P/regular.ttf') format('ttf') 8 | } 9 | -------------------------------------------------------------------------------- /_sass/jekyll-theme-8bit.scss: -------------------------------------------------------------------------------- 1 | @import 'fonts'; 2 | @import 'rouge-github'; 3 | 4 | body { 5 | background-color: #fff; 6 | font: 14px/1.5 'Noto Sans', Helvetica, Arial, sans-serif; 7 | color: #212529; 8 | -webkit-font-smoothing: subpixel-antialiased; 9 | } 10 | 11 | h1, h2, h3, h4, h5, h6 { 12 | font-family: 'Press Start 2P', Helvetica, Arial, sans-serif; 13 | font-weight: 400; 14 | margin: 0 0 20px; 15 | } 16 | 17 | h1 { 18 | font-size: 28px; 19 | } 20 | 21 | p, ul, ol, table, pre, dl { 22 | margin: 0 0 20px; 23 | } 24 | 25 | a { 26 | color: #58c7ff; 27 | } 28 | 29 | a:hover, a:focus { 30 | color: #3fbfff; 31 | text-decoration: none; 32 | } 33 | 34 | a small { 35 | font-size: 11px; 36 | margin-top: -0.3em; 37 | display: block; 38 | } 39 | 40 | blockquote { 41 | border-left: 1px solid #e5e5e5; 42 | margin: 0; 43 | padding: 0 0 0 20px; 44 | font-style: italic; 45 | } 46 | 47 | code, pre { 48 | font-family: 'Courier New', Courier, monospace; 49 | color: #333; 50 | } 51 | 52 | pre { 53 | padding: 8px 15px; 54 | background: #f8f8f8; 55 | overflow-x: auto; 56 | box-shadow: 57 | 0 -4px #f8f8f8, 0 -8px #e5e5e5, 4px 0 #f8f8f8, 4px -4px #e5e5e5, 58 | 8px 0 #e5e5e5, 0 4px #f8f8f8, 0 8px #e5e5e5, -4px 0 #f8f8f8, 59 | -4px 4px #e5e5e5, -8px 0 #e5e5e5, -4px -4px #e5e5e5, 4px 4px #e5e5e5; 60 | } 61 | 62 | table { 63 | width: 100%; 64 | border-collapse: collapse; 65 | } 66 | 67 | th, td { 68 | text-align: left; 69 | padding: 5px 10px; 70 | border-bottom: 1px solid #e5e5e5; 71 | } 72 | 73 | dt { 74 | color: #444; 75 | font-weight: 700; 76 | } 77 | 78 | th { 79 | color: #444; 80 | } 81 | 82 | img { 83 | max-width: 100%; 84 | } 85 | 86 | strong { 87 | color: #222; 88 | font-weight: 700; 89 | } 90 | 91 | small { 92 | font-size: 11px; 93 | } 94 | 95 | hr { 96 | border: 0; 97 | background: #000; 98 | height: 4px; 99 | margin: 20px 0; 100 | } 101 | 102 | header { 103 | width: 270px; 104 | float: left; 105 | } 106 | 107 | section { 108 | width: 500px; 109 | min-height: 810px; 110 | float: right; 111 | padding: 25px 0 50px; 112 | background-color: #fff; 113 | } 114 | 115 | footer { 116 | width: 270px; 117 | float: left; 118 | bottom: 50px; 119 | } 120 | 121 | .nes-container.is-rounded { 122 | margin-top: 8px; 123 | } 124 | 125 | .nes-container.blue-border { 126 | border-image-source: url('data:image/svg+xml;utf8,'); 127 | } 128 | 129 | .nes-container.green-border { 130 | border-image-source: url('data:image/svg+xml;utf8,'); 131 | } 132 | 133 | .nes-container.brown-border { 134 | border-image-source: url('data:image/svg+xml;utf8,'); 135 | } 136 | 137 | .nes-container.header { 138 | background-color: #58c7ff; 139 | } 140 | 141 | .nes-container .nes-kirby { 142 | display: block; 143 | margin: 15px auto; 144 | } 145 | 146 | .nes-container h1 a { 147 | color: #fff; 148 | text-shadow: 149 | 3px 3px 0 #000, -1px -1px 0 #000, 150 | 1px -1px 0 #000, -1px 1px 0 #000, 151 | 1px 1px 0 #000; 152 | } 153 | 154 | .description { 155 | font: 13px/1.5 'Press Start 2P', Helvetica, Arial, sans-serif; 156 | font-weight: 400; 157 | } 158 | 159 | .github-link { 160 | position: fixed; 161 | top: 10px; 162 | right: 10px; 163 | z-index: 999; 164 | display: flex; 165 | height: 100px; 166 | color: #333; 167 | text-decoration: none; 168 | } 169 | .github-link > p.nes-balloon { 170 | font-family: 'Press Start 2P', Helvetica, Arial, sans-serif; 171 | align-self: flex-start; 172 | padding: 0.2rem 0.5rem; 173 | font-size: 0.8rem; 174 | color: #333; 175 | } 176 | .github-link > i.nes-octocat { 177 | align-self: flex-end; 178 | } 179 | 180 | .nes-container.downloads { 181 | font-family: 'Press Start 2P', Helvetica, Arial, sans-serif; 182 | background-color: #5adb57; 183 | margin-top: 12px; 184 | } 185 | 186 | .nes-btn.is-file { 187 | color: #fafafa; 188 | background-color: #01b801; 189 | } 190 | .nes-btn.is-file::after { 191 | box-shadow: inset -4px -4px #007800; 192 | } 193 | .nes-btn.is-file:hover { 194 | background-color: #5adb57; 195 | } 196 | .nes-btn.is-file:hover::after { 197 | box-shadow: inset -6px -6px #01b801; 198 | } 199 | 200 | .nes-list.is-disc li::before, 201 | .nes-list.is-circle li::before { 202 | top: 2px; 203 | } 204 | 205 | .footer { 206 | font-family: 'Press Start 2P', Helvetica, Arial, sans-serif; 207 | font-weight: 400; 208 | text-align: center; 209 | color: #8b1600; 210 | background-color: #ffe4ad; 211 | } 212 | 213 | .footer p { 214 | margin-bottom: 5px; 215 | } 216 | 217 | .footer a { 218 | color: #ffa347; 219 | } 220 | 221 | .wrapper { 222 | width: 860px; 223 | margin: 0 auto; 224 | } 225 | 226 | ul.pagination { 227 | list-style-type: none; 228 | margin: 0 0 30px; 229 | padding: 0; 230 | overflow: hidden; 231 | } 232 | 233 | ul.pagination li { 234 | display: inline-block; 235 | float: left; 236 | } 237 | 238 | .page_number { 239 | font-family: 'Press Start 2P', Helvetica, Arial, sans-serif; 240 | font-weight: 400; 241 | font-size: smaller; 242 | padding: 0 8px; 243 | } 244 | 245 | .previous, 246 | .next { 247 | display: block; 248 | width: 18px; 249 | height: 18px; 250 | } 251 | 252 | .previous::before, 253 | .next::before { 254 | content: ""; 255 | width: 2px; 256 | height: 2px; 257 | color: #212529; 258 | position: absolute; 259 | } 260 | 261 | a span.previous::before, 262 | a span.next::before { 263 | color: #58c7ff; 264 | } 265 | a:hover span.previous::before, 266 | a:hover span.next::before { 267 | color: #3fbfff; 268 | } 269 | 270 | .previous::before { 271 | box-shadow: 272 | 2px 8px, 273 | 4px 6px,4px 8px,4px 10px, 274 | 6px 4px,6px 6px,6px 8px,6px 10px,6px 12px, 275 | 8px 4px,8px 6px,8px 8px,8px 10px,8px 12px, 276 | 10px 2px,10px 4px,10px 6px,10px 8px,10px 10px,10px 12px, 10px 14px, 277 | 12px 2px,12px 4px,12px 6px,12px 8px,12px 10px,12px 12px, 12px 14px, 278 | 14px 0px,14px 2px,14px 4px,14px 6px,14px 8px,14px 10px,14px 12px, 14px 14px, 14px 16px, 279 | 16px 0px,16px 2px,16px 4px,16px 6px,16px 8px,16px 10px,16px 12px, 16px 14px, 16px 16px; 280 | } 281 | 282 | .next::before { 283 | box-shadow: 284 | 2px 0px, 4px 0px, 285 | 2px 2px, 4px 2px, 6px 2px, 8px 2px, 286 | 2px 4px, 4px 4px, 6px 4px, 8px 4px, 10px 4px, 12px 4px, 287 | 2px 6px, 4px 6px, 6px 6px, 8px 6px, 10px 6px, 12px 6px, 14px 6px, 288 | 2px 8px, 4px 8px, 6px 8px, 8px 8px, 10px 8px, 12px 8px, 14px 8px, 16px 8px, 289 | 2px 10px, 4px 10px, 6px 10px, 8px 10px, 10px 10px, 12px 10px, 14px 10px, 290 | 2px 12px, 4px 12px, 6px 12px, 8px 12px, 10px 12px, 12px 12px, 291 | 2px 14px, 4px 14px, 6px 14px, 8px 14px, 292 | 2px 16px, 4px 16px; 293 | } 294 | 295 | .post-info { 296 | display: block; 297 | margin-bottom: 20px; 298 | color: #777; 299 | } 300 | .post-info b { 301 | font-family: 'Courier New', Courier, monospace; 302 | display: inline-block; 303 | background-color: #eee; 304 | padding: 1px 3px; 305 | } 306 | 307 | @media print, screen and (max-width: 1024px) { 308 | section { 309 | margin-top: 85px; 310 | } 311 | } 312 | 313 | @media print, screen and (max-width: 960px) { 314 | 315 | div.wrapper { 316 | width: auto; 317 | margin: 0; 318 | } 319 | 320 | header, footer { 321 | width: 260px; 322 | margin-left: 5px; 323 | } 324 | 325 | section { 326 | width: 63%; 327 | padding: 15px; 328 | } 329 | 330 | header a small { 331 | display: inline; 332 | } 333 | 334 | header ul { 335 | position: absolute; 336 | right: 50px; 337 | top: 52px; 338 | } 339 | } 340 | 341 | @media print, screen and (max-width: 720px) { 342 | body { 343 | word-wrap: break-word; 344 | } 345 | 346 | header, section, footer { 347 | float: none; 348 | position: static; 349 | width: auto; 350 | } 351 | 352 | header, section, footer { 353 | margin: 0; 354 | padding: 0 5px; 355 | } 356 | 357 | header p.view { 358 | position: static; 359 | } 360 | 361 | section { 362 | min-height: 0; 363 | padding: 0 15px; 364 | } 365 | 366 | pre, code { 367 | word-wrap: normal; 368 | } 369 | 370 | .github-link { 371 | position: static; 372 | margin: 30px auto 0; 373 | padding: 0 8px; 374 | justify-content: flex-end; 375 | } 376 | } 377 | 378 | @media print, screen and (max-width: 480px) { 379 | body { 380 | padding: 0 15px 15px; 381 | } 382 | 383 | header, section, footer { 384 | padding: 0; 385 | } 386 | } 387 | 388 | @media print { 389 | body { 390 | padding: 0 0.4in 0.4in; 391 | font-size: 12pt; 392 | color: #444; 393 | } 394 | } 395 | -------------------------------------------------------------------------------- /_sass/rouge-github.scss: -------------------------------------------------------------------------------- 1 | .highlight table td { padding: 5px; } 2 | .highlight table pre { margin: 0; } 3 | .highlight .cm { 4 | color: #999988; 5 | font-style: italic; 6 | } 7 | .highlight .cp { 8 | color: #999999; 9 | font-weight: bold; 10 | } 11 | .highlight .c1 { 12 | color: #999988; 13 | font-style: italic; 14 | } 15 | .highlight .cs { 16 | color: #999999; 17 | font-weight: bold; 18 | font-style: italic; 19 | } 20 | .highlight .c, .highlight .cd { 21 | color: #999988; 22 | font-style: italic; 23 | } 24 | .highlight .err { 25 | color: #a61717; 26 | background-color: #e3d2d2; 27 | } 28 | .highlight .gd { 29 | color: #000000; 30 | background-color: #ffdddd; 31 | } 32 | .highlight .ge { 33 | color: #000000; 34 | font-style: italic; 35 | } 36 | .highlight .gr { 37 | color: #aa0000; 38 | } 39 | .highlight .gh { 40 | color: #999999; 41 | } 42 | .highlight .gi { 43 | color: #000000; 44 | background-color: #ddffdd; 45 | } 46 | .highlight .go { 47 | color: #888888; 48 | } 49 | .highlight .gp { 50 | color: #555555; 51 | } 52 | .highlight .gs { 53 | font-weight: bold; 54 | } 55 | .highlight .gu { 56 | color: #aaaaaa; 57 | } 58 | .highlight .gt { 59 | color: #aa0000; 60 | } 61 | .highlight .kc { 62 | color: #000000; 63 | font-weight: bold; 64 | } 65 | .highlight .kd { 66 | color: #000000; 67 | font-weight: bold; 68 | } 69 | .highlight .kn { 70 | color: #000000; 71 | font-weight: bold; 72 | } 73 | .highlight .kp { 74 | color: #000000; 75 | font-weight: bold; 76 | } 77 | .highlight .kr { 78 | color: #000000; 79 | font-weight: bold; 80 | } 81 | .highlight .kt { 82 | color: #445588; 83 | font-weight: bold; 84 | } 85 | .highlight .k, .highlight .kv { 86 | color: #000000; 87 | font-weight: bold; 88 | } 89 | .highlight .mf { 90 | color: #009999; 91 | } 92 | .highlight .mh { 93 | color: #009999; 94 | } 95 | .highlight .il { 96 | color: #009999; 97 | } 98 | .highlight .mi { 99 | color: #009999; 100 | } 101 | .highlight .mo { 102 | color: #009999; 103 | } 104 | .highlight .m, .highlight .mb, .highlight .mx { 105 | color: #009999; 106 | } 107 | .highlight .sb { 108 | color: #d14; 109 | } 110 | .highlight .sc { 111 | color: #d14; 112 | } 113 | .highlight .sd { 114 | color: #d14; 115 | } 116 | .highlight .s2 { 117 | color: #d14; 118 | } 119 | .highlight .se { 120 | color: #d14; 121 | } 122 | .highlight .sh { 123 | color: #d14; 124 | } 125 | .highlight .si { 126 | color: #d14; 127 | } 128 | .highlight .sx { 129 | color: #d14; 130 | } 131 | .highlight .sr { 132 | color: #009926; 133 | } 134 | .highlight .s1 { 135 | color: #d14; 136 | } 137 | .highlight .ss { 138 | color: #990073; 139 | } 140 | .highlight .s { 141 | color: #d14; 142 | } 143 | .highlight .na { 144 | color: #008080; 145 | } 146 | .highlight .bp { 147 | color: #999999; 148 | } 149 | .highlight .nb { 150 | color: #0086B3; 151 | } 152 | .highlight .nc { 153 | color: #445588; 154 | font-weight: bold; 155 | } 156 | .highlight .no { 157 | color: #008080; 158 | } 159 | .highlight .nd { 160 | color: #3c5d5d; 161 | font-weight: bold; 162 | } 163 | .highlight .ni { 164 | color: #800080; 165 | } 166 | .highlight .ne { 167 | color: #990000; 168 | font-weight: bold; 169 | } 170 | .highlight .nf { 171 | color: #990000; 172 | font-weight: bold; 173 | } 174 | .highlight .nl { 175 | color: #990000; 176 | font-weight: bold; 177 | } 178 | .highlight .nn { 179 | color: #555555; 180 | } 181 | .highlight .nt { 182 | color: #000080; 183 | } 184 | .highlight .vc { 185 | color: #008080; 186 | } 187 | .highlight .vg { 188 | color: #008080; 189 | } 190 | .highlight .vi { 191 | color: #008080; 192 | } 193 | .highlight .nv { 194 | color: #008080; 195 | } 196 | .highlight .ow { 197 | color: #000000; 198 | font-weight: bold; 199 | } 200 | .highlight .o { 201 | color: #000000; 202 | font-weight: bold; 203 | } 204 | .highlight .w { 205 | color: #bbbbbb; 206 | } 207 | .highlight { 208 | background-color: #f8f8f8; 209 | } 210 | -------------------------------------------------------------------------------- /assets/css/style.scss: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | @import "jekyll-theme-8bit"; 5 | -------------------------------------------------------------------------------- /assets/fonts/Press-Start-2P/OFL.txt: -------------------------------------------------------------------------------- 1 | Copyright 2012 The Press Start 2P Project Authors (cody@zone38.net), with Reserved Font Name "Press Start 2P". 2 | 3 | This Font Software is licensed under the SIL Open Font License, Version 1.1. 4 | This license is copied below, and is also available with a FAQ at: 5 | http://scripts.sil.org/OFL 6 | 7 | 8 | ----------------------------------------------------------- 9 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 10 | ----------------------------------------------------------- 11 | 12 | PREAMBLE 13 | The goals of the Open Font License (OFL) are to stimulate worldwide 14 | development of collaborative font projects, to support the font creation 15 | efforts of academic and linguistic communities, and to provide a free and 16 | open framework in which fonts may be shared and improved in partnership 17 | with others. 18 | 19 | The OFL allows the licensed fonts to be used, studied, modified and 20 | redistributed freely as long as they are not sold by themselves. The 21 | fonts, including any derivative works, can be bundled, embedded, 22 | redistributed and/or sold with any software provided that any reserved 23 | names are not used by derivative works. The fonts and derivatives, 24 | however, cannot be released under any other type of license. The 25 | requirement for fonts to remain under this license does not apply 26 | to any document created using the fonts or their derivatives. 27 | 28 | DEFINITIONS 29 | "Font Software" refers to the set of files released by the Copyright 30 | Holder(s) under this license and clearly marked as such. This may 31 | include source files, build scripts and documentation. 32 | 33 | "Reserved Font Name" refers to any names specified as such after the 34 | copyright statement(s). 35 | 36 | "Original Version" refers to the collection of Font Software components as 37 | distributed by the Copyright Holder(s). 38 | 39 | "Modified Version" refers to any derivative made by adding to, deleting, 40 | or substituting -- in part or in whole -- any of the components of the 41 | Original Version, by changing formats or by porting the Font Software to a 42 | new environment. 43 | 44 | "Author" refers to any designer, engineer, programmer, technical 45 | writer or other person who contributed to the Font Software. 46 | 47 | PERMISSION & CONDITIONS 48 | Permission is hereby granted, free of charge, to any person obtaining 49 | a copy of the Font Software, to use, study, copy, merge, embed, modify, 50 | redistribute, and sell modified and unmodified copies of the Font 51 | Software, subject to the following conditions: 52 | 53 | 1) Neither the Font Software nor any of its individual components, 54 | in Original or Modified Versions, may be sold by itself. 55 | 56 | 2) Original or Modified Versions of the Font Software may be bundled, 57 | redistributed and/or sold with any software, provided that each copy 58 | contains the above copyright notice and this license. These can be 59 | included either as stand-alone text files, human-readable headers or 60 | in the appropriate machine-readable metadata fields within text or 61 | binary files as long as those fields can be easily viewed by the user. 62 | 63 | 3) No Modified Version of the Font Software may use the Reserved Font 64 | Name(s) unless explicit written permission is granted by the corresponding 65 | Copyright Holder. This restriction only applies to the primary font name as 66 | presented to the users. 67 | 68 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font 69 | Software shall not be used to promote, endorse or advertise any 70 | Modified Version, except to acknowledge the contribution(s) of the 71 | Copyright Holder(s) and the Author(s) or with their explicit written 72 | permission. 73 | 74 | 5) The Font Software, modified or unmodified, in part or in whole, 75 | must be distributed entirely under this license, and must not be 76 | distributed under any other license. The requirement for fonts to 77 | remain under this license does not apply to any document created 78 | using the Font Software. 79 | 80 | TERMINATION 81 | This license becomes null and void if any of the above conditions are 82 | not met. 83 | 84 | DISCLAIMER 85 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 86 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF 87 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 88 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE 89 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 90 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 91 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 92 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM 93 | OTHER DEALINGS IN THE FONT SOFTWARE. 94 | -------------------------------------------------------------------------------- /assets/fonts/Press-Start-2P/regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julianolf/jekyll-theme-8bit/8b5a9ae611b2b2eedfd33be22e29b264caba39da/assets/fonts/Press-Start-2P/regular.ttf -------------------------------------------------------------------------------- /assets/fonts/Press-Start-2P/regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julianolf/jekyll-theme-8bit/8b5a9ae611b2b2eedfd33be22e29b264caba39da/assets/fonts/Press-Start-2P/regular.woff -------------------------------------------------------------------------------- /assets/fonts/Press-Start-2P/regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julianolf/jekyll-theme-8bit/8b5a9ae611b2b2eedfd33be22e29b264caba39da/assets/fonts/Press-Start-2P/regular.woff2 -------------------------------------------------------------------------------- /assets/js/scale-fix.js: -------------------------------------------------------------------------------- 1 | (function(document) { 2 | var metas = document.getElementsByTagName('meta'), 3 | changeViewportContent = function(content) { 4 | for (var i = 0; i < metas.length; i++) { 5 | if (metas[i].name == "viewport") { 6 | metas[i].content = content; 7 | } 8 | } 9 | }, 10 | initialize = function() { 11 | changeViewportContent("width=device-width, minimum-scale=1.0, maximum-scale=1.0"); 12 | }, 13 | gestureStart = function() { 14 | changeViewportContent("width=device-width, minimum-scale=0.25, maximum-scale=1.6"); 15 | }, 16 | gestureEnd = function() { 17 | initialize(); 18 | }; 19 | 20 | 21 | if (navigator.userAgent.match(/iPhone/i)) { 22 | initialize(); 23 | 24 | document.addEventListener("touchstart", gestureStart, false); 25 | document.addEventListener("touchend", gestureEnd, false); 26 | } 27 | })(document); 28 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | {% for post in paginator.posts %} 6 |
7 | {{ post.date | date: "%B %-d, %Y" }} 8 |

{{ post.title }}

9 | by {{ post.author | default: site.author }} 10 | {{ post.excerpt }} 11 | [ Read ] 12 |
13 |
14 | {% endfor %} 15 | 16 | 39 | -------------------------------------------------------------------------------- /jekyll-theme-8bit.gemspec: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | Gem::Specification.new do |spec| 4 | spec.name = 'jekyll-theme-8bit' 5 | spec.version = '0.7.0' 6 | spec.authors = ['Juliano Fernandes'] 7 | spec.email = ['julianofernandes@gmail.com'] 8 | spec.summary = 'A Jekyll theme inspired by classic 8bit games.' 9 | spec.homepage = 'https://github.com/julianolf/jekyll-theme-8bit' 10 | spec.license = 'MIT' 11 | 12 | spec.files = `git ls-files -z`.split("\x0").select do |f| 13 | f.match(/^(assets|_layouts|_includes|_sass|LICENSE|README)/i) 14 | end 15 | 16 | spec.platform = Gem::Platform::RUBY 17 | spec.required_ruby_version = '>= 2.6' 18 | spec.add_runtime_dependency 'jekyll', '>= 3.8.5', '< 4.5.0' 19 | spec.add_runtime_dependency 'jekyll-paginate', '~> 1.1.0' 20 | spec.add_runtime_dependency 'jekyll-seo-tag', '~> 2.8.0' 21 | spec.add_development_dependency 'kramdown-parser-gfm', '~> 1.1.0' 22 | spec.add_development_dependency 'webrick', '~> 1.9.0' 23 | spec.add_development_dependency 'html-proofer', '~> 5.0.7' 24 | spec.add_development_dependency 'rake', '~> 13.2.1' 25 | spec.add_development_dependency 'rubocop', '~> 1.55.1' 26 | spec.add_development_dependency 'w3c_validators', '~> 1.3.7' 27 | end 28 | --------------------------------------------------------------------------------