├── .editorconfig ├── .github └── workflows │ ├── ci.yaml │ └── demo_site.yml ├── .gitignore ├── 404.html ├── CODE_OF_CONDUCT.md ├── Gemfile ├── History.markdown ├── LICENSE.txt ├── README.md ├── _config.yml ├── _config_theme-dev.yml ├── _includes ├── comments.html ├── custom-head.html ├── footer.html ├── google-analytics.html ├── head.html ├── header.html ├── nav-items.html ├── social.html └── sub-footer.html ├── _layouts ├── base.html ├── home.html ├── page.html └── post.html ├── _posts ├── 2016-05-19-codeblocks-ahoy.md ├── 2016-05-19-super-short-article.md ├── 2016-05-20-my-example-post.md ├── 2016-05-20-super-long-article.md ├── 2016-05-20-this-post-demonstrates-post-content-styles.md └── 2016-05-20-welcome-to-jekyll.md ├── _sass └── minima │ ├── _base.scss │ ├── _layout.scss │ ├── custom-styles.scss │ ├── custom-variables.scss │ ├── initialize.scss │ └── skins │ ├── auto.scss │ ├── classic.scss │ ├── dark.scss │ ├── solarized-dark.scss │ ├── solarized-light.scss │ └── solarized.scss ├── about.md ├── assets └── css │ └── style.scss ├── index.md ├── minima.gemspec ├── readme_banner.svg ├── screenshot.png └── script ├── bootstrap ├── build ├── cibuild └── server /.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 | 13 | [*.md] 14 | trim_trailing_whitespace = false 15 | -------------------------------------------------------------------------------- /.github/workflows/ci.yaml: -------------------------------------------------------------------------------- 1 | name: Continuous Integration 2 | on: 3 | push: 4 | branches: 5 | - master 6 | pull_request: 7 | branches: 8 | - master 9 | jobs: 10 | build: 11 | name: "Test with Jekyll ${{ matrix.jekyll }}" 12 | runs-on: "ubuntu-latest" 13 | strategy: 14 | matrix: 15 | jekyll: ["~> 3.9", "~> 4.2"] 16 | env: 17 | JEKYLL_VERSION: ${{ matrix.jekyll }} 18 | steps: 19 | - name: Checkout Repository 20 | uses: actions/checkout@v2 21 | - name: Set Up Ruby 2.7 22 | uses: ruby/setup-ruby@v1 23 | with: 24 | ruby-version: 2.7 25 | bundler-cache: true 26 | - name: Run tests 27 | run: script/cibuild 28 | -------------------------------------------------------------------------------- /.github/workflows/demo_site.yml: -------------------------------------------------------------------------------- 1 | name: Build and Deploy Demo Site 2 | 3 | on: 4 | # Run this workflow manually from the Actions tab 5 | workflow_dispatch: 6 | 7 | jobs: 8 | deploy_demo_site: 9 | runs-on: "ubuntu-latest" 10 | env: 11 | BUNDLE_PATH: "vendor/bundle" 12 | BUNDLE_JOBS: 4 13 | BUNDLE_RETRY: 3 14 | steps: 15 | - name: Checkout Repository 16 | uses: actions/checkout@v2 17 | with: 18 | repository: jekyll/minima 19 | ref: demo-site 20 | - name: Set up Ruby 2.7 21 | uses: ruby/setup-ruby@v1 22 | with: 23 | ruby-version: 2.7 24 | bundler-cache: true 25 | - name: Clone target branch 26 | run: | 27 | REMOTE_BRANCH="${REMOTE_BRANCH:-gh-pages}" 28 | REMOTE_REPO="https://${GITHUB_ACTOR}:${{ secrets.GITHUB_TOKEN }}@github.com/${GITHUB_REPOSITORY}.git" 29 | 30 | echo "Publishing to ${GITHUB_REPOSITORY} on branch ${REMOTE_BRANCH}" 31 | rm -rf _site/ 32 | git clone --depth=1 --branch="${REMOTE_BRANCH}" --single-branch --no-checkout "${REMOTE_REPO}" _site/ 33 | - name: Build site 34 | run: bundle exec jekyll build --verbose --trace 35 | - name: Deploy to GitHub Pages 36 | run: | 37 | SOURCE_COMMIT="$(git log -1 --pretty="%an: %B" "$GITHUB_SHA")" 38 | pushd _site &>/dev/null 39 | : > .nojekyll 40 | 41 | git add --all 42 | git -c user.name="${GITHUB_ACTOR}" -c user.email="${GITHUB_ACTOR}@users.noreply.github.com" \ 43 | commit --quiet \ 44 | --message "Deploy demo-site from ${GITHUB_SHA}" \ 45 | --message "$SOURCE_COMMIT" 46 | git push 47 | 48 | popd &>/dev/null 49 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Files generated by Jekyll 2 | _site/ 3 | .sass-cache/ 4 | .jekyll-cache/ 5 | .jekyll-metadata 6 | 7 | # Files generated by Bundler 8 | .bundle/ 9 | vendor/ 10 | Gemfile.lock 11 | 12 | # Gems 13 | *.gem 14 | 15 | # Files generated by OS 16 | .DS_Store 17 | .DS_Store? 18 | ._* 19 | .Spotlight-V100 20 | .Trashes 21 | ehthumbs.db 22 | Thumbs.db 23 | -------------------------------------------------------------------------------- /404.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: base 3 | --- 4 | 5 | 18 | 19 |
20 |

404

21 | 22 |

Page not found :(

23 |

The requested page could not be found.

24 |
25 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, gender identity and expression, level of experience, 9 | nationality, personal appearance, race, religion, or sexual identity and 10 | orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at parkrmoore@gmail.com. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at [http://contributor-covenant.org/version/1/4][version] 72 | 73 | [homepage]: http://contributor-covenant.org 74 | [version]: http://contributor-covenant.org/version/1/4/ 75 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | source "https://rubygems.org" 4 | gemspec 5 | 6 | gem "jekyll", ENV["JEKYLL_VERSION"] if ENV["JEKYLL_VERSION"] 7 | gem "kramdown-parser-gfm" if ENV["JEKYLL_VERSION"] == "~> 3.9" 8 | -------------------------------------------------------------------------------- /History.markdown: -------------------------------------------------------------------------------- 1 | ## HEAD 2 | 3 | ### Documentation 4 | 5 | * Forward port v2.5.1 release (#399) 6 | * Docs: remove Google+ (#373) 7 | * Update README section on adding favicons to site (#438) 8 | * Fix custom-styles.scss name in README (#610) 9 | * Improve the msg to enable disqus in README (#627) 10 | * Make docs consistent with code (#657) 11 | * Highlight that the base branch is v3 (#719) 12 | * Improve documentation for config options (#760) 13 | * Add platform X supporting in README (#780) 14 | * Update readme_banner.svg to support dark mode (#813) 15 | * Add a warning regarding HEAD commit of `master` (#861) 16 | * Update google analytics README regarding G- and UA- tags (#689) 17 | * Fix typo in README (#895) 18 | 19 | ### Minor Enhancements 20 | 21 | * Add Keybase to social links (#400) 22 | * Solarized skins (#404) 23 | * Add a placeholder of favicons (#433) 24 | * fix: make page.list_title optional (#303) 25 | * Add stackoverflow to social media list (#443) 26 | * Add social support for dev.to (#410) 27 | * Add GitLab to social (#352) 28 | * Support mutiple authors on post layout (#348) 29 | * Re-implement site footer markup and styles (#448) 30 | * Support pagination through posts in home layout (#450) 31 | * Show the last modified date of posts (#432) 32 | * Set margins of hr to improve readability (#461) 33 | * Export a variable to let users to custom the font family of code (#462) 34 | * Set margin-bottom of pagination (#458) 35 | * Adjust margins of headings to make sections clear (#467) 36 | * Rename favicons.html to custom-head.html (#468) 37 | * Remove RSS icon from the social media list (#470) 38 | * Improve the readablility of blockquotes (#481) 39 | * Extract more color rules into skins (#452) 40 | * Introduce "Dark Minima" skin (#335) 41 | * Reduce spacing in the three largest headers (#538) 42 | * Add `auto` skin which honors the `prefers-color-scheme` media query (#634) 43 | * Add google scholar. (#673) 44 | * Add `x` social icon (#756) 45 | * Add Codeberg icon and update list of supported social links (#788) 46 | * Added whatsapp social icon. (#781) 47 | * Update GitLab icon (#765) 48 | * Add Bluesky to social media platforms (#799) 49 | * Simplify inserting markup before closing body tag (#854) 50 | * Render headings and text in different colors (#866) 51 | * Refresh styling of highlighted code snippet blocks (#875) 52 | * Adapt styles for GFM task-lists (#882) 53 | * Render link to feed as last item of social-links list (#888) 54 | * Adjust colors based on WCAG contrast criterion (#891) 55 | * Add styles to be in sync with Jekyll's `mark_lines` feature (#892) 56 | * Improve rendering of pagination pagers (#893) 57 | 58 | ### Major Enhancements 59 | 60 | * Allow skins to be defined and customized easily (#336) 61 | * Drop support for scalar 'author' configuration (#384) 62 | * Place skins in `minima/skins` to clarify purpose (#479) 63 | * Add adaptive skin: `solarized` (#594) 64 | * Generate social iconsheet during build (#686) 65 | * Rename `default` layout to `base` (#690) 66 | * Render social platform icons via Font Awesome library (#839) 67 | * Move `show_excerpts` setting to be under `minima` namespace (#841) 68 | * Simplify `.wrapper` style definition (#852) 69 | * Improve navigation styling and experience (#856) 70 | * Set default `font-weight` of headings to `500` (#868) 71 | * Render comments via platform-agnostic inclusion (#886) 72 | 73 | ### Bug Fixes 74 | 75 | * Add missing rel=me attributes to social links (#386) 76 | * Set the border radius of highlight (#426) 77 | * Removed unnecessary whitespace-controls (#390) 78 | * fix: overflow auto for tables (#296) 79 | * Add `overflow-wrap: break-word` to body tag (#321) 80 | * Use "rem" unit in relative-font-size mixin (#436) 81 | * Assign static value to variable outside forloop (#437) 82 | * Add font-size styles for elements h5 and h6 (#441) 83 | * Stop prefixing CSS calc with `-webkit-` (#445) 84 | * Improve readability of post titles with diacritics (#449) 85 | * Fix a bug of incorrect parsing of page.modified_date (#455) 86 | * Specify the font size of the root element (#485) 87 | * Fix script used for Google Analytics (#596) 88 | * Open social links in new tabs (#625) 89 | * change base-font-family sequence (#654) 90 | * Fix responsiveness of social SVG sprites (#677) 91 | * Improve "Subscribe" link in footer (#698) 92 | * Fix deprecation warnings from Dart Sass (#700) 93 | * Fix reference to base layout in `404.html` (#713) 94 | * Minimal fixes for Disqus (#775) 95 | * Fix deprecation warnings (#796) (#797) 96 | * Avoid clipping responsive social SVG icons (#808) 97 | * Update google-analytics.html (#824) 98 | * Fix Google Analytics script (#825) 99 | * Use single-quotes when nested within double-quoted attributes (#840) 100 | * Improve rendering of post header (#855) 101 | * Improve link underline styling (#857) 102 | * Replace `page.date` with `pdate` consistently in `post` layout (#859) 103 | * Reduce wrapper padding on small screens (#865) 104 | * Adjust the font size of blockquotes (#492) 105 | * Adjust table-text color based on heading-color (#869) 106 | * Adjust table border contrast (#872) 107 | * Toggle icons based on `#nav-trigger` state (#878) 108 | * Re-establish compatibility with legacy Sass engine (#880) 109 | * Delay loading font-awesome stylesheet from CDN (#883) 110 | * Undo fixed header (#884) 111 | * Render minimal site-nav on small screens (#885) 112 | * Fix invalid HTML (#330) 113 | 114 | ### Development Fixes 115 | 116 | * Ignore .jekyll-cache (#439) 117 | * Clean up and optimize .gitignore (#475) 118 | * [chore] Normalize Travis CI builds (#480) 119 | * chore(deps): bump Ruby version (#510) 120 | * Conditionally load GFM-parser gem in CI builds (#535) 121 | * Improve CI workflow configuration (#609) 122 | * Migrate from TravisCI to GitHub Actions (#633) 123 | * Build and deploy demo site via GH Action workflow (#636) 124 | * Improve readability of config file (#703) 125 | * Trigger demo-site build manually (#714) 126 | * Update History document for v2.5.2 (#803) 127 | * Move development config to a separate config file (#879) 128 | 129 | ## 2.5.2 130 | 131 | ### Bug Fixes 132 | 133 | * Fix deprecation warnings from Dart Sass (#801) 134 | 135 | ### Development Fixes 136 | 137 | * Set up CI for `2.5-stable` branch (#800) 138 | * Release gem from 2.5-stable via GitHub Actions (#802) 139 | 140 | ## 2.5.1 141 | 142 | ### Minor Enhancements 143 | 144 | * Allow use and testing with Jekyll 4.x (#398) 145 | 146 | ### Bug Fixes 147 | 148 | * Footer overlapping issue (Support Microsoft Explorer 11) (#248) 149 | * Update multiline config comment. (#346) 150 | 151 | ### Development Fixes 152 | 153 | * remove deprecated `sudo: false` in .travis.yml (#347) 154 | 155 | ## 2.5.0 156 | 157 | ### Bug Fixes 158 | 159 | * Add `jekyll-feed` plugin in config (#228) 160 | 161 | ### Minor Enhancements 162 | 163 | * Stick footer for short posts (#223) 164 | * Consolidate trigger SVG paths (#148) 165 | 166 | ## 2.4.1 167 | 168 | ### Bug Fixes 169 | 170 | * Reintroduce removed social includes for backwards compatibility (#217) 171 | 172 | ## 2.4.0 173 | 174 | ### Minor Enhancements 175 | 176 | * Add better system fonts (#205) 177 | * Remove whitespace due to Liquid tags in generated HTML (#202) 178 | * Adding Mastodon to the social networks (#198) 179 | 180 | ### Bug Fixes 181 | 182 | * social icons should resolve baseurl properly (#201) 183 | * fix: styling main element in IE 11 (#199) 184 | 185 | ### Documentation 186 | 187 | * Improve thw wording in index.md (#175) 188 | * Update config description comment (#203) 189 | 190 | ## 2.3.0 191 | 192 | * Add option to show excerpts on the homepage (#90) 193 | * Handle RSS feed with jekyll-feed (#183) 194 | * Test build with Ruby 2.4 on CI (#184) 195 | * Document how to customize navigation links (#192) 196 | 197 | ## 2.2.1 198 | 199 | * Revert social_sites hash for retrocompatibility (#190) 200 | 201 | ## 2.2.0 202 | 203 | ### Minor Enhancements 204 | 205 | * handling content outside of posts (#88) 206 | * Add default table styles (#144) 207 | * Add `jekyll-seo-tag` dependency (#139) 208 | * Add Microformats markup (#160) 209 | * Add more social links (#141) 210 | 211 | ### Documentation 212 | 213 | * Docs: clarification about page title (#142) 214 | 215 | ## 2.1.1 / 2017-04-13 216 | 217 | ### Minor Enhancements 218 | 219 | * Close #55: Improve mobile user experience (#62) 220 | * Remove incomplete status from spec summary (#63) 221 | * Use date_format if set in configuration (#70) 222 | * Corrected misspelled word (#72) 223 | * Scale headings relative to base-font-size (#78) 224 | * Remove 2.0 post-install message (#82) 225 | * Fixes #115 - Only include the nav tag if there are pages to be displayed in the menu (#116) 226 | * Fixes #80, #106. Make the hamburger work with pure CSS. (#111) 227 | * add `header_pages` config to link only specific files in header (#52) 228 | * More easily customizable CSS (#117) 229 | * Use relative size for fonts and line-height (#103) 230 | * Add 404 page from jekyll `master` (#121) 231 | 232 | ### Development Fixes 233 | 234 | * Remove duplicate .sass-cache (#71) 235 | * Demo minima on GitHub Pages (#76) 236 | * Remove the Rakefile (#118) 237 | 238 | ### Documentation 239 | 240 | * Update README with theme content description (#91) 241 | * Update default local URL (#120) 242 | 243 | ## 2.1.0 / 2016-11-15 244 | 245 | ### Minor Enhancements 246 | 247 | * Update gemspec to require at least Jekyll 3.3 (#59) 248 | * Use `absolute_url` filter for disqus (#66) 249 | * replace `example/index.html` with `example/index.md` (#58) 250 | 251 | ### Development Fixes 252 | 253 | * Example should require Jekyll 3.3 (#61) 254 | 255 | ## 2.0.0 / 2016-10-06 256 | 257 | ### Minor Enhancements 258 | 259 | * priority to site.url when site.github.url is available (#46) 260 | * Move contents of the index.html page to the 'home' layout (#48) 261 | * Use new `absolute_url` and `relative_url` filters in minima (#57) 262 | 263 | ### Development Fixes 264 | 265 | * Use standardized tab size of 2 spaces (#44) 266 | 267 | ### Major Enhancements 268 | 269 | * move `css/` directory from jekyll into `assets/` (#43) 270 | 271 | ### Bug Fixes 272 | 273 | * Fix html proofer errors (#49) 274 | * Update gem regex to include new `assets` directory (#54) 275 | 276 | ## 1.2.0 / 2016-09-12 277 | 278 | ### Minor Enhancements 279 | 280 | * Look to site.url when available (#35) 281 | 282 | ### Documentation 283 | 284 | * Move instruction for CSS in install section (#37) 285 | 286 | ## 1.1.0 / 2016-09-07 287 | 288 | ### Major Enhancements 289 | 290 | * Add support to Disqus (#21) 291 | * Google analytics support (#26) 292 | * Look for `site.github.url` if it exists (#25) 293 | 294 | ### Minor Enhancements 295 | 296 | * Fixed Flash Of Unstyled SVG (#12) 297 | * Added "author" in footer instead of double title (#22) 298 | 299 | ### Documentation 300 | 301 | * Document how to link to the theme styles (#18) 302 | * Update Example to resemble Default site (#24) 303 | 304 | ### Development Enhancements 305 | 306 | * Use upstream gemspec file matcher (#9) 307 | * Fix gemspec regex (#31) 308 | * Add Travis and a basic smoke test (#33) 309 | 310 | ## 1.0.1 / 2016-07-28 311 | 312 | * include `_layouts`, `_includes`, and `_sass` dir in gem (#6) 313 | 314 | ## 1.0.0 / 2016-07-27 315 | 316 | * default layout: html `lang` attribute should allow user customization (#3) 317 | * Use `normalize_whitespace` filter for meta description (#4) 318 | * Fix repo's URL in contributing (#5) 319 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016-present Parker Moore and the minima contributors 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 | > [!WARNING] 2 | > **The `master` branch is under active development towards a semver-major release with non-backwards-compatible changes.** 3 | > 4 | > While you may use this theme in the current state either via the `jekyll-remote-theme` plugin or via a Gemfile, it is 5 | > recommended to point to a particular git ref that does not break your site's existing render and gradually update to a 6 | > newer git ref via a pull request after consulting this repository's commit-log and README. 7 | > 8 | > **Pointing directly to the `HEAD` commit of the `master` branch is risky and may contain changes that break your site.** 9 | > 10 | > Example of pointing to a particular git ref via `jekyll-remote-theme` plugin: 11 | > ```yaml 12 | > # _config.yml 13 | > 14 | > remote_theme: "jekyll/minima@1e8a445" 15 | > ``` 16 | > Example of pointing to a particular git ref via `Gemfile` (with `theme: minima` in `_config.yml`) 17 | > ```ruby 18 | > # Gemfile 19 | > 20 | > gem "minima", github: "jekyll/minima", ref: "1e8a445" 21 | > ``` 22 | 23 |

24 | 25 |
26 |

Disclaimer: The information here may vary depending on the version you're using.
27 | Please refer to the README.md bundled within the theme-gem for information specific to your version or by pointing 28 | your browser to the Git tag corresponding to your version. e.g. https://github.com/jekyll/minima/blob/v2.5.0/README.md.
29 | Running bundle show minima will provide you with the local path to your current theme version.

30 | 31 |

It's Jekyll's default (and first) theme. It's what you get when you run jekyll new.

32 |

Theme preview

33 |

34 |
35 | 36 | ## Installation 37 | 38 | Add this line to your Jekyll site's Gemfile: 39 | 40 | ```ruby 41 | gem "minima" 42 | ``` 43 | 44 | And then execute: 45 | 46 | $ bundle 47 | 48 | 49 | ## Contents At-A-Glance 50 | 51 | Minima has been scaffolded by the `jekyll new-theme` command and therefore has all the necessary files and directories to have a new Jekyll site up and running with zero-configuration. 52 | 53 | ### Layouts 54 | 55 | Refers to files within the `_layouts` directory, that define the markup for your theme. 56 | 57 | - `base.html` — The base layout that lays the foundation for subsequent layouts. The derived layouts inject their 58 | contents into this file at the line that says ` {{ content }} ` and are linked to this file via 59 | [FrontMatter](https://jekyllrb.com/docs/frontmatter/) declaration `layout: base`. 60 | - `home.html` — The layout for your landing-page / home-page / index-page. [[More Info.](#home-layout)] 61 | - `page.html` — The layout for your documents that contain FrontMatter, but are not posts. 62 | - `post.html` — The layout for your posts. 63 | 64 | #### Base Layout 65 | 66 | From Minima v3 onwards, the base layout is named **`base.html`** instead of `default.html` to avoid confusing new users into 67 | assuming that name holds special status. 68 | 69 | Users migrating from older versions with customized `_layouts/default.html` are advised to rename their copy to 70 | `_layouts/base.html`. Migrating users with additional customized layouts may either update front matter references to former 71 | `default.html` layout or create a new `default.html` layout referencing the current `base.html`, whichever route being the 72 | easiest: 73 | 74 | ``` 75 | --- 76 | # new `_layouts/default.html` for backwards-compatibility when multiple 77 | # layouts have been customized. 78 | 79 | layout: base 80 | --- 81 | 82 | {{ content }} 83 | ``` 84 | 85 | #### Home Layout 86 | 87 | `home.html` is a flexible HTML layout for the site's landing-page / home-page / index-page.
88 | 89 | ##### *Main Heading and Content-injection* 90 | 91 | From Minima v2.2 onwards, the *home* layout will inject all content from your `index.md` / `index.html` **before** the **`Posts`** heading. This will allow you to include non-posts related content to be published on the landing page under a dedicated heading. *We recommended that you title this section with a Heading2 (`##`)*. 92 | 93 | Usually the `site.title` itself would suffice as the implicit 'main-title' for a landing-page. But, if your landing-page would like a heading to be explicitly displayed, then simply define a `title` variable in the document's front matter and it will be rendered with an `

` tag. 94 | 95 | ##### *Post Listing* 96 | 97 | This section is optional from Minima v2.2 onwards.
98 | It will be automatically included only when your site contains one or more valid posts or drafts (if the site is configured to `show_drafts`). 99 | 100 | The title for this section is `Posts` by default and rendered with an `

` tag. You can customize this heading by defining a `list_title` variable in the document's front matter. 101 | 102 | 103 | ### Includes 104 | 105 | Refers to snippets of code within the `_includes` directory that can be inserted in multiple layouts (and another include-file as well) within the same theme-gem. 106 | 107 | - `comments.html` — Markup to render comments (via Disqus; active only when Jekyll environment is set to `production`). 108 | - `footer.html` — Defines the site's footer section. 109 | - `google-analytics.html` — Inserts Google Analytics module (active only in production environment). 110 | - `head.html` — Code-block that defines the `` in *default* layout. 111 | - `custom-head.html` — Placeholder to allow users to add more metadata to ``. 112 | - `header.html` — Defines the site's main header section that consists of the site's *title* and *navigation*. 113 | - `nav-items.html` — Contains the logic and markup to render individual link items for the site's navigation. 114 | - `social.html` — Renders social-media icons based on the `minima:social_links` data in the config file using 115 | the latest version of Font Awesome Free webfonts via remote CDN. 116 | - `sub-footer.html` — Placeholder to allow inserting markup (e.g. deferred scripts) before the `` tag. 117 | 118 | 119 | ### Sass 120 | 121 | Refers to `.scss` files within the `_sass` directory that define the theme's styles. 122 | 123 | - `minima/skins/classic.scss` — The "classic" skin of the theme. *Used by default.* 124 | - `minima/initialize.scss` — A component that defines the theme's *skin-agnostic* variable defaults and sass partials. 125 | It imports the following components (in the following order): 126 | - `minima/custom-variables.scss` — A hook that allows overriding variable defaults and mixins. (*Note: Cannot override styles*) 127 | - `minima/_base.scss` — Sass partial for resets and defines base styles for various HTML elements. 128 | - `minima/_layout.scss` — Sass partial that defines the visual style for various layouts. 129 | - `minima/custom-styles.scss` — A hook that allows overriding styles defined above. (*Note: Cannot override variables*) 130 | 131 | Refer the [skins](#skins) section for more details. 132 | 133 | 134 | ### Assets 135 | 136 | Refers to various asset files within the `assets` directory. 137 | 138 | - `assets/css/style.scss` — Imports sass files from within the `_sass` directory and gets processed into the theme's 139 | stylesheet: `assets/css/styles.css`. 140 | - `assets/minima-social-icons.html` — Imports enabled social-media icon graphic and gets processed into a composite SVG file. 141 | Refer [section on social networks](#social-networks) for its usage. 142 | 143 | 144 | ### Plugins 145 | 146 | Minima comes with [`jekyll-seo-tag`](https://github.com/jekyll/jekyll-seo-tag) plugin preinstalled to make sure your website gets the most useful meta tags. See [usage](https://github.com/jekyll/jekyll-seo-tag#usage) to know how to set it up. 147 | 148 | 149 | ## Usage 150 | 151 | Have the following line in your config file: 152 | 153 | ```yaml 154 | theme: minima 155 | ``` 156 | 157 | 158 | ### Customizing templates 159 | 160 | To override the default structure and style of minima, simply create the concerned directory at the root of your site, copy the file you wish to customize to that directory, and then edit the file. 161 | e.g., to override the [`_includes/head.html `](_includes/head.html) file to specify a custom style path, create an `_includes` directory, copy `_includes/head.html` from minima gem folder to `/_includes` and start editing that file. 162 | 163 | The site's default CSS has now moved to a new place within the gem itself, [`assets/css/style.scss`](assets/css/style.scss). 164 | 165 | In Minima 3.0, if you only need to customize the colors of the theme, refer to the subsequent section on skins. To have your 166 | *CSS overrides* in sync with upstream changes released in future versions, you can collect all your overrides for the Sass 167 | variables and mixins inside a sass file placed at `_sass/minima/custom-variables.scss` and all other overrides inside a sass file 168 | placed at path `_sass/minima/custom-styles.scss`. 169 | 170 | You need not maintain entire partial(s) at the site's source just to override a few styles. However, your stylesheet's primary 171 | source (`assets/css/style.scss`) should contain the following: 172 | 173 | - Front matter dashes at the very beginning (can be empty). 174 | - Directive to import a skin. 175 | - Directive to import the base styles (automatically loads overrides when available). 176 | 177 | Therefore, your `assets/css/style.scss` should contain the following at minimum: 178 | 179 | ```sass 180 | --- 181 | --- 182 | 183 | @import 184 | "minima/skins/{{ site.minima.skin | default: 'classic' }}", 185 | "minima/initialize"; 186 | ``` 187 | 188 | #### Skins 189 | 190 | Minima 3.0 supports defining and switching between multiple color-palettes (or *skins*). 191 | 192 | ``` 193 | . 194 | ├── minima.scss 195 | └── minima 196 | └── _syntax-highlighting.scss 197 | ``` 198 | 199 | 200 | A skin is a Sass file placed in the directory `_sass/minima/skins` and it defines the variable defaults related to the "color" 201 | aspect of the theme. It also embeds the Sass rules related to syntax-highlighting since that is primarily related to color and 202 | has to be adjusted in harmony with the current skin. 203 | 204 | The default color palette for Minima is defined within `_sass/minima/skins/classic.scss`. To switch to another available skin, 205 | simply declare it in the site's config file. For example, to activate `_sass/minima/skins/dark.scss` as the skin, the setting 206 | would be: 207 | 208 | ```yaml 209 | minima: 210 | skin: dark 211 | ``` 212 | 213 | As part of the migration to support skins, some existing Sass variables have been retired and some **have been redefined** as 214 | summarized in the following table: 215 | 216 | Minima 2.0 | Minima 3.0 217 | --------------- | ---------- 218 | `$brand-color` | `$link-base-color` 219 | `$grey-*` | `$brand-*` 220 | `$orange-color` | *has been removed* 221 | 222 | ##### Available skins 223 | 224 | Skin setting | Description 225 | --------------- | ----------- 226 | classic | Default, light color scheme. 227 | dark | Dark variant of the classic skin. 228 | auto | *Adaptive skin* based on the default classic and dark skins. 229 | solarized | *Adaptive skin* for [solarized](https://github.com/solarized) color scheme skins. 230 | solarized-light | Light variant of solarized color scheme. 231 | solarized-dark | Dark variant of solarized color scheme. 232 | 233 | *:bulb: Adaptive skins switch between the "light" and "dark" variants based on the user's operating system setting or browser setting 234 | (via CSS Media Query [prefers-color-scheme](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme)).* 235 | 236 | ### Customize navigation links 237 | 238 | This allows you to set which pages you want to appear in the navigation area and configure order of the links. 239 | 240 | For instance, to only link to the `about` and the `portfolio` page, add the following to your `_config.yml`: 241 | 242 | ```yaml 243 | minima: 244 | nav_pages: 245 | - about.md 246 | - portfolio.md 247 | ``` 248 | > [!WARNING] 249 | > Please note that **`site.header_pages`** is **`site.minima.nav_pages`** in Minima 3.0 250 | 251 | 252 | ### Change default date format 253 | 254 | You can change the default date format by specifying `site.minima.date_format` 255 | in `_config.yml`. 256 | 257 | ``` 258 | # Minima date format 259 | # refer to http://shopify.github.io/liquid/filters/date/ if you want to customize this 260 | minima: 261 | date_format: "%b %-d, %Y" 262 | ``` 263 | 264 | 265 | ### Extending the `` 266 | 267 | You can *add* custom metadata to the `` of your layouts by creating a file `_includes/custom-head.html` in your source directory. For example, to add favicons: 268 | 269 | 1. Head over to [https://realfavicongenerator.net/](https://realfavicongenerator.net/) to add your own favicons. 270 | 2. [Customize](#customization) default `_includes/custom-head.html` in your source directory and insert the given code snippet. 271 | 272 | 273 | ### Enabling comments (via Disqus) 274 | 275 | Optionally, if you have a Disqus account, you can render a comments section below each post with the following configuration: 276 | 277 | ```yaml 278 | url: "https://my_domain.com" 279 | disqus: 280 | shortname: my_disqus_shortname 281 | ``` 282 | 283 | You can find out more about Disqus' shortnames [here](https://help.disqus.com/installation/whats-a-shortname). 284 | 285 | Comments are enabled by default and will only appear in production, i.e., `JEKYLL_ENV=production` 286 | 287 | If you don't want to display comments for a particular post you can disable them by adding `comments: false` to that 288 | post's YAML Front Matter. 289 | 290 | ### Author Metadata 291 | 292 | From `Minima-3.0` onwards, `site.author` is expected to be a mapping of attributes instead of a simple scalar value: 293 | 294 | ```yaml 295 | author: 296 | name: John Smith 297 | email: "john.smith@foobar.com" 298 | ``` 299 | 300 | To migrate existing metadata, update your config file and any reference to the object in your layouts and includes as summarized below: 301 | 302 | Minima 2.x | Minima 3.0 303 | ------------- | ------------------- 304 | `site.author` | `site.author.name` 305 | `site.email` | `site.author.email` 306 | 307 | 308 | ### Social networks 309 | 310 | You can add links to the accounts you have on other sites, with respective icon as an SVG graphic, via the config file. 311 | From `Minima-3.0` onwards, the social media data is sourced from config key `minima.social_links`. It is a list of key-value pairs, each entry 312 | corresponding to a link rendered in the footer. For example, to render links to Jekyll GitHub repository and Twitter account (now X), one 313 | should have: 314 | 315 | ```yaml 316 | minima: 317 | social_links: 318 | - title: Jekyll repository at GitHub 319 | icon: github 320 | url: "https://github.com/jekyll/jekyll" 321 | - title: Jekyll at X (formerly Twitter) 322 | icon: x-twitter 323 | url: "https://x.com/jekyllrb" 324 | ``` 325 | 326 | where `title` corresponds to the link-title displayed when a visitor hovers mouse-pointer over url / icon and 327 | `icon` refers to the Font Awesome icon id. e.g. `github` corresponds to `fa-github`. 328 | 329 | Social platform icons are rendered using the latest version of Font Awesome Free webfonts sourced via remote CDN. 330 | The full list of available social icons can be found at https://fontawesome.com/search?ic=brands 331 | 332 | > [!NOTE] 333 | > The link to your site's main syndication feed is always rendered as the last item of the social-links list.
334 | > You may opt to not have this link rendered at all by setting config **`minima.hide_site_feed_link`** to `true`: 335 | > ```yaml 336 | > minima: 337 | > hide_site_feed_link: true # `false` or `null` by default 338 | > ``` 339 | 340 | ### Enabling Google Analytics 341 | 342 | To enable Google Analytics, add the following lines to your Jekyll site: 343 | 344 | ```yaml 345 | google_analytics: G-NNNNNNNNNN // The former `UA-NNNNNNNN-N` format is no longer supported by Google 346 | ``` 347 | 348 | Google Analytics will only appear in production, i.e., `JEKYLL_ENV=production`. 349 | 350 | ### Enabling Excerpts on the Home Page 351 | 352 | To display post-excerpts on the Home Page, simply set `show_excerpts` under top-level key `minima` to `true` in your 353 | `_config.yml`: 354 | 355 | ```yaml 356 | minima: 357 | show_excerpts: true 358 | ``` 359 | 360 | 361 | ## Contributing 362 | 363 | Bug reports and pull requests are welcome on GitHub at https://github.com/jekyll/minima. 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. 364 | 365 | ## Development 366 | 367 | To set up your environment to develop this theme, run `script/bootstrap`. 368 | 369 | To test your theme, run `script/server` (or `bundle exec jekyll serve`) and open your browser at `http://localhost:4000`. This starts a Jekyll server using your theme and the contents. As you make modifications, your site will regenerate and you should see the changes in the browser after a refresh. 370 | 371 | ## License 372 | 373 | The theme is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT). 374 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # Site-wide settings 2 | # ------------------ 3 | # 4 | # title: Your awesome title 5 | # 6 | # author: 7 | # name: GitHub User 8 | # email: your-email@domain.com 9 | # 10 | # The `>` after `description:` means to ignore line-breaks until next key. If 11 | # you wish to omit the line-break after the end of text, use `>-` instead. 12 | # description: > 13 | # Write an awesome description for your new site here. You can edit this line 14 | # in _config.yml. It will appear in your document head meta (for Google search 15 | # results) and in your feed.xml site description. 16 | 17 | 18 | # Build settings 19 | # -------------- 20 | # 21 | # If you wish to use the gem-version of Minima with or without a Gemfile, use 22 | # the following setting: 23 | # theme: minima 24 | # 25 | # **OR** if you wish to use the theme directly from the GitHub repository by 26 | # bypassing a Gemfile, use the following setting instead. 27 | # It is best that you lock to a particular commit and update if uptream changes 28 | # do not affect your site adversely. 29 | # remote_theme: jekyll/minima@d4d779a 30 | # 31 | # Minima requires the following plugins: 32 | # plugins: 33 | # - jekyll-feed 34 | # - jekyll-seo-tag 35 | # 36 | # Uncomment the following setting if you wish to disable deprecation warnings 37 | # from newer versions of sass converter. Adapt as required. 38 | # sass: 39 | # quiet_deps: true 40 | # silence_deprecations: [import] 41 | 42 | 43 | # Minima-specific settings (applicable to Minima v3 and above only) 44 | # ----------------------------------------------------------------- 45 | # 46 | # *All described config keys below should be nested under the top-level 47 | # `minima` key.* 48 | # 49 | # minima: 50 | # Minima skin selection. Available skins are: 51 | # * classic Default, light color scheme. 52 | # * dark Dark variant of the classic skin. 53 | # * auto Adaptive skin based on the classic and dark skins. 54 | # * solarized-light Light variant of solarized color scheme. 55 | # * solarized-dark Dark variant of solarized color scheme. 56 | # * solarized Adaptive skin for solarized color scheme skins. 57 | # skin: auto 58 | # 59 | # Specific pages for site navigation. 60 | # If you wish to link only specific pages in the site-navigation, use this 61 | # and list the `path` property (as represented via Liquid) of the pages in 62 | # the order they should be rendered. 63 | # nav_pages: 64 | # - about.md 65 | # 66 | # Set to `true` to show excerpts on the homepage. 67 | # show_excerpts: false 68 | # 69 | # Minima date format. 70 | # The default value is "%b %d, %Y" (e.g. Nov 14, 2023). 71 | # Refer to https://shopify.github.io/liquid/filters/date/ for valid values 72 | # date_format: "%b-%d-%Y" 73 | # 74 | # Social Media Links. 75 | # Renders icons via Font Awesome Free webfonts CDN, based on ordered list of 76 | # entries. Valid entry keys: 77 | # * title Tooltip rendered on hovering over icon. 78 | # * icon Font Awesome icon id. `github` corresponds to `fa-github`. 79 | # * url Full URL of social profile. 80 | # social_links: 81 | # - title: Minima Theme repository at GitHub 82 | # icon: github 83 | # url: "https://github.com/jekyll/minima" 84 | # - title: Jekyll at X (formerly Twitter) 85 | # icon: x-twitter 86 | # url: "https://x.com/jekyllrb" 87 | # 88 | # Hide syndication feed subscription link. 89 | # RSS / Atom feed link is always rendered as the last item of social-links 90 | # list. Set below key to `true` to not have the link to feed rendered as 91 | # part of social-links list. 92 | # hide_site_feed_link: false 93 | -------------------------------------------------------------------------------- /_config_theme-dev.yml: -------------------------------------------------------------------------------- 1 | title: Your awesome title 2 | author: 3 | name: GitHub User 4 | email: your-email@domain.com 5 | 6 | description: > 7 | Write an awesome description for your new site here. You can edit this line 8 | in _config.yml. It will appear in your document head meta (for Google search 9 | results) and in your feed.xml site description. 10 | 11 | theme: minima 12 | 13 | plugins: 14 | - jekyll-feed 15 | - jekyll-seo-tag 16 | 17 | sass: 18 | quiet_deps: true 19 | silence_deprecations: [import] 20 | 21 | minima: 22 | # Minima skin selection. Available skins are: 23 | # Available skins: 24 | # * classic Default, light color scheme. 25 | # * dark Dark variant of the classic skin. 26 | # * auto Adaptive skin based on the default classic and dark skins. 27 | # * solarized-light Light variant of solarized color scheme. 28 | # * solarized-dark Dark variant of solarized color scheme. 29 | # * solarized Adaptive skin for solarized color scheme skins. 30 | skin: classic 31 | 32 | # Specific pages for site navigation. 33 | # If you wish to link only specific pages in the site-navigation, use this and list 34 | # the `path` property (as represented via Liquid) of the pages in the order they 35 | # should be rendered. 36 | nav_pages: 37 | - about.md 38 | 39 | # Set to `true` to show excerpts on the homepage. 40 | show_excerpts: false 41 | 42 | # Minima date format. 43 | # The default value is "%b %d, %Y" (e.g. Nov 14, 2023). 44 | # Refer to https://shopify.github.io/liquid/filters/date/ for valid values. 45 | # date_format: "%b-%d-%Y" 46 | 47 | # Social Media Links 48 | # Renders icons via Font Awesome Free webfonts CDN, based on ordered list of entries. 49 | # Entry keys: 50 | # * title Tooltip rendered on hovering over icon. 51 | # * icon Font Awesome icon id. `github` corresponds to `fa-github`. 52 | # * url Full URL of social profile. 53 | social_links: 54 | - title: Minima Theme repository at GitHub 55 | icon: github 56 | url: "https://github.com/jekyll/minima" 57 | - title: Jekyll at X (formerly Twitter) 58 | icon: x-twitter 59 | url: "https://x.com/jekyllrb" 60 | -------------------------------------------------------------------------------- /_includes/comments.html: -------------------------------------------------------------------------------- 1 | {% if site.disqus.shortname -%} 2 | 14 | 17 | {% endif -%} 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/footer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 25 | 26 | 29 | 30 |
31 | 32 |
33 | -------------------------------------------------------------------------------- /_includes/google-analytics.html: -------------------------------------------------------------------------------- 1 | 2 | 9 | -------------------------------------------------------------------------------- /_includes/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {%- seo -%} 6 | 7 | {%- feed_meta -%} 8 | {%- if jekyll.environment == 'production' and site.google_analytics -%} 9 | {%- include google-analytics.html -%} 10 | {%- endif -%} 11 | 12 | {%- include custom-head.html -%} 13 | 14 | 15 | -------------------------------------------------------------------------------- /_includes/header.html: -------------------------------------------------------------------------------- 1 | 21 | -------------------------------------------------------------------------------- /_includes/nav-items.html: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /_includes/social.html: -------------------------------------------------------------------------------- 1 | 23 | -------------------------------------------------------------------------------- /_includes/sub-footer.html: -------------------------------------------------------------------------------- 1 | {% comment %} 2 | Use this to insert markup before the closing body tag. 3 | For example, scripts that need to be executed after the document has finished loading. 4 | {% endcomment %} 5 | -------------------------------------------------------------------------------- /_layouts/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {%- include head.html -%} 5 | 6 | 7 | 8 | {%- include header.html -%} 9 | 10 |
11 |
12 | {{ content }} 13 |
14 |
15 | 16 | {%- include footer.html -%} 17 | 18 | {%- include sub-footer.html -%} 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /_layouts/home.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: base 3 | --- 4 | 5 |
6 | {%- if page.title -%} 7 |

{{ page.title }}

8 | {%- endif -%} 9 | 10 | {{ content }} 11 | 12 | 13 | {% if site.paginate %} 14 | {% assign posts = paginator.posts %} 15 | {% else %} 16 | {% assign posts = site.posts %} 17 | {% endif %} 18 | 19 | 20 | {%- if posts.size > 0 -%} 21 | {%- if page.list_title -%} 22 |

{{ page.list_title }}

23 | {%- endif -%} 24 |
    25 | {%- assign date_format = site.minima.date_format | default: "%b %-d, %Y" -%} 26 | {%- for post in posts -%} 27 |
  • 28 | 29 |

    30 | 31 | {{ post.title | escape }} 32 | 33 |

    34 | {%- if site.minima.show_excerpts -%} 35 | {{ post.excerpt }} 36 | {%- endif -%} 37 |
  • 38 | {%- endfor -%} 39 |
40 | 41 | {% if site.paginate %} 42 |
43 | 64 |
65 | {%- endif %} 66 | {%- endif -%} 67 |
68 | -------------------------------------------------------------------------------- /_layouts/page.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: base 3 | --- 4 |
5 | 6 |
7 |

{{ page.title | escape }}

8 |
9 | 10 |
11 | {{ content }} 12 |
13 | 14 |
15 | -------------------------------------------------------------------------------- /_layouts/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: base 3 | --- 4 |
5 | 6 |
7 |

{{ page.title | escape }}

8 | 33 |
34 | 35 |
36 | {{ content }} 37 |
38 | 39 | {% if jekyll.environment == 'production' -%} 40 | {% if page.comments == false -%} 41 |
42 | Comments have been disabled for this post. 43 |
44 | {% else -%} 45 | {%- include comments.html -%} 46 | {% endif -%} 47 | {% endif -%} 48 | 49 | 50 |
51 | -------------------------------------------------------------------------------- /_posts/2016-05-19-codeblocks-ahoy.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | --- 4 | 5 | An article with various blocks of highlighted code snippets. 6 | 7 | ```ruby 8 | =begin 9 | Dummy class nested inside a dummy module 10 | Private API 11 | =end 12 | ``` 13 | ```diff 14 | - This line is redacted 15 | - This line has been deleted 16 | + This line is visible 17 | + This line has been inserted 18 | This line has not been changed 19 | ``` 20 | ```sass 21 | @import "base" 22 | 23 | .card 24 | display: inline-block 25 | margin: 0 26 | padding: 0 27 | 28 | &:hover 29 | color: #ab45ef; 30 | ``` 31 | ```ruby 32 | 21 + 54 = 0 33 | foo ||= bar 34 | foo / bar 35 | 36 | 24 37 | 45.75 38 | 0x2C716 39 | \x0A 40 | 01010 41 | 42 | /ya?ml/ 43 | "yaml" 44 | ``` 45 | ```ruby 46 | include Enumerable 47 | 48 | module Foo 49 | class Bar 50 | LIPSUM = "lorem ipsum dolor sit" 51 | 52 | attr_reader :layout 53 | 54 | def initialize 55 | @layout = Layout.new 56 | end 57 | 58 | # instance method 59 | def profile 60 | measure_time do 61 | compile layout 62 | layout.render_with Bar::LIPSUM 63 | end 64 | rescue ArgumentError 65 | false 66 | end 67 | end 68 | end 69 | 70 | # Execute code 71 | Foo::Bar.new.profile 72 | ``` 73 | 74 | {% raw %} 75 | ```liquid 76 | {% assign foo = page.foo | bar: 'baz' %} 77 | {{ foo }} 78 | ``` 79 | {% endraw %} 80 | 81 | ```yaml 82 | author: 83 | admin: true 84 | name: John Doe 85 | email: johndoe@example.com 86 | id: 75636474 87 | ``` 88 | 89 | {% highlight html %} 90 | 91 | 92 | 93 | Hello World 94 | 95 | 96 |

Hello, World!

97 | 98 | 99 | {% endhighlight %} 100 | 101 | {% highlight html mark_lines="1 4 7" %} 102 | 103 | 104 | 105 | Hello World 106 | 107 | 108 |

Hello, World!

109 | 110 | 111 | {% endhighlight %} 112 | 113 | {% highlight html linenos %} 114 | 115 | 116 | 117 | Hello World 118 | 119 | 120 |

Hello, World!

121 | 122 | 123 | {% endhighlight %} 124 | 125 | {% highlight html linenos mark_lines="1 4 7" %} 126 | 127 | 128 | 129 | Hello World 130 | 131 | 132 |

Hello, World!

133 | 134 | 135 | {% endhighlight %} 136 | -------------------------------------------------------------------------------- /_posts/2016-05-19-super-short-article.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Some articles are just so short that we have to make the footer stick" 4 | categories: misc 5 | --- 6 | 7 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 8 | -------------------------------------------------------------------------------- /_posts/2016-05-20-my-example-post.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | author: John Doe 4 | comments: false 5 | --- 6 | 7 | Eos eu docendi tractatos sapientem, brute option menandri in vix, quando vivendo accommodare te ius. Nec melius fastidii constituam id, viderer theophrastus ad sit, hinc semper periculis cum id. Noluisse postulant assentior est in, no choro sadipscing repudiandae vix. Vis in euismod delenit dignissim. Ex quod nostrum sit, suas decore animal id ius, nobis solet detracto quo te. 8 | 9 | {% comment %} 10 | Might you have an include in your theme? Why not try it here! 11 | {% include my-themes-great-include.html %} 12 | {% endcomment %} 13 | 14 | No laudem altera adolescens has, volumus lucilius eum no. Eam ei nulla audiam efficiantur. Suas affert per no, ei tale nibh sea. Sea ne magna harum, in denique scriptorem sea, cetero alienum tibique ei eos. Labores persequeris referrentur eos ei. 15 | -------------------------------------------------------------------------------- /_posts/2016-05-20-super-long-article.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Some articles are just so long they deserve a really long title to see if things will break well" 4 | categories: misc 5 | --- 6 | 7 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce bibendum neque eget nunc mattis eu sollicitudin enim tincidunt. Vestibulum lacus tortor, ultricies id dignissim ac, bibendum in velit. Proin convallis mi ac felis pharetra aliquam. Curabitur dignissim accumsan rutrum. In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. Proin eget nibh a massa vestibulum pretium. Suspendisse eu nisl a ante aliquet bibendum quis a nunc. Praesent varius interdum vehicula. Aenean risus libero, placerat at vestibulum eget, ultricies eu enim. Praesent nulla tortor, malesuada adipiscing adipiscing sollicitudin, adipiscing eget est. 8 | 9 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce bibendum neque eget nunc mattis eu sollicitudin enim tincidunt. Vestibulum lacus tortor, ultricies id dignissim ac, bibendum in velit. Proin convallis mi ac felis pharetra aliquam. Curabitur dignissim accumsan rutrum. In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. Proin eget nibh a massa vestibulum pretium. Suspendisse eu nisl a ante aliquet bibendum quis a nunc. Praesent varius interdum vehicula. Aenean risus libero, placerat at vestibulum eget, ultricies eu enim. Praesent nulla tortor, malesuada adipiscing adipiscing sollicitudin, adipiscing eget est. 10 | 11 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce bibendum neque eget nunc mattis eu sollicitudin enim tincidunt. Vestibulum lacus tortor, ultricies id dignissim ac, bibendum in velit. Proin convallis mi ac felis pharetra aliquam. Curabitur dignissim accumsan rutrum. In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. Proin eget nibh a massa vestibulum pretium. Suspendisse eu nisl a ante aliquet bibendum quis a nunc. Praesent varius interdum vehicula. Aenean risus libero, placerat at vestibulum eget, ultricies eu enim. Praesent nulla tortor, malesuada adipiscing adipiscing sollicitudin, adipiscing eget est. 12 | -------------------------------------------------------------------------------- /_posts/2016-05-20-this-post-demonstrates-post-content-styles.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "This post demonstrates post content styles" 4 | categories: junk 5 | author: 6 | - Bart Simpson 7 | - Nelson Mandela Muntz 8 | meta: "Springfield" 9 | modified_date: 2016-05-27 10 | --- 11 | 12 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce bibendum neque eget nunc mattis eu sollicitudin enim tincidunt. Vestibulum lacus tortor, ultricies id dignissim ac, bibendum in velit. 13 | 14 | ## Some great heading (h2) 15 | 16 | Proin convallis mi ac felis pharetra aliquam. Curabitur dignissim accumsan rutrum. In arcu magna, aliquet vel pretium et, molestie et arcu. 17 | 18 | Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. Proin eget nibh a massa vestibulum pretium. Suspendisse eu nisl a ante aliquet bibendum quis a nunc. Praesent varius interdum vehicula. Aenean risus libero, placerat at vestibulum eget, ultricies eu enim. Praesent nulla tortor, malesuada adipiscing adipiscing sollicitudin, adipiscing eget est. 19 | 20 | ## Another great heading (h2) 21 | 22 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce bibendum neque eget nunc mattis eu sollicitudin enim tincidunt. Vestibulum lacus tortor, ultricies id dignissim ac, bibendum in velit. 23 | 24 | ### Some great subheading (h3) 25 | 26 | Proin convallis mi ac felis pharetra aliquam. Curabitur dignissim accumsan rutrum. In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. 27 | 28 | Phasellus et hendrerit mauris. Proin eget nibh a massa vestibulum pretium. Suspendisse eu nisl a ante aliquet bibendum quis a nunc. 29 | 30 | ### Some great subheading (h3) 31 | 32 | Praesent varius interdum vehicula. Aenean risus libero, placerat at vestibulum eget, ultricies eu enim. Praesent nulla tortor, malesuada adipiscing adipiscing sollicitudin, adipiscing eget est. 33 | 34 | > This quote will *change* your life. It will reveal the secrets of the universe, and all the wonders of humanity. Don't misuse it. 35 | 36 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce bibendum neque eget nunc mattis eu sollicitudin enim tincidunt. 37 | 38 | ### Some great subheading (h3) 39 | 40 | Vestibulum lacus tortor, ultricies id dignissim ac, bibendum in velit. Proin convallis mi ac felis pharetra aliquam. Curabitur dignissim accumsan rutrum. 41 | 42 | ```html 43 | 44 | 45 | 46 | 47 |

Hello, World!

48 | 49 | 50 | ``` 51 | 52 | 53 | In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. 54 | 55 | #### You might want a sub-subheading (h4) 56 | 57 | In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. 58 | 59 | In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. 60 | 61 | #### But it's probably overkill (h4) 62 | 63 | In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. 64 | 65 | ##### Could be a smaller sub-heading, `pacman` (h5) 66 | 67 | In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. 68 | 69 | ###### Small yet significant sub-heading (h6) 70 | 71 | In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. 72 | 73 | ### Whaaat, a checklist?? 74 | 75 | - [ ] Milk 76 | - [x] Cookies 77 | - [x] Classic Choco-chip 78 | - [x] Sourdough Choco-chip 79 | - [ ] Chee-ee-eeee-zzze!!!! 80 | 81 | ### Oh hai, an unordered list!! 82 | 83 | In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. 84 | 85 | - First item, yo 86 | - Second item, dawg 87 | - Third item, what what?! 88 | - Fourth item, fo sheezy my neezy 89 | - Fifth item, nested! 90 | - So la ti do 91 | - Ba-da-bing! 92 | - Ba-da-boom! 93 | 94 | ### Oh hai, an ordered list!! 95 | 96 | In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. 97 | 98 | 1. First item, yo 99 | 2. Second item, dawg 100 | 3. Third item, what what?! 101 | 4. Fourth item, fo sheezy my neezy 102 | 5. Fifth item, nested! 103 | - So la ti do 104 | - Ba-da-bing! 105 | - Ba-da-boom! 106 | 107 | ## Headings are cool! (h2) 108 | 109 | Proin eget nibh a massa vestibulum pretium. Suspendisse eu nisl a ante aliquet bibendum quis a nunc. Praesent varius interdum vehicula. Aenean risus libero, placerat at vestibulum eget, ultricies eu enim. Praesent nulla tortor, malesuada adipiscing adipiscing sollicitudin, adipiscing eget est. 110 | 111 | Praesent nulla tortor, malesuada adipiscing adipiscing sollicitudin, adipiscing eget est. 112 | 113 | Proin eget nibh a massa vestibulum pretium. Suspendisse eu nisl a ante aliquet bibendum quis a nunc. 114 | 115 | ### Tables 116 | 117 | Title 1 | Title 2 | Title 3 | Title 4 118 | --------------------- | --------------------- | --------------------- | --------------------- 119 | lorem | lorem ipsum | lorem ipsum dolor | lorem ipsum dolor sit 120 | lorem ipsum dolor sit | lorem ipsum dolor sit | lorem ipsum dolor sit | lorem ipsum dolor sit 121 | lorem ipsum dolor sit | lorem ipsum dolor sit | lorem ipsum dolor sit | lorem ipsum dolor sit 122 | lorem ipsum dolor sit | lorem ipsum dolor sit | lorem ipsum dolor sit | lorem ipsum dolor sit 123 | 124 | 125 | Title 1 | Title 2 | Title 3 | Title 4 126 | --- | --- | --- | --- 127 | lorem | lorem ipsum | lorem ipsum dolor | lorem ipsum dolor sit 128 | lorem ipsum dolor sit amet | lorem ipsum dolor sit amet consectetur | lorem ipsum dolor sit amet | lorem ipsum dolor sit 129 | lorem ipsum dolor | lorem ipsum | lorem | lorem ipsum 130 | lorem ipsum dolor | lorem ipsum dolor sit | lorem ipsum dolor sit amet | lorem ipsum dolor sit amet consectetur 131 | -------------------------------------------------------------------------------- /_posts/2016-05-20-welcome-to-jekyll.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | --- 4 | You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. 5 | 6 | To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. 7 | 8 | Jekyll also offers powerful support for code snippets: 9 | 10 | {% highlight ruby %} 11 | def print_hi(name) 12 | puts "Hi, #{name}" 13 | end 14 | print_hi('Tom') 15 | #=> prints 'Hi, Tom' to STDOUT. 16 | {% endhighlight %} 17 | 18 | Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk]. 19 | 20 | [jekyll-docs]: http://jekyllrb.com/docs/home 21 | [jekyll-gh]: https://github.com/jekyll/jekyll 22 | [jekyll-talk]: https://talk.jekyllrb.com/ 23 | -------------------------------------------------------------------------------- /_sass/minima/_base.scss: -------------------------------------------------------------------------------- 1 | html { 2 | font-size: $base-font-size; 3 | } 4 | 5 | /** 6 | * Reset some basic elements 7 | */ 8 | body, h1, h2, h3, h4, h5, h6, 9 | p, blockquote, pre, hr, 10 | dl, dd, ol, ul, figure { 11 | margin: 0; 12 | padding: 0; 13 | 14 | } 15 | 16 | 17 | 18 | /** 19 | * Basic styling 20 | */ 21 | body { 22 | font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family; 23 | color: $text-color; 24 | background-color: $background-color; 25 | -webkit-text-size-adjust: 100%; 26 | -webkit-font-feature-settings: "kern" 1; 27 | -moz-font-feature-settings: "kern" 1; 28 | -o-font-feature-settings: "kern" 1; 29 | font-feature-settings: "kern" 1; 30 | font-kerning: normal; 31 | display: flex; 32 | min-height: 100vh; 33 | flex-direction: column; 34 | overflow-wrap: break-word; 35 | } 36 | 37 | 38 | 39 | /** 40 | * Set `margin-bottom` to maintain vertical rhythm 41 | */ 42 | h1, h2, h3, h4, h5, h6, 43 | p, blockquote, pre, 44 | ul, ol, dl, figure, 45 | %vertical-rhythm { 46 | margin-bottom: $spacing-unit * .5; 47 | } 48 | 49 | hr { 50 | margin-top: $spacing-unit; 51 | margin-bottom: $spacing-unit; 52 | } 53 | 54 | /** 55 | * `main` element 56 | */ 57 | main { 58 | display: block; /* Default value of `display` of `main` element is 'inline' in IE 11. */ 59 | } 60 | 61 | 62 | 63 | /** 64 | * Images 65 | */ 66 | img { 67 | max-width: 100%; 68 | vertical-align: middle; 69 | } 70 | 71 | 72 | 73 | /** 74 | * Figures 75 | */ 76 | figure > img { 77 | display: block; 78 | } 79 | 80 | figcaption { 81 | font-size: $small-font-size; 82 | } 83 | 84 | 85 | 86 | /** 87 | * Lists 88 | */ 89 | ul, ol { 90 | margin-left: $spacing-unit; 91 | } 92 | 93 | li { 94 | > ul, 95 | > ol { 96 | margin-bottom: 0; 97 | } 98 | } 99 | 100 | 101 | 102 | /** 103 | * Headings 104 | */ 105 | h1, h2, h3, h4, h5, h6 { 106 | color: $heading-color; 107 | font-weight: 500; 108 | } 109 | 110 | 111 | 112 | /** 113 | * Links 114 | */ 115 | a { 116 | color: $link-base-color; 117 | text-decoration: none; 118 | 119 | &:visited { 120 | color: $link-visited-color; 121 | } 122 | 123 | &:hover { 124 | color: $link-hover-color; 125 | text-decoration: underline $brand-color; 126 | text-underline-offset: 3px; 127 | } 128 | 129 | .social-media-list &:hover { 130 | text-decoration: none; 131 | 132 | .username { 133 | text-decoration: underline; 134 | } 135 | } 136 | } 137 | 138 | 139 | /** 140 | * Blockquotes 141 | */ 142 | blockquote { 143 | color: $brand-color; 144 | border-left: 4px solid $border-color-01; 145 | padding-left: $spacing-unit * .5; 146 | @include relative-font-size(1.05); 147 | font-style: italic; 148 | 149 | > :last-child { 150 | margin-bottom: 0; 151 | } 152 | 153 | i, em { 154 | font-style: normal; 155 | } 156 | } 157 | 158 | 159 | 160 | /** 161 | * Code formatting 162 | */ 163 | pre, 164 | code { 165 | font-family: $code-font-family; 166 | background-color: $code-background-color; 167 | 168 | @include media-query($on-palm) { 169 | font-family: monospace; 170 | } 171 | } 172 | 173 | pre { 174 | padding: 8px 12px; 175 | font-size: 15px; 176 | line-height: 1.4; 177 | color: $heading-color; 178 | overflow-x: auto; 179 | 180 | > code { 181 | display: inline-block; 182 | width: 100%; 183 | } 184 | } 185 | 186 | div.highlight, figure.highlight { 187 | @extend %vertical-rhythm; 188 | border: 1px solid $border-color-01; 189 | border-radius: 3px; 190 | pre { margin: 0 } 191 | table, tbody, th, tr, td { 192 | margin: 0; 193 | padding: 0; 194 | border: 0 195 | } 196 | .lineno, .gl { text-align: right } 197 | } 198 | 199 | figure.highlight { 200 | table { margin: -8px -12px -14px } 201 | td.gutter { border-right: 1px solid $border-color-01 } 202 | td.code { width: 100% } 203 | } 204 | 205 | code.highlighter-rouge { 206 | padding: 1px 5px; 207 | font-size: 14px; 208 | border: 1px solid $border-color-01; 209 | border-radius: 3px; 210 | } 211 | 212 | 213 | 214 | /** 215 | * Wrapper 216 | */ 217 | .wrapper { 218 | max-width: $content-width; 219 | margin: 0 auto; 220 | padding: 0 $spacing-unit; 221 | @extend %clearfix; 222 | 223 | @media screen and (max-width: $on-medium) { 224 | padding-right: $spacing-unit * 0.6; 225 | padding-left: $spacing-unit * 0.6; 226 | } 227 | } 228 | 229 | 230 | 231 | /** 232 | * Clearfix 233 | */ 234 | %clearfix:after { 235 | content: ""; 236 | display: table; 237 | clear: both; 238 | } 239 | 240 | 241 | 242 | /** 243 | * Icons 244 | */ 245 | 246 | .orange { 247 | color: #f66a0a; 248 | } 249 | 250 | .grey { 251 | color: #828282; 252 | } 253 | 254 | .svg-icon { 255 | width: 1.25em; 256 | height: 1.25em; 257 | display: inline-block; 258 | fill: currentColor; 259 | vertical-align: text-bottom; 260 | overflow: visible; 261 | } 262 | 263 | 264 | /** 265 | * Tables 266 | */ 267 | table { 268 | margin-bottom: $spacing-unit; 269 | width: 100%; 270 | text-align: $table-text-align; 271 | color: $table-text-color; 272 | border-collapse: collapse; 273 | border: 1px solid $table-border-color; 274 | tr { 275 | &:nth-child(even) { 276 | background-color: $table-zebra-color; 277 | } 278 | } 279 | th, td { 280 | padding: ($spacing-unit * 33.3333333333 * .01) ($spacing-unit * .5); 281 | } 282 | th { 283 | background-color: $table-header-bg-color; 284 | border: 1px solid $table-header-border; 285 | } 286 | td { 287 | border: 1px solid $table-border-color; 288 | } 289 | 290 | @include media-query($on-laptop) { 291 | display: block; 292 | overflow-x: auto; 293 | -webkit-overflow-scrolling: touch; 294 | -ms-overflow-style: -ms-autohiding-scrollbar; 295 | } 296 | } 297 | -------------------------------------------------------------------------------- /_sass/minima/_layout.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Site header 3 | */ 4 | .site-header { 5 | position: relative; 6 | width: 100%; 7 | min-height: $spacing-unit * 1.865; 8 | line-height: $base-line-height * $base-font-size * 2.25; 9 | background-color: $background-color; 10 | border-top: 5px solid $border-color-03; 11 | border-bottom: 1px solid $border-color-01; 12 | } 13 | 14 | .site-title { 15 | @include relative-font-size(1.625); 16 | font-weight: 300; 17 | letter-spacing: -1px; 18 | margin-bottom: 0; 19 | float: left; 20 | 21 | @include media-query($on-palm) { 22 | padding-right: 45px; 23 | } 24 | 25 | &, 26 | &:visited { 27 | color: $site-title-color; 28 | } 29 | } 30 | 31 | .site-nav { 32 | float: right; 33 | border: none; 34 | background-color: inherit; 35 | 36 | label[for="nav-trigger"], #nav-trigger { 37 | display: none; 38 | } 39 | 40 | .nav-item { 41 | color: $text-color; 42 | &:not(:last-child) { 43 | margin-right: $spacing-unit * 0.5; 44 | } 45 | } 46 | 47 | @include media-query($on-medium) { 48 | position: absolute; 49 | top: 9px; 50 | right: $spacing-unit * 0.6; 51 | background-color: $background-color; 52 | border: 1px solid $border-color-01; 53 | border-radius: 5px; 54 | text-align: right; 55 | 56 | label[for="nav-trigger"] { 57 | display: block; 58 | float: right; 59 | width: 36px; 60 | height: 36px; 61 | cursor: pointer; 62 | } 63 | 64 | .menu-icon { 65 | float: right; 66 | width: 36px; 67 | height: 26px; 68 | line-height: 0; 69 | padding-top: 18px; 70 | text-align: center; 71 | 72 | &::before { 73 | font-family: "Font Awesome 6 Free"; 74 | font-weight: 900; 75 | } 76 | 77 | > svg path { 78 | fill: $border-color-03; 79 | } 80 | } 81 | 82 | #nav-trigger { 83 | ~ label[for=nav-trigger] .menu-icon { 84 | &::before { 85 | content: "\f0c9"; 86 | font-size: 1.25em; 87 | } 88 | } 89 | ~ .nav-items { 90 | clear: both; 91 | display: none 92 | } 93 | &:checked { 94 | ~ label[for=nav-trigger] .menu-icon { 95 | &::before { 96 | content: "\f00d"; 97 | font-size: 1.5em; 98 | } 99 | } 100 | ~ .nav-items { 101 | display: block; 102 | padding-bottom: 5px; 103 | .nav-item { 104 | margin-left: 20px; 105 | padding: 5px 10px; 106 | } 107 | } 108 | } 109 | } 110 | 111 | .nav-item { 112 | display: block; 113 | padding: 5px 0; 114 | color: $text-color; 115 | line-height: $base-line-height; 116 | } 117 | } 118 | } 119 | 120 | 121 | 122 | /** 123 | * Site footer 124 | */ 125 | .site-footer { 126 | border-top: 1px solid $border-color-01; 127 | padding: $spacing-unit 0; 128 | } 129 | 130 | .footer-heading { 131 | @include relative-font-size(1.125); 132 | margin-bottom: $spacing-unit * .5; 133 | } 134 | 135 | .feed-subscribe .svg-icon { 136 | padding: 5px 5px 2px 0 137 | } 138 | 139 | .contact-list, 140 | .social-media-list { 141 | list-style: none; 142 | margin-left: 0; 143 | } 144 | 145 | .footer-col-wrapper, 146 | .social-links { 147 | @include relative-font-size(0.9375); 148 | color: $brand-color-dimmed; 149 | } 150 | 151 | .footer-col { 152 | margin-bottom: $spacing-unit * .5; 153 | } 154 | 155 | .footer-col-1, 156 | .footer-col-2 { 157 | width: calc(50% - (#{$spacing-unit} / 2)); 158 | } 159 | 160 | .footer-col-3 { 161 | width: calc(100% - (#{$spacing-unit} / 2)); 162 | } 163 | 164 | @media screen and (min-width: $on-large) { 165 | .footer-col-1 { 166 | width: calc(35% - (#{$spacing-unit} / 2)); 167 | } 168 | 169 | .footer-col-2 { 170 | width: calc(20% - (#{$spacing-unit} / 2)); 171 | } 172 | 173 | .footer-col-3 { 174 | width: calc(45% - (#{$spacing-unit} / 2)); 175 | } 176 | } 177 | 178 | @media screen and (min-width: $on-medium) { 179 | .footer-col-wrapper { 180 | display: flex 181 | } 182 | 183 | .footer-col { 184 | width: calc(100% - (#{$spacing-unit} / 2)); 185 | padding: 0 ($spacing-unit * .5); 186 | 187 | &:first-child { 188 | padding-right: $spacing-unit * .5; 189 | padding-left: 0; 190 | } 191 | 192 | &:last-child { 193 | padding-right: 0; 194 | padding-left: $spacing-unit * .5; 195 | } 196 | } 197 | } 198 | 199 | 200 | 201 | /** 202 | * Page content 203 | */ 204 | .page-content { 205 | padding: $spacing-unit 0; 206 | flex: 1 0 auto; 207 | } 208 | 209 | .page-heading { 210 | @include relative-font-size(2); 211 | } 212 | 213 | .post-list-heading { 214 | @include relative-font-size(1.75); 215 | } 216 | 217 | .post-list { 218 | margin-left: 0; 219 | list-style: none; 220 | 221 | > li { 222 | margin-bottom: $spacing-unit; 223 | } 224 | } 225 | 226 | .post-meta { 227 | font-size: $small-font-size; 228 | color: $brand-color-dimmed; 229 | } 230 | 231 | .post-link { 232 | display: block; 233 | @include relative-font-size(1.5); 234 | } 235 | 236 | 237 | 238 | /** 239 | * Posts 240 | */ 241 | .post-header { 242 | margin-bottom: $spacing-unit; 243 | padding-bottom: 18px; 244 | text-align: center; 245 | border-bottom: 1px solid $border-color-01; 246 | } 247 | 248 | .post-meta { 249 | .bullet-divider { padding-inline: 15px } 250 | .meta-label { font-weight: 600 } 251 | 252 | .force-inline { 253 | display: inline; 254 | &::before { 255 | content: "•"; 256 | padding-inline: 5px; 257 | } 258 | } 259 | .post-authors { margin-top: 3px } 260 | } 261 | 262 | .post-title, 263 | .post-content h1 { 264 | margin-bottom: 10px; 265 | @include relative-font-size(2.625); 266 | font-weight: $base-font-weight; 267 | letter-spacing: -1px; 268 | line-height: 1.15; 269 | 270 | @media screen and (min-width: $on-large) { 271 | @include relative-font-size(2.625); 272 | } 273 | } 274 | 275 | .post-content { 276 | margin-bottom: $spacing-unit; 277 | 278 | h1, h2, h3, h4, h5, h6 { margin-top: $spacing-unit } 279 | 280 | h2 { 281 | @include relative-font-size(1.75); 282 | 283 | @media screen and (min-width: $on-large) { 284 | @include relative-font-size(2); 285 | } 286 | } 287 | 288 | h3 { 289 | @include relative-font-size(1.375); 290 | 291 | @media screen and (min-width: $on-large) { 292 | @include relative-font-size(1.625); 293 | } 294 | } 295 | 296 | h4 { 297 | @include relative-font-size(1.25); 298 | } 299 | 300 | h5 { 301 | @include relative-font-size(1.125); 302 | } 303 | h6 { 304 | @include relative-font-size(1.0625); 305 | } 306 | } 307 | 308 | .comments-disabled-message { 309 | text-align: center; 310 | font-weight: 300; 311 | } 312 | 313 | .social-media-list { 314 | display: table; 315 | margin: 0 auto; 316 | li { 317 | float: left; 318 | min-width: 45px; 319 | min-height: 45px; 320 | text-align: center; 321 | margin: 5px 10px 5px 0; 322 | &:last-of-type { margin-right: 0 } 323 | a { 324 | display: block; 325 | padding: 10px 12px; 326 | border: 1px solid $border-color-01; 327 | &:hover { border-color: $border-color-02 } 328 | } 329 | } 330 | } 331 | 332 | 333 | 334 | /** 335 | * Pagination navbar 336 | */ 337 | .pagination { 338 | display: table; 339 | margin: 0 auto; 340 | list-style-type: none; 341 | li { 342 | float: left; 343 | margin: 0 3px; 344 | min-width: 45px; 345 | min-height: 45px; 346 | text-align: center; 347 | a { 348 | display: block; 349 | text-decoration: none; 350 | border: 1px solid $border-color-01; 351 | &:hover { border-color: $border-color-02 } 352 | } 353 | a, div { 354 | min-width: 41px; 355 | padding: 10px 12px; 356 | text-align: center; 357 | box-sizing: border-box; 358 | } 359 | div { 360 | border: 1px solid transparent; 361 | &.pager-edge { 362 | color: $border-color-01; 363 | border: 1px dashed; 364 | } 365 | &.current-page { 366 | font-weight: bold; 367 | } 368 | } 369 | } 370 | } 371 | 372 | 373 | 374 | /** 375 | * Task-lists 376 | */ 377 | 378 | .task-list { 379 | margin-left: 0; 380 | padding-left: $spacing-unit * 0.6; 381 | } 382 | 383 | .task-list-item { 384 | list-style-type: none; 385 | &-checkbox { 386 | position: relative; 387 | margin-right: $spacing-unit * 0.3; 388 | margin-left: -$spacing-unit * 0.5; 389 | appearance: none; 390 | border: 8px solid $border-color-01; 391 | vertical-align: text-top; 392 | z-index: -1; 393 | &::after { 394 | position: absolute; 395 | top: -8px; 396 | left: -3px; 397 | width: 4px; 398 | height: 10px; 399 | content: ""; 400 | border: solid transparent; 401 | border-width: 0 2px 2px 0; 402 | transform: rotate(45deg); 403 | } 404 | &:checked::after { border-color: $border-color-03 } 405 | } 406 | } 407 | 408 | 409 | 410 | /** 411 | * Grid helpers 412 | */ 413 | @media screen and (min-width: $on-large) { 414 | .one-half { 415 | width: calc(50% - (#{$spacing-unit} / 2)); 416 | } 417 | } 418 | -------------------------------------------------------------------------------- /_sass/minima/custom-styles.scss: -------------------------------------------------------------------------------- 1 | // Placeholder to allow defining custom styles that override everything else. 2 | // (Use `_sass/minima/custom-variables.scss` to override variable defaults) 3 | -------------------------------------------------------------------------------- /_sass/minima/custom-variables.scss: -------------------------------------------------------------------------------- 1 | // Placeholder to allow overriding predefined variables smoothly. 2 | -------------------------------------------------------------------------------- /_sass/minima/initialize.scss: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | // Define defaults for each variable. 4 | 5 | $base-font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Segoe UI Emoji", "Segoe UI Symbol", "Apple Color Emoji", Roboto, Helvetica, Arial, sans-serif !default; 6 | $code-font-family: "Menlo", "Inconsolata", "Consolas", "Roboto Mono", "Ubuntu Mono", "Liberation Mono", "Courier New", monospace; 7 | $base-font-size: 16px !default; 8 | $base-font-weight: 400 !default; 9 | $small-font-size: $base-font-size * 0.875 !default; 10 | $base-line-height: 1.5 !default; 11 | 12 | $spacing-unit: 30px !default; 13 | 14 | $table-text-align: left !default; 15 | 16 | // Width of the content area 17 | $content-width: 800px !default; 18 | 19 | $on-palm: 600px !default; 20 | $on-laptop: 800px !default; 21 | 22 | $on-medium: $on-palm !default; 23 | $on-large: $on-laptop !default; 24 | 25 | // Use media queries like this: 26 | // @include media-query($on-palm) { 27 | // .wrapper { 28 | // padding-right: $spacing-unit / 2; 29 | // padding-left: $spacing-unit / 2; 30 | // } 31 | // } 32 | // Notice the following mixin uses max-width, in a deprecated, desktop-first 33 | // approach, whereas media queries used elsewhere now use min-width. 34 | @mixin media-query($device) { 35 | @media screen and (max-width: $device) { 36 | @content; 37 | } 38 | } 39 | 40 | @mixin relative-font-size($ratio) { 41 | font-size: #{$ratio}rem; 42 | } 43 | 44 | // Import pre-styling-overrides hook and style-partials. 45 | @import 46 | "minima/custom-variables", // Hook to override predefined variables. 47 | "minima/base", // Defines element resets. 48 | "minima/layout", // Defines structure and style based on CSS selectors. 49 | "minima/custom-styles" // Hook to override existing styles. 50 | ; 51 | -------------------------------------------------------------------------------- /_sass/minima/skins/auto.scss: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | // Default color scheme settings 4 | // These are overridden in classic.css and dark.scss 5 | 6 | $color-scheme-auto: true !default; 7 | $color-scheme-dark: false !default; 8 | 9 | 10 | // Light mode 11 | // ---------- 12 | 13 | $lm-brand-color: #818181 !default; 14 | $lm-brand-color-light: lighten($lm-brand-color, 40%) !default; 15 | $lm-brand-color-dimmed: darken($lm-brand-color, 11%) !default; 16 | $lm-brand-color-dark: darken($lm-brand-color, 25%) !default; 17 | 18 | $lm-site-title-color: $lm-brand-color-dark !default; 19 | 20 | $lm-heading-color: #111111 !default; 21 | $lm-text-color: $lm-brand-color-dark !default; 22 | $lm-background-color: #fdfdfd !default; 23 | $lm-code-background-color: #f6f8fa !default; 24 | 25 | $lm-link-base-color: #1e69d8 !default; 26 | $lm-link-visited-color: darken($lm-link-base-color, 15%) !default; 27 | $lm-link-hover-color: $lm-text-color !default; 28 | 29 | $lm-border-color-01: $lm-brand-color-light !default; 30 | $lm-border-color-02: lighten($lm-brand-color, 35%) !default; 31 | $lm-border-color-03: $lm-brand-color-dark !default; 32 | 33 | $lm-table-text-color: lighten($lm-heading-color, 18%) !default; 34 | $lm-table-zebra-color: lighten($lm-brand-color, 46%) !default; 35 | $lm-table-header-bg-color: lighten($lm-brand-color, 43%) !default; 36 | $lm-table-header-border: lighten($lm-brand-color, 37%) !default; 37 | $lm-table-border-color: $lm-border-color-01 !default; 38 | 39 | 40 | // Syntax highlighting styles should be adjusted appropriately for every "skin" 41 | // ---------------------------------------------------------------------------- 42 | 43 | @mixin lm-highlight { 44 | .highlight { 45 | .err { color: #e3d2d2; background-color: #a61717 } // Error 46 | 47 | .c { color: #9c9996 } // Comment 48 | .cm { color: #9c9996 } // Comment.Multiline 49 | .cp { color: #9c9996 } // Comment.Preproc 50 | .c1 { color: #9c9996 } // Comment.Single 51 | .cs { color: #9c9996; font-style: italic } // Comment.Special 52 | 53 | .gd { color: #e25050 } // Generic.Deleted 54 | .gd .x { color: #e25050 } // Generic.Deleted.Specific 55 | .ge { font-style: italic } // Generic.Emph 56 | .gh { color: #999999 } // Generic.Heading 57 | .gi { color: #3f993f } // Generic.Inserted 58 | .gi .x { color: #3f993f } // Generic.Inserted.Specific 59 | .go { color: #888888 } // Generic.Output 60 | .gp { color: #555555 } // Generic.Prompt 61 | .gr { color: #aa0000 } // Generic.Error 62 | .gs { font-weight: bold } // Generic.Strong 63 | .gt { color: #aa0000 } // Generic.Traceback 64 | .gu { color: #aaaaaa } // Generic.Subheading 65 | 66 | .k { color: #cf222e } // Keyword 67 | .kc { color: #cf222e } // Keyword.Constant 68 | .kd { color: #cf222e } // Keyword.Declaration 69 | .kp { color: #cf222e } // Keyword.Pseudo 70 | .kr { color: #cf222e } // Keyword.Reserved 71 | .kt { color: #445588 } // Keyword.Type 72 | 73 | .n { color: #111111 } 74 | .na { color: #097e39 } // Name.Attribute 75 | .nb { color: #cf222e } // Name.Builtin 76 | .bp { color: #999999 } // Name.Builtin.Pseudo 77 | .nc { color: #097e39 } // Name.Class 78 | .ne { color: #990000 } // Name.Exception 79 | .nf { color: #2c7d74 } // Name.Function 80 | .ni { color: #097e39 } // Name.Entity 81 | .nn { color: #097e39 } // Name.Namespace 82 | .no { color: #a61154 } // Name.Constant 83 | .nt { color: #b81e63 } // Name.Tag 84 | .nv { color: #752a75 } // Name.Variable 85 | .vc { color: #752a75 } // Name.Variable.Class 86 | .vg { color: #752a75 } // Name.Variable.Global 87 | .vi { color: #752a75 } // Name.Variable.Instance 88 | 89 | .o { color: #0842a0 } // Operator 90 | .ow { color: #0842a0 } // Operator.Word 91 | 92 | .m { color: #005a99 } // Literal.Number 93 | .mf { color: #005a99 } // Literal.Number.Float 94 | .mh { color: #005a99 } // Literal.Number.Hex 95 | .mi { color: #005a99 } // Literal.Number.Integer 96 | .il { color: #005a99 } // Literal.Number.Integer.Long 97 | .mo { color: #005a99 } // Literal.Number.Oct 98 | 99 | .s { color: #914d08 } // Literal.String 100 | .s1 { color: #914d08 } // Literal.String.Single 101 | .s2 { color: #914d08 } // Literal.String.Double 102 | .sb { color: #914d08 } // Literal.String.Backtick 103 | .sc { color: #914d08 } // Literal.String.Char 104 | .sd { color: #914d08 } // Literal.String.Doc 105 | .se { color: #914d08 } // Literal.String.Escape 106 | .sh { color: #914d08 } // Literal.String.Heredoc 107 | .si { color: #914d08 } // Literal.String.Interpol 108 | .sr { color: #009926 } // Literal.String.Regex 109 | .ss { color: #0842a0 } // Literal.String.Symbol 110 | .sx { color: #914d08 } // Literal.String.Other 111 | 112 | .w { color: #bbbbbb } // Text.Whitespace 113 | 114 | .lineno, .gl { color: #9c9996 } // Line Number 115 | .hll { background-color: #ffffcc } // Marked-lines 116 | } 117 | } 118 | 119 | 120 | // Dark mode 121 | // --------- 122 | 123 | $dm-brand-color: #999999 !default; 124 | $dm-brand-color-light: lighten($dm-brand-color, 5%) !default; 125 | $dm-brand-color-dimmed: darken($dm-brand-color, 8%) !default; 126 | $dm-brand-color-dark: darken($dm-brand-color, 43%) !default; 127 | 128 | $dm-site-title-color: $dm-brand-color-light !default; 129 | 130 | $dm-heading-color: #bbbbbb !default; 131 | $dm-text-color: darken($dm-heading-color, 15%) !default; 132 | $dm-background-color: #181818 !default; 133 | $dm-code-background-color: #222222 !default; 134 | 135 | $dm-link-base-color: #5691cd !default; 136 | $dm-link-visited-color: #80bbff !default; 137 | $dm-link-hover-color: $dm-text-color !default; 138 | 139 | $dm-border-color-01: $dm-brand-color-dark !default; 140 | $dm-border-color-02: $dm-brand-color-light !default; 141 | $dm-border-color-03: $dm-brand-color !default; 142 | 143 | $dm-table-text-color: $dm-text-color !default; 144 | $dm-table-zebra-color: lighten($dm-background-color, 4%) !default; 145 | $dm-table-header-bg-color: lighten($dm-background-color, 10%) !default; 146 | $dm-table-header-border: lighten($dm-background-color, 15%) !default; 147 | $dm-table-border-color: $dm-border-color-01 !default; 148 | 149 | 150 | // Syntax highlighting styles should be adjusted appropriately for every "skin" 151 | // List of tokens: https://github.com/rouge-ruby/rouge/wiki/List-of-tokens 152 | // Some colors come from Material Theme Darker: 153 | // https://github.com/material-theme/vsc-material-theme/blob/master/scripts/generator/settings/specific/darker-hc.ts 154 | // https://github.com/material-theme/vsc-material-theme/blob/master/scripts/generator/color-set.ts 155 | // ---------------------------------------------------------------------------- 156 | 157 | @mixin dm-highlight { 158 | .highlight { 159 | .err { color: #e3d2d2; background-color: #8c2121 } // Error 160 | 161 | .c { color: #8a8a8a } // Comment 162 | .c1 { color: #8a8a8a } // Comment.Single 163 | .cm { color: #8a8a8a } // Comment.Multiline 164 | .cp { color: #8a8a8a } // Comment.Preproc 165 | .cs { color: #8a8a8a; font-style: italic } // Comment.Special 166 | 167 | .gd { color: #d85a5a } // Generic.Deleted 168 | .gd .x { color: #d85a5a } // Generic.Deleted.Specific 169 | .ge { font-style: italic } // Generic.Emph 170 | .gh { color: #999999 } // Generic.Heading 171 | .gi { color: #4ec64e } // Generic.Inserted 172 | .gi .x { color: #4ec64e } // Generic.Inserted.Specific 173 | .go { color: #888888 } // Generic.Output 174 | .gp { color: #555555 } // Generic.Prompt 175 | .gr { color: #f07178 } // Generic.Error 176 | .gs { font-weight: bold } // Generic.Strong 177 | .gt { color: #f07178 } // Generic.Traceback 178 | .gu { color: #aaaaaa } // Generic.Subheading 179 | 180 | .k { color: #d85a7b } // Keyword 181 | .kc { color: #d85a7b } // Keyword.Constant 182 | .kd { color: #d85a7b } // Keyword.Declaration 183 | .kp { color: #d85a7b } // Keyword.Pseudo 184 | .kr { color: #d85a7b } // Keyword.Reserved 185 | .kt { color: #ffcb6b } // Keyword.Type 186 | 187 | .n { color: #c7d1d8 } 188 | .na { color: #11a69f } // Name.Attribute 189 | .nb { color: #d85a7b } // Name.Builtin 190 | .bp { color: #999999 } // Name.Builtin.Pseudo 191 | .nc { color: #11a69f } // Name.Class 192 | .ne { color: #990000 } // Name.Exception 193 | .nf { color: #5ab780 } // Name.Function 194 | .ni { color: #11a69f } // Name.Entity 195 | .nn { color: #11a69f } // Name.Namespace 196 | .no { color: #9d99e6 } // Name.Constant 197 | .nt { color: #de3581 } // Name.Tag 198 | .nv { color: #9680b1 } // Name.Variable 199 | .vc { color: #9680b1 } // Name.Variable.Class 200 | .vg { color: #9680b1 } // Name.Variable.Global 201 | .vi { color: #9680b1 } // Name.Variable.Instance 202 | 203 | .o { color: #bcd890 } // Operator 204 | .ow { color: #bcd890 } // Operator.Word 205 | 206 | .m { color: #9d99e6 } // Literal.Number 207 | .mf { color: #9d99e6 } // Literal.Number.Float 208 | .mh { color: #9d99e6 } // Literal.Number.Hex 209 | .mi { color: #9d99e6 } // Literal.Number.Integer 210 | .il { color: #9d99e6 } // Literal.Number.Integer.Long 211 | .mo { color: #9d99e6 } // Literal.Number.Oct 212 | 213 | .s { color: #baa94a } // Literal.String 214 | .s1 { color: #baa94a } // Literal.String.Single 215 | .s2 { color: #baa94a } // Literal.String.Double 216 | .sb { color: #baa94a } // Literal.String.Backtick 217 | .sc { color: #baa94a } // Literal.String.Char 218 | .sd { color: #baa94a } // Literal.String.Doc 219 | .se { color: #baa94a } // Literal.String.Escape 220 | .sh { color: #baa94a } // Literal.String.Heredoc 221 | .si { color: #baa94a } // Literal.String.Interpol 222 | .sr { color: #009926 } // Literal.String.Regex 223 | .ss { color: #3c90f5 } // Literal.String.Symbol 224 | .sx { color: #baa94a } // Literal.String.Other 225 | 226 | .w { color: #eeffff } // Text.Whitespace 227 | 228 | .lineno, .gl { color: #8a8a8a } // Line Number 229 | .hll { background-color: #373730 } // Marked-lines 230 | } 231 | } 232 | 233 | 234 | // Mode selection 235 | // -------------- 236 | 237 | 238 | // Classic skin (always light mode) 239 | // Assign outside of the if construct to establish global variable scope 240 | 241 | $brand-color: $lm-brand-color; 242 | $brand-color-light: $lm-brand-color-light; 243 | $brand-color-dimmed: $lm-brand-color-dimmed; 244 | $brand-color-dark: $lm-brand-color-dark; 245 | 246 | $site-title-color: $lm-site-title-color; 247 | 248 | $heading-color: $lm-heading-color; 249 | $text-color: $lm-text-color; 250 | $background-color: $lm-background-color; 251 | $code-background-color: $lm-code-background-color; 252 | 253 | $link-base-color: $lm-link-base-color; 254 | $link-visited-color: $lm-link-visited-color; 255 | $link-hover-color: $lm-link-hover-color; 256 | 257 | $border-color-01: $lm-border-color-01; 258 | $border-color-02: $lm-border-color-02; 259 | $border-color-03: $lm-border-color-03; 260 | 261 | $table-text-color: $lm-table-text-color; 262 | $table-zebra-color: $lm-table-zebra-color; 263 | $table-header-bg-color: $lm-table-header-bg-color; 264 | $table-header-border: $lm-table-header-border; 265 | $table-border-color: $lm-table-border-color; 266 | 267 | 268 | @if $color-scheme-auto { 269 | 270 | // Auto mode 271 | 272 | :root { 273 | --minima-brand-color: #{$lm-brand-color}; 274 | --minima-brand-color-light: #{$lm-brand-color-light}; 275 | --minima-brand-color-dimmed: #{$lm-brand-color-dimmed}; 276 | --minima-brand-color-dark: #{$lm-brand-color-dark}; 277 | 278 | --minima-site-title-color: #{$lm-site-title-color}; 279 | 280 | --minima-heading-color: #{$lm-heading-color}; 281 | --minima-text-color: #{$lm-text-color}; 282 | --minima-background-color: #{$lm-background-color}; 283 | --minima-code-background-color: #{$lm-code-background-color}; 284 | 285 | --minima-link-base-color: #{$lm-link-base-color}; 286 | --minima-link-visited-color: #{$lm-link-visited-color}; 287 | --minima-link-hover-color: #{$lm-link-hover-color}; 288 | 289 | --minima-border-color-01: #{$lm-border-color-01}; 290 | --minima-border-color-02: #{$lm-border-color-02}; 291 | --minima-border-color-03: #{$lm-border-color-03}; 292 | 293 | --minima-table-text-color: #{$lm-table-text-color}; 294 | --minima-table-zebra-color: #{$lm-table-zebra-color}; 295 | --minima-table-header-bg-color: #{$lm-table-header-bg-color}; 296 | --minima-table-header-border: #{$lm-table-header-border}; 297 | --minima-table-border-color: #{$lm-table-border-color}; 298 | } 299 | 300 | @include lm-highlight; 301 | 302 | @media (prefers-color-scheme: dark) { 303 | :root { 304 | --minima-brand-color: #{$dm-brand-color}; 305 | --minima-brand-color-light: #{$dm-brand-color-light}; 306 | --minima-brand-color-dimmed: #{$dm-brand-color-dimmed}; 307 | --minima-brand-color-dark: #{$dm-brand-color-dark}; 308 | 309 | --minima-site-title-color: #{$dm-site-title-color}; 310 | 311 | --minima-heading-color: #{$dm-heading-color}; 312 | --minima-text-color: #{$dm-text-color}; 313 | --minima-background-color: #{$dm-background-color}; 314 | --minima-code-background-color: #{$dm-code-background-color}; 315 | 316 | --minima-link-base-color: #{$dm-link-base-color}; 317 | --minima-link-visited-color: #{$dm-link-visited-color}; 318 | --minima-link-hover-color: #{$dm-link-hover-color}; 319 | 320 | --minima-border-color-01: #{$dm-border-color-01}; 321 | --minima-border-color-02: #{$dm-border-color-02}; 322 | --minima-border-color-03: #{$dm-border-color-03}; 323 | 324 | --minima-table-text-color: #{$dm-table-text-color}; 325 | --minima-table-zebra-color: #{$dm-table-zebra-color}; 326 | --minima-table-header-bg-color: #{$dm-table-header-bg-color}; 327 | --minima-table-header-border: #{$dm-table-header-border}; 328 | --minima-table-border-color: #{$dm-table-border-color}; 329 | } 330 | 331 | @include dm-highlight; 332 | } 333 | 334 | $brand-color: var(--minima-brand-color); 335 | $brand-color-light: var(--minima-brand-color-light); 336 | $brand-color-dimmed: var(--minima-brand-color-dimmed); 337 | $brand-color-dark: var(--minima-brand-color-dark); 338 | 339 | $site-title-color: var(--minima-site-title-color); 340 | 341 | $heading-color: var(--minima-heading-color); 342 | $text-color: var(--minima-text-color); 343 | $background-color: var(--minima-background-color); 344 | $code-background-color: var(--minima-code-background-color); 345 | 346 | $link-base-color: var(--minima-link-base-color); 347 | $link-visited-color: var(--minima-link-visited-color); 348 | $link-hover-color: var(--minima-link-hover-color); 349 | 350 | $border-color-01: var(--minima-border-color-01); 351 | $border-color-02: var(--minima-border-color-02); 352 | $border-color-03: var(--minima-border-color-03); 353 | 354 | $table-text-color: var(--minima-table-text-color); 355 | $table-zebra-color: var(--minima-table-zebra-color); 356 | $table-header-bg-color: var(--minima-table-header-bg-color); 357 | $table-header-border: var(--minima-table-header-border); 358 | $table-border-color: var(--minima-table-border-color); 359 | 360 | 361 | } @else if $color-scheme-dark { 362 | 363 | // Dark skin (always dark mode) 364 | 365 | $brand-color: $dm-brand-color; 366 | $brand-color-light: $dm-brand-color-light; 367 | $brand-color-dimmed: $dm-brand-color-dimmed; 368 | $brand-color-dark: $dm-brand-color-dark; 369 | 370 | $site-title-color: $dm-site-title-color; 371 | 372 | $heading-color: $dm-heading-color; 373 | $text-color: $dm-text-color; 374 | $background-color: $dm-background-color; 375 | $code-background-color: $dm-code-background-color; 376 | 377 | $link-base-color: $dm-link-base-color; 378 | $link-visited-color: $dm-link-visited-color; 379 | $link-hover-color: $dm-link-hover-color; 380 | 381 | $border-color-01: $dm-border-color-01; 382 | $border-color-02: $dm-border-color-02; 383 | $border-color-03: $dm-border-color-03; 384 | 385 | $table-text-color: $dm-table-text-color; 386 | $table-zebra-color: $dm-table-zebra-color; 387 | $table-header-bg-color: $dm-table-header-bg-color; 388 | $table-header-border: $dm-table-header-border; 389 | $table-border-color: $dm-table-border-color; 390 | 391 | @include dm-highlight; 392 | 393 | 394 | } @else { 395 | 396 | // Classic skin syntax highlighting 397 | @include lm-highlight; 398 | 399 | } 400 | -------------------------------------------------------------------------------- /_sass/minima/skins/classic.scss: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | $color-scheme-auto: false; 4 | $color-scheme-dark: false; 5 | @import "minima/skins/auto"; 6 | -------------------------------------------------------------------------------- /_sass/minima/skins/dark.scss: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | $color-scheme-auto: false; 4 | $color-scheme-dark: true; 5 | @import "minima/skins/auto"; 6 | -------------------------------------------------------------------------------- /_sass/minima/skins/solarized-dark.scss: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | $sol-is-auto: false; 4 | $sol-is-dark: true; 5 | @import "minima/skins/solarized"; 6 | -------------------------------------------------------------------------------- /_sass/minima/skins/solarized-light.scss: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | $sol-is-auto: false; 4 | @import "minima/skins/solarized"; 5 | -------------------------------------------------------------------------------- /_sass/minima/skins/solarized.scss: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | // Solarized skin 4 | // ============== 5 | // Created by Sander Voerman using the Solarized 6 | // color scheme by Ethan Schoonover . 7 | 8 | // This style sheet implements three options for the minima.skin setting: 9 | // "solarized-light" for light mode, "solarized-dark" for dark mode, and 10 | // "solarized" for light or dark mode depending on user preference. 11 | $sol-is-auto: true !default; 12 | $sol-is-dark: false !default; 13 | 14 | 15 | // Color scheme 16 | // ------------ 17 | // The inline comments show the canonical L*a*b values for each color. 18 | // 19 | // Some colors were altered from the canonical scheme to comply with 20 | // WCAG-contrast criteria between foreground and background colors. 21 | 22 | $sol-base03: #002b36; // 15 -12 -12 23 | $sol-base02: #073642; // 20 -12 -12 24 | $sol-base01: #586e75; // 45 -07 -07 25 | $sol-base00: #4e626a; // original hex: #657b83 ; L*a*b: 50 -07 -07 26 | $sol-base0: #91a0a1; // original hex: #839496 ; L*a*b: 60 -06 -03 27 | $sol-base1: #93a1a1; // 65 -05 -02 28 | $sol-base2: #eee8d5; // 92 -00 10 29 | $sol-base3: #fdf6e3; // 97 00 10 30 | $sol-yellow: #b58900; // 60 10 65 31 | $sol-orange: #cb4b16; // 50 50 55 32 | $sol-red: #dc322f; // 50 65 45 33 | $sol-magenta: #d33682; // 50 65 -05 34 | $sol-violet: #6c71c4; // 50 15 -45 35 | $sol-blue: #268bd2; // 55 -10 -45 36 | $sol-cyan: #2aa198; // 60 -35 -05 37 | $sol-green: #859900; // 60 -20 65 38 | 39 | // Non-canonical; Derived to comply with WCAG-contrast criterion. 40 | $sol-light-blue: #469edd; 41 | $sol-light-blue2: #64a5ce; 42 | $sol-dark-blue: #2072ac; 43 | $sol-dark-blue2: #376a8b; 44 | 45 | // Mixed colors 46 | // ------------ 47 | // While not part of the original Solarized base tones, these derived tones 48 | // are meant to replicate the visual style of the classic skin. They should 49 | // not be used in cases where sufficiently contrasting colors are needed. 50 | 51 | $sol-light-mix1: mix($sol-base1, $sol-base3); 52 | $sol-light-mix2: mix($sol-blue, $sol-base00); 53 | $sol-light-mix3: mix($sol-base2, $sol-base3); 54 | $sol-light-mix4: #e8e3d4; // custom mixture of `$sol-base1` and `$sol-base3`. 55 | $sol-dark-mix1: mix($sol-base01, $sol-base03); 56 | $sol-dark-mix2: mix($sol-blue, $sol-base0); 57 | $sol-dark-mix3: mix($sol-base02, $sol-base03); 58 | $sol-dark-mix4: #193843; // custom mixture of `$sol-base01` and `$sol-base03`. 59 | 60 | // Mode selection 61 | // -------------- 62 | 63 | $sol-mono3: $sol-base3; 64 | $sol-mono2: $sol-base2; 65 | $sol-mono1: $sol-base1; 66 | $sol-mono00: $sol-base00; 67 | $sol-mono01: $sol-base01; 68 | $sol-mix1: $sol-light-mix1; 69 | $sol-mix2: $sol-light-mix2; 70 | $sol-mix3: $sol-light-mix3; 71 | $sol-mix4: $sol-light-mix4; 72 | 73 | $sol-mono1-dimmed: darken($sol-base1, 20%); 74 | $sol-link-color: $sol-dark-blue; 75 | $sol-link-visited: $sol-dark-blue2; 76 | 77 | $sol-mark-line-bgcolor: #ffffcc; 78 | 79 | @if $sol-is-dark { 80 | $sol-mono3: $sol-base03; 81 | $sol-mono2: $sol-base02; 82 | $sol-mono1: $sol-base01; 83 | $sol-mono00: $sol-base0; 84 | $sol-mono01: $sol-base1; 85 | $sol-mix1: $sol-dark-mix1; 86 | $sol-mix2: $sol-dark-mix2; 87 | $sol-mix3: $sol-dark-mix3; 88 | $sol-mix4: $sol-dark-mix4; 89 | 90 | $sol-mono1-dimmed: lighten($sol-base01, 16%); 91 | $sol-link-color: $sol-light-blue; 92 | $sol-link-visited: $sol-light-blue2; 93 | 94 | $sol-mark-line-bgcolor: #164145; 95 | } 96 | 97 | @if $sol-is-auto { 98 | :root { 99 | --solarized-mono3: #{$sol-base3}; 100 | --solarized-mono2: #{$sol-base2}; 101 | --solarized-mono1: #{$sol-base1}; 102 | --solarized-mono00: #{$sol-base00}; 103 | --solarized-mono01: #{$sol-base01}; 104 | --solarized-mix1: #{$sol-light-mix1}; 105 | --solarized-mix2: #{$sol-light-mix2}; 106 | --solarized-mix3: #{$sol-light-mix3}; 107 | --solarized-mix4: #{$sol-light-mix4}; 108 | 109 | --solarized-mono1-dimmed: #{darken($sol-base1, 20%)}; 110 | --solarized-link-color: #{$sol-dark-blue}; 111 | --solarized-link-visited: #{$sol-dark-blue2}; 112 | 113 | --solarized-mark-line-bg-color: #ffffcc; 114 | } 115 | 116 | @media (prefers-color-scheme: dark) { 117 | :root { 118 | --solarized-mono3: #{$sol-base03}; 119 | --solarized-mono2: #{$sol-base02}; 120 | --solarized-mono1: #{$sol-base01}; 121 | --solarized-mono00: #{$sol-base0}; 122 | --solarized-mono01: #{$sol-base1}; 123 | --solarized-mix1: #{$sol-dark-mix1}; 124 | --solarized-mix2: #{$sol-dark-mix2}; 125 | --solarized-mix3: #{$sol-dark-mix3}; 126 | --solarized-mix4: #{$sol-dark-mix4}; 127 | 128 | --solarized-mono1-dimmed: #{lighten($sol-base01, 16%)}; 129 | --solarized-link-color: #{$sol-light-blue}; 130 | --solarized-link-visited: #{$sol-light-blue2}; 131 | 132 | --solarized-mark-line-bg-color: #164145; 133 | } 134 | } 135 | 136 | $sol-mono3: var(--solarized-mono3); 137 | $sol-mono2: var(--solarized-mono2); 138 | $sol-mono1: var(--solarized-mono1); 139 | $sol-mono00: var(--solarized-mono00); 140 | $sol-mono01: var(--solarized-mono01); 141 | $sol-mix1: var(--solarized-mix1); 142 | $sol-mix2: var(--solarized-mix2); 143 | $sol-mix3: var(--solarized-mix3); 144 | $sol-mix4: var(--solarized-mix4); 145 | 146 | $sol-mono1-dimmed: var(--solarized-mono1-dimmed); 147 | $sol-link-color: var(--solarized-link-color); 148 | $sol-link-visited: var(--solarized-link-visited); 149 | 150 | $sol-mark-line-bgcolor: var(--solarized-mark-line-bg-color); 151 | } 152 | 153 | 154 | // Minima color variables 155 | // ---------------------- 156 | 157 | $brand-color: $sol-mono1 !default; 158 | $brand-color-light: $sol-mix4 !default; 159 | $brand-color-dimmed: $sol-mono1-dimmed !default; 160 | $brand-color-dark: $sol-mono00 !default; 161 | 162 | $site-title-color: $sol-mono00 !default; 163 | 164 | $heading-color: $sol-mono01 !default; 165 | $text-color: $sol-mono00 !default; 166 | $background-color: $sol-mono3 !default; 167 | $code-background-color: $sol-mix3 !default; 168 | 169 | $link-base-color: $sol-link-color !default; 170 | $link-visited-color: $sol-link-visited !default; 171 | $link-hover-color: $sol-mono00 !default; 172 | 173 | $border-color-01: $brand-color-light !default; 174 | $border-color-02: $sol-mono1 !default; 175 | $border-color-03: $sol-mono00 !default; 176 | 177 | $table-text-color: $sol-mono00 !default; 178 | $table-zebra-color: $sol-mix3 !default; 179 | $table-header-bg-color: $sol-mono2 !default; 180 | $table-header-border: $sol-mix1 !default; 181 | $table-border-color: $sol-mix1 !default; 182 | 183 | 184 | // Syntax highlighting styles 185 | // -------------------------- 186 | 187 | .highlight { 188 | .err { color: #fefeec; background-color: $sol-red } // Error 189 | 190 | .c { color: $sol-mono1 } // Comment 191 | .c1 { color: $sol-mono1 } // Comment.Single 192 | .cm { color: $sol-mono1 } // Comment.Multiline 193 | .cp { color: $sol-mono1 } // Comment.Preproc 194 | .cs { color: $sol-mono1; font-style: italic } // Comment.Special 195 | 196 | .gd { color: $sol-red } // Generic.Deleted 197 | .gd .x { color: $sol-red } // Generic.Deleted.Specific 198 | .ge { color: $sol-mono00; font-style: italic } // Generic.Emph 199 | .gh { color: $sol-mono1 } // Generic.Heading 200 | .gi { color: $sol-green } // Generic.Inserted 201 | .gi .x { color: $sol-green } // Generic.Inserted.Specific 202 | .go { color: $sol-mono00 } // Generic.Output 203 | .gp { color: $sol-mono00 } // Generic.Prompt 204 | .gr { color: $sol-red } // Generic.Error 205 | .gs { color: $sol-mono01; font-weight: bold } // Generic.Strong 206 | .gt { color: $sol-red } // Generic.Traceback 207 | .gu { color: $sol-mono1 } // Generic.Subheading 208 | 209 | .k { color: $sol-orange } // Keyword 210 | .kc { color: $sol-orange } // Keyword.Constant 211 | .kd { color: $sol-orange } // Keyword.Declaration 212 | .kp { color: $sol-orange } // Keyword.Pseudo 213 | .kr { color: $sol-orange } // Keyword.Reserved 214 | .kt { color: $sol-violet } // Keyword.Type 215 | 216 | .na { color: $sol-cyan } // Name.Attribute 217 | .nb { color: $sol-orange } // Name.Builtin 218 | .bp { color: $sol-blue } // Name.Builtin.Pseudo 219 | .nc { color: $sol-violet } // Name.Class 220 | .ne { color: $sol-violet } // Name.Exception 221 | .nf { color: $sol-blue } // Name.Function 222 | .ni { color: $sol-violet } // Name.Entity 223 | .nn { color: $sol-violet } // Name.Namespace 224 | .no { color: $sol-violet } // Name.Constant 225 | .nt { color: $sol-orange } // Name.Tag 226 | .nv { color: $sol-cyan } // Name.Variable 227 | .vc { color: $sol-cyan } // Name.Variable.Class 228 | .vg { color: $sol-cyan } // Name.Variable.Global 229 | .vi { color: $sol-cyan } // Name.Variable.Instance 230 | 231 | .o { color: $sol-green } // Operator 232 | .ow { color: $sol-green } // Operator.Word 233 | 234 | .m { color: $sol-violet } // Literal.Number 235 | .mf { color: $sol-violet } // Literal.Number.Float 236 | .mh { color: $sol-violet } // Literal.Number.Hex 237 | .mi { color: $sol-violet } // Literal.Number.Integer 238 | .il { color: $sol-violet } // Literal.Number.Integer.Long 239 | .mo { color: $sol-violet } // Literal.Number.Oct 240 | 241 | .s { color: $sol-magenta } // Literal.String 242 | .s1 { color: $sol-magenta } // Literal.String.Single 243 | .s2 { color: $sol-magenta } // Literal.String.Double 244 | .sb { color: $sol-magenta } // Literal.String.Backtick 245 | .sc { color: $sol-magenta } // Literal.String.Char 246 | .sd { color: $sol-magenta } // Literal.String.Doc 247 | .se { color: $sol-magenta } // Literal.String.Escape 248 | .sh { color: $sol-magenta } // Literal.String.Heredoc 249 | .si { color: $sol-magenta } // Literal.String.Interpol 250 | .sr { color: $sol-green } // Literal.String.Regex 251 | .ss { color: $sol-magenta } // Literal.String.Symbol 252 | .sx { color: $sol-magenta } // Literal.String.Other 253 | 254 | .w { color: $sol-mono1 } // Text.Whitespace 255 | 256 | .lineno, .gl { color: $sol-mono1 } // Line Number 257 | .hll { background-color: $sol-mark-line-bgcolor } // Marked-lines 258 | } 259 | -------------------------------------------------------------------------------- /about.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | title: About 4 | permalink: /about/ 5 | --- 6 | 7 | This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at [jekyllrb.com](https://jekyllrb.com/) 8 | 9 | You can find the source code for Minima at GitHub: 10 | [jekyll][jekyll-organization] / 11 | [minima](https://github.com/jekyll/minima) 12 | 13 | You can find the source code for Jekyll at GitHub: 14 | [jekyll][jekyll-organization] / 15 | [jekyll](https://github.com/jekyll/jekyll) 16 | 17 | 18 | [jekyll-organization]: https://github.com/jekyll 19 | -------------------------------------------------------------------------------- /assets/css/style.scss: -------------------------------------------------------------------------------- 1 | --- 2 | # Only the main Sass file needs front matter (the dashes are enough) 3 | --- 4 | 5 | @import 6 | "minima/skins/{{ site.minima.skin | default: 'classic' }}", 7 | "minima/initialize"; 8 | -------------------------------------------------------------------------------- /index.md: -------------------------------------------------------------------------------- 1 | --- 2 | # 3 | # By default, content added below the "---" mark will appear in the home page 4 | # between the top bar and the list of recent posts. 5 | # To change the home page layout, edit the _layouts/home.html file. 6 | # See: https://jekyllrb.com/docs/themes/#overriding-theme-defaults 7 | # 8 | layout: home 9 | --- 10 | -------------------------------------------------------------------------------- /minima.gemspec: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | Gem::Specification.new do |spec| 4 | spec.name = "minima" 5 | spec.version = "3.0.0.dev" 6 | spec.authors = ["Joel Glovier"] 7 | spec.email = ["jglovier@github.com"] 8 | 9 | spec.summary = "A beautiful, minimal theme for Jekyll." 10 | spec.homepage = "https://github.com/jekyll/minima" 11 | spec.license = "MIT" 12 | 13 | spec.metadata["plugin_type"] = "theme" 14 | 15 | spec.files = `git ls-files -z`.split("\x0").select do |f| 16 | f.match(%r!^(assets|_(includes|layouts|sass)/|(LICENSE|README)((\.(txt|md|markdown)|$)))!i) 17 | end 18 | 19 | spec.add_runtime_dependency "jekyll", ">= 3.5", "< 5.0" 20 | spec.add_runtime_dependency "jekyll-feed", "~> 0.9" 21 | spec.add_runtime_dependency "jekyll-seo-tag", "~> 2.1" 22 | 23 | spec.add_development_dependency "bundler" 24 | end 25 | -------------------------------------------------------------------------------- /readme_banner.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jekyll/minima/0b7ca6bbdb782a646f8e7b78b1a29fd5032ad4d3/screenshot.png -------------------------------------------------------------------------------- /script/bootstrap: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | gem install bundler 6 | bundle install 7 | -------------------------------------------------------------------------------- /script/build: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | echo "Building the example site..." 6 | bundle exec jekyll build --config _config_theme-dev.yml 7 | -------------------------------------------------------------------------------- /script/cibuild: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | script/build 6 | 7 | if test -e "./_site/index.html";then 8 | echo "It builds!" 9 | rm -Rf _site 10 | else 11 | echo "Huh. That's odd. The example site doesn't seem to build." 12 | exit 1 13 | fi 14 | 15 | gem build minima.gemspec 16 | -------------------------------------------------------------------------------- /script/server: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | bundle exec jekyll serve --config _config_theme-dev.yml $@ 4 | --------------------------------------------------------------------------------