├── .editorconfig ├── .github ├── release-drafter.yml └── workflows │ └── release-notes.yml ├── .gitignore ├── 404.html ├── Gemfile ├── Gemfile.lock ├── LICENSE.md ├── README.md ├── _config.yml ├── _data ├── archive.yml ├── navigation.yml └── social.yml ├── _includes ├── content.html ├── custom-head.html ├── disqus.html ├── google-analytics.html ├── head.html ├── home-header.html ├── mathjax.html ├── post-tags.html ├── scroll.html ├── sidebar-left.html ├── sidebar-right.html └── toc.html ├── _layouts ├── archive-dates.html ├── archive-taxonomies.html ├── default.html ├── home.html ├── page.html └── post.html ├── _posts ├── 2020-09-29-welcome-to-not-pure-poole.md ├── 2020-10-01-releasing-not-pure-poole-v0-1-0.md └── 2020-10-02-testing-mathjax.md ├── _sass ├── _alignment.scss ├── _archive.scss ├── _base.scss ├── _code.scss ├── _home-header.scss ├── _layout.scss ├── _message.scss ├── _pagination.scss ├── _posts.scss ├── _sidebar.scss ├── _syntax-dark.scss ├── _syntax-light.scss ├── _toc.scss ├── _type.scss └── _variables.scss ├── about.md ├── assets └── styles.scss ├── avatar.jpeg ├── bg.jpeg ├── categories.md ├── dates.md ├── index.html ├── not-pure-poole.gemspec ├── screenshot.png ├── scripts ├── draft ├── publish └── serve └── tags.md /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | end_of_line = lf 8 | indent_size = 2 9 | indent_style = space 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | -------------------------------------------------------------------------------- /.github/release-drafter.yml: -------------------------------------------------------------------------------- 1 | name-template: 'v$NEXT_MINOR_VERSION' 2 | tag-template: 'v$NEXT_MINOR_VERSION' 3 | prerelease: true 4 | exclude-labels: 5 | - 'skip-changelog' 6 | categories: 7 | - title: '🚀 Features' 8 | labels: 9 | - 'new-feature' 10 | - 'feature' 11 | - 'enhancement' 12 | - title: '🐛 Bug fixes' 13 | labels: 14 | - 'fix' 15 | - 'bugfix' 16 | - 'bug' 17 | - title: '📖 Docs' 18 | labels: 19 | - 'docs' 20 | - title: '📦 Dependencies' 21 | labels: 22 | - 'dependencies' 23 | - title: '🧰 Maintenance' 24 | label: 'chore' 25 | change-template: '- #$NUMBER: $TITLE' 26 | template: | 27 | ## Changes 28 | 29 | $CHANGES 30 | -------------------------------------------------------------------------------- /.github/workflows/release-notes.yml: -------------------------------------------------------------------------------- 1 | name: Release notes 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | update_release_draft: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: release-drafter/release-drafter@v5 13 | env: 14 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore docs files 2 | _gh_pages 3 | _site 4 | .ruby-version 5 | .sass-cache 6 | .jekyll-cache 7 | 8 | # Numerous always-ignore extensions 9 | *.diff 10 | *.err 11 | *.orig 12 | *.log 13 | *.rej 14 | *.swo 15 | *.swp 16 | *.zip 17 | *.vi 18 | *~ 19 | 20 | # OS or Editor folders 21 | .DS_Store 22 | ._* 23 | Thumbs.db 24 | .cache 25 | .project 26 | .settings 27 | .tmproj 28 | *.esproj 29 | nbproject 30 | *.sublime-project 31 | *.sublime-workspace 32 | .idea 33 | 34 | # Komodo 35 | *.komodoproject 36 | .komodotools 37 | 38 | # grunt-html-validation 39 | validation-status.json 40 | validation-report.json 41 | 42 | # Folders to ignore 43 | node_modules 44 | 45 | # Ruby gems 46 | *.gem 47 | -------------------------------------------------------------------------------- /404.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: "404: Page not found" 4 | permalink: 404.html 5 | --- 6 | 7 |
8 |

404: Page not found

9 |

Sorry, we've misplaced that URL or it's pointing to something that doesn't exist. Head back home to try finding it again.

10 |
11 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | gemspec 3 | 4 | gem 'jekyll-compose', group: [:jekyll_plugins] 5 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | PATH 2 | remote: . 3 | specs: 4 | not-pure-poole (0.1.0) 5 | jekyll (~> 3.9) 6 | jekyll-feed (~> 0.13) 7 | jekyll-gist (~> 1.5) 8 | jekyll-paginate (~> 1.1) 9 | jekyll-seo-tag (~> 2.6) 10 | jekyll-sitemap (~> 1.4) 11 | kramdown-parser-gfm (~> 1.1) 12 | 13 | GEM 14 | remote: https://rubygems.org/ 15 | specs: 16 | addressable (2.7.0) 17 | public_suffix (>= 2.0.2, < 5.0) 18 | colorator (1.1.0) 19 | concurrent-ruby (1.1.7) 20 | em-websocket (0.5.2) 21 | eventmachine (>= 0.12.9) 22 | http_parser.rb (~> 0.6.0) 23 | eventmachine (1.2.7) 24 | faraday (1.0.1) 25 | multipart-post (>= 1.2, < 3) 26 | ffi (1.13.1) 27 | forwardable-extended (2.6.0) 28 | http_parser.rb (0.6.0) 29 | i18n (0.9.5) 30 | concurrent-ruby (~> 1.0) 31 | jekyll (3.9.0) 32 | addressable (~> 2.4) 33 | colorator (~> 1.0) 34 | em-websocket (~> 0.5) 35 | i18n (~> 0.7) 36 | jekyll-sass-converter (~> 1.0) 37 | jekyll-watch (~> 2.0) 38 | kramdown (>= 1.17, < 3) 39 | liquid (~> 4.0) 40 | mercenary (~> 0.3.3) 41 | pathutil (~> 0.9) 42 | rouge (>= 1.7, < 4) 43 | safe_yaml (~> 1.0) 44 | jekyll-compose (0.12.0) 45 | jekyll (>= 3.7, < 5.0) 46 | jekyll-feed (0.15.0) 47 | jekyll (>= 3.7, < 5.0) 48 | jekyll-gist (1.5.0) 49 | octokit (~> 4.2) 50 | jekyll-paginate (1.1.0) 51 | jekyll-sass-converter (1.5.2) 52 | sass (~> 3.4) 53 | jekyll-seo-tag (2.6.1) 54 | jekyll (>= 3.3, < 5.0) 55 | jekyll-sitemap (1.4.0) 56 | jekyll (>= 3.7, < 5.0) 57 | jekyll-watch (2.2.1) 58 | listen (~> 3.0) 59 | kramdown (2.3.0) 60 | rexml 61 | kramdown-parser-gfm (1.1.0) 62 | kramdown (~> 2.0) 63 | liquid (4.0.3) 64 | listen (3.2.1) 65 | rb-fsevent (~> 0.10, >= 0.10.3) 66 | rb-inotify (~> 0.9, >= 0.9.10) 67 | mercenary (0.3.6) 68 | multipart-post (2.1.1) 69 | octokit (4.18.0) 70 | faraday (>= 0.9) 71 | sawyer (~> 0.8.0, >= 0.5.3) 72 | pathutil (0.16.2) 73 | forwardable-extended (~> 2.6) 74 | public_suffix (4.0.6) 75 | rake (12.3.3) 76 | rb-fsevent (0.10.4) 77 | rb-inotify (0.10.1) 78 | ffi (~> 1.0) 79 | rexml (3.2.4) 80 | rouge (3.23.0) 81 | safe_yaml (1.0.5) 82 | sass (3.7.4) 83 | sass-listen (~> 4.0.0) 84 | sass-listen (4.0.0) 85 | rb-fsevent (~> 0.9, >= 0.9.4) 86 | rb-inotify (~> 0.9, >= 0.9.7) 87 | sawyer (0.8.2) 88 | addressable (>= 2.3.5) 89 | faraday (> 0.8, < 2.0) 90 | 91 | PLATFORMS 92 | ruby 93 | 94 | DEPENDENCIES 95 | bundler (~> 2.1) 96 | jekyll-compose 97 | not-pure-poole! 98 | rake (~> 12.0) 99 | 100 | BUNDLED WITH 101 | 2.1.4 102 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # Released under MIT License 2 | 3 | Copyright (c) 2013 Mark Otto. 4 | Copyright (c) 2020 Songzi Vong. 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 7 | 8 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 9 | 10 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Not Pure Poole 2 | 3 | 4 | Jekyll Themes Shield 5 | 6 | 7 | **Not Pure Poole** is a simple, beautiful, and powerful Jekyll theme for blogs. It is built on [Poole](https://github.com/poole/poole) and [Pure](https://purecss.io/). 8 | 9 | > Poole explains that Jekyll has been asking for a particular chemical for days now but every time it has been fetched for him he rejects it as **not pure**. Poole also explains that he caught a glimpse of the man inside and he looked barely human. 10 | > 11 | > -- The death of Jekyll 12 | 13 | ----- 14 | 15 | See Not Pure Poole in action with [the demo site](https://vszhub.github.io/not-pure-poole/). 16 | 17 | ![Screenshot](screenshot.png) 18 | 19 | ## Table of Contents 20 | 21 | - [Features](#features) 22 | - [Installation](#installation) 23 | - [Usage](#usage) 24 | - [Configuration](#configuration) 25 | - [Customizing Head](#customizing-head) 26 | - [Creating Themes](#creating-themes) 27 | - [Customizing Navigation](#customizing-navigation) 28 | - [Customizing Cover Image](#customizing-cover-image) 29 | - [Customizing Social Links](#customizing-social-links) 30 | - [Enabling Posts Archive](#enabling-posts-archive) 31 | - [Enabling TOC](#enabling-toc) 32 | - [Enabling MathJax](#enabling-mathjax) 33 | - [Something More](#something-more) 34 | - [Development](#development) 35 | - [License](#license) 36 | 37 | ## Features 38 | 39 | - [Jekyll SEO Tag](https://github.com/jekyll/jekyll-seo-tag) 40 | - [Jekyll Feed](https://github.com/jekyll/jekyll-feed) 41 | - [Jekyll Sitemap](https://github.com/jekyll/jekyll-sitemap) 42 | - [Jekyll Gist](https://github.com/jekyll/jekyll-gist) 43 | - [Google Analytics](https://analytics.google.com/) 44 | - [Disqus](https://disqus.com/) 45 | - [Font Awesome](https://fontawesome.com/) 46 | - [MathJax](https://www.mathjax.org/) 47 | - Dark mode (enabled automatically via CSS media query) 48 | - Posts archive by dates, categories, and tags 49 | - Pagination, generated by [Jekyll Paginate](https://github.com/jekyll/jekyll-paginate) 50 | - TOC (generated by Vladimir "allejo" Jimenez's [jekyll-toc](https://github.com/allejo/jekyll-toc)) 51 | - Related posts (time-based, because Jekyll) below each post 52 | - Mobile friendly design and development 53 | - Easily scalable text and component sizing with `rem` units in the CSS 54 | - Support for a wide gamut of HTML elements 55 | - Syntax highlighting, courtesy Pygments (the Python-based code snippet highlighter) 56 | 57 | ## Installation 58 | 59 | You can choose one of the following methods to install Not Pure Poole: 60 | 61 | - Directly specify the `not-pure-poole` gem. 62 | 63 | 1. Add `gem 'not-pure-poole'` into your `Gemfile`. 64 | 2. Add the below lines into your `_config.yml`. 65 | 66 | ```yml 67 | plugins: 68 | - not-pure-poole 69 | ``` 70 | 71 | - If your site is hosted on GitHub Pages, you can use [`jekyll-remote-theme`](https://github.com/benbalter/jekyll-remote-theme) to import the master branch of Not Pure Poole. 72 | 73 | 1. Add `gem 'jekyll-remote-theme'` into your `Gemfile`. 74 | 2. Add the below lines into your `_config.yml`. 75 | 76 | ```yml 77 | plugins: 78 | - jekyll-remote-theme 79 | 80 | remote_theme: vszhub/not-pure-poole 81 | ``` 82 | 83 | ## Usage 84 | 85 | You can read this [example post](https://vszhub.github.io/not-pure-poole/2020/09/29/welcome-to-not-pure-poole/) to see the rendering result in this theme, and put the [source](_posts/2020-09-29-welcome-to-not-pure-poole.md) aside to learn some basic usages. 86 | 87 | ### Configuration 88 | 89 | The [`_config.yml`](_config.yml) file in this repository already contains some variables, you can try to override them in your repository. 90 | 91 | ### Customizing Head 92 | 93 | Not Pure Poole leaves a placeholder to allow defining custom head, in principle, you can add anything here, e.g. favicons. All you need to do is just creating a file `_includes/custom-head.html` and put data into it. 94 | 95 | ### Creating Themes 96 | 97 | If you want to make your own color schemes, modify the CSS variables in the `_sass/_variables.scss` stylesheet with a scoped data attribute or class name. 98 | 99 | For example, below we've created the beginnings of a blue theme: 100 | 101 | ```scss 102 | // Example blue theme 103 | [data-theme="blue"] { 104 | --body-bg: var(--blue); 105 | --body-color: #fff; 106 | } 107 | ``` 108 | 109 | Then, apply the theme by adding `data-theme="blue"` to the `` element. 110 | 111 | ### Customizing Navigation 112 | 113 | You can create a file `_data/navigation.yml` to configure links to some pages. For example, 114 | 115 | ```yml 116 | - title: Blog 117 | url: / 118 | - title: About 119 | url: /about/ 120 | ``` 121 | 122 | ### Customizing Cover Image 123 | 124 | You can set your own cover image by modifying the `cover_image` variable in `_config.yml`, and you can also set different cover images on different pages by setting the `cover_image` variable on each page. 125 | 126 | If you discover that the contrast between the cover text color and the cover background color is not enough, you can also adjust these two variables: 127 | 128 | ```yml 129 | cover_bg_color: rgb(40, 73, 77) 130 | cover_color: rgb(255, 255, 255) 131 | ``` 132 | 133 | ### Customizing Social Links 134 | 135 | You can set your social links in `_data/social.yml`. You can custom titles, URLs, and icons (only support [Font Awesome](https://fontawesome.com/) currently), for example: 136 | 137 | ```yml 138 | - title: Email 139 | url: mailto://vszhub@gmail.com 140 | icon: fas fa-envelope 141 | - title: Twitter 142 | url: https://twitter.com/vszhub 143 | icon: fab fa-twitter 144 | - title: GitHub 145 | url: https://github.com/vszhub/not-pure-poole 146 | icon: fab fa-github 147 | ``` 148 | 149 | ### Enabling Posts Archive 150 | 151 | Not Pure Poole supports posts archive by date, categories, and tags. For enabling that, you should put some data like below into `_data/archive.yml`: 152 | 153 | ```yml 154 | - type: dates 155 | title: Dates 156 | url: /dates/ 157 | - type: categories 158 | title: Categories 159 | url: /categories/ 160 | - type: tags 161 | title: Tags 162 | url: /tags/ 163 | ``` 164 | 165 | After that, the navigation to these archive pages would be shown on the top of the homepage. 166 | 167 | Then, you can create a category archive page, and set the below parameters on that page: 168 | 169 | ```yml 170 | --- 171 | layout: archive-taxonomies 172 | type: categories 173 | --- 174 | ``` 175 | 176 | Or a tag archive page: 177 | 178 | ```yml 179 | layout: archive-taxonomies 180 | type: tags 181 | ``` 182 | 183 | Or archive by dates: 184 | 185 | ```yml 186 | layout: archive-dates 187 | ``` 188 | 189 | ### Enabling TOC 190 | 191 | If you want to show the TOC of a page on the right side, just set `toc: true` on that page. 192 | 193 | ### Enabling MathJax 194 | 195 | If you want to write mathematics on a page, just set `math: true` on that page to enable MathJax. 196 | 197 | ### Something More 198 | 199 | Just **hack** into the code and see what you can get. 200 | 201 | ## Development 202 | 203 | To set up your environment to develop this theme, run `bundle install`. 204 | 205 | Your theme is setup just like a normal Jekyll site! To test your theme, run `bundle exec jekyll serve` and open your browser at `http://localhost:4000`. This starts a Jekyll server using your theme. Add pages, documents, data, etc. like normal to test your theme's contents. As you make modifications to your theme and to your content, your site will regenerate and you should see the changes in the browser after a refresh, just like normal. 206 | 207 | When your theme is released, only the files in `_layouts`, `_includes`, `_sass` and `assets` tracked with Git will be bundled. 208 | To add a custom directory to your theme-gem, please edit the regexp in `not-pure-poole.gemspec` accordingly. 209 | 210 | ## License 211 | 212 | The theme is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT). 213 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # Setup 2 | title: Not Pure Poole 3 | description: A simple, beautiful, and powerful Jekyll theme for blogs 4 | url: https://vszhub.github.io 5 | avatar: /avatar.jpeg 6 | paginate: 5 7 | permalink: pretty 8 | cover_image: /bg.jpeg 9 | 10 | # Gems 11 | plugins: 12 | - jekyll-gist 13 | - jekyll-paginate 14 | - jekyll-seo-tag 15 | - jekyll-feed 16 | - jekyll-sitemap 17 | 18 | # Optimize Jekyll 19 | exclude: 20 | - .editorconfig 21 | - .git 22 | - .jekyll-cache 23 | - Gemfile 24 | - Gemfile.lock 25 | - LICENSE.md 26 | - README.md 27 | - scripts/ 28 | - not-pure-poole.gemspec 29 | 30 | # Optimize Jekyl SEO Tag 31 | twitter: 32 | username: vszhub 33 | card: summary 34 | logo: logo.png 35 | social: 36 | name: Songzi Vong 37 | links: 38 | - https://twitter.com/vszhub 39 | - https://github.com/vszhub 40 | google_site_verification: xxxxx 41 | lang: en 42 | 43 | sass: 44 | sass_dir: _sass 45 | style: :compressed 46 | 47 | # Options 48 | 49 | # Replace this value and uncomment to enable Google Analytics tracking 50 | # google_analytics: UA-000000-0 51 | 52 | # Replace this value and uncomment to enable Disqus 53 | # disqus: xxxxxx 54 | 55 | # Specify the author for blog posts 56 | author: 57 | name: Songzi Vong 58 | url: https://github.com/vszhub/ 59 | email: vszhub@gmail.com 60 | -------------------------------------------------------------------------------- /_data/archive.yml: -------------------------------------------------------------------------------- 1 | - type: dates 2 | title: Dates 3 | url: /dates/ 4 | #- type: categories 5 | # title: Categories 6 | # url: /categories/ 7 | - type: tags 8 | title: Tags 9 | url: /tags/ 10 | -------------------------------------------------------------------------------- /_data/navigation.yml: -------------------------------------------------------------------------------- 1 | - title: Blog 2 | url: / 3 | - title: About 4 | url: /about/ 5 | -------------------------------------------------------------------------------- /_data/social.yml: -------------------------------------------------------------------------------- 1 | - title: Email 2 | url: mailto://vszhub@gmail.com 3 | icon: fas fa-envelope 4 | - title: Twitter 5 | url: https://twitter.com/vszhub 6 | icon: fab fa-twitter 7 | - title: GitHub 8 | url: https://github.com/vszhub/not-pure-poole 9 | icon: fab fa-github 10 | -------------------------------------------------------------------------------- /_includes/content.html: -------------------------------------------------------------------------------- 1 |
2 | {{ content }} 3 |
4 | 5 | 18 | -------------------------------------------------------------------------------- /_includes/custom-head.html: -------------------------------------------------------------------------------- 1 | {% comment %} 2 | Placeholder to allow defining custom head, in principle, you can add anything here, e.g. favicons: 3 | 4 | 1. Head over to https://realfavicongenerator.net/ to add your own favicons. 5 | 2. Customize default _includes/custom-head.html in your source directory and insert the given code snippet. 6 | {% endcomment %} 7 | -------------------------------------------------------------------------------- /_includes/disqus.html: -------------------------------------------------------------------------------- 1 |
2 | 17 | 18 | -------------------------------------------------------------------------------- /_includes/google-analytics.html: -------------------------------------------------------------------------------- 1 | 2 | 10 | -------------------------------------------------------------------------------- /_includes/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | {%- seo -%} 9 | {%- feed_meta -%} 10 | 11 | {%- include custom-head.html -%} 12 | 13 | -------------------------------------------------------------------------------- /_includes/home-header.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {% if site.data.archive %} 4 | 11 | {% endif %} 12 |
13 |
14 | -------------------------------------------------------------------------------- /_includes/mathjax.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_includes/post-tags.html: -------------------------------------------------------------------------------- 1 | {%- if site.data.archive -%} 2 | {%- for item in site.data.archive -%} 3 | {%- if item.type == "tags" -%} 4 | {% assign tags_archive_page = item.url %} 5 | {% break %} 6 | {%- endif -%} 7 | {%- endfor -%} 8 | {%- endif -%} 9 | 10 |
11 | 12 | 24 |
25 | -------------------------------------------------------------------------------- /_includes/scroll.html: -------------------------------------------------------------------------------- 1 | 41 | -------------------------------------------------------------------------------- /_includes/sidebar-left.html: -------------------------------------------------------------------------------- 1 |
2 | {% if site.avatar -%} 3 |
4 | {%- if site.avatar contains "://" -%} 5 | {%- assign avatar = site.avatar -%} 6 | {%- else -%} 7 | {%- assign avatar = site.avatar | relative_url -%} 8 | {%- endif -%} 9 | {{ site.author.name }} 10 |
11 | {%- endif %} 12 |
13 | {{ site.title }} 14 |
15 |
16 | {{ site.description }} 17 |
18 | {%- if site.data.navigation -%} 19 | 28 | {%- endif -%} 29 | {% if site.data.social -%} 30 |
31 | 40 |
41 | {%- endif %} 42 |
43 | -------------------------------------------------------------------------------- /_includes/sidebar-right.html: -------------------------------------------------------------------------------- 1 | {% if page.toc %} 2 |
3 |

Table of Contents

4 | 7 |
8 | {% endif %} 9 | -------------------------------------------------------------------------------- /_includes/toc.html: -------------------------------------------------------------------------------- 1 | {% capture tocWorkspace %} 2 | {% comment %} 3 | Copyright (c) 2017 Vladimir "allejo" Jimenez 4 | 5 | Permission is hereby granted, free of charge, to any person 6 | obtaining a copy of this software and associated documentation 7 | files (the "Software"), to deal in the Software without 8 | restriction, including without limitation the rights to use, 9 | copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the 11 | Software is furnished to do so, subject to the following 12 | conditions: 13 | 14 | The above copyright notice and this permission notice shall be 15 | included in all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 19 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 20 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 21 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 22 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 23 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 24 | OTHER DEALINGS IN THE SOFTWARE. 25 | {% endcomment %} 26 | {% comment %} 27 | Version 1.0.14 28 | https://github.com/allejo/jekyll-toc 29 | 30 | "...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe 31 | 32 | Usage: 33 | {% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %} 34 | 35 | Parameters: 36 | * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll 37 | 38 | Optional Parameters: 39 | * sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC 40 | * class (string) : '' - a CSS class assigned to the TOC 41 | * id (string) : '' - an ID to assigned to the TOC 42 | * h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored 43 | * h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored 44 | * ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list 45 | * item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level 46 | * submenu_class (string) : '' - add custom class(es) for each child group of headings; has support for '%level%' placeholder which is the current "submenu" heading level 47 | * baseurl (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content 48 | * anchor_class (string) : '' - add custom class(es) for each anchor element 49 | * skipNoIDs (bool) : false - skip headers that do not have an `id` attribute 50 | 51 | Output: 52 | An ordered or unordered list representing the table of contents of a markdown block. This snippet will only 53 | generate the table of contents and will NOT output the markdown given to it 54 | {% endcomment %} 55 | 56 | {% capture my_toc %}{% endcapture %} 57 | {% assign orderedList = include.ordered | default: false %} 58 | {% assign skipNoIDs = include.skipNoIDs | default: false %} 59 | {% assign minHeader = include.h_min | default: 1 %} 60 | {% assign maxHeader = include.h_max | default: 6 %} 61 | {% assign nodes = include.html | split: ' maxHeader %} 75 | {% continue %} 76 | {% endif %} 77 | 78 | {% assign _workspace = node | split: '' | first }}>{% endcapture %} 98 | {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %} 99 | 100 | {% assign indentAmount = headerLevel | minus: minHeader %} 101 | {% assign space = '' %} 102 | {% for i in (1..indentAmount) %} 103 | {% assign space = space | prepend: ' ' %} 104 | {% endfor %} 105 | 106 | {% if include.item_class and include.item_class != blank %} 107 | {% capture listItemClass %}{:.{{ include.item_class | replace: '%level%', headerLevel }}}{% endcapture %} 108 | {% endif %} 109 | 110 | {% capture anchor_body %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% endcapture %} 111 | {% capture anchor_body %}{{ anchor_body | replace: "|", "\|" }}{% endcapture %} 112 | 113 | {% if html_id %} 114 | {% capture list_item %}[{{ anchor_body }}]({% if include.baseurl %}{{ include.baseurl }}{% endif %}#{{ html_id }}){% endcapture %} 115 | {% elsif skipNoIDs == true %} 116 | {% continue %} 117 | {% else %} 118 | {% capture list_item %}{{ anchor_body }}{% endcapture %} 119 | {% endif %} 120 | 121 | 125 | {% if include.submenu_class and previousLevel > indentAmount %} 126 | 130 | {% assign submenuIndentation = space | prepend: ' ' %} 131 | 132 | {% capture my_toc %}{{ my_toc }} 133 | {{ submenuIndentation }}{:.{{ include.submenu_class | replace: '%level%', previousLevel }}}{% endcapture %} 134 | {% endif %} 135 | 136 | {% capture my_toc %}{{ my_toc }} 137 | {{ space }}{{ listModifier }} {{ listItemClass }} {{ list_item }}{% if include.anchor_class %}{:.{{ include.anchor_class }}}{% endif %}{% endcapture %} 138 | 139 | {% assign previousLevel = indentAmount %} 140 | {% endfor %} 141 | 142 | {% if include.class and include.class != blank %} 143 | {% capture my_toc %}{:.{{ include.class }}} 144 | {{ my_toc | lstrip }}{% endcapture %} 145 | {% endif %} 146 | 147 | {% if include.id %} 148 | {% capture my_toc %}{: #{{ include.id }}} 149 | {{ my_toc | lstrip }}{% endcapture %} 150 | {% endif %} 151 | 152 | 156 | {% if include.submenu_class != blank %} 157 | 158 | {% for i in (1..previousLevel) %} 159 | {% assign lvl = previousLevel | plus: 1 | minus: i %} 160 | {% assign closingSpace = '' %} 161 | 162 | {% for i in (1..lvl) %} 163 | {% assign closingSpace = closingSpace | prepend: ' ' %} 164 | {% endfor %} 165 | 166 | {% capture my_toc %}{{ my_toc }} 167 | {{ closingSpace }}{:.{{ include.submenu_class | replace: '%level%', lvl }}}{% endcapture %} 168 | {% endfor %} 169 | {% endif %} 170 | {% endcapture %}{% assign tocWorkspace = '' %}{{ my_toc | markdownify | strip }} 171 | -------------------------------------------------------------------------------- /_layouts/archive-dates.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | {% include home-header.html %} 6 | 7 |

{{ page.title }}

8 | 9 | {%- assign taxonomies = site.posts | group_by_exp: "post", "post.date | date: '%Y'" -%} 10 | 11 |
12 | 23 |
24 | 25 | {% comment %} Show posts by taxonomy {% endcomment %} 26 | {%- for taxonomy in taxonomies -%} 27 |

28 | {{ taxonomy.name }} 29 |

30 | 38 | Top ⇈ 39 | {%- endfor -%} 40 | 41 | 47 | -------------------------------------------------------------------------------- /_layouts/archive-taxonomies.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | {% include home-header.html %} 6 | 7 |

{{ page.title }}

8 | 9 | {% comment %} Check the type of archive {% endcomment %} 10 | {%- if page.type == 'categories' -%} 11 | {%- assign taxonomies = site.categories -%} 12 | {%- elsif page.type == 'tags' -%} 13 | {%- assign taxonomies = site.tags -%} 14 | {%- else -%} 15 | {%- assign taxonomies = none -%} 16 | {%- endif -%} 17 | 18 | {% comment %} Calculate the max count of taxonomies {% endcomment %} 19 | {%- assign max_count = 0 -%} 20 | {%- for taxonomy in taxonomies -%} 21 | {%- assign posts = taxonomy[1] -%} 22 | {%- if posts.size > max_count -%} 23 | {%- assign max_count = posts.size -%} 24 | {%- endif -%} 25 | {%- endfor -%} 26 | 27 |
28 | 52 |
53 | 54 | {% comment %} Show posts by taxonomy {% endcomment %} 55 | {%- for i in (1..max_count) reversed -%} 56 | {%- for taxonomy in taxonomies -%} 57 | {%- assign taxonomy_name = taxonomy[0] -%} 58 | {%- assign slugified_taxonomy_name = taxonomy_name | slugify -%} 59 | {%- assign posts = taxonomy[1] -%} 60 | {%- if posts.size == i -%} 61 |

62 | {%- if page.type == 'tags' -%} 63 | {{ slugified_taxonomy_name }} 64 | {%- else -%} 65 | {{ taxonomy_name }} 66 | {%- endif -%} 67 |

68 | 75 | Top ⇈ 76 | {%- endif -%} 77 | {%- endfor -%} 78 | {%- endfor -%} 79 | 80 | 86 | -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% include head.html %} 5 | 6 | 7 | 8 |
9 | {%- assign cover_bg_color = site.cover_bg_color | default: "rgb(40, 73, 77)" -%} 10 | {%- assign cover_color = site.cover_color | default: "rgb(255, 255, 255)" -%} 11 | {%- assign cover_image = site.cover_image -%} 12 | {%- if page.cover_bg_color -%} 13 | {%- assign cover_bg_color = page.cover_bg_color -%} 14 | {%- endif -%} 15 | {%- if page.cover_color -%} 16 | {%- assign cover_color = page.cover_color -%} 17 | {%- endif -%} 18 | {%- if page.cover_image -%} 19 | {%- assign cover_image = page.cover_image -%} 20 | {%- endif -%} 21 | 24 | 25 |
26 | {%- include content.html -%} 27 |
28 | 31 |
32 | 33 | 34 | 35 | {%- include scroll.html -%} 36 | 37 | {%- if page.math -%} 38 | {% include mathjax.html %} 39 | {%- endif -%} 40 | 41 | {%- if jekyll.environment == 'production' and site.google_analytics -%} 42 | {%- include google-analytics.html -%} 43 | {%- endif -%} 44 | 45 | 46 | -------------------------------------------------------------------------------- /_layouts/home.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | {% include home-header.html %} 6 | 7 |
8 | {% for post in paginator.posts %} 9 |
10 |

11 | 12 | {{ post.title }} 13 | 14 |

15 | 16 | 25 | 26 |

{{ post.excerpt | strip_html }}

27 |
28 | {% endfor %} 29 | {%- if jekyll.environment == "production" and site.disqus -%} 30 | 31 | {%- endif -%} 32 |
33 | 34 | 46 | -------------------------------------------------------------------------------- /_layouts/page.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 |

{{ page.title }}

7 | {{ content }} 8 |
9 | -------------------------------------------------------------------------------- /_layouts/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 |

{{ page.title }}

7 |
8 | {%- assign date_format = site.date_format | default: "%-d %b %Y" -%} 9 | 10 | {%- if page.last_modified_at -%} 11 | ~ 12 | {%- assign mdate = page.last_modified_at | date_to_xmlschema -%} 13 | 16 | {%- endif -%} 17 | {%- if page.author -%} 18 | 19 | {% for author in page.author %} 20 | 23 | {%- if forloop.last == false %}, {% endif -%} 24 | {% endfor %} 25 | {%- endif -%} 26 |
27 | 28 | {{ content }} 29 | 30 | {% if page.tags %} 31 | {% include post-tags.html %} 32 | {% endif %} 33 | 34 | {% if jekyll.environment == "production" and site.disqus and page.comments != false %} 35 | {% include disqus.html %} 36 | {% endif %} 37 |
38 | 39 | {% if site.related_posts != empty %} 40 | 53 | {% endif %} 54 | -------------------------------------------------------------------------------- /_posts/2020-09-29-welcome-to-not-pure-poole.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: Welcome to Not Pure Poole 4 | date: 2020-09-29 23:18 +0800 5 | last_modified_at: 2020-10-01 01:08:25 +0800 6 | tags: [jekyll theme, jekyll, tutorial] 7 | toc: true 8 | --- 9 | Welcome to **Not Pure Poole**! This is an example post to show the layout. 10 | {: .message } 11 | 12 | First, do you notice the TOC on the right side? Try to scroll down to read this post, you'll find that the TOC is always sticky in the viewport. 13 | 14 | Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. *Aenean eu leo quam.* Pellentesque ornare sem lacinia quam venenatis vestibulum. Sed posuere consectetur est at lobortis. Cras mattis consectetur purus sit amet fermentum. 15 | 16 | > Curabitur blandit tempus porttitor. Nullam quis risus eget urna mollis ornare vel eu leo. Nullam id dolor id nibh ultricies vehicula ut id elit. 17 | 18 | Etiam porta **sem malesuada magna** mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean lacinia bibendum nulla sed consectetur. 19 | 20 | ## Inline HTML elements 21 | 22 | HTML defines a long list of available inline tags, a complete list of which can be found on the [Mozilla Developer Network](https://developer.mozilla.org/en-US/docs/Web/HTML/Element). 23 | 24 | - **To bold text**, use ``. 25 | - *To italicize text*, use ``. 26 | - To highlight, use ``. 27 | - Abbreviations, like HTML should use ``, with an optional `title` attribute for the full phrase. 28 | - Citations, like — Mark Otto, should use ``. 29 | - Deleted text should use `` and inserted text should use ``. 30 | - Superscript text uses `` and subscript text uses ``. 31 | 32 | Most of these elements are styled by browsers with few modifications on our part. 33 | 34 | ## Footnotes 35 | 36 | Footnotes are supported as part of the Markdown syntax. Here's one in action. Clicking this number[^fn-sample_footnote] will lead you to a footnote. The syntax looks like: 37 | 38 | {% highlight text %} 39 | Clicking this number[^fn-sample_footnote] 40 | {% endhighlight %} 41 | 42 | Each footnote needs the `^fn-` prefix and a unique ID to be referenced for the footnoted content. The syntax for that list looks something like this: 43 | 44 | {% highlight text %} 45 | [^fn-sample_footnote]: Handy! Now click the return link to go back. 46 | {% endhighlight %} 47 | 48 | You can place the footnoted content wherever you like. Markdown parsers should properly place it at the bottom of the post. 49 | 50 | ## Heading 51 | 52 | Vivamus sagittis lacus vel augue rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. 53 | 54 | ### Code 55 | 56 | Inline code is available with the `` element. Snippets of multiple lines of code are supported through Rouge. Longer lines will automatically scroll horizontally when needed. You may also use code fencing (triple backticks) for rendering code. 57 | 58 | {% highlight js %} 59 | // Example can be run directly in your JavaScript console 60 | 61 | // Create a function that takes two arguments and returns the sum of those arguments 62 | var adder = new Function("a", "b", "return a + b"); 63 | 64 | // Call the function 65 | adder(2, 6); 66 | // > 8 67 | {% endhighlight %} 68 | 69 | You may also optionally show code snippets with line numbers. Add `linenos` to the Rouge tags. 70 | 71 | {% highlight js linenos %} 72 | // Example can be run directly in your JavaScript console 73 | 74 | // Create a function that takes two arguments and returns the sum of those arguments 75 | var adder = new Function("a", "b", "return a + b"); 76 | 77 | // Call the function 78 | adder(2, 6); 79 | // > 8 80 | {% endhighlight %} 81 | 82 | Aenean lacinia bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa. 83 | 84 | ### Lists 85 | 86 | Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean lacinia bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. 87 | 88 | - Praesent commodo cursus magna, vel scelerisque nisl consectetur et. 89 | - Donec id elit non mi porta gravida at eget metus. 90 | - Nulla vitae elit libero, a pharetra augue. 91 | 92 | Donec ullamcorper nulla non metus auctor fringilla. Nulla vitae elit libero, a pharetra augue. 93 | 94 | 1. Vestibulum id ligula porta felis euismod semper. 95 | 2. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. 96 | 3. Maecenas sed diam eget risus varius blandit sit amet non magna. 97 | 98 | Cras mattis consectetur purus sit amet fermentum. Sed posuere consectetur est at lobortis. 99 | 100 |
101 |
HyperText Markup Language (HTML)
102 |
The language used to describe and define the content of a Web page
103 | 104 |
Cascading Style Sheets (CSS)
105 |
Used to describe the appearance of Web content
106 | 107 |
JavaScript (JS)
108 |
The programming language used to build advanced Web sites and applications
109 |
110 | 111 | Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Nullam quis risus eget urna mollis ornare vel eu leo. 112 | 113 | ### Images 114 | 115 | Quisque consequat sapien eget quam rhoncus, sit amet laoreet diam tempus. Aliquam aliquam metus erat, a pulvinar turpis suscipit at. 116 | 117 | ![placeholder](http://placehold.it/800x400 "Large example image") 118 | ![placeholder](http://placehold.it/400x200 "Medium example image") 119 | ![placeholder](http://placehold.it/200x200 "Small example image") 120 | 121 | Align to the center by adding `class="align-center"`: 122 | 123 | ![placeholder](http://placehold.it/400x200 "Medium example image"){: .align-center} 124 | 125 | ### Tables 126 | 127 | Aenean lacinia bibendum nulla sed consectetur. Lorem ipsum dolor sit amet, consectetur adipiscing elit. 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 |
NameUpvotesDownvotes
Totals2123
Alice1011
Bob43
Charlie79
162 | 163 | Nullam id dolor id nibh ultricies vehicula ut id elit. Sed posuere consectetur est at lobortis. Nullam quis risus eget urna mollis ornare vel eu leo. 164 | 165 | ----- 166 | 167 | Want to see something else added? Open an issue. 168 | 169 | [^fn-sample_footnote]: Handy! Now click the return link to go back. 170 | -------------------------------------------------------------------------------- /_posts/2020-10-01-releasing-not-pure-poole-v0-1-0.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: Releasing Not Pure Poole v0.1.0 4 | author: Songzi Vong 5 | tags: 6 | - jekyll theme 7 | - jekyll 8 | date: 2020-10-01 13:56 +0800 9 | --- 10 | The Jekyll theme **Not Pure Poole** v0.1.0 was released! 11 | 12 | Not Pure Poole is a simple, beautiful, and powerful Jekyll theme for blogs. It is built on [Poole](https://github.com/poole/poole) and [Pure](https://purecss.io/). 13 | 14 | For more information about this theme, you can read the [README](https://github.com/vszhub/not-pure-poole/blob/master/README.md) file. 15 | -------------------------------------------------------------------------------- /_posts/2020-10-02-testing-mathjax.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: Testing MathJax 4 | tags: mathjax 5 | math: true 6 | date: 2020-10-02 15:32 +0800 7 | --- 8 | Not Pure Poole supports [MathJax](https://www.mathjax.org/). You can enable it on a page by setting `math: true` in the front matter. 9 | 10 | An inline math: \\\(E=mc^2\\\). 11 | 12 | A display math: 13 | 14 | $$ 15 | i\hbar \frac{\partial \Psi}{\partial t} = -\frac{\hbar^2}{2m} 16 | \frac{\partial^2 \Psi}{\partial x^2} + V \Psi 17 | $$ 18 | -------------------------------------------------------------------------------- /_sass/_alignment.scss: -------------------------------------------------------------------------------- 1 | // Alignment 2 | // 3 | // Some pre-defined selectors for handling the image alignment. 4 | 5 | .align-right { 6 | margin-bottom: 1rem; 7 | margin-left: 1rem; 8 | float: right; 9 | } 10 | 11 | .align-left { 12 | margin-right: 1rem; 13 | margin-bottom: 1rem; 14 | float: left; 15 | } 16 | 17 | .align-center { 18 | display: block; 19 | margin-right: auto; 20 | margin-left: auto; 21 | } 22 | 23 | figcaption.align-right { 24 | text-align: right; 25 | } 26 | 27 | figcaption.align-left { 28 | text-align: left; 29 | } 30 | 31 | figcaption.align-center { 32 | text-align: center; 33 | } 34 | -------------------------------------------------------------------------------- /_sass/_archive.scss: -------------------------------------------------------------------------------- 1 | // Archive 2 | // 3 | // Styles for archive pages. 4 | 5 | .taxonomies-wrapper { 6 | margin-top: var(--spacer-2); 7 | margin-bottom: var(--spacer-2); 8 | } 9 | 10 | .taxonomies { 11 | list-style: none; 12 | display: grid; 13 | grid-column-gap: 2em; 14 | grid-template-columns: repeat(3, 1fr); 15 | margin: 0; 16 | padding: 0; 17 | font-weight: bold; 18 | 19 | .taxonomy { 20 | display: flex; 21 | padding: 0.25em 0; 22 | justify-content: space-between; 23 | color: inherit; 24 | text-decoration: none; 25 | border-bottom: 1px solid; 26 | margin-bottom: var(--spacer); 27 | } 28 | } 29 | 30 | .post-list-by-taxonomy { 31 | time { 32 | font-family: var(--code-font); 33 | } 34 | } 35 | 36 | .back-to-top { 37 | display: block; 38 | font-size: 0.8em; 39 | text-transform: uppercase; 40 | text-align: right; 41 | text-decoration: none; 42 | } 43 | 44 | @media (max-width: $sm-width) { 45 | .taxonomies { 46 | grid-template-columns: repeat(2, 1fr); 47 | } 48 | } -------------------------------------------------------------------------------- /_sass/_base.scss: -------------------------------------------------------------------------------- 1 | // Body resets 2 | // 3 | // Update the foundational and global aspects of the page. 4 | 5 | * { 6 | box-sizing: border-box; 7 | } 8 | 9 | body { 10 | margin: 0; 11 | font-family: var(--body-font); 12 | font-size: var(--body-font-size); 13 | line-height: var(--body-line-height); 14 | color: var(--body-color); 15 | background-color: var(--body-bg); 16 | -webkit-text-size-adjust: 100%; 17 | -ms-text-size-adjust: 100%; 18 | } 19 | 20 | // No `:visited` state is required by default (browsers will use `a`) 21 | a { 22 | color: var(--link-color); 23 | 24 | // `:focus` is linked to `:hover` for basic accessibility 25 | &:hover, 26 | &:focus { 27 | color: var(--link-hover-color); 28 | } 29 | 30 | strong { 31 | color: inherit; 32 | } 33 | } 34 | 35 | img { 36 | display: block; 37 | max-width: 100%; 38 | margin-bottom: var(--spacer); 39 | border-radius: var(--border-radius); 40 | } 41 | 42 | table { 43 | margin-bottom: 1rem; 44 | width: 100%; 45 | border: 0 solid var(--border-color); 46 | border-collapse: collapse; 47 | } 48 | 49 | td, 50 | th { 51 | padding: .25rem .5rem; 52 | border-color: inherit; 53 | border-style: solid; 54 | border-width: 0; 55 | border-bottom-width: 1px; 56 | } 57 | 58 | th { 59 | text-align: left; 60 | } 61 | 62 | thead th { 63 | border-bottom-color: currentColor; 64 | } 65 | 66 | mark { 67 | padding: .15rem; 68 | background-color: var(--yellow-100); 69 | border-radius: .125rem; 70 | } 71 | -------------------------------------------------------------------------------- /_sass/_code.scss: -------------------------------------------------------------------------------- 1 | // Code 2 | // 3 | // Inline and block-level code snippets. Includes tweaks to syntax highlighted 4 | // snippets from Pygments/Rouge and Gist embeds. 5 | 6 | code, 7 | pre { 8 | font-family: var(--code-font); 9 | } 10 | 11 | code { 12 | font-size: 85%; 13 | } 14 | 15 | pre { 16 | display: block; 17 | margin-top: 0; 18 | margin-bottom: var(--spacer-3); 19 | overflow: auto; 20 | } 21 | 22 | .highlight { 23 | padding: var(--spacer); 24 | margin-bottom: var(--spacer); 25 | background-color: var(--code-bg); 26 | border-radius: var(--border-radius); 27 | 28 | pre { 29 | margin-bottom: 0; 30 | } 31 | 32 | // Triple backticks (code fencing) doubles the .highlight elements 33 | .highlight { 34 | padding: 0; 35 | } 36 | } 37 | 38 | .rouge-table { 39 | margin-bottom: 0; 40 | font-size: 100%; 41 | 42 | &, 43 | td, 44 | th { 45 | border: 0; 46 | } 47 | 48 | .gutter { 49 | vertical-align: top; 50 | user-select: none; 51 | opacity: .25; 52 | } 53 | } 54 | 55 | // Gist via GitHub Pages 56 | .gist .markdown-body { 57 | padding: 15px !important; 58 | } 59 | -------------------------------------------------------------------------------- /_sass/_home-header.scss: -------------------------------------------------------------------------------- 1 | // Home Header 2 | // 3 | // Styles for the home header. 4 | 5 | .home-header-bar { 6 | width: 100%; 7 | height: 100%; 8 | 9 | -webkit-box-shadow: 0 1em 1em -.9em var(--border-color); 10 | -moz-box-shadow: 0 1em 1em -.9em var(--border-color); 11 | box-shadow: 0 1em 1em -.9em var(--border-color); 12 | } 13 | 14 | .home-header-menu { 15 | a { 16 | border-bottom: 1px solid rgba(0, 0, 0, 0); 17 | 18 | &:hover, 19 | &:focus { 20 | color: inherit; 21 | background-color: inherit; 22 | border-bottom-color: var(--link-color); 23 | } 24 | } 25 | 26 | .current-item { 27 | border-bottom-color: var(--link-color); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /_sass/_layout.scss: -------------------------------------------------------------------------------- 1 | // Layout 2 | // 3 | // Styles for managing the structural hierarchy of the site. 4 | 5 | .container { 6 | padding: 0; 7 | margin: 0; 8 | } 9 | 10 | .home-header { 11 | margin-top: -1em; 12 | margin-bottom: var(--spacer-3); 13 | } 14 | 15 | .content { 16 | padding-top: var(--spacer-2); 17 | padding-left: var(--spacer-2); 18 | padding-right: var(--spacer-2); 19 | margin-left: auto; 20 | margin-right: auto; 21 | min-height: 100vh; 22 | } 23 | 24 | .sidebar-left { 25 | display: flex; 26 | padding: var(--spacer); 27 | background: center / cover; 28 | height: 100vh; 29 | } 30 | 31 | footer { 32 | margin-top: var(--spacer-3); 33 | margin-bottom: var(--spacer-3); 34 | } 35 | 36 | @media (min-width: $md-width) { 37 | .content { 38 | padding-top: var(--spacer-3); 39 | padding-left: var(--spacer-3); 40 | padding-right: var(--spacer-3); 41 | margin-left: 25%; 42 | } 43 | 44 | .sidebar-left { 45 | position: fixed; 46 | top: 0; 47 | bottom: 0; 48 | } 49 | 50 | .home-header { 51 | margin-top: -2em; 52 | } 53 | } 54 | 55 | @media (min-width: $lg-width) { 56 | .sidebar-right { 57 | display: block; 58 | } 59 | } 60 | 61 | @media (max-width: $lg-width) { 62 | .sidebar-right { 63 | display: none; 64 | } 65 | } 66 | 67 | @media (max-width: $md-width) { 68 | .content { 69 | width: 100%; 70 | } 71 | } 72 | 73 | @media (min-width: $md-width) and (max-width: $lg-width) { 74 | .content { 75 | width: 75%; 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /_sass/_message.scss: -------------------------------------------------------------------------------- 1 | // Messages 2 | // 3 | // Show alert messages to users. You may add it to single elements like a `

`, 4 | // or to a parent if there are multiple elements to show. 5 | 6 | .message { 7 | padding: var(--spacer); 8 | margin-bottom: var(--spacer); 9 | color: var(--gray-900); 10 | background-color: var(--yellow-100); 11 | border-radius: var(--border-radius); 12 | } 13 | -------------------------------------------------------------------------------- /_sass/_pagination.scss: -------------------------------------------------------------------------------- 1 | // Pagination 2 | // 3 | // Super lightweight (HTML-wise) blog pagination. `span`s are provide for when 4 | // there are no more previous or next posts to show. 5 | 6 | .pagination { 7 | margin: 0 -1.5rem; 8 | color: var(--gray-500); 9 | text-align: center; 10 | } 11 | 12 | // Pagination items can be `span`s or `a`s 13 | .pagination-item { 14 | display: block; 15 | padding: var(--spacer); 16 | text-decoration: none; 17 | border: solid var(--border-color); 18 | border-width: 1px 0; 19 | 20 | &:first-child { 21 | margin-bottom: -1px; 22 | } 23 | } 24 | 25 | // Only provide a hover state for linked pagination items 26 | a.pagination-item:hover { 27 | background-color: var(--border-color); 28 | } 29 | 30 | @media (min-width: $sm-width) { 31 | .pagination { 32 | margin: var(--spacer-3) 0; 33 | height: calc(var(--body-font-size) * var(--body-line-height) + var(--spacer) * 2); 34 | } 35 | 36 | .pagination-item { 37 | float: left; 38 | width: 50%; 39 | border-width: 1px; 40 | 41 | &:first-child { 42 | margin-bottom: 0; 43 | border-top-left-radius: var(--border-radius); 44 | border-bottom-left-radius: var(--border-radius); 45 | } 46 | &:last-child { 47 | margin-left: -1px; 48 | border-top-right-radius: var(--border-radius); 49 | border-bottom-right-radius: var(--border-radius); 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /_sass/_posts.scss: -------------------------------------------------------------------------------- 1 | // Posts and pages 2 | // 3 | // Each post is wrapped in `.post` and is used on default and post layouts. Each 4 | // page is wrapped in `.page` and is only used on the page layout. 5 | 6 | .post-entry { 7 | border-bottom: 1px solid var(--border-color); 8 | margin-bottom: var(--spacer-3); 9 | } 10 | 11 | .page, 12 | .post { 13 | font-family: var(--text-font); 14 | margin-bottom: 4em; 15 | 16 | h1, h2, h3, h4, h5, h6, .post-meta { 17 | font-family: var(--body-font); 18 | } 19 | 20 | li + li { 21 | margin-top: .25rem; 22 | } 23 | } 24 | 25 | // Blog post or page title 26 | .page-title, 27 | .post-title { 28 | color: var(--heading-color); 29 | } 30 | .page-title, 31 | .post-title { 32 | margin-top: 0; 33 | } 34 | .post-title a { 35 | color: inherit; 36 | text-decoration: none; 37 | 38 | &:hover, 39 | &:focus { 40 | text-decoration: underline; 41 | } 42 | } 43 | 44 | // Meta data line below post title 45 | .post-meta { 46 | display: block; 47 | margin-top: -.5rem; 48 | margin-bottom: var(--spacer); 49 | color: var(--gray-600); 50 | } 51 | 52 | .comment-count { 53 | color: inherit; 54 | text-decoration: none; 55 | 56 | &:hover, 57 | &:focus { 58 | color: inherit; 59 | text-decoration: underline; 60 | } 61 | } 62 | 63 | // Related posts 64 | .related { 65 | padding-top: var(--spacer-2); 66 | padding-bottom: var(--spacer-2); 67 | margin-bottom: var(--spacer-2); 68 | border-top: 1px solid var(--border-color); 69 | border-bottom: 1px solid var(--border-color); 70 | } 71 | 72 | .related-posts { 73 | padding-left: 0; 74 | list-style: none; 75 | 76 | h3 { 77 | margin-top: 0; 78 | } 79 | 80 | a { 81 | text-decoration: none; 82 | 83 | small { 84 | color: var(--gray-600); 85 | } 86 | } 87 | } 88 | 89 | .post-tags-section { 90 | display: block; 91 | padding: var(--spacer) 0; 92 | color: var(--gray-600); 93 | font-family: var(--body-font); 94 | } 95 | 96 | .post-tags-icon { 97 | display: inline-block; 98 | margin-right: var(--spacer); 99 | } 100 | 101 | .post-tags { 102 | display: inline-block; 103 | list-style: none; 104 | padding: 0; 105 | margin: 0; 106 | 107 | li { 108 | display: inline-block; 109 | margin-right: var(--spacer); 110 | 111 | a { 112 | color: inherit; 113 | text-decoration: none; 114 | 115 | &:hover, 116 | &:focus { 117 | color: var(--body-bg); 118 | background-color: var(--link-hover-color); 119 | } 120 | } 121 | } 122 | } 123 | 124 | .post-tag { 125 | padding: .1em .5em; 126 | border: 1px solid var(--border-color); 127 | border-radius: .5em; 128 | } 129 | -------------------------------------------------------------------------------- /_sass/_sidebar.scss: -------------------------------------------------------------------------------- 1 | // Sidebar 2 | // 3 | // Styles for the sidebar. 4 | 5 | .masthead { 6 | text-align: center; 7 | margin: auto; 8 | width: 100%; 9 | 10 | a { 11 | color: inherit; 12 | text-decoration: none; 13 | } 14 | } 15 | 16 | .avatar-image { 17 | width: 30%; 18 | height: auto; 19 | border-radius: 50%; 20 | display: block; 21 | margin-right: auto; 22 | margin-left: auto; 23 | } 24 | 25 | .masthead-title { 26 | padding: 0; 27 | margin: 0; 28 | font-size: 2rem; 29 | font-weight: 900; 30 | 31 | a:hover, 32 | a:focus { 33 | color: var(--link-hover-color); 34 | } 35 | } 36 | 37 | .masthead-tagline { 38 | padding: 0; 39 | margin: 0; 40 | font-size: 1.25rem; 41 | font-weight: 400; 42 | opacity: .7; 43 | } 44 | 45 | .navigation-list { 46 | margin-top: var(--spacer-2); 47 | padding: 0; 48 | list-style: none; 49 | } 50 | 51 | .navigation-item { 52 | display: block; 53 | margin-bottom: var(--spacer); 54 | } 55 | 56 | .navigation-item a { 57 | background: transparent; 58 | color: inherit; 59 | letter-spacing: 0.05em; 60 | font-size: 90%; 61 | border-bottom: 2px solid; 62 | border-color: inherit; 63 | 64 | &:hover, 65 | &:focus { 66 | color: var(--link-hover-color); 67 | } 68 | } 69 | 70 | .social { 71 | margin-top: var(--spacer-2); 72 | font-size: 150%; 73 | white-space: normal; 74 | line-height: .5; 75 | } 76 | 77 | .social-icon { 78 | padding: var(--spacer); 79 | &:hover, 80 | &:focus { 81 | color: var(--link-hover-color); 82 | background-color: transparent; 83 | } 84 | } 85 | 86 | @media (max-width: $md-width) { 87 | .avatar-image { 88 | width: 15%; 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /_sass/_syntax-dark.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * rougify style gruvbox.dark 3 | */ 4 | 5 | .highlight table td { padding: 5px; } 6 | .highlight table pre { margin: 0; } 7 | .highlight, .highlight .w { 8 | color: #fbf1c7; 9 | background-color: #282828; 10 | } 11 | .highlight .err { 12 | color: #fb4934; 13 | background-color: #282828; 14 | font-weight: bold; 15 | } 16 | .highlight .c, .highlight .ch, .highlight .cd, .highlight .cm, .highlight .cpf, .highlight .c1, .highlight .cs { 17 | color: #928374; 18 | font-style: italic; 19 | } 20 | .highlight .cp { 21 | color: #8ec07c; 22 | } 23 | .highlight .nt { 24 | color: #fb4934; 25 | } 26 | .highlight .o, .highlight .ow { 27 | color: #fbf1c7; 28 | } 29 | .highlight .p, .highlight .pi { 30 | color: #fbf1c7; 31 | } 32 | .highlight .gi { 33 | color: #b8bb26; 34 | background-color: #282828; 35 | } 36 | .highlight .gd { 37 | color: #fb4934; 38 | background-color: #282828; 39 | } 40 | .highlight .gh { 41 | color: #b8bb26; 42 | font-weight: bold; 43 | } 44 | .highlight .k, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .kv { 45 | color: #fb4934; 46 | } 47 | .highlight .kc { 48 | color: #d3869b; 49 | } 50 | .highlight .kt { 51 | color: #fabd2f; 52 | } 53 | .highlight .kd { 54 | color: #fe8019; 55 | } 56 | .highlight .s, .highlight .sa, .highlight .sb, .highlight .sc, .highlight .dl, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .s1 { 57 | color: #b8bb26; 58 | font-style: italic; 59 | } 60 | .highlight .si { 61 | color: #b8bb26; 62 | font-style: italic; 63 | } 64 | .highlight .sr { 65 | color: #b8bb26; 66 | font-style: italic; 67 | } 68 | .highlight .se { 69 | color: #fe8019; 70 | } 71 | .highlight .nn { 72 | color: #8ec07c; 73 | } 74 | .highlight .nc { 75 | color: #8ec07c; 76 | } 77 | .highlight .no { 78 | color: #d3869b; 79 | } 80 | .highlight .na { 81 | color: #b8bb26; 82 | } 83 | .highlight .m, .highlight .mb, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mx { 84 | color: #d3869b; 85 | } 86 | .highlight .ss { 87 | color: #83a598; 88 | } 89 | -------------------------------------------------------------------------------- /_sass/_syntax-light.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * rougify style gruvbox.light 3 | */ 4 | 5 | .highlight table td { padding: 5px; } 6 | .highlight table pre { margin: 0; } 7 | .highlight, .highlight .w { 8 | color: #282828; 9 | background-color: #fbf1c7; 10 | } 11 | .highlight .err { 12 | color: #9d0006; 13 | background-color: #fbf1c7; 14 | font-weight: bold; 15 | } 16 | .highlight .c, .highlight .ch, .highlight .cd, .highlight .cm, .highlight .cpf, .highlight .c1, .highlight .cs { 17 | color: #928374; 18 | font-style: italic; 19 | } 20 | .highlight .cp { 21 | color: #427b58; 22 | } 23 | .highlight .nt { 24 | color: #9d0006; 25 | } 26 | .highlight .o, .highlight .ow { 27 | color: #282828; 28 | } 29 | .highlight .p, .highlight .pi { 30 | color: #282828; 31 | } 32 | .highlight .gi { 33 | color: #79740e; 34 | background-color: #fbf1c7; 35 | } 36 | .highlight .gd { 37 | color: #9d0006; 38 | background-color: #fbf1c7; 39 | } 40 | .highlight .gh { 41 | color: #79740e; 42 | font-weight: bold; 43 | } 44 | .highlight .k, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .kv { 45 | color: #9d0006; 46 | } 47 | .highlight .kc { 48 | color: #8f3f71; 49 | } 50 | .highlight .kt { 51 | color: #b57614; 52 | } 53 | .highlight .kd { 54 | color: #af3a03; 55 | } 56 | .highlight .s, .highlight .sa, .highlight .sb, .highlight .sc, .highlight .dl, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .s1 { 57 | color: #79740e; 58 | font-style: italic; 59 | } 60 | .highlight .si { 61 | color: #79740e; 62 | font-style: italic; 63 | } 64 | .highlight .sr { 65 | color: #79740e; 66 | font-style: italic; 67 | } 68 | .highlight .se { 69 | color: #af3a03; 70 | } 71 | .highlight .nn { 72 | color: #427b58; 73 | } 74 | .highlight .nc { 75 | color: #427b58; 76 | } 77 | .highlight .no { 78 | color: #8f3f71; 79 | } 80 | .highlight .na { 81 | color: #79740e; 82 | } 83 | .highlight .m, .highlight .mb, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mx { 84 | color: #8f3f71; 85 | } 86 | .highlight .ss { 87 | color: #076678; 88 | } 89 | -------------------------------------------------------------------------------- /_sass/_toc.scss: -------------------------------------------------------------------------------- 1 | // Table of Contents 2 | 3 | .toc-wrapper { 4 | display: inline-block; 5 | position: sticky; 6 | top: calc(var(--spacer-3) * 2.5); 7 | width: auto; 8 | padding-left: var(--spacer); 9 | padding-right: var(--spacer); 10 | } 11 | 12 | .toc-title { 13 | text-align: center; 14 | font-size: 1em; 15 | font-weight: bold; 16 | border: 1px solid; 17 | border-radius: 0.3em 0.3em 0 0; 18 | padding: 0.5rem; 19 | margin: 0; 20 | color: var(--body-bg); 21 | background-color: var(--body-color); 22 | border-color: var(--border-color); 23 | } 24 | 25 | .toc-nav { 26 | font-size: 0.8em; 27 | max-height: 60vh; 28 | overflow-y: scroll; 29 | border: 1px solid; 30 | border-top: 0px; 31 | border-radius: 0 0 0.3em 0.3em; 32 | border-color: var(--border-color); 33 | 34 | -webkit-hyphens: auto; 35 | -ms-hyphens: auto; 36 | hyphens: auto; 37 | 38 | ul { 39 | margin: 0; 40 | padding: 0; 41 | } 42 | 43 | a { 44 | padding: 0; 45 | margin: 0; 46 | display: block; 47 | text-decoration: none; 48 | } 49 | 50 | ul { 51 | list-style: none; 52 | 53 | li { 54 | font-weight: bold; 55 | 56 | a { 57 | padding-top: .2em; 58 | padding-bottom: .2em; 59 | padding-left: .5em; 60 | padding-right: .5em; 61 | border-bottom: 1px solid var(--border-color); 62 | } 63 | } 64 | } 65 | 66 | li ul li a { 67 | font-weight: normal; 68 | padding-left: 1.25em; 69 | padding-right: .5em; 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /_sass/_type.scss: -------------------------------------------------------------------------------- 1 | // Typography 2 | // 3 | // Headings, body text, lists, and other misc typographic elements. 4 | 5 | h1, h2, h3, h4, h5, h6 { 6 | margin-bottom: .5rem; 7 | font-weight: 600; 8 | line-height: 1.25; 9 | letter-spacing: -0.04em; 10 | color: var(--heading-color); 11 | } 12 | 13 | h1 { 14 | font-size: 2rem; 15 | } 16 | 17 | h2 { 18 | margin-top: 2rem; 19 | font-size: 1.5rem; 20 | } 21 | 22 | h3 { 23 | margin-top: 1.5rem; 24 | font-size: 1.17rem; 25 | } 26 | 27 | h4 { 28 | margin-top: 1rem; 29 | font-size: 1.12rem; 30 | } 31 | 32 | h5 { 33 | margin-top: 1rem; 34 | font-size: .83rem; 35 | } 36 | 37 | h6 { 38 | margin-top: 1rem; 39 | font-size: .75rem; 40 | } 41 | 42 | p { 43 | margin-top: 0; 44 | margin-bottom: 1rem; 45 | -webkit-hyphens: auto; 46 | -ms-hyphens: auto; 47 | hyphens: auto; 48 | } 49 | 50 | ul, ol, dl { 51 | margin-top: 0; 52 | margin-bottom: 1rem; 53 | } 54 | 55 | dt { 56 | font-weight: bold; 57 | } 58 | 59 | dd { 60 | margin-bottom: .5rem; 61 | } 62 | 63 | hr { 64 | position: relative; 65 | margin: var(--spacer-2) 0; 66 | border: 0; 67 | border-top: 1px solid var(--border-color); 68 | } 69 | 70 | abbr { 71 | font-size: 85%; 72 | font-weight: bold; 73 | color: var(--gray-600); 74 | text-transform: uppercase; 75 | 76 | &[title] { 77 | cursor: help; 78 | border-bottom: 1px dotted var(--border-color); 79 | } 80 | } 81 | 82 | blockquote { 83 | padding: .5rem 1rem; 84 | margin: .8rem 0; 85 | color: var(--gray-500); 86 | border-left: .25rem solid var(--border-color); 87 | 88 | p:last-child { 89 | margin-bottom: 0; 90 | } 91 | 92 | @media (min-width: $sm-width) { 93 | padding-right: 5rem; 94 | padding-left: 1.25rem; 95 | } 96 | } 97 | 98 | figure { 99 | margin: 0; 100 | } 101 | 102 | 103 | // Markdown footnotes 104 | // 105 | // See the example content post for an example. 106 | 107 | // Footnote number within body text 108 | a[href^="#fn:"], 109 | // Back to footnote link 110 | a[href^="#fnref:"] { 111 | display: inline-block; 112 | margin-left: .1rem; 113 | font-weight: bold; 114 | } 115 | 116 | // List of footnotes 117 | .footnotes { 118 | margin-top: 2rem; 119 | font-size: 85%; 120 | } 121 | 122 | // Custom type 123 | // 124 | // Extend paragraphs with `.lead` for larger introductory text. 125 | 126 | .lead { 127 | font-size: 1.25rem; 128 | font-weight: 300; 129 | } 130 | -------------------------------------------------------------------------------- /_sass/_variables.scss: -------------------------------------------------------------------------------- 1 | :root { 2 | --gray-000: #f8f9fa; 3 | --gray-100: #f1f3f5; 4 | --gray-200: #e9ecef; 5 | --gray-300: #dee2e6; 6 | --gray-400: #ced4da; 7 | --gray-500: #adb5bd; 8 | --gray-600: #868e96; 9 | --gray-700: #495057; 10 | --gray-800: #343a40; 11 | --gray-900: #212529; 12 | 13 | --red: #fa5252; 14 | --pink: #e64980; 15 | --grape: #be4bdb; 16 | --purple: #7950f2; 17 | --indigo: #4c6ef5; 18 | --blue: #228be6; 19 | --cyan: #15aabf; 20 | --teal: #12b886; 21 | --green: #40c057; 22 | --yellow: #fab005; 23 | --orange: #fd7e14; 24 | 25 | --blue-300: #74c0fc; 26 | --blue-400: #4dabf7; 27 | --yellow-100: #fff3bf; 28 | 29 | --body-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; 30 | --body-font-size: 18px; 31 | --body-line-height: 1.5; 32 | --body-color: var(--gray-700); 33 | --body-bg: #fff; 34 | 35 | --text-font: Times, "Times New Roman", "Free Serif", "Noto Serif", TimesNewRomanPSMT, "Droid Serif"; 36 | 37 | --link-color: var(--blue); 38 | --link-hover-color: #1c7ed6; 39 | 40 | --heading-color: var(--gray-900); 41 | 42 | --border-color: var(--gray-300); 43 | --border-radius: .25rem; 44 | 45 | --code-font: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; 46 | --code-color: var(--grape); 47 | --code-bg: #fbf1c7; 48 | 49 | --spacer: 1rem; 50 | --spacer-2: calc(var(--spacer) * 1.5); 51 | --spacer-3: calc(var(--spacer) * 3); 52 | } 53 | 54 | @media (prefers-color-scheme: dark) { 55 | :root { 56 | --body-color: var(--gray-300); 57 | --body-bg: var(--gray-800); 58 | 59 | --heading-color: #fff; 60 | 61 | --link-color: var(--blue-300); 62 | --link-hover-color: var(--blue-400); 63 | 64 | --border-color: rgba(255,255,255,.15); 65 | 66 | --code-bg: #282828; 67 | } 68 | } 69 | 70 | $sm-width: 35.5rem; 71 | $md-width: 48rem; 72 | $lg-width: 64rem; 73 | $xl-width: 80rem; 74 | -------------------------------------------------------------------------------- /about.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | title: About 4 | --- 5 | 6 | **Not Pure Poole** is a simple, beautiful, and powerful Jekyll theme for blogs. It is built on [Poole](https://github.com/poole/poole) and [Pure](https://purecss.io/). 7 | 8 | For more information about Not Pure Poole, please browse the [README](https://github.com/vszhub/not-pure-poole) file. 9 | -------------------------------------------------------------------------------- /assets/styles.scss: -------------------------------------------------------------------------------- 1 | --- 2 | # Use a comment to ensure Jekyll reads the file to be transformed into CSS later 3 | # only main files contain this front matter, not partials. 4 | --- 5 | 6 | // 7 | // ___ 8 | // /\_ \ 9 | // _____ ___ ___\//\ \ __ 10 | // /\ '__`\ / __`\ / __`\\ \ \ /'__`\ 11 | // \ \ \_\ \/\ \_\ \/\ \_\ \\_\ \_/\ __/ 12 | // \ \ ,__/\ \____/\ \____//\____\ \____\ 13 | // \ \ \/ \/___/ \/___/ \/____/\/____/ 14 | // \ \_\ 15 | // \/_/ 16 | // 17 | // Designed, built, and released under MIT license by @mdo. Learn more at 18 | // https://github.com/poole/poole. 19 | 20 | @import "variables"; 21 | @import "base"; 22 | @import "type"; 23 | @import "code"; 24 | @import "layout"; 25 | @import "sidebar"; 26 | @import "posts"; 27 | @import "archive"; 28 | @import "home-header"; 29 | @import "pagination"; 30 | @import "message"; 31 | @import "toc"; 32 | @import "alignment"; 33 | 34 | @import "syntax-light"; 35 | @media (prefers-color-scheme: dark) { 36 | @import "syntax-dark"; 37 | } 38 | 39 | // Sass for creating the swatches 40 | .colors { 41 | display: grid; 42 | grid-template-columns: max-content 1fr; 43 | 44 | dt { 45 | width: 3rem; 46 | height: 3rem; 47 | border-radius: var(--border-radius); 48 | box-shadow: inset 0 0 0 1px rgba(255,255,255,.15); 49 | } 50 | 51 | dd { 52 | margin-left: var(--spacer); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /avatar.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vszhub/not-pure-poole/114901ddb5bfcd6e7ec9bfce768a830bbe4a8c92/avatar.jpeg -------------------------------------------------------------------------------- /bg.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vszhub/not-pure-poole/114901ddb5bfcd6e7ec9bfce768a830bbe4a8c92/bg.jpeg -------------------------------------------------------------------------------- /categories.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: archive-taxonomies 3 | permalink: /categories/ 4 | title: Categories 5 | type: categories 6 | --- 7 | -------------------------------------------------------------------------------- /dates.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: archive-dates 3 | permalink: /dates/ 4 | title: Dates 5 | --- 6 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: home 3 | --- 4 | -------------------------------------------------------------------------------- /not-pure-poole.gemspec: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | Gem::Specification.new do |spec| 4 | spec.name = "not-pure-poole" 5 | spec.version = "0.1.0" 6 | spec.authors = ["Mark Otto", "Songzi Vong"] 7 | spec.email = ["markdotto@gmail.com", "vszhub@gmail.com"] 8 | 9 | spec.summary = "A simple, beautiful, and powerful Jekyll theme for blogs." 10 | spec.homepage = "https://github.com/vszhub/not-pure-jekyll" 11 | spec.license = "MIT" 12 | 13 | spec.files = `git ls-files -z`.split("\x0").select { |f| f.match(%r!^(assets|_layouts|_includes|_sass|LICENSE|README)!i) } 14 | 15 | spec.add_runtime_dependency "jekyll", "~> 3.9" 16 | spec.add_runtime_dependency "jekyll-feed", "~> 0.13" 17 | spec.add_runtime_dependency "jekyll-seo-tag", "~> 2.6" 18 | spec.add_runtime_dependency "jekyll-gist", "~> 1.5" 19 | spec.add_runtime_dependency "jekyll-paginate", "~> 1.1" 20 | spec.add_runtime_dependency "jekyll-sitemap", "~> 1.4" 21 | spec.add_runtime_dependency "kramdown-parser-gfm", "~> 1.1" 22 | 23 | spec.add_development_dependency "bundler", "~> 2.1" 24 | spec.add_development_dependency "rake", "~> 12.0" 25 | end 26 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vszhub/not-pure-poole/114901ddb5bfcd6e7ec9bfce768a830bbe4a8c92/screenshot.png -------------------------------------------------------------------------------- /scripts/draft: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | bundle exec jekyll draft $1 4 | -------------------------------------------------------------------------------- /scripts/publish: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | bundle exec jekyll publish $1 -------------------------------------------------------------------------------- /scripts/serve: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | bundle exec jekyll serve --draft --trace 4 | -------------------------------------------------------------------------------- /tags.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: archive-taxonomies 3 | permalink: /tags/ 4 | title: Tags 5 | type: tags 6 | --- 7 | --------------------------------------------------------------------------------