Move hugo to subdir
3
Dockerfile
Normal file
@ -0,0 +1,3 @@
|
||||
FROM nginx:alpine
|
||||
|
||||
COPY . /usr/share/nginx/html
|
@ -5,6 +5,8 @@ baseurl = "https://grosinger.net/"
|
||||
# Title of your site
|
||||
title = "Tony Grosinger"
|
||||
|
||||
publishDir = "../."
|
||||
|
||||
# Your copyright notice - appears in site footer.
|
||||
# To display a copyright symbol, type `©`.
|
||||
copyright = "© Tony Grosinger 2019"
|
||||
@ -20,7 +22,7 @@ paginate = 10
|
||||
disqusShortname = ""
|
||||
|
||||
# Enable analytics by entering your Google Analytics tracking ID
|
||||
googleAnalytics = ""
|
||||
googleAnalytics = "UA-22479213-1"
|
||||
|
||||
# Get last modified date for content from Git?
|
||||
enableGitInfo = false
|
Before Width: | Height: | Size: 213 KiB After Width: | Height: | Size: 213 KiB |
Before Width: | Height: | Size: 189 KiB After Width: | Height: | Size: 189 KiB |
Before Width: | Height: | Size: 225 KiB After Width: | Height: | Size: 225 KiB |
Before Width: | Height: | Size: 759 KiB After Width: | Height: | Size: 759 KiB |
Before Width: | Height: | Size: 208 KiB After Width: | Height: | Size: 208 KiB |
Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 130 KiB |
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 123 KiB |
20
hugo/themes/minimal-academic/LICENSE
Normal file
@ -0,0 +1,20 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2018 Joshua Hu
|
||||
|
||||
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.
|
52
hugo/themes/minimal-academic/README.md
Normal file
@ -0,0 +1,52 @@
|
||||
# Minimal Academic
|
||||
|
||||
Minimal Academic is a two-column Hugo theme for personal sites. See the live demo [here](https://www.joshuahu.io) and read about my experience [here](https://www.joshuahu.io/blog/first-hugo).
|
||||
|
||||
![Minimal Academic Theme screenshot](https://raw.githubusercontent.com/jhu247/minimal-academic/master/images/screenshot.png)
|
||||
|
||||
This theme is designed to be simple and unobtrusive, featuring a clean color palette and consistent formatting throughout, with an emphasis on a beautiful hero image as the masthead. Google Analytics and Disqus are supported out of the box.
|
||||
|
||||
## Getting started
|
||||
|
||||
I'm assuming you've already installed Hugo and have created a new project. You can follow instructions for that [here](https://gohugo.io/getting-started/installing/).
|
||||
|
||||
1. In the root folder of your Hugo project, run:
|
||||
|
||||
```bash
|
||||
cd themes
|
||||
git clone https://github.com/jhu247/minimal-academic.git
|
||||
```
|
||||
|
||||
2. The `exampleSite` directory contains all of the necessary resources to launch the site. Due to [#3](/../../issues/3), you will need to change the `theme` value to `"../../"`. Run `hugo server` from here and point your browser to `http://localhost:1313/` to test it out.
|
||||
|
||||
3. Copy `config.toml` from `exampleSite` to your project's root folder to use it. Note that you'll need to change the `theme` value to `minimal-academic` for it to work. This is also where you'll change the title of your site, add your own social media links, configure Google Analytics and Disqus, etc.
|
||||
|
||||
4. Upload your own avatar and hero image by replacing `portrait.jpg` and `hero.jpg` in `/static/img/`.
|
||||
|
||||
5. Create some content! Either copy the `.md` files from `exampleSite` as a template or use the [hugo new](https://gohugo.io/commands/hugo_new/) command.
|
||||
|
||||
## Helpful tips
|
||||
|
||||
* Running `hugo server` with the `--watch` and `--verbose` flags makes development much faster and debugging much easier.
|
||||
* Sometimes your browser will cache resources to improve performance, so your changes will not appear. To get around this, on Chrome, control + click the refresh button and it will do a hard fetch of resources.
|
||||
|
||||
## Contributing
|
||||
|
||||
There's still more to do:
|
||||
|
||||
* taxonomies
|
||||
* support for other languages
|
||||
* SCSS with an asset pipeline
|
||||
|
||||
Please feel free to submit an issue or create a pull request!
|
||||
|
||||
## License
|
||||
|
||||
This theme is released under the MIT License. For more information, please read the [license](https://github.com/jhu247/minimal-academic/blob/master/LICENSE).
|
||||
|
||||
## Credits
|
||||
|
||||
* Initial Hugo template used to get started: [Hugo Academic](https://sourcethemes.com/academic/)
|
||||
* Layouts used for inspiration: [Minimal Mistakes](https://mmistakes.github.io/minimal-mistakes/) and [Marco Arment's blog](https://marco.org/)
|
||||
* Avatar photo used in example site: Photo by Philipe Cavalcante on Unsplash
|
||||
* Hero photo used in example site: Photo by Jeremy Bishop on Unsplash
|
9
hugo/themes/minimal-academic/archetypes/blog.md
Normal file
@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "{{ replace .Name "-" " " | title }}"
|
||||
hero_image: "hero.jpg"
|
||||
date: {{ .Date }}
|
||||
description: "Description"
|
||||
draft: true
|
||||
---
|
||||
|
||||
## Header
|
8
hugo/themes/minimal-academic/archetypes/default.md
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
title: "{{ replace .Name "-" " " | title }}"
|
||||
hero_image: "hero.jpg"
|
||||
date: {{ .Date }}
|
||||
draft: true
|
||||
---
|
||||
|
||||
## Header
|
116
hugo/themes/minimal-academic/exampleSite/config.toml
Normal file
@ -0,0 +1,116 @@
|
||||
# The URL of your website.
|
||||
# End your URL with a `/` trailing slash, e.g. `https://example.com/`.
|
||||
baseurl = "https://example.com"
|
||||
|
||||
# Title of your site
|
||||
title = "Minimal Academic"
|
||||
|
||||
# Your copyright notice - appears in site footer.
|
||||
# To display a copyright symbol, type `©`.
|
||||
copyright = "© Joshua Hu 2018"
|
||||
|
||||
theme = "minimal-academic"
|
||||
enableEmoji = true
|
||||
footnotereturnlinkcontents = "<sup>^</sup>"
|
||||
ignoreFiles = ["\\.Rmd$", "\\.Rmarkdown$", "_files$", "_cache$"]
|
||||
#preserveTaxonomyNames = true
|
||||
paginate = 10
|
||||
|
||||
# Enable comments by entering your Disqus shortname
|
||||
disqusShortname = ""
|
||||
|
||||
# Enable analytics by entering your Google Analytics tracking ID
|
||||
googleAnalytics = ""
|
||||
|
||||
# Get last modified date for content from Git?
|
||||
enableGitInfo = false
|
||||
|
||||
[outputs]
|
||||
home = [ "HTML", "CSS", "RSS" ]
|
||||
section = [ "HTML", "RSS" ]
|
||||
|
||||
# Configure BlackFriday Markdown rendering.
|
||||
# See: https://gohugo.io/readfiles/bfconfig/
|
||||
[blackfriday]
|
||||
hrefTargetBlank = true # `true` opens external links in a new tab.
|
||||
fractions = true # `false` disables smart fractions (e.g. 5/12 formatted as a fraction).
|
||||
smartypants = true # `false` disables all smart punctuation substitutions (e.g. smart quotes, dashes, fractions).
|
||||
|
||||
[params]
|
||||
# Your details.
|
||||
name = "Minimal Academic"
|
||||
bio = "A minimally academic theme."
|
||||
|
||||
avatar = "portrait.jpg" # Specify an avatar image (in `static/img/` folder) or delete value to disable avatar.
|
||||
|
||||
location = "San Francisco"
|
||||
|
||||
# Discussion link (e.g. link to a forum, mailing list, or chat).
|
||||
# Uncomment line below to use.
|
||||
# discussion = { name = "Discuss", url = "https://discourse.gohugo.io" }
|
||||
|
||||
# Date and time format (refer to Go's date format: http://fuckinggodateformat.com )
|
||||
# Examples: "Mon, Jan 2, 2006" or "2006-01-02"
|
||||
date_format = "Jan 2, 2006"
|
||||
# Examples: "3:04 pm" or "15:04"
|
||||
time_format = "3:04 PM"
|
||||
|
||||
# Display comment count? Requires commenting to be enabled.
|
||||
comment_count = true
|
||||
|
||||
# Enable native social sharing buttons?
|
||||
sharing = true
|
||||
|
||||
# Privacy pack
|
||||
# Show a cookie consent message to visitors
|
||||
# Anonymize IP in Google Analytics (if enabled)
|
||||
privacy_pack = false
|
||||
|
||||
# Social links
|
||||
# Shown in sidebar, icons from Font Awesome
|
||||
[[params.social]]
|
||||
icon = "instagram"
|
||||
icon_pack = "fa"
|
||||
link = "//instagram.com/jhu247"
|
||||
text = "Instagram"
|
||||
|
||||
[[params.social]]
|
||||
icon = "linkedin"
|
||||
icon_pack = "fa"
|
||||
link = "//linkedin.com/in/joshua-hu-12290a43"
|
||||
text = "LinkedIn"
|
||||
|
||||
[[params.social]]
|
||||
icon = "twitter"
|
||||
icon_pack = "fa"
|
||||
link = "//twitter.com/jhu247"
|
||||
text = "Twitter"
|
||||
|
||||
[[params.social]]
|
||||
icon = "github"
|
||||
icon_pack = "fa"
|
||||
link = "//github.com/jhu247"
|
||||
text = "Github"
|
||||
|
||||
# Header menu links
|
||||
[[params.menu]]
|
||||
link = "/"
|
||||
text = "Home"
|
||||
|
||||
[[params.menu]]
|
||||
link = "/projects"
|
||||
text = "Projects"
|
||||
|
||||
[[params.menu]]
|
||||
link = "/blog"
|
||||
text = "Blog"
|
||||
|
||||
[[params.menu]]
|
||||
link = "/about"
|
||||
text = "About"
|
||||
|
||||
# Taxonomies.
|
||||
# [taxonomies]
|
||||
# tag = "tags"
|
||||
# category = "categories"
|
||||
# publication_type = "publication_types"
|
@ -0,0 +1,4 @@
|
||||
---
|
||||
hero_image: "hero.jpg"
|
||||
|
||||
---
|
@ -0,0 +1,11 @@
|
||||
---
|
||||
title: "About"
|
||||
hero_image: "hero.jpg"
|
||||
nometadata: true
|
||||
notags: true
|
||||
noshare: true
|
||||
nocomments: true
|
||||
---
|
||||
|
||||
<br>
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus auctor, ex sit amet condimentum placerat, neque dolor facilisis purus, in elementum ex urna at ante. Praesent turpis leo, auctor at justo vel, dignissim imperdiet tellus. Vivamus nec orci luctus, pharetra mauris eget, tristique ligula. Integer elit lorem, blandit ut eros et, efficitur aliquet dui. Aenean sed orci lorem. Nulla facilisi. Cras sollicitudin odio eu erat sollicitudin, sit amet volutpat risus condimentum. Praesent blandit vitae magna pellentesque vestibulum. Nam et facilisis lacus. Proin malesuada est at tellus semper, vel porttitor massa malesuada.
|
@ -0,0 +1,4 @@
|
||||
---
|
||||
hero_image: "hero.jpg"
|
||||
|
||||
---
|
@ -0,0 +1,17 @@
|
||||
---
|
||||
title: "This is a blog post"
|
||||
hero_image: "hero.jpg"
|
||||
date: 2018-07-24T17:44:36-07:00
|
||||
description: "This is a blog description."
|
||||
---
|
||||
|
||||
<h2>Lorem Ipsum</h2>
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus auctor, ex sit amet condimentum placerat, neque dolor facilisis purus, in elementum ex urna at ante. Praesent turpis leo, auctor at justo vel, dignissim imperdiet tellus. Vivamus nec orci luctus, pharetra mauris eget, tristique ligula. Integer elit lorem, blandit ut eros et, efficitur aliquet dui. Aenean sed orci lorem. Nulla facilisi. Cras sollicitudin odio eu erat sollicitudin, sit amet volutpat risus condimentum. Praesent blandit vitae magna pellentesque vestibulum. Nam et facilisis lacus. Proin malesuada est at tellus semper, vel porttitor massa malesuada.
|
||||
|
||||
Nulla at quam sit amet lectus interdum blandit. Phasellus dolor velit, ullamcorper id justo vitae, hendrerit dictum elit. Curabitur cursus efficitur ex, in volutpat tortor. Nunc venenatis, mauris nec ultrices vulputate, libero ante volutpat ante, sit amet efficitur metus neque a diam. Nulla facilisi. Nam porta sagittis magna, et congue mi venenatis eu. Duis luctus, nisl sit amet volutpat semper, lorem quam congue tortor, eget finibus justo mi sit amet elit. Sed et nisl quis ante rhoncus vehicula vitae a lectus. Pellentesque mollis eu velit eget sodales.
|
||||
|
||||
Quisque mollis, est a vestibulum dapibus, mauris tellus porta leo, ac faucibus felis dui quis dui. Curabitur sollicitudin congue sem ac faucibus. Suspendisse elementum tristique sagittis. Vivamus egestas lectus neque, et ornare ligula sodales vel. In consectetur ac leo porttitor dignissim. Proin nulla lectus, accumsan nec metus nec, volutpat semper purus. Sed a hendrerit arcu. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nulla porttitor nisi eget ante varius viverra. Praesent eu lectus mi. Pellentesque et rutrum arcu. Mauris justo diam, varius ut posuere ac, porttitor in nisl.
|
||||
|
||||
Mauris convallis neque non metus hendrerit tempor. Ut hendrerit vel urna nec varius. Nunc pretium rhoncus velit, a viverra tellus consectetur lacinia. Donec at consectetur leo. Duis congue tellus et magna facilisis, vel aliquet quam laoreet. Proin id nisl quis mauris faucibus dapibus fermentum aliquam enim. Fusce egestas feugiat pulvinar. Praesent eget dolor ligula.
|
||||
|
||||
Sed volutpat nunc vel sapien faucibus, a luctus diam venenatis. Nulla fringilla justo et purus tincidunt, eget facilisis tellus tincidunt. Curabitur neque nisi, pretium vulputate arcu quis, tempor tincidunt tellus. Donec rhoncus purus at neque tincidunt, eu commodo sem consectetur. Mauris laoreet eu felis sit amet feugiat. Aliquam arcu velit, cursus a diam sed, elementum sodales nisi. In ac luctus purus. Ut in lectus scelerisque, feugiat quam eu, efficitur massa. Aliquam pretium facilisis odio quis rutrum.
|
@ -0,0 +1,17 @@
|
||||
---
|
||||
title: "More filler content"
|
||||
hero_image: "hero.jpg"
|
||||
date: 2018-07-26T17:44:36-07:00
|
||||
description: "Filler description."
|
||||
---
|
||||
|
||||
<h2>Lorem Ipsum</h2>
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus auctor, ex sit amet condimentum placerat, neque dolor facilisis purus, in elementum ex urna at ante. Praesent turpis leo, auctor at justo vel, dignissim imperdiet tellus. Vivamus nec orci luctus, pharetra mauris eget, tristique ligula. Integer elit lorem, blandit ut eros et, efficitur aliquet dui. Aenean sed orci lorem. Nulla facilisi. Cras sollicitudin odio eu erat sollicitudin, sit amet volutpat risus condimentum. Praesent blandit vitae magna pellentesque vestibulum. Nam et facilisis lacus. Proin malesuada est at tellus semper, vel porttitor massa malesuada.
|
||||
|
||||
Nulla at quam sit amet lectus interdum blandit. Phasellus dolor velit, ullamcorper id justo vitae, hendrerit dictum elit. Curabitur cursus efficitur ex, in volutpat tortor. Nunc venenatis, mauris nec ultrices vulputate, libero ante volutpat ante, sit amet efficitur metus neque a diam. Nulla facilisi. Nam porta sagittis magna, et congue mi venenatis eu. Duis luctus, nisl sit amet volutpat semper, lorem quam congue tortor, eget finibus justo mi sit amet elit. Sed et nisl quis ante rhoncus vehicula vitae a lectus. Pellentesque mollis eu velit eget sodales.
|
||||
|
||||
Quisque mollis, est a vestibulum dapibus, mauris tellus porta leo, ac faucibus felis dui quis dui. Curabitur sollicitudin congue sem ac faucibus. Suspendisse elementum tristique sagittis. Vivamus egestas lectus neque, et ornare ligula sodales vel. In consectetur ac leo porttitor dignissim. Proin nulla lectus, accumsan nec metus nec, volutpat semper purus. Sed a hendrerit arcu. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nulla porttitor nisi eget ante varius viverra. Praesent eu lectus mi. Pellentesque et rutrum arcu. Mauris justo diam, varius ut posuere ac, porttitor in nisl.
|
||||
|
||||
Mauris convallis neque non metus hendrerit tempor. Ut hendrerit vel urna nec varius. Nunc pretium rhoncus velit, a viverra tellus consectetur lacinia. Donec at consectetur leo. Duis congue tellus et magna facilisis, vel aliquet quam laoreet. Proin id nisl quis mauris faucibus dapibus fermentum aliquam enim. Fusce egestas feugiat pulvinar. Praesent eget dolor ligula.
|
||||
|
||||
Sed volutpat nunc vel sapien faucibus, a luctus diam venenatis. Nulla fringilla justo et purus tincidunt, eget facilisis tellus tincidunt. Curabitur neque nisi, pretium vulputate arcu quis, tempor tincidunt tellus. Donec rhoncus purus at neque tincidunt, eu commodo sem consectetur. Mauris laoreet eu felis sit amet feugiat. Aliquam arcu velit, cursus a diam sed, elementum sodales nisi. In ac luctus purus. Ut in lectus scelerisque, feugiat quam eu, efficitur massa. Aliquam pretium facilisis odio quis rutrum.
|
@ -0,0 +1,17 @@
|
||||
---
|
||||
title: "Another blog post this is"
|
||||
hero_image: "hero.jpg"
|
||||
date: 2018-07-25T17:44:36-07:00
|
||||
description: "Another blog description this is."
|
||||
---
|
||||
|
||||
<h2>Lorem Ipsum</h2>
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus auctor, ex sit amet condimentum placerat, neque dolor facilisis purus, in elementum ex urna at ante. Praesent turpis leo, auctor at justo vel, dignissim imperdiet tellus. Vivamus nec orci luctus, pharetra mauris eget, tristique ligula. Integer elit lorem, blandit ut eros et, efficitur aliquet dui. Aenean sed orci lorem. Nulla facilisi. Cras sollicitudin odio eu erat sollicitudin, sit amet volutpat risus condimentum. Praesent blandit vitae magna pellentesque vestibulum. Nam et facilisis lacus. Proin malesuada est at tellus semper, vel porttitor massa malesuada.
|
||||
|
||||
Nulla at quam sit amet lectus interdum blandit. Phasellus dolor velit, ullamcorper id justo vitae, hendrerit dictum elit. Curabitur cursus efficitur ex, in volutpat tortor. Nunc venenatis, mauris nec ultrices vulputate, libero ante volutpat ante, sit amet efficitur metus neque a diam. Nulla facilisi. Nam porta sagittis magna, et congue mi venenatis eu. Duis luctus, nisl sit amet volutpat semper, lorem quam congue tortor, eget finibus justo mi sit amet elit. Sed et nisl quis ante rhoncus vehicula vitae a lectus. Pellentesque mollis eu velit eget sodales.
|
||||
|
||||
Quisque mollis, est a vestibulum dapibus, mauris tellus porta leo, ac faucibus felis dui quis dui. Curabitur sollicitudin congue sem ac faucibus. Suspendisse elementum tristique sagittis. Vivamus egestas lectus neque, et ornare ligula sodales vel. In consectetur ac leo porttitor dignissim. Proin nulla lectus, accumsan nec metus nec, volutpat semper purus. Sed a hendrerit arcu. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nulla porttitor nisi eget ante varius viverra. Praesent eu lectus mi. Pellentesque et rutrum arcu. Mauris justo diam, varius ut posuere ac, porttitor in nisl.
|
||||
|
||||
Mauris convallis neque non metus hendrerit tempor. Ut hendrerit vel urna nec varius. Nunc pretium rhoncus velit, a viverra tellus consectetur lacinia. Donec at consectetur leo. Duis congue tellus et magna facilisis, vel aliquet quam laoreet. Proin id nisl quis mauris faucibus dapibus fermentum aliquam enim. Fusce egestas feugiat pulvinar. Praesent eget dolor ligula.
|
||||
|
||||
Sed volutpat nunc vel sapien faucibus, a luctus diam venenatis. Nulla fringilla justo et purus tincidunt, eget facilisis tellus tincidunt. Curabitur neque nisi, pretium vulputate arcu quis, tempor tincidunt tellus. Donec rhoncus purus at neque tincidunt, eu commodo sem consectetur. Mauris laoreet eu felis sit amet feugiat. Aliquam arcu velit, cursus a diam sed, elementum sodales nisi. In ac luctus purus. Ut in lectus scelerisque, feugiat quam eu, efficitur massa. Aliquam pretium facilisis odio quis rutrum.
|
@ -0,0 +1,11 @@
|
||||
---
|
||||
title: "Projects"
|
||||
hero_image: "hero.jpg"
|
||||
nometadata: true
|
||||
notags: true
|
||||
noshare: true
|
||||
nocomments: true
|
||||
---
|
||||
|
||||
<h2>Minimal Academic</h2>
|
||||
This site, written using Hugo and inspired by <a href="https://sourcethemes.com/academic/">Academic</a> and <a href="https://mmistakes.github.io/minimal-mistakes/">Minimal Mistakes</a>.
|
BIN
hugo/themes/minimal-academic/exampleSite/static/img/hero.jpg
Normal file
After Width: | Height: | Size: 368 KiB |
BIN
hugo/themes/minimal-academic/exampleSite/static/img/portrait.jpg
Normal file
After Width: | Height: | Size: 940 KiB |
2
hugo/themes/minimal-academic/i18n/en.toml
Normal file
@ -0,0 +1,2 @@
|
||||
[wordCount]
|
||||
other = "{{ .WordCount }} words"
|
BIN
hugo/themes/minimal-academic/images/screenshot.png
Normal file
After Width: | Height: | Size: 1.4 MiB |
BIN
hugo/themes/minimal-academic/images/tn.png
Normal file
After Width: | Height: | Size: 548 KiB |
21
hugo/themes/minimal-academic/layouts/404.html
Normal file
@ -0,0 +1,21 @@
|
||||
{{ partial "header.html" . }}
|
||||
{{ partial "masthead_hero.html" . }}
|
||||
|
||||
<div id="main" role="main">
|
||||
{{ partial "sidebar.html" . }}
|
||||
<article class="page">
|
||||
<div class="page_container">
|
||||
<section class="page_content">
|
||||
{{ partial "masthead_nav.html" . }}
|
||||
<article class="post" itemscope itemtype="http://schema.org/Article">
|
||||
<div class="post-container">
|
||||
<h1>404 Not Found</h1>
|
||||
</div>
|
||||
</article>
|
||||
</section>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
{{ partial "footer_container.html" . }}
|
||||
{{ partial "footer.html" . }}
|
26
hugo/themes/minimal-academic/layouts/_default/list.html
Normal file
@ -0,0 +1,26 @@
|
||||
{{ partial "header.html" . }}
|
||||
{{ partial "masthead_hero.html" . }}
|
||||
|
||||
{{ with .Title }}<h1>{{ . }}</h1>{{ end }}
|
||||
|
||||
{{ with .Content }}
|
||||
<div class="post-style" itemprop="articleBody">{{ . }}</div>
|
||||
{{ end }}
|
||||
|
||||
{{ $paginator := .Paginate .Data.Pages }}
|
||||
{{ range $paginator.Pages }}
|
||||
<div>
|
||||
<h2><a href="{{ .Permalink }}">{{ .Title }}</a></h2>
|
||||
<div class="post-style">
|
||||
{{ if .Params.summary }}
|
||||
{{ printf "%s" .Params.summary | markdownify }}
|
||||
{{ else if .Truncated }}
|
||||
{{ printf "%s" .Summary | markdownify }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
</div>
|
||||
{{ partial "footer_container.html" . }}
|
||||
{{ partial "footer.html" . }}
|
@ -0,0 +1,7 @@
|
||||
{{ partial "header.html" . }}
|
||||
{{ partial "masthead_hero.html" . }}
|
||||
|
||||
{{ partial "page.html" . }}
|
||||
|
||||
{{ partial "footer_container.html" . }}
|
||||
{{ partial "footer.html" . }}
|
7
hugo/themes/minimal-academic/layouts/about/list.html
Normal file
@ -0,0 +1,7 @@
|
||||
{{ partial "header.html" . }}
|
||||
{{ partial "masthead_hero.html" . }}
|
||||
|
||||
{{ partial "page.html" . }}
|
||||
|
||||
{{ partial "footer_container.html" . }}
|
||||
{{ partial "footer.html" . }}
|
7
hugo/themes/minimal-academic/layouts/blog/list.html
Normal file
@ -0,0 +1,7 @@
|
||||
{{ partial "header.html" . }}
|
||||
{{ partial "masthead_hero.html" . }}
|
||||
|
||||
{{ partial "homepage.html" . }}
|
||||
|
||||
{{ partial "footer_container.html" . }}
|
||||
{{ partial "footer.html" . }}
|
780
hugo/themes/minimal-academic/layouts/index.css
Normal file
@ -0,0 +1,780 @@
|
||||
/* Minimal Academic: a two-column Hugo theme for personal sites inspired by Hugo Academic & Minimal Mistakes */
|
||||
/* Designed by Joshua Hu */
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
html {
|
||||
font-size: 16px;
|
||||
|
||||
box-sizing: border-box;
|
||||
|
||||
background-color: #fff;
|
||||
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
}
|
||||
@media (min-width: 48em) {
|
||||
html {
|
||||
font-size: 17px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 64em) {
|
||||
html {
|
||||
font-size: 18px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 80em) {
|
||||
html {
|
||||
font-size: 19px;
|
||||
}
|
||||
}
|
||||
article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section {
|
||||
display: block;
|
||||
}
|
||||
img {
|
||||
width: auto\9;
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
|
||||
vertical-align: middle;
|
||||
|
||||
-ms-interpolation-mode: bicubic;
|
||||
border: 0;
|
||||
}
|
||||
#map_canvas img, .google-maps img {
|
||||
max-width: none;
|
||||
}
|
||||
button, input, select, textarea {
|
||||
font-size: 100%;
|
||||
|
||||
margin: 0;
|
||||
|
||||
vertical-align: middle;
|
||||
}
|
||||
button, input {
|
||||
line-height: normal;
|
||||
|
||||
overflow: visible;
|
||||
}
|
||||
textarea {
|
||||
overflow: auto;
|
||||
|
||||
vertical-align: top;
|
||||
}
|
||||
html {
|
||||
position: relative;
|
||||
|
||||
min-height: 100%;
|
||||
}
|
||||
body {
|
||||
font-family: "Open Sans";
|
||||
line-height: 1.6;
|
||||
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
||||
color: #000;
|
||||
}
|
||||
body.overflow--hidden {
|
||||
overflow: hidden;
|
||||
}
|
||||
a, a:active, a:visited {
|
||||
color: #05668d;
|
||||
}
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-family: "Merriweather";
|
||||
font-weight: bold;
|
||||
line-height: 1.25;
|
||||
|
||||
margin: 2em 0 .5em;
|
||||
}
|
||||
h1 {
|
||||
font-size: 1.563em;
|
||||
|
||||
margin-top: 0;
|
||||
}
|
||||
h1 a {
|
||||
text-decoration: none;
|
||||
}
|
||||
h2 {
|
||||
font-size: 1.25em;
|
||||
}
|
||||
h3 {
|
||||
font-size: 1em;
|
||||
}
|
||||
h4 {
|
||||
font-size: .75em;
|
||||
}
|
||||
h5 {
|
||||
font-size: .75em;
|
||||
}
|
||||
h6 {
|
||||
font-size: .75em;
|
||||
}
|
||||
small, .small {
|
||||
font-size: .75em;
|
||||
}
|
||||
p {
|
||||
margin-bottom: 1.3em;
|
||||
}
|
||||
u a, ins a {
|
||||
color: inherit;
|
||||
}
|
||||
del a {
|
||||
color: inherit;
|
||||
}
|
||||
p, pre, blockquote, ul, ol, dl, figure, table, fieldset {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
blockquote {
|
||||
font-style: italic;
|
||||
|
||||
margin: 2em 1em 2em 0;
|
||||
padding-right: 1em;
|
||||
padding-left: 1em;
|
||||
|
||||
border-left: .25em solid #7a8288;
|
||||
}
|
||||
blockquote cite {
|
||||
font-style: italic;
|
||||
}
|
||||
blockquote cite:before {
|
||||
padding-right: 5px;
|
||||
|
||||
content: "\2014";
|
||||
}
|
||||
tt, code, kbd, samp, pre {
|
||||
font-family: "Roboto Mono", monospace;
|
||||
}
|
||||
pre {
|
||||
overflow-x: auto;
|
||||
}
|
||||
p > code, a > code, li > code, figcaption > code, td > code {
|
||||
font-size: .75em;
|
||||
|
||||
padding-top: .1rem;
|
||||
padding-bottom: .1rem;
|
||||
|
||||
border-radius: 4px;
|
||||
background: #fafafa;
|
||||
}
|
||||
p > code:before, p > code:after, a > code:before, a > code:after, li > code:before, li > code:after, figcaption > code:before, figcaption > code:after, td > code:before, td > code:after {
|
||||
content: "\00a0";
|
||||
letter-spacing: -.2em;
|
||||
}
|
||||
figure {
|
||||
display: table;
|
||||
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
|
||||
text-align: center;
|
||||
}
|
||||
figure img, figure iframe, figure .fluid-width-video-wrapper {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
figure > a {
|
||||
display: block;
|
||||
}
|
||||
@media (min-width: 37.5em) {
|
||||
figure.half > a, figure.half > img {
|
||||
width: calc(50% - .5em);
|
||||
}
|
||||
}
|
||||
figure.half figcaption {
|
||||
width: 100%;
|
||||
}
|
||||
@media (min-width: 37.5em) {
|
||||
figure.third > a, figure.third > img {
|
||||
width: calc(33.3333% - .5em);
|
||||
}
|
||||
}
|
||||
figure.third figcaption {
|
||||
width: 100%;
|
||||
}
|
||||
figcaption {
|
||||
font-family: Merriweather;
|
||||
font-size: .75em;
|
||||
|
||||
margin-bottom: .5em;
|
||||
|
||||
color: #7a8288;
|
||||
}
|
||||
svg:not(:root) {
|
||||
overflow: hidden;
|
||||
}
|
||||
nav ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
nav li {
|
||||
list-style: none;
|
||||
}
|
||||
nav ul li, nav ol li {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
nav li ul, nav li ol {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
#main {
|
||||
clear: both;
|
||||
|
||||
max-width: 100%;
|
||||
margin-right: auto;
|
||||
margin-bottom: 3em;
|
||||
margin-left: auto;
|
||||
padding-right: 1em;
|
||||
padding-left: 1em;
|
||||
}
|
||||
#main::after {
|
||||
display: table;
|
||||
clear: both;
|
||||
|
||||
content: "";
|
||||
}
|
||||
@media (min-width: 80em) {
|
||||
#main {
|
||||
max-width: 1280px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 64em) {
|
||||
.sticky {
|
||||
position: -webkit-sticky;
|
||||
position: sticky;
|
||||
top: 2em;
|
||||
|
||||
clear: both;
|
||||
}
|
||||
.sticky::after {
|
||||
display: table;
|
||||
clear: both;
|
||||
|
||||
content: "";
|
||||
}
|
||||
.sticky > * {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
/* Masthead */
|
||||
|
||||
.masthead-hero {
|
||||
position: relative;
|
||||
|
||||
clear: both;
|
||||
|
||||
height: 500px;
|
||||
margin-bottom: -32px;
|
||||
|
||||
background-repeat: no-repeat;
|
||||
background-position: bottom;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
.navbar-hero {
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
.navbar-hero nav, .navbar-hero a {
|
||||
font-family: "Merriweather";
|
||||
font-size: 1em;
|
||||
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.navbar-hero nav {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
@media (max-width: 64em) {
|
||||
.navbar-hero {
|
||||
height: 30px;
|
||||
}
|
||||
.navbar-hero a {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
/* Sidebar */
|
||||
|
||||
.sidebar {
|
||||
clear: both;
|
||||
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
.sidebar::after {
|
||||
display: table;
|
||||
clear: both;
|
||||
|
||||
content: "";
|
||||
}
|
||||
@media (max-width: 64em) {
|
||||
.sidebar {
|
||||
position: relative;
|
||||
z-index: 10;
|
||||
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
|
||||
color: #fff;
|
||||
}
|
||||
.masthead-hero {
|
||||
margin-bottom: -88px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 64em) {
|
||||
.sidebar {
|
||||
float: left;
|
||||
|
||||
width: calc(200px - 1em);
|
||||
}
|
||||
.sidebar.sticky {
|
||||
overflow-y: auto;
|
||||
|
||||
height: calc( 100vh - 90px - 2em );
|
||||
}
|
||||
}
|
||||
@media (min-width: 80em) {
|
||||
.sidebar {
|
||||
width: calc(300px - 1em);
|
||||
}
|
||||
}
|
||||
.sidebar h2, .sidebar h3, .sidebar h4, .sidebar h5, .sidebar h6 {
|
||||
font-family: "Merriweather";
|
||||
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.sidebar p, .sidebar li {
|
||||
font-family: "Open Sans"
|
||||
line-height: 1.5;
|
||||
font-size: .9em;
|
||||
}
|
||||
.sidebar img {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.author-avatar {
|
||||
display: table-cell;
|
||||
|
||||
width: 40px;
|
||||
height: 4opx;
|
||||
|
||||
vertical-align: top;
|
||||
}
|
||||
@media (min-width: 64em) {
|
||||
.author-avatar {
|
||||
display: block;
|
||||
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
.author-avatar img {
|
||||
max-width: 110px;
|
||||
|
||||
border-radius: 50%;
|
||||
}
|
||||
.author-content {
|
||||
line-height: 1;
|
||||
|
||||
display: table-cell;
|
||||
|
||||
padding-right: 25px;
|
||||
padding-left: 15px;
|
||||
|
||||
vertical-align: top;
|
||||
}
|
||||
@media (min-width: 64em) {
|
||||
.author-content {
|
||||
display: block;
|
||||
|
||||
width: 100%;
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
.author-content a {
|
||||
color: inherit;
|
||||
}
|
||||
.author-name {
|
||||
margin: 0;
|
||||
}
|
||||
@media (min-width: 64em) {
|
||||
.author-name {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar .author-name {
|
||||
font-family: "Merriweather";
|
||||
font-size: 1.1em;
|
||||
}
|
||||
.author-bio {
|
||||
margin: 0;
|
||||
}
|
||||
@media (min-width: 64em) {
|
||||
.author-bio {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
.author-urls-wrapper {
|
||||
font-family: "Open Sans";
|
||||
|
||||
position: relative;
|
||||
position: relative;
|
||||
z-index: 10;
|
||||
|
||||
display: table-cell;
|
||||
|
||||
cursor: pointer;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.author-urls-wrapper li:last-child a {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
@media (min-width: 64em) {
|
||||
.author-urls-wrapper {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
.author-urls-wrapper button {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
@media (min-width: 64em) {
|
||||
.author-urls-wrapper button {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.author-urls {
|
||||
position: absolute;
|
||||
z-index: -1;
|
||||
right: 0;
|
||||
|
||||
display: none;
|
||||
|
||||
margin-top: 15px;
|
||||
padding: 10px;
|
||||
|
||||
list-style-type: none;
|
||||
}
|
||||
.author-urls.is--visible {
|
||||
display: block;
|
||||
}
|
||||
@media (min-width: 64em) {
|
||||
.author-urls {
|
||||
position: relative;
|
||||
|
||||
display: block;
|
||||
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
||||
border: 0;
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
.author-urls:before {
|
||||
position: absolute;
|
||||
z-index: 0;
|
||||
top: -11px;
|
||||
left: calc(50% - 10px);
|
||||
|
||||
display: block;
|
||||
|
||||
width: 0;
|
||||
|
||||
content: "";
|
||||
|
||||
border-width: 0 10px 10px;
|
||||
border-style: solid;
|
||||
}
|
||||
@media (min-width: 64em) {
|
||||
.author-urls:before {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.author-urls:after {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
top: -10px;
|
||||
left: calc(50% - 10px);
|
||||
|
||||
display: block;
|
||||
|
||||
width: 0;
|
||||
|
||||
content: "";
|
||||
|
||||
border-width: 0 10px 10px;
|
||||
border-style: solid;
|
||||
border-color: #fff transparent;
|
||||
}
|
||||
@media (min-width: 64em) {
|
||||
.author-urls:after {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.author-urls li {
|
||||
white-space: nowrap;
|
||||
}
|
||||
.author-urls a {
|
||||
font-size: 1em;
|
||||
|
||||
display: block;
|
||||
|
||||
margin-bottom: 5px;
|
||||
padding-top: 2px;
|
||||
padding-right: 5px;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
|
||||
/* Page */
|
||||
|
||||
.page_content h4 {
|
||||
font-size: 1em;
|
||||
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
@media (min-width: 64em) {
|
||||
.page {
|
||||
float: right;
|
||||
|
||||
width: calc(100% - 200px);
|
||||
padding-right: 0;
|
||||
}
|
||||
}
|
||||
@media (min-width: 80em) {
|
||||
.page {
|
||||
width: calc(100% - 300px);
|
||||
padding-right: 0;
|
||||
}
|
||||
}
|
||||
.page {
|
||||
margin-bottom: 100px;
|
||||
}
|
||||
.page .page_container {
|
||||
float: left;
|
||||
clear: both;
|
||||
|
||||
width: 100%;
|
||||
margin-right: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
.page .page_container .page_content {
|
||||
position: relative;
|
||||
|
||||
float: left;
|
||||
clear: both;
|
||||
|
||||
width: 100%;
|
||||
margin-right: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
/* Recent posts (homepage) */
|
||||
|
||||
.recent-post-container {
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.recent-post {
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
/* A post */
|
||||
|
||||
.post-container {
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.post-container h1 {
|
||||
color: #05668d;
|
||||
}
|
||||
|
||||
.post-header {
|
||||
position: relative;
|
||||
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.post-banner {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.post-header-caption {
|
||||
font-size: .7em;
|
||||
|
||||
position: absolute;
|
||||
z-index: 5;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
|
||||
margin: 0 auto;
|
||||
padding: 2px 5px;
|
||||
|
||||
text-align: right;
|
||||
|
||||
opacity: .65;
|
||||
color: #fff;
|
||||
border-radius: 5px 0 0 0;
|
||||
background: #000;
|
||||
}
|
||||
@media (min-width: 64em) {
|
||||
.post-header-caption {
|
||||
padding: 5px 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.post-header-caption a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.post-metadata {
|
||||
font-size: .9em;
|
||||
|
||||
overflow: hidden;
|
||||
|
||||
margin-bottom: 1em;
|
||||
|
||||
color: #7a8288;
|
||||
}
|
||||
|
||||
.post-metadata a {
|
||||
color: #7a8288;
|
||||
}
|
||||
|
||||
.post-style img, .post-style video {
|
||||
margin-top: 1em;
|
||||
margin-right: auto;
|
||||
margin-bottom: 1em;
|
||||
margin-left: auto;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.post-style td img, .post-style td video {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.post-style figure {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/* Sharing */
|
||||
|
||||
.share-box {
|
||||
float: left;
|
||||
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
ul.share {
|
||||
margin-top: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
ul.share li {
|
||||
display: inline-flex;
|
||||
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
ul.share li .fa {
|
||||
line-height: 30px;
|
||||
|
||||
display: block;
|
||||
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
|
||||
text-align: center;
|
||||
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
ul.share li a {
|
||||
display: block;
|
||||
|
||||
margin: 0;
|
||||
|
||||
text-decoration: none !important;
|
||||
|
||||
border-radius: 50%;
|
||||
background-color: #7a8288;
|
||||
}
|
||||
|
||||
/* Comments */
|
||||
|
||||
.disqus {
|
||||
float: left;
|
||||
clear: both;
|
||||
|
||||
width: 100%;;
|
||||
}
|
||||
|
||||
/* Footer */
|
||||
|
||||
.page_footer {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
|
||||
float: left;
|
||||
clear: both;
|
||||
clear: both;
|
||||
|
||||
width: 100%;
|
||||
height: auto;
|
||||
margin-top: 3em;
|
||||
margin-right: 0;
|
||||
margin-left: 0;
|
||||
|
||||
text-align: center;
|
||||
|
||||
color: #7a8288;
|
||||
}
|
||||
.page_footer::after {
|
||||
display: table;
|
||||
clear: both;
|
||||
|
||||
content: "";
|
||||
}
|
||||
.page_footer footer {
|
||||
clear: both;
|
||||
|
||||
max-width: 100%;
|
||||
margin-top: 2em;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
padding: 0 1em 2em;
|
||||
}
|
||||
.page_footer footer::after {
|
||||
display: table;
|
||||
clear: both;
|
||||
|
||||
content: "";
|
||||
}
|
||||
@media (min-width: 80em) {
|
||||
.page_footer footer {
|
||||
max-width: 1280px;
|
||||
}
|
||||
}
|
||||
.page_footer a {
|
||||
color: inherit;
|
||||
}
|
||||
.page_footer .fas, .page_footer .fab, .page_footer .far, .page_footer .fal {
|
||||
color: #7a8288;
|
||||
}
|
||||
|
||||
:-webkit-full-screen-ancestor .masthead, :-webkit-full-screen-ancestor .page_footer {
|
||||
position: static;
|
||||
}
|
7
hugo/themes/minimal-academic/layouts/index.html
Normal file
@ -0,0 +1,7 @@
|
||||
{{ partial "header.html" . }}
|
||||
{{ partial "masthead_hero.html" . }}
|
||||
|
||||
{{ partial "homepage.html" . }}
|
||||
|
||||
{{ partial "footer_container.html" . }}
|
||||
{{ partial "footer.html" . }}
|
@ -0,0 +1,5 @@
|
||||
{{ if .Site.DisqusShortname }}
|
||||
<div class="disqus">
|
||||
{{ template "_internal/disqus.html" . }}
|
||||
</div>
|
||||
{{ end }}
|
@ -0,0 +1,8 @@
|
||||
{{ $comments_enabled := and $.Site.DisqusShortname (not (or $.Site.Params.disable_comments $.Params.disable_comments)) }}
|
||||
{{ if and $comments_enabled ($.Site.Params.comment_count | default true) }}
|
||||
<script id="dsq-count-scr" src="//{{ .Site.DisqusShortname }}.disqus.com/count.js" async></script>
|
||||
{{ end }}
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,3 @@
|
||||
<div class="page_footer">
|
||||
<p>{{ with .Site.Copyright }}{{ . | markdownify}}{{ end }}. Powered by <a href="http://gohugo.io/">Hugo</a> and <a href="https://github.com/jhu247/minimal-academic">Minimal Academic</a>.</p>
|
||||
</div>
|
75
hugo/themes/minimal-academic/layouts/partials/header.html
Normal file
@ -0,0 +1,75 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<!-- <meta name="theme" content="hugo-academic"> -->
|
||||
{{ .Hugo.Generator }}
|
||||
{{ with .Site.Params.name }}<meta name="author" content="{{ . }}">{{ end }}
|
||||
|
||||
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||
<link rel="stylesheet" href="{{ printf "//fonts.googleapis.com/css?family=Merriweather:400,700|Open+Sans:400,400italic,700|Roboto+Mono" . }}">
|
||||
<link rel="stylesheet" href="{{ "styles.css" | relLangURL }}">
|
||||
{{ range .Site.Params.custom_css }}
|
||||
<link rel="stylesheet" href="{{ "/css/" | relURL }}{{ . }}">
|
||||
{{ end }}
|
||||
|
||||
{{ if .Site.GoogleAnalytics }}
|
||||
<script>
|
||||
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
|
||||
ga('create', '{{ .Site.GoogleAnalytics }}', 'auto');
|
||||
{{ if .Site.Params.privacy_pack }}ga('set', 'anonymizeIp', true);{{ end }}
|
||||
ga('require', 'eventTracker');
|
||||
ga('require', 'outboundLinkTracker');
|
||||
ga('require', 'urlChangeTracker');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
<script async src="//www.google-analytics.com/analytics.js"></script>
|
||||
<script async src="//cdnjs.cloudflare.com/ajax/libs/autotrack/2.4.1/autotrack.js"></script>
|
||||
{{ end }}
|
||||
|
||||
{{ if or .Site.RSSLink .RSSLink }}
|
||||
<link rel="alternate" href="{{ .RSSLink | default .Site.RSSLink }}" type="application/rss+xml" title="{{ .Site.Title }}">
|
||||
<link rel="feed" href="{{ .RSSLink | default .Site.RSSLink }}" type="application/rss+xml" title="{{ .Site.Title }}">
|
||||
{{ end }}
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/img/favicon/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/img/favicon/favicon-16x16.png">
|
||||
<link rel="manifest" href="/img/favicon/site.webmanifest">
|
||||
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
|
||||
<meta name="msapplication-TileColor" content="#da532c">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
|
||||
<link rel="manifest" href="{{ "site.webmanifest" | relURL }}">
|
||||
<link rel="icon" type="image/png" href="{{ "/img/icon.png" | relURL }}">
|
||||
<link rel="apple-touch-icon" type="image/png" href="{{ "/img/icon-192.png" | relURL }}">
|
||||
|
||||
<link rel="canonical" href="{{ .Permalink }}">
|
||||
|
||||
<meta property="twitter:card" content="summary_large_image">
|
||||
{{ range where $.Site.Params.social ".icon" "twitter" }}
|
||||
<meta property="twitter:site" content="@{{ replaceRE "^//twitter.com/([^/]+)" "$1" .link }}">
|
||||
<meta property="twitter:creator" content="@{{ replaceRE "^//twitter.com/([^/]+)" "$1" .link }}">
|
||||
{{ end }}
|
||||
<meta property="og:site_name" content="{{ .Site.Title }}">
|
||||
<meta property="og:url" content="{{ .Permalink }}">
|
||||
<meta property="og:title" content="{{ if not .IsHome }}{{ .Title }} | {{ end }}{{ .Site.Title }}">
|
||||
{{- with .Params.header.image }}<meta property="og:image" content="{{ printf "img/%s" . | absURL }}">{{end}}
|
||||
<meta property="og:locale" content="{{ .Site.LanguageCode | default "en-us" }}">
|
||||
{{ if .IsPage }}
|
||||
{{ if not .PublishDate.IsZero }}<meta property="article:published_time" content="{{ .PublishDate.Format "2006-01-02T15:04:05-07:00" | safeHTML }}">
|
||||
{{ else if not .Date.IsZero }}<meta property="article:published_time" content="{{ .Date.Format "2006-01-02T15:04:05-07:00" | safeHTML }}">{{ end }}
|
||||
{{ if not .Lastmod.IsZero }}<meta property="article:modified_time" content="{{ .Lastmod.Format "2006-01-02T15:04:05-07:00" | safeHTML }}">{{ end }}
|
||||
{{ else }}
|
||||
{{ if not .Date.IsZero }}<meta property="og:updated_time" content="{{ .Date.Format "2006-01-02T15:04:05-07:00" | safeHTML }}">{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<title>{{ if not .IsHome }}{{ .Title }} | {{ end }}{{ .Site.Title }}</title>
|
||||
|
||||
{{ template "_internal/google_analytics_async.html" . }}
|
||||
|
||||
</head>
|
||||
<body>
|
11
hugo/themes/minimal-academic/layouts/partials/homepage.html
Normal file
@ -0,0 +1,11 @@
|
||||
<div id="main" role="main">
|
||||
{{ partial "sidebar.html" . }}
|
||||
<article class="page">
|
||||
<div class="page_container">
|
||||
<section class="page_content">
|
||||
{{ partial "masthead_nav.html" . }}
|
||||
{{ partial "recent_posts.html" . }}
|
||||
</section>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
@ -0,0 +1,8 @@
|
||||
<style type="text/css">
|
||||
{{ $url := (print "img" "/" ( $.Param "hero_image" ) ) }}
|
||||
.masthead-hero {
|
||||
background-image: url("{{ $url | absURL }}");
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="masthead-hero"></div>
|
@ -0,0 +1,8 @@
|
||||
<div class="navbar-hero">
|
||||
<nav>
|
||||
{{ range $k, $v := $.Site.Params.menu }}
|
||||
{{ if $k }}  •  {{ end }}
|
||||
<a href="{{ $v.link | relURL }}">{{ $v.text }}</a>
|
||||
{{ end }}
|
||||
</nav>
|
||||
</div>
|
11
hugo/themes/minimal-academic/layouts/partials/page.html
Normal file
@ -0,0 +1,11 @@
|
||||
<div id="main" role="main">
|
||||
{{ partial "sidebar.html" . }}
|
||||
<article class="page">
|
||||
<div class="page_container">
|
||||
<section class="page_content">
|
||||
{{ partial "masthead_nav.html" . }}
|
||||
{{ partial "post.html" . }}
|
||||
</section>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
27
hugo/themes/minimal-academic/layouts/partials/post.html
Normal file
@ -0,0 +1,27 @@
|
||||
<article class="post" itemscope itemtype="http://schema.org/Article">
|
||||
<div class="post-container">
|
||||
<h1 itemprop="name"><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
|
||||
|
||||
{{ if not .Params.nometadata }}
|
||||
{{ partial "post_metadata" (dict "content" . "is_list" 0) }}
|
||||
{{ end }}
|
||||
|
||||
<div class="post-style" itemprop="articleBody">
|
||||
{{ .Description }}
|
||||
{{ .Content }}
|
||||
</div>
|
||||
|
||||
{{ if not .Params.notags }}
|
||||
{{ partial "tags.html" . }}
|
||||
{{ end }}
|
||||
|
||||
{{ if not .Params.noshare }}
|
||||
{{ partial "share.html" . }}
|
||||
{{ end }}
|
||||
|
||||
{{ if not .Params.nocomments }}
|
||||
{{ partial "disqus.html" . }}
|
||||
{{ end }}
|
||||
|
||||
</div>
|
||||
</article>
|
@ -0,0 +1,27 @@
|
||||
{{ $is_list := .is_list }}
|
||||
{{ $ := .content }}
|
||||
<div class="post-metadata">
|
||||
|
||||
<span class="post-date">
|
||||
{{ if ne $.Params.Lastmod $.Params.Date }}
|
||||
{{ i18n "last_updated" }}
|
||||
{{ end }}
|
||||
<time datetime="{{ $.Date }}" itemprop="datePublished dateModified">
|
||||
{{ $.Lastmod.Format $.Site.Params.date_format }}
|
||||
</time>
|
||||
</span>
|
||||
|
||||
{{ if isset $.Params "categories" }}
|
||||
{{ $categoriesLen := len $.Params.categories }}
|
||||
{{ if gt $categoriesLen 0 }}
|
||||
<span class="post-categories">
|
||||
<i class="fa fa-folder"></i>
|
||||
{{ range $k, $v := $.Params.categories }}
|
||||
<a href="{{ ($.Site.GetPage "taxonomyTerm" "categories" .).Permalink }}">{{ . }}</a
|
||||
>{{ if lt $k (sub $categoriesLen 1) }}, {{ end }}
|
||||
{{ end }}
|
||||
</span>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
</div>
|
@ -0,0 +1,9 @@
|
||||
<div class="recent-post-container">
|
||||
{{ range (.Data.Pages.ByDate).Reverse }}
|
||||
<div class="recent-post">
|
||||
<h1><a href="{{ .RelPermalink }}">{{ .Title }}</a></h1>
|
||||
{{ partial "post_metadata" (dict "content" . "is_list" 0) }}
|
||||
<p>{{ .Description }}</p>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
33
hugo/themes/minimal-academic/layouts/partials/share.html
Normal file
@ -0,0 +1,33 @@
|
||||
{{ if .Site.Params.sharing }}
|
||||
<div class="share-box" aria-hidden="true">
|
||||
<ul class="share">
|
||||
<li>
|
||||
<a class="twitter"
|
||||
href="https://twitter.com/intent/tweet?text={{ .Title | html }}&url={{ .Permalink | html }}"
|
||||
target="_blank" rel="noopener noreferrer">
|
||||
<i class="fa fa-twitter"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="facebook"
|
||||
href="https://www.facebook.com/sharer.php?u={{ .Permalink | html }}"
|
||||
target="_blank" rel="noopener noreferrer">
|
||||
<i class="fa fa-facebook"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="linkedin"
|
||||
href="https://www.linkedin.com/shareArticle?mini=true&url={{ .Permalink | html }}&title={{ .Title | html }}"
|
||||
target="_blank" rel="noopener noreferrer">
|
||||
<i class="fa fa-linkedin"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="email"
|
||||
href="mailto:?subject={{ .Title | html }}&body={{ .Permalink | html }}">
|
||||
<i class="fa fa-envelope"></i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{{ end }}
|
26
hugo/themes/minimal-academic/layouts/partials/sidebar.html
Normal file
@ -0,0 +1,26 @@
|
||||
<div class="sidebar sticky" itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||||
<div class="author-avatar">
|
||||
<a href="{{ "/" | relURL }}">
|
||||
<img src="{{ (printf "/img/%s" $.Site.Params.avatar) | relURL }}" alt="{{ $.Site.Params.name }}" itemprop="image">
|
||||
</a>
|
||||
</div>
|
||||
<div class="author-content">
|
||||
<h3 class="author-name" itemprop="name">{{ $.Site.Params.name }}</h3>
|
||||
<p class="author-bio" itemprop="description">{{ $.Site.Params.bio }}</p>
|
||||
</div>
|
||||
<div class="author-urls-wrapper">
|
||||
<ul class="author-urls social-icons" aria-hidden="true">
|
||||
<li itemprop="homeLocation" itemscope itemtype="http://schema.org/Place">
|
||||
<span itemprop="name">{{ $.Site.Params.location }}</span>
|
||||
</li>
|
||||
{{ range $.Site.Params.social }}
|
||||
<li>
|
||||
<a itemprop="sameAs" href="{{ .link | safeURL }}" target="_blank" rel="noopener noreferrer">
|
||||
<i class="fa fa-{{ .icon }}"></i>
|
||||
{{ .text }}
|
||||
</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
10
hugo/themes/minimal-academic/layouts/partials/tags.html
Normal file
@ -0,0 +1,10 @@
|
||||
{{ if isset $.Params "tags" }}
|
||||
{{ $tagsLen := len $.Params.tags }}
|
||||
{{ if gt $tagsLen 0 }}
|
||||
<div class="post-tags">
|
||||
{{ range $k, $v := $.Params.tags }}
|
||||
<a href="{{ (printf "%s/%s" ($.Site.GetPage "tags").Permalink $v) | relURL }}">{{ . }}</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end }}
|
7
hugo/themes/minimal-academic/layouts/projects/list.html
Normal file
@ -0,0 +1,7 @@
|
||||
{{ partial "header.html" . }}
|
||||
{{ partial "masthead_hero.html" . }}
|
||||
|
||||
{{ partial "page.html" . }}
|
||||
|
||||
{{ partial "footer_container.html" . }}
|
||||
{{ partial "footer.html" . }}
|
21
hugo/themes/minimal-academic/theme.toml
Normal file
@ -0,0 +1,21 @@
|
||||
# theme.toml template for a Hugo theme
|
||||
# See https://github.com/gohugoio/hugoThemes#themetoml for an example
|
||||
|
||||
name = "Minimal Academic"
|
||||
license = "MIT"
|
||||
licenselink = "https://github.com/jhu247/minimal-academic/blob/master/LICENSE"
|
||||
description = "A two-column Hugo theme for personal sites inspired by Hugo Academic & Minimal Mistakes."
|
||||
homepage = "https://joshuahu.io/"
|
||||
tags = ["blog", "responsive", "minimal", "personal", "clean", "simple", "portfolio", "minimalist", "projects"]
|
||||
features = ["two column", "hero", "sticky sidebar", "minimal mistakes"]
|
||||
min_version = "0.41"
|
||||
|
||||
[author]
|
||||
name = "Joshua Hu"
|
||||
homepage = "https://joshuahu.io"
|
||||
|
||||
# If porting an existing theme
|
||||
[original]
|
||||
name = ""
|
||||
homepage = ""
|
||||
repo = ""
|
55
keybase.txt
Normal file
@ -0,0 +1,55 @@
|
||||
==================================================================
|
||||
https://keybase.io/tgrosinger
|
||||
--------------------------------------------------------------------
|
||||
|
||||
I hereby claim:
|
||||
|
||||
* I am an admin of https://grosinger.net
|
||||
* I am tgrosinger (https://keybase.io/tgrosinger) on keybase.
|
||||
* I have a public key ASBrTJJIMIXXtRtT7Ue84qI0F_EfpKcLUKAifUUUNnffiAo
|
||||
|
||||
To do so, I am signing this object:
|
||||
|
||||
{
|
||||
"body": {
|
||||
"key": {
|
||||
"eldest_kid": "010134ea8c10d2e0e99d42ec6f3d86432a74d596b9ec7582f66d4d4d61de6fce54ba0a",
|
||||
"host": "keybase.io",
|
||||
"kid": "01206b4c92483085d7b51b53ed47bce2a23417f11fa4a70b50a0227d45143677df880a",
|
||||
"uid": "25446509accc489abcefa23abf36e500",
|
||||
"username": "tgrosinger"
|
||||
},
|
||||
"merkle_root": {
|
||||
"ctime": 1515012459,
|
||||
"hash": "d6ea7f8260f3df2d243c33361e8f5c121bde3a46cf5036fd7744a2bf9a1adfe90f63028262b1a553128db0cddcf56a6fc764fb341a197101ccada7cd2bddcbab",
|
||||
"hash_meta": "a8679f65c3555555787960886013e20dd0e516df1a3dc2aed3fdb9296b41bca0",
|
||||
"seqno": 1883930
|
||||
},
|
||||
"service": {
|
||||
"hostname": "grosinger.net",
|
||||
"protocol": "https:"
|
||||
},
|
||||
"type": "web_service_binding",
|
||||
"version": 1
|
||||
},
|
||||
"client": {
|
||||
"name": "keybase.io go client",
|
||||
"version": "1.0.38"
|
||||
},
|
||||
"ctime": 1515012479,
|
||||
"expire_in": 504576000,
|
||||
"prev": "29da9961b2d86bf10a8de8e1920bb4a6e57dee915eefbcc784ad9797c0069593",
|
||||
"seqno": 54,
|
||||
"tag": "signature"
|
||||
}
|
||||
|
||||
which yields the signature:
|
||||
|
||||
hKRib2R5hqhkZXRhY2hlZMOpaGFzaF90eXBlCqNrZXnEIwEga0ySSDCF17UbU+1HvOKiNBfxH6SnC1CgIn1FFDZ334gKp3BheWxvYWTFA0h7ImJvZHkiOnsia2V5Ijp7ImVsZGVzdF9raWQiOiIwMTAxMzRlYThjMTBkMmUwZTk5ZDQyZWM2ZjNkODY0MzJhNzRkNTk2YjllYzc1ODJmNjZkNGQ0ZDYxZGU2ZmNlNTRiYTBhIiwiaG9zdCI6ImtleWJhc2UuaW8iLCJraWQiOiIwMTIwNmI0YzkyNDgzMDg1ZDdiNTFiNTNlZDQ3YmNlMmEyMzQxN2YxMWZhNGE3MGI1MGEwMjI3ZDQ1MTQzNjc3ZGY4ODBhIiwidWlkIjoiMjU0NDY1MDlhY2NjNDg5YWJjZWZhMjNhYmYzNmU1MDAiLCJ1c2VybmFtZSI6InRncm9zaW5nZXIifSwibWVya2xlX3Jvb3QiOnsiY3RpbWUiOjE1MTUwMTI0NTksImhhc2giOiJkNmVhN2Y4MjYwZjNkZjJkMjQzYzMzMzYxZThmNWMxMjFiZGUzYTQ2Y2Y1MDM2ZmQ3NzQ0YTJiZjlhMWFkZmU5MGY2MzAyODI2MmIxYTU1MzEyOGRiMGNkZGNmNTZhNmZjNzY0ZmIzNDFhMTk3MTAxY2NhZGE3Y2QyYmRkY2JhYiIsImhhc2hfbWV0YSI6ImE4Njc5ZjY1YzM1NTU1NTU3ODc5NjA4ODYwMTNlMjBkZDBlNTE2ZGYxYTNkYzJhZWQzZmRiOTI5NmI0MWJjYTAiLCJzZXFubyI6MTg4MzkzMH0sInNlcnZpY2UiOnsiaG9zdG5hbWUiOiJncm9zaW5nZXIubmV0IiwicHJvdG9jb2wiOiJodHRwczoifSwidHlwZSI6IndlYl9zZXJ2aWNlX2JpbmRpbmciLCJ2ZXJzaW9uIjoxfSwiY2xpZW50Ijp7Im5hbWUiOiJrZXliYXNlLmlvIGdvIGNsaWVudCIsInZlcnNpb24iOiIxLjAuMzgifSwiY3RpbWUiOjE1MTUwMTI0NzksImV4cGlyZV9pbiI6NTA0NTc2MDAwLCJwcmV2IjoiMjlkYTk5NjFiMmQ4NmJmMTBhOGRlOGUxOTIwYmI0YTZlNTdkZWU5MTVlZWZiY2M3ODRhZDk3OTdjMDA2OTU5MyIsInNlcW5vIjo1NCwidGFnIjoic2lnbmF0dXJlIn2jc2lnxECXwEMojl0y7AFGDdHgWehinfKYI+YKDbYQm5WA4tUR/AJlo411ZcILOl09cP9o4k9ymYOoBiG4Jx4f+B+Tyh8NqHNpZ190eXBlIKRoYXNogqR0eXBlCKV2YWx1ZcQgLjHU9RlTRIuj9ki2YrINCmZlKtsDxOle6V+wgkjPcEOjdGFnzQICp3ZlcnNpb24B
|
||||
|
||||
And finally, I am proving ownership of this host by posting or
|
||||
appending to this document.
|
||||
|
||||
View my publicly-auditable identity here: https://keybase.io/tgrosinger
|
||||
|
||||
==================================================================
|
4
pgpkey.txt
Normal file
@ -0,0 +1,4 @@
|
||||
This file claims ownership of the OpenPGP key with long id 0x065559ace0a9c69c.
|
||||
|
||||
Token for proof:
|
||||
[Verifying my OpenPGP key: openpgp4fpr:5be7260e32f038192ecb3464065559ace0a9c69c]
|
@ -1 +0,0 @@
|
||||
Subproject commit 7ecfa48972ce1ae7726a52bc73212ffa878ee90d
|