From 81c235d27a79e989d1bcf87778b4b6dea20d6d2d Mon Sep 17 00:00:00 2001 From: James Munns Date: Sat, 25 Aug 2018 21:43:29 -0700 Subject: [PATCH 1/5] Vendor the "Hyde" theme --- themes/hyde/.gitignore | 2 + themes/hyde/LICENSE | 21 ++ themes/hyde/README.md | 67 ++++ themes/hyde/config.toml | 12 + themes/hyde/content/some-article.md | 14 + themes/hyde/content/some-other-article.md | 14 + themes/hyde/sass/hyde.scss | 250 +++++++++++++ themes/hyde/sass/poole.scss | 415 ++++++++++++++++++++++ themes/hyde/sass/print.scss | 19 + themes/hyde/screenshot.png | Bin 0 -> 59296 bytes themes/hyde/static/.gitkeep | 0 themes/hyde/templates/index.html | 70 ++++ themes/hyde/templates/page.html | 10 + themes/hyde/theme.toml | 22 ++ 14 files changed, 916 insertions(+) create mode 100644 themes/hyde/.gitignore create mode 100644 themes/hyde/LICENSE create mode 100644 themes/hyde/README.md create mode 100644 themes/hyde/config.toml create mode 100644 themes/hyde/content/some-article.md create mode 100644 themes/hyde/content/some-other-article.md create mode 100644 themes/hyde/sass/hyde.scss create mode 100644 themes/hyde/sass/poole.scss create mode 100644 themes/hyde/sass/print.scss create mode 100644 themes/hyde/screenshot.png create mode 100644 themes/hyde/static/.gitkeep create mode 100644 themes/hyde/templates/index.html create mode 100644 themes/hyde/templates/page.html create mode 100644 themes/hyde/theme.toml diff --git a/themes/hyde/.gitignore b/themes/hyde/.gitignore new file mode 100644 index 0000000..4139cd5 --- /dev/null +++ b/themes/hyde/.gitignore @@ -0,0 +1,2 @@ +.idea/ +public diff --git a/themes/hyde/LICENSE b/themes/hyde/LICENSE new file mode 100644 index 0000000..93ab851 --- /dev/null +++ b/themes/hyde/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Vincent Prouillet + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/themes/hyde/README.md b/themes/hyde/README.md new file mode 100644 index 0000000..469718f --- /dev/null +++ b/themes/hyde/README.md @@ -0,0 +1,67 @@ +# hyde +Hyde is a brazen two-column [Gutenberg](https://github.com/Keats/gutenberg) based on the Jekyll theme of the same name that pairs a prominent sidebar with uncomplicated content. + +![Hyde screenshot](https://f.cloud.github.com/assets/98681/1831228/42af6c6a-7384-11e3-98fb-e0b923ee0468.png) + + +## Contents + +- [Installation](#installation) +- [Options](#options) + - [Sidebar menu](#sidebar-menu) + - [Sticky sidebar content](#sticky-sidebar-content) + - [Themes](#themes) + - [Reverse layout](#reverse-layout) + +## Installation +First download this theme to your `themes` directory: + +```bash +$ cd themes +$ git clone https://github.com/Keats/hyde.git +``` +and then enable it in your `config.toml`: + +```toml +theme = "hyde" +``` + +## Options + +### Sidebar menu +Set a field in `extra` with a key of `hyde_links`: +```toml +[extra] +hyde_links = [ + {url = "https://google.com", name = "Google.com"}, + {url = "https://google.fr", name = "Google.fr"}, +] +``` +Each link needs to have a `url` and a `name`. + +### Sticky sidebar content +By default Hyde ships with a sidebar that affixes it's content to the bottom of the sidebar. You can optionally disable this by setting `hyde_sticky` to false in your `config.toml`. + +### Themes +Hyde ships with eight optional themes based on the [base16 color scheme](https://github.com/chriskempson/base16). Apply a theme to change the color scheme (mostly applies to sidebar and links). + +![Hyde in red](https://f.cloud.github.com/assets/98681/1831229/42b0b354-7384-11e3-8462-31b8df193fe5.png) + +There are eight themes available at this time. + +![Hyde theme classes](https://f.cloud.github.com/assets/98681/1817044/e5b0ec06-6f68-11e3-83d7-acd1942797a1.png) + +To use a theme, set the `hyde_theme` field in `config.toml` to any of the themes name: + +```toml +[extra] +hyde_theme = "theme-base-08" +``` + +To create your own theme, look to the Themes section of [included CSS file](https://github.com/poole/hyde/blob/master/public/css/hyde.css). Copy any existing theme (they're only a few lines of CSS), rename it, and change the provided colors. + +### Reverse layout + +![Hyde with reverse layout](https://f.cloud.github.com/assets/98681/1831230/42b0d3ac-7384-11e3-8d54-2065afd03f9e.png) + +Hyde's page orientation can be reversed by setting `hyde_reverse` to `true` in the `config.toml`. diff --git a/themes/hyde/config.toml b/themes/hyde/config.toml new file mode 100644 index 0000000..6e24e7e --- /dev/null +++ b/themes/hyde/config.toml @@ -0,0 +1,12 @@ +base_url = "https://gutenberg-hyde.netlify.com" +compile_sass = true +title = "Hyde theme" +description = "A clean blogging theme" + +[extra] +hyde_sticky = true +hyde_reverse = false +hyde_theme = "" +hyde_links = [ + {url = "https://google.com", name = "About"}, +] diff --git a/themes/hyde/content/some-article.md b/themes/hyde/content/some-article.md new file mode 100644 index 0000000..c3c8aee --- /dev/null +++ b/themes/hyde/content/some-article.md @@ -0,0 +1,14 @@ ++++ +title = "What is Gutenberg" +date = 2017-09-24 ++++ + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc eu feugiat sapien. Aenean ligula nunc, laoreet id sem in, interdum bibendum felis. Donec vel dui neque. Praesent ac sem ut justo volutpat rutrum a imperdiet tellus. Nam lobortis massa non hendrerit hendrerit. Vivamus porttitor dignissim turpis, eget aliquam urna tincidunt non. Aliquam et fringilla turpis. Nullam eros est, eleifend in ornare sed, hendrerit eget est. Aliquam tellus felis, suscipit vitae ex vel, fringilla tempus massa. Nulla facilisi. Pellentesque lobortis consequat lectus. Maecenas ac libero elit. + +Ut luctus dolor ut tortor hendrerit, sed hendrerit augue scelerisque. Suspendisse quis sodales dui, at tempus ante. Nulla at tempor metus. Aliquam vitae rutrum diam. Curabitur iaculis massa dui, quis varius nulla finibus a. Praesent eu blandit justo. Suspendisse pharetra, arcu in rhoncus rutrum, magna magna viverra erat, eget vestibulum enim tellus id dui. Nunc vel dui et arcu posuere maximus. Mauris quam quam, bibendum sed libero nec, tempus hendrerit arcu. Suspendisse sed gravida orci. Fusce tempor arcu ac est pretium porttitor. Aenean consequat risus venenatis sem aliquam, at sollicitudin nulla semper. Aenean bibendum cursus hendrerit. Nulla congue urna nec finibus bibendum. Donec porta tincidunt ligula non ultricies. + +Sed vulputate tristique elit, eget pharetra elit sodales sed. Proin dignissim ipsum lorem, at porta eros malesuada sed. Proin tristique eros eu quam ornare, suscipit luctus mauris lobortis. Phasellus ut placerat enim. Donec egestas faucibus maximus. Nam quis efficitur eros. Cras tincidunt, lacus ac pretium porta, dui dolor varius elit, eget laoreet justo justo vitae metus. Morbi eget nisi ut ex scelerisque lobortis ut in lorem. Vestibulum et lorem quis ipsum feugiat varius. Mauris nec nulla viverra nisi porttitor efficitur. Morbi vel purus eleifend, finibus erat non, placerat ipsum. Mauris et augue vel nisi volutpat aliquam. Curabitur malesuada tortor est, at condimentum neque eleifend in. + +Morbi id ornare lacus. Suspendisse ultrices rutrum posuere. Nullam porttitor libero quis ligula finibus semper. Mauris iaculis magna et nisl tristique, eget maximus ex feugiat. Nam eu felis leo. Quisque ultrices varius purus in molestie. Duis non accumsan ligula. Vivamus dignissim malesuada metus, vel hendrerit tellus viverra id. Curabitur posuere, mauris vitae dignissim dictum, velit mi condimentum lorem, nec varius velit arcu a mi. In dolor sapien, condimentum sed aliquam at, dignissim id purus. Cras lorem leo, vulputate ac ante sed, molestie tempus lectus. Curabitur efficitur libero quam, rhoncus faucibus libero pharetra nec. Curabitur lobortis ullamcorper nisl eu imperdiet. Duis porttitor interdum magna, ac eleifend orci consequat vitae. Aliquam augue felis, faucibus vel blandit sed, maximus non turpis. + +Quisque viverra a eros id auctor. Proin id nibh ut nisl dignissim pellentesque et ac mi. Nullam mattis urna quis consequat bibendum. Donec pretium dui elit, a semper purus tristique et. Mauris euismod nisl eu vehicula facilisis. Maecenas facilisis non massa non scelerisque. Integer malesuada cursus erat eu viverra. Duis ligula mi, eleifend vel justo id, laoreet porttitor ex. Etiam ultricies lacus lorem, sed aliquam nulla blandit in. Maecenas vel facilisis neque, vitae fringilla eros. In justo nibh, pellentesque sed faucibus nec, varius sit amet risus. diff --git a/themes/hyde/content/some-other-article.md b/themes/hyde/content/some-other-article.md new file mode 100644 index 0000000..290dbaa --- /dev/null +++ b/themes/hyde/content/some-other-article.md @@ -0,0 +1,14 @@ ++++ +title = "A first theme for Gutenberg" +date = 2017-09-25 ++++ + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc eu feugiat sapien. Aenean ligula nunc, laoreet id sem in, interdum bibendum felis. Donec vel dui neque. Praesent ac sem ut justo volutpat rutrum a imperdiet tellus. Nam lobortis massa non hendrerit hendrerit. Vivamus porttitor dignissim turpis, eget aliquam urna tincidunt non. Aliquam et fringilla turpis. Nullam eros est, eleifend in ornare sed, hendrerit eget est. Aliquam tellus felis, suscipit vitae ex vel, fringilla tempus massa. Nulla facilisi. Pellentesque lobortis consequat lectus. Maecenas ac libero elit. + +Ut luctus dolor ut tortor hendrerit, sed hendrerit augue scelerisque. Suspendisse quis sodales dui, at tempus ante. Nulla at tempor metus. Aliquam vitae rutrum diam. Curabitur iaculis massa dui, quis varius nulla finibus a. Praesent eu blandit justo. Suspendisse pharetra, arcu in rhoncus rutrum, magna magna viverra erat, eget vestibulum enim tellus id dui. Nunc vel dui et arcu posuere maximus. Mauris quam quam, bibendum sed libero nec, tempus hendrerit arcu. Suspendisse sed gravida orci. Fusce tempor arcu ac est pretium porttitor. Aenean consequat risus venenatis sem aliquam, at sollicitudin nulla semper. Aenean bibendum cursus hendrerit. Nulla congue urna nec finibus bibendum. Donec porta tincidunt ligula non ultricies. + +Sed vulputate tristique elit, eget pharetra elit sodales sed. Proin dignissim ipsum lorem, at porta eros malesuada sed. Proin tristique eros eu quam ornare, suscipit luctus mauris lobortis. Phasellus ut placerat enim. Donec egestas faucibus maximus. Nam quis efficitur eros. Cras tincidunt, lacus ac pretium porta, dui dolor varius elit, eget laoreet justo justo vitae metus. Morbi eget nisi ut ex scelerisque lobortis ut in lorem. Vestibulum et lorem quis ipsum feugiat varius. Mauris nec nulla viverra nisi porttitor efficitur. Morbi vel purus eleifend, finibus erat non, placerat ipsum. Mauris et augue vel nisi volutpat aliquam. Curabitur malesuada tortor est, at condimentum neque eleifend in. + +Morbi id ornare lacus. Suspendisse ultrices rutrum posuere. Nullam porttitor libero quis ligula finibus semper. Mauris iaculis magna et nisl tristique, eget maximus ex feugiat. Nam eu felis leo. Quisque ultrices varius purus in molestie. Duis non accumsan ligula. Vivamus dignissim malesuada metus, vel hendrerit tellus viverra id. Curabitur posuere, mauris vitae dignissim dictum, velit mi condimentum lorem, nec varius velit arcu a mi. In dolor sapien, condimentum sed aliquam at, dignissim id purus. Cras lorem leo, vulputate ac ante sed, molestie tempus lectus. Curabitur efficitur libero quam, rhoncus faucibus libero pharetra nec. Curabitur lobortis ullamcorper nisl eu imperdiet. Duis porttitor interdum magna, ac eleifend orci consequat vitae. Aliquam augue felis, faucibus vel blandit sed, maximus non turpis. + +Quisque viverra a eros id auctor. Proin id nibh ut nisl dignissim pellentesque et ac mi. Nullam mattis urna quis consequat bibendum. Donec pretium dui elit, a semper purus tristique et. Mauris euismod nisl eu vehicula facilisis. Maecenas facilisis non massa non scelerisque. Integer malesuada cursus erat eu viverra. Duis ligula mi, eleifend vel justo id, laoreet porttitor ex. Etiam ultricies lacus lorem, sed aliquam nulla blandit in. Maecenas vel facilisis neque, vitae fringilla eros. In justo nibh, pellentesque sed faucibus nec, varius sit amet risus. diff --git a/themes/hyde/sass/hyde.scss b/themes/hyde/sass/hyde.scss new file mode 100644 index 0000000..1ddbdda --- /dev/null +++ b/themes/hyde/sass/hyde.scss @@ -0,0 +1,250 @@ +/* + * __ __ + * /\ \ /\ \ + * \ \ \___ __ __ \_\ \ __ + * \ \ _ `\/\ \/\ \ /'_` \ /'__`\ + * \ \ \ \ \ \ \_\ \/\ \_\ \/\ __/ + * \ \_\ \_\/`____ \ \___,_\ \____\ + * \/_/\/_/`/___/> \/__,_ /\/____/ + * /\___/ + * \/__/ + * + * Designed, built, and released under MIT license by @mdo. Learn more at + * https://github.com/poole/hyde. + */ + + +/* + * Contents + * + * Global resets + * Sidebar + * Container + * Reverse layout + * Themes + */ + + +/* + * Global resets + * + * Update the foundational and global aspects of the page. + */ + +html { + font-family: "PT Sans", Helvetica, Arial, sans-serif; +} +@media (min-width: 48em) { + html { + font-size: 16px; + } +} +@media (min-width: 58em) { + html { + font-size: 20px; + } +} + + +/* + * Sidebar + * + * Flexible banner for housing site name, intro, and "footer" content. Starts + * out above content in mobile and later moves to the side with wider viewports. + */ + +.sidebar { + text-align: center; + padding: 2rem 1rem; + color: rgba(255,255,255,.5); + background-color: #202020; +} +@media (min-width: 48em) { + .sidebar { + position: fixed; + top: 0; + left: 0; + bottom: 0; + width: 18rem; + text-align: left; + } +} + +/* Sidebar links */ +.sidebar a { + color: #fff; +} + +/* About section */ +.sidebar-about h1 { + color: #fff; + margin-top: 0; + font-family: "Abril Fatface", serif; + font-size: 3.25rem; +} + +/* Sidebar nav */ +.sidebar-nav { + padding-left: 0; + list-style: none; +} +.sidebar-nav-item { + display: block; +} +a.sidebar-nav-item:hover, +a.sidebar-nav-item:focus { + text-decoration: underline; +} +.sidebar-nav-item.active { + font-weight: bold; +} + +/* Sticky sidebar + * + * Add the `sidebar-sticky` class to the sidebar's container to affix it the + * contents to the bottom of the sidebar in tablets and up. + */ + +@media (min-width: 48em) { + .sidebar-sticky { + position: absolute; + right: 1rem; + bottom: 1rem; + left: 1rem; + } +} + + +/* Container + * + * Align the contents of the site above the proper threshold with some margin-fu + * with a 25%-wide `.sidebar`. + */ + +.content { + padding-top: 4rem; + padding-bottom: 4rem; +} + +@media (min-width: 48em) { + .content { + max-width: 38rem; + margin-left: 20rem; + margin-right: 2rem; + } +} + +@media (min-width: 64em) { + .content { + margin-left: 22rem; + margin-right: 4rem; + } +} + + +/* + * Reverse layout + * + * Flip the orientation of the page by placing the `.sidebar` on the right. + */ + +@media (min-width: 48em) { + .layout-reverse .sidebar { + left: auto; + right: 0; + } + .layout-reverse .content { + margin-left: 2rem; + margin-right: 20rem; + } +} + +@media (min-width: 64em) { + .layout-reverse .content { + margin-left: 4rem; + margin-right: 22rem; + } +} + + + +/* + * Themes + * + * As of v1.1, Hyde includes optional themes to color the sidebar and links + * within blog posts. To use, add the class of your choosing to the `body`. + */ + +/* Base16 (http://chriskempson.github.io/base16/#default) */ + +/* Red */ +.theme-base-08 .sidebar { + background-color: #ac4142; +} +.theme-base-08 .content a, +.theme-base-08 .related-posts li a:hover { + color: #ac4142; +} + +/* Orange */ +.theme-base-09 .sidebar { + background-color: #d28445; +} +.theme-base-09 .content a, +.theme-base-09 .related-posts li a:hover { + color: #d28445; +} + +/* Yellow */ +.theme-base-0a .sidebar { + background-color: #f4bf75; +} +.theme-base-0a .content a, +.theme-base-0a .related-posts li a:hover { + color: #f4bf75; +} + +/* Green */ +.theme-base-0b .sidebar { + background-color: #90a959; +} +.theme-base-0b .content a, +.theme-base-0b .related-posts li a:hover { + color: #90a959; +} + +/* Cyan */ +.theme-base-0c .sidebar { + background-color: #75b5aa; +} +.theme-base-0c .content a, +.theme-base-0c .related-posts li a:hover { + color: #75b5aa; +} + +/* Blue */ +.theme-base-0d .sidebar { + background-color: #6a9fb5; +} +.theme-base-0d .content a, +.theme-base-0d .related-posts li a:hover { + color: #6a9fb5; +} + +/* Magenta */ +.theme-base-0e .sidebar { + background-color: #aa759f; +} +.theme-base-0e .content a, +.theme-base-0e .related-posts li a:hover { + color: #aa759f; +} + +/* Brown */ +.theme-base-0f .sidebar { + background-color: #8f5536; +} +.theme-base-0f .content a, +.theme-base-0f .related-posts li a:hover { + color: #8f5536; +} diff --git a/themes/hyde/sass/poole.scss b/themes/hyde/sass/poole.scss new file mode 100644 index 0000000..c277c14 --- /dev/null +++ b/themes/hyde/sass/poole.scss @@ -0,0 +1,415 @@ +/* + * ___ + * /\_ \ + * _____ ___ ___\//\ \ __ + * /\ '__`\ / __`\ / __`\\ \ \ /'__`\ + * \ \ \_\ \/\ \_\ \/\ \_\ \\_\ \_/\ __/ + * \ \ ,__/\ \____/\ \____//\____\ \____\ + * \ \ \/ \/___/ \/___/ \/____/\/____/ + * \ \_\ + * \/_/ + * + * Designed, built, and released under MIT license by @mdo. Learn more at + * https://github.com/poole/poole. + */ + + +/* + * Contents + * + * Body resets + * Custom type + * Messages + * Container + * Masthead + * Posts and pages + * Footnotes + * Pagination + * Reverse layout + * Themes + */ + + +/* + * Body resets + * + * Update the foundational and global aspects of the page. + */ + +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +html, +body { + margin: 0; + padding: 0; +} + +html { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 16px; + line-height: 1.5; +} +@media (min-width: 38em) { + html { + font-size: 20px; + } +} + +body { + color: #515151; + background-color: #fff; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +/* No `:visited` state is required by default (browsers will use `a`) */ +a { + color: #268bd2; + text-decoration: none; +} +/* `:focus` is linked to `:hover` for basic accessibility */ +a:hover, +a:focus { + text-decoration: underline; +} + +/* Headings */ +h1, h2, h3, h4, h5, h6 { + margin-bottom: .5rem; + font-weight: bold; + line-height: 1.25; + color: #313131; + text-rendering: optimizeLegibility; +} +h1 { + font-size: 2rem; +} +h2 { + margin-top: 1rem; + font-size: 1.5rem; +} +h3 { + margin-top: 1.5rem; + font-size: 1.25rem; +} +h4, h5, h6 { + margin-top: 1rem; + font-size: 1rem; +} + +/* Body text */ +p { + margin-top: 0; + margin-bottom: 1rem; +} + +strong { + color: #303030; +} + + +/* Lists */ +ul, ol, dl { + margin-top: 0; + margin-bottom: 1rem; +} + +dt { + font-weight: bold; +} +dd { + margin-bottom: .5rem; +} + +/* Misc */ +hr { + position: relative; + margin: 1.5rem 0; + border: 0; + border-top: 1px solid #eee; + border-bottom: 1px solid #fff; +} + +abbr { + font-size: 85%; + font-weight: bold; + color: #555; + text-transform: uppercase; +} +abbr[title] { + cursor: help; + border-bottom: 1px dotted #e5e5e5; +} + +/* Code */ +code, +pre { + font-family: Menlo, Monaco, "Courier New", monospace; +} +code { + padding: .25em .5em; + font-size: 85%; + color: #bf616a; + background-color: #f9f9f9; + border-radius: 3px; +} +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + padding: 1rem; + font-size: .8rem; + line-height: 1.4; + overflow-x: scroll; + background-color: #f9f9f9; +} +pre code { + padding: 0; + font-size: 100%; + color: inherit; + background-color: transparent; +} +.highlight { + margin-bottom: 1rem; + border-radius: 4px; +} +.highlight pre { + margin-bottom: 0; +} + +/* Quotes */ +blockquote { + padding: .5rem 1rem; + margin: .8rem 0; + color: #7a7a7a; + border-left: .25rem solid #e5e5e5; +} +blockquote p:last-child { + margin-bottom: 0; +} +@media (min-width: 30em) { + blockquote { + padding-right: 5rem; + padding-left: 1.25rem; + } +} + +img { + display: block; + margin: 0 0 1rem; + border-radius: 5px; + max-width: 100%; +} + +/* Tables */ +table { + margin-bottom: 1rem; + width: 100%; + border: 1px solid #e5e5e5; + border-collapse: collapse; +} +td, +th { + padding: .25rem .5rem; + border: 1px solid #e5e5e5; +} +tbody tr:nth-child(odd) td, +tbody tr:nth-child(odd) th { + background-color: #f9f9f9; +} + + +/* + * Custom type + * + * Extend paragraphs with `.lead` for larger introductory text. + */ + +.lead { + font-size: 1.25rem; + font-weight: 300; +} + + +/* + * Messages + * + * Show alert messages to users. You may add it to single elements like a `

`, + * or to a parent if there are multiple elements to show. + */ + +.message { + margin-bottom: 1rem; + padding: 1rem; + color: #717171; + background-color: #f9f9f9; +} + + +/* + * Container + * + * Center the page content. + */ + +.container { + max-width: 38rem; + padding-left: 1rem; + padding-right: 1rem; + margin-left: auto; + margin-right: auto; +} + + +/* + * Masthead + * + * Super small header above the content for site name and short description. + */ + +.masthead { + padding-top: 1rem; + padding-bottom: 1rem; + margin-bottom: 3rem; +} +.masthead-title { + margin-top: 0; + margin-bottom: 0; + color: #505050; +} +.masthead-title a { + color: #505050; +} +.masthead-title small { + font-size: 75%; + font-weight: 400; + color: #c0c0c0; + letter-spacing: 0; +} + + +/* + * Posts and pages + * + * Each post is wrapped in `.post` and is used on default and post layouts. Each + * page is wrapped in `.page` and is only used on the page layout. + */ + +.page, +.post { + margin-bottom: 4em; +} + +/* Blog post or page title */ +.page-title, +.post-title, +.post-title a { + color: #303030; +} +.page-title, +.post-title { + margin-top: 0; +} + +/* Meta data line below post title */ +.post-date { + display: block; + margin-top: -.5rem; + margin-bottom: 1rem; + color: #9a9a9a; +} + +/* Related posts */ +.related { + padding-top: 2rem; + padding-bottom: 2rem; + border-top: 1px solid #eee; +} +.related-posts { + padding-left: 0; + list-style: none; +} +.related-posts h3 { + margin-top: 0; +} +.related-posts li small { + font-size: 75%; + color: #999; +} +.related-posts li a:hover { + color: #268bd2; + text-decoration: none; +} +.related-posts li a:hover small { + color: inherit; +} + + +/* Footnotes */ +.footnote-definition:first-of-type { + border-top: 1px solid; + padding-top: 1rem; +} +.footnote-definition { + margin-top: 1rem; +} +.footnote-definition sup { + margin-left: -1rem; + float: left; +} + + +/* + * Pagination + * + * Super lightweight (HTML-wise) blog pagination. `span`s are provide for when + * there are no more previous or next posts to show. + */ + +.pagination { + overflow: hidden; /* clearfix */ + margin-left: -1rem; + margin-right: -1rem; + font-family: "PT Sans", Helvetica, Arial, sans-serif; + color: #ccc; + text-align: center; +} + +/* Pagination items can be `span`s or `a`s */ +.pagination-item { + display: block; + padding: 1rem; + border: 1px solid #eee; +} +.pagination-item:first-child { + margin-bottom: -1px; +} + +/* Only provide a hover state for linked pagination items */ +a.pagination-item:hover { + background-color: #f5f5f5; +} + +@media (min-width: 30em) { + .pagination { + margin: 3rem 0; + } + .pagination-item { + float: left; + width: 50%; + } + .pagination-item:first-child { + margin-bottom: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + } + .pagination-item:last-child { + margin-left: -1px; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + } +} diff --git a/themes/hyde/sass/print.scss b/themes/hyde/sass/print.scss new file mode 100644 index 0000000..da8f1df --- /dev/null +++ b/themes/hyde/sass/print.scss @@ -0,0 +1,19 @@ +.sidebar { + display: none !important; +} + +.content { + margin: 0 auto; + width: 100%; + float: none; + display: initial; +} + +.container { + width: 100%; + float: none; + display: initial; + padding-left: 1rem; + padding-right: 1rem; + margin: 0 auto; +} diff --git a/themes/hyde/screenshot.png b/themes/hyde/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..5e218059f2324aa0ac71c960dbffcac8b4342df5 GIT binary patch literal 59296 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

L(<*ZXeZeDkR7iB?49Ud7> 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 + + + + + + + + + {% block title %}{{ config.title }}{% endblock title %} + + + + + + + + {% if config.generate_rss %} + + {% endif %} + + {% block extra_head %} + {% endblock extra_head %} + + + + {% block sidebar %} + + {% endblock sidebar %} + +
+ {% block content %} +
+ {% for page in section.pages | reverse %} +
+

+ + {{ page.title }} + +

+ + +
+ {% endfor %} +
+ {% endblock content %} +
+ + + + diff --git a/themes/hyde/templates/page.html b/themes/hyde/templates/page.html new file mode 100644 index 0000000..35acc97 --- /dev/null +++ b/themes/hyde/templates/page.html @@ -0,0 +1,10 @@ +{% extends "index.html" %} + +{% block content %} +
+

{{ page.title }}

+ + {{ page.content | safe }} +
+{% endblock content %} + diff --git a/themes/hyde/theme.toml b/themes/hyde/theme.toml new file mode 100644 index 0000000..87d35bc --- /dev/null +++ b/themes/hyde/theme.toml @@ -0,0 +1,22 @@ +name = "hyde" +description = "A classic blog theme" +license = "MIT" +homepage = "https://github.com/Keats/gutenberg-hyde" +min_version = "0.4" +demo = "https://gutenberg-hyde.netlify.com" + +[extra] +hyde_sticky = true +hyde_reverse = false +hyde_theme = "" +hyde_links = [ +] + +[author] +name = "Vincent Prouillet" +homepage = "https://vincent.is" + +[original] +author = "mdo" +homepage = "http://markdotto.com/" +repo = "https://www.github.com/mdo/hyde" From d28f135df97b12fb5b5ce4e06839db4d9578a966 Mon Sep 17 00:00:00 2001 From: James Munns Date: Sat, 25 Aug 2018 22:10:18 -0700 Subject: [PATCH 2/5] Update theme based on our needs --- config.toml | 24 +++ content/_index.md | 24 +++ static/ewg-logo-blue-white-on-transparent.svg | 201 ++++++++++++++++++ themes/hyde/templates/index.html | 14 +- 4 files changed, 261 insertions(+), 2 deletions(-) create mode 100644 config.toml create mode 100644 content/_index.md create mode 100644 static/ewg-logo-blue-white-on-transparent.svg diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..9a4ffa9 --- /dev/null +++ b/config.toml @@ -0,0 +1,24 @@ +# The URL the site will be built for +base_url = "https://blog.rust-embedded.org" + +title = "Rust Embedded Working Group" +description = """ +Blog of the Embedded Rust Working Group +""" + +# Whether to automatically compile all Sass files in the sass directory +compile_sass = true + +# Whether to do syntax highlighting +# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Gutenberg +highlight_code = true + +# Whether to build a search index to be used later on by a JavaScript library +build_search_index = true + +theme = "hyde" + +generate_rss = true + +[extra] +# Put all your custom variables here diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 0000000..3eb9347 --- /dev/null +++ b/content/_index.md @@ -0,0 +1,24 @@ ++++ +# Whether to sort by "date", "order", "weight" or "none". More on that below +sort_by = "date" + +# Template to use to render this section page +template = "index.html" + +# How many pages to be displayed per paginated page. +# No pagination will happen if this isn't set or if the value is 0 +paginate_by = 5 + +# If set, will be the path used by paginated page and the page number will be appended after it. +# For example the default would be page/1 +paginate_path = "page" + +# Whether the section pages should be in the search index. This is only used if +# `build_search_index` is set to true in the config +in_search_index = true + +# Whether to render that section homepage or not. +# Useful when the section is only there to organize things but is not meant +# to be used directly +render = true ++++ diff --git a/static/ewg-logo-blue-white-on-transparent.svg b/static/ewg-logo-blue-white-on-transparent.svg new file mode 100644 index 0000000..629cd71 --- /dev/null +++ b/static/ewg-logo-blue-white-on-transparent.svg @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/themes/hyde/templates/index.html b/themes/hyde/templates/index.html index 9deef03..6fd73c8 100644 --- a/themes/hyde/templates/index.html +++ b/themes/hyde/templates/index.html @@ -29,7 +29,9 @@