├── exampleSite ├── static │ ├── js │ │ └── custom.js │ ├── css │ │ └── custom.css │ └── images │ │ └── eden-farm-children-s-village.jpg ├── content │ ├── authors │ │ └── _index.md │ ├── docs │ │ ├── res │ │ │ └── index.md │ │ ├── _index.md │ │ ├── config-file.md │ │ ├── search-fuse-js.md │ │ ├── syntax-highlighting.md │ │ ├── sidebar.md │ │ ├── translation.md │ │ ├── emoji-support.md │ │ ├── updating.md │ │ ├── authors.md │ │ ├── cover-image.md │ │ ├── search-support.md │ │ ├── search-lunr-js.md │ │ ├── opengraph.md │ │ ├── installation.md │ │ ├── menus.md │ │ ├── katex-support.md │ │ ├── search-algolia.md │ │ └── mathjax-support.md │ ├── tags │ │ ├── og │ │ │ └── _index.md │ │ └── config │ │ │ └── _index.md │ ├── page │ │ ├── search.md │ │ ├── about.md │ │ ├── archive.md │ │ └── typography.md │ └── _index.md ├── data │ ├── authors │ │ └── muniftanjim.toml │ ├── comments │ │ └── 33deba780bf80cacf2627abf7a22fec7 │ │ │ ├── 85b5b000-33c9-11e8-b7f2-af13eee21e7d.yml │ │ │ └── c7062840-33ca-11e8-b7f2-af13eee21e7d.yml │ └── config │ │ └── widgets.toml └── staticman.yml ├── layouts ├── robots.txt ├── partials │ ├── comments │ │ ├── disqus.html │ │ ├── staticman.html │ │ ├── staticman │ │ │ ├── GetStaticmanYML.html │ │ │ ├── replies-list.html │ │ │ ├── submission-feedback.html │ │ │ ├── list.html │ │ │ └── comment.html │ │ ├── isso.html │ │ └── utterances.html │ ├── head │ │ ├── analytics.html │ │ ├── css.html │ │ ├── extra.html │ │ ├── meta.html │ │ ├── head.html │ │ ├── includes.html │ │ ├── hreflang.html │ │ └── opengraph │ │ │ └── twitter.html │ ├── entry │ │ ├── content.html │ │ ├── meta │ │ │ ├── reading-time.html │ │ │ ├── posted-on.html │ │ │ └── author.html │ │ ├── toc.html │ │ ├── header.html │ │ ├── taxonomy-list.html │ │ ├── meta.html │ │ ├── cover.html │ │ ├── footer.html │ │ └── comments.html │ ├── svg │ │ ├── content │ │ │ ├── clock.svg │ │ │ ├── prev.svg │ │ │ ├── x.svg │ │ │ ├── facebook.svg │ │ │ ├── next.svg │ │ │ ├── search.svg │ │ │ ├── category.svg │ │ │ ├── rss.svg │ │ │ ├── author.svg │ │ │ ├── google_scholar.svg │ │ │ ├── menu.svg │ │ │ ├── email.svg │ │ │ ├── edit.svg │ │ │ ├── tag.svg │ │ │ ├── instagram.svg │ │ │ ├── linkedin.svg │ │ │ ├── calendar.svg │ │ │ ├── twitter.svg │ │ │ ├── telegram.svg │ │ │ ├── codepen.svg │ │ │ ├── series.svg │ │ │ ├── gitlab.svg │ │ │ ├── github.svg │ │ │ ├── youtube.svg │ │ │ └── git.svg │ │ └── icon.html │ ├── header │ │ ├── description.html │ │ ├── bodyClasses.html │ │ └── header.html │ ├── footer │ │ ├── extra.html │ │ ├── mermaid.html │ │ ├── scripts.html │ │ ├── mathjax.html │ │ ├── katex.html │ │ └── copyright.html │ ├── data │ │ ├── description │ │ ├── author │ │ │ └── displayName │ │ └── title │ ├── list │ │ ├── date.html │ │ └── date.archive.html │ ├── extras │ │ ├── widget_area.html │ │ └── taxonomy_cloud.html │ ├── footer.html │ ├── sidebar │ │ ├── toggler.html │ │ └── sidebar.html │ ├── widgets │ │ ├── recent_posts.html │ │ ├── taxonomy_cloud.html │ │ ├── about.html │ │ ├── search.html │ │ ├── social_menu.html │ │ ├── sidebar_menu.html │ │ └── breadcrumbs.html │ ├── nav │ │ ├── menus │ │ │ └── main.html │ │ ├── entry_nav.html │ │ └── pagination.html │ └── header.html ├── shortcodes │ ├── center.html │ ├── mermaid.html │ ├── katex.html │ ├── slideshare.html │ ├── svg.html │ ├── file.html │ ├── text.html │ └── convo.html ├── page │ ├── search.json │ ├── archive.html │ └── search.html ├── _default │ ├── li.html │ ├── li.archive.html │ ├── single.html │ ├── terms.html │ └── list.html ├── taxonomy │ ├── series.html │ └── author.terms.html ├── index.html └── 404.html ├── src ├── stylesheets │ ├── hugo │ │ ├── _hugo.scss │ │ └── shortcodes │ │ │ ├── _shortcodes.scss │ │ │ ├── _text.scss │ │ │ ├── _center.scss │ │ │ └── _convo.scss │ ├── extras │ │ ├── _extras.scss │ │ ├── variables │ │ │ ├── _variables.scss │ │ │ ├── _structure.scss │ │ │ ├── _typography.scss │ │ │ └── _colors.scss │ │ ├── mixins │ │ │ └── _mixins.scss │ │ └── _accessibility.scss │ ├── navigation │ │ ├── _navigation.scss │ │ ├── menus │ │ │ ├── _main.scss │ │ │ ├── _menus.scss │ │ │ └── _sidebar.scss │ │ ├── _pagination.scss │ │ └── _entry-nav.scss │ ├── forms │ │ ├── _forms.scss │ │ ├── _fields.scss │ │ └── _buttons.scss │ ├── layouts │ │ ├── entry │ │ │ ├── _entry.scss │ │ │ ├── _footer.scss │ │ │ ├── _meta.scss │ │ │ ├── _content.scss │ │ │ ├── _cover.scss │ │ │ ├── _toc.scss │ │ │ └── _comments.scss │ │ ├── others │ │ │ ├── _others.scss │ │ │ ├── _home.scss │ │ │ ├── _icons.scss │ │ │ ├── _404.scss │ │ │ ├── _archive.scss │ │ │ └── _search.scss │ │ ├── widgets │ │ │ ├── _recent-posts.scss │ │ │ ├── _taxonomy-cloud.scss │ │ │ ├── _breadcrumbs.scss │ │ │ ├── _social-menu.scss │ │ │ ├── _about.scss │ │ │ ├── _search.scss │ │ │ └── _widgets.scss │ │ ├── _footer.scss │ │ ├── _header.scss │ │ ├── _lists.scss │ │ ├── _layouts.scss │ │ └── sidebar │ │ │ └── _sidebar.scss │ ├── typography │ │ ├── _typography.scss │ │ ├── _copy.scss │ │ ├── _headings.scss │ │ └── _codes.scss │ ├── elements │ │ ├── _links.scss │ │ ├── _lists.scss │ │ ├── _tables.scss │ │ └── _elements.scss │ └── style.scss └── scripts │ ├── webpack-public-path.js │ ├── helpers.js │ ├── search │ ├── lunr.js │ ├── algolia.js │ ├── fuse.js │ └── helpers.js │ ├── details-polyfill.js │ ├── comments.js │ └── main.js ├── archetypes ├── page.md └── default.md ├── images ├── tn.png └── screenshot.png ├── .gitignore ├── config.toml ├── static ├── favicon.ico ├── favicon.png ├── images │ └── logo.png ├── assets │ ├── gopher.png │ ├── js │ │ ├── details-polyfill.57b4e5ce.js │ │ ├── comments.8316cbbf.js │ │ ├── rtl.cebcaee5.js │ │ └── sidebar.8b55e6c1.js │ └── css │ │ └── rtl.e580af8f.css └── favicon-32x32.png ├── data ├── config │ └── default │ │ ├── mermaid.json │ │ ├── mathjax.json │ │ ├── katex.json │ │ └── widgets.toml ├── theme.toml └── assets.json ├── netlify.toml ├── theme.toml ├── LICENSE ├── scripts ├── generate-search-index-lunr.js └── generate-search-index-algolia.js ├── i18n ├── fa.toml ├── hr.toml ├── ca.toml ├── sl.toml ├── pl.toml ├── zh.toml ├── de.toml ├── bn.toml ├── en.toml ├── ar.toml ├── hu.toml ├── it.toml ├── vi.toml ├── id.toml ├── tr.toml ├── es.toml ├── fr.toml └── pt-BR.toml ├── package.json └── README.md /exampleSite/static/js/custom.js: -------------------------------------------------------------------------------- 1 | /* Custom JS */ 2 | -------------------------------------------------------------------------------- /layouts/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /exampleSite/static/css/custom.css: -------------------------------------------------------------------------------- 1 | /* Custom CSS */ 2 | -------------------------------------------------------------------------------- /src/stylesheets/hugo/_hugo.scss: -------------------------------------------------------------------------------- 1 | @import 'shortcodes/shortcodes'; 2 | -------------------------------------------------------------------------------- /archetypes/page.md: -------------------------------------------------------------------------------- 1 | --- 2 | comments: false 3 | menu: main 4 | --- 5 | -------------------------------------------------------------------------------- /exampleSite/content/authors/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Authors 3 | --- 4 | -------------------------------------------------------------------------------- /exampleSite/content/docs/res/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | headless: true 3 | --- 4 | -------------------------------------------------------------------------------- /exampleSite/content/tags/og/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Opengraph 3 | --- 4 | -------------------------------------------------------------------------------- /exampleSite/content/tags/config/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Configuration 3 | --- 4 | -------------------------------------------------------------------------------- /images/tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MunifTanjim/minimo/HEAD/images/tn.png -------------------------------------------------------------------------------- /layouts/partials/comments/disqus.html: -------------------------------------------------------------------------------- 1 | {{ template "_internal/disqus.html" . }} 2 | -------------------------------------------------------------------------------- /src/scripts/webpack-public-path.js: -------------------------------------------------------------------------------- 1 | __webpack_public_path__ = window.__assets_js_src 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | *.log 3 | *~ 4 | 5 | .vscode 6 | 7 | exampleSite/public 8 | -------------------------------------------------------------------------------- /config.toml: -------------------------------------------------------------------------------- 1 | [module] 2 | [module.hugoVersion] 3 | extended = true 4 | min = "0.123.0" 5 | -------------------------------------------------------------------------------- /layouts/partials/head/analytics.html: -------------------------------------------------------------------------------- 1 | {{- template "_internal/google_analytics.html" . -}} 2 | -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MunifTanjim/minimo/HEAD/static/favicon.ico -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MunifTanjim/minimo/HEAD/static/favicon.png -------------------------------------------------------------------------------- /images/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MunifTanjim/minimo/HEAD/images/screenshot.png -------------------------------------------------------------------------------- /static/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MunifTanjim/minimo/HEAD/static/images/logo.png -------------------------------------------------------------------------------- /static/assets/gopher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MunifTanjim/minimo/HEAD/static/assets/gopher.png -------------------------------------------------------------------------------- /static/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MunifTanjim/minimo/HEAD/static/favicon-32x32.png -------------------------------------------------------------------------------- /layouts/shortcodes/center.html: -------------------------------------------------------------------------------- 1 |
2 | {{ .Inner | markdownify }} 3 |
4 | -------------------------------------------------------------------------------- /src/stylesheets/extras/_extras.scss: -------------------------------------------------------------------------------- 1 | @import 'variables/variables'; 2 | 3 | @import 'mixins/mixins'; 4 | -------------------------------------------------------------------------------- /layouts/partials/entry/content.html: -------------------------------------------------------------------------------- 1 |
2 | {{ .Content }} 3 |
4 | -------------------------------------------------------------------------------- /src/stylesheets/hugo/shortcodes/_shortcodes.scss: -------------------------------------------------------------------------------- 1 | @import 'center'; 2 | @import 'convo'; 3 | @import 'text'; 4 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/clock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/prev.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/x.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /layouts/partials/header/description.html: -------------------------------------------------------------------------------- 1 | {{ with .Description }} 2 |

3 | {{- . -}} 4 |

5 | {{ end }} 6 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/facebook.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/next.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/stylesheets/extras/variables/_variables.scss: -------------------------------------------------------------------------------- 1 | @import 'colors'; 2 | 3 | @import 'structure'; 4 | 5 | @import 'typography'; 6 | -------------------------------------------------------------------------------- /src/stylesheets/navigation/_navigation.scss: -------------------------------------------------------------------------------- 1 | @import 'menus/menus'; 2 | 3 | @import 'entry-nav'; 4 | 5 | @import 'pagination'; 6 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/category.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /exampleSite/content/page/search.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Search 3 | type: page 4 | layout: search 5 | outputs: 6 | - html 7 | - json 8 | --- 9 | -------------------------------------------------------------------------------- /src/stylesheets/hugo/shortcodes/_text.scss: -------------------------------------------------------------------------------- 1 | .text-shortcode { 2 | * { 3 | color: inherit; 4 | @include font-size(1); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /layouts/partials/head/css.html: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/rss.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/config/default/mermaid.json: -------------------------------------------------------------------------------- 1 | { 2 | "library": { 3 | "path": "https://unpkg.com/mermaid/dist/mermaid.min.js" 4 | }, 5 | "config": {} 6 | } 7 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/author.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/stylesheets/forms/_forms.scss: -------------------------------------------------------------------------------- 1 | @import 'buttons'; 2 | 3 | @import 'fields'; 4 | 5 | label { 6 | font-weight: 700; 7 | letter-spacing: 1px; 8 | } 9 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/google_scholar.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /layouts/shortcodes/mermaid.html: -------------------------------------------------------------------------------- 1 | {{- if eq .Page.Params.mermaid true -}} 2 | 3 |
4 | {{ safeHTML .Inner }} 5 |
6 | 7 | {{- end -}} 8 | -------------------------------------------------------------------------------- /exampleSite/static/images/eden-farm-children-s-village.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MunifTanjim/minimo/HEAD/exampleSite/static/images/eden-farm-children-s-village.jpg -------------------------------------------------------------------------------- /layouts/partials/svg/content/email.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/entry/_entry.scss: -------------------------------------------------------------------------------- 1 | @import 'meta'; 2 | @import 'cover'; 3 | @import 'toc'; 4 | @import 'content'; 5 | @import 'footer'; 6 | @import 'comments'; 7 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/edit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/tag.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/others/_others.scss: -------------------------------------------------------------------------------- 1 | @import '404'; 2 | 3 | @import 'home'; 4 | 5 | @import 'icons'; 6 | 7 | @import 'archive'; 8 | 9 | @import 'search'; 10 | -------------------------------------------------------------------------------- /data/config/default/mathjax.json: -------------------------------------------------------------------------------- 1 | { 2 | "library": { 3 | "path": "//unpkg.com/mathjax@2.7.5/MathJax.js", 4 | "config": "TeX-MML-AM_CHTML" 5 | }, 6 | "config": {} 7 | } 8 | -------------------------------------------------------------------------------- /exampleSite/content/docs/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Documentation 3 | linkTitle: Docs 4 | menu: 5 | main: 6 | sidebar: 7 | identifier: docs 8 | weight: -250 9 | slug: docs 10 | --- 11 | -------------------------------------------------------------------------------- /layouts/partials/comments/staticman.html: -------------------------------------------------------------------------------- 1 | {{ partial "comments/staticman/submission-feedback" . }} 2 | 3 | {{ partial "comments/staticman/list" . }} 4 | 5 | {{ partial "comments/staticman/form" . }} 6 | -------------------------------------------------------------------------------- /archetypes/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: "{{ .Date }}" 3 | title: "{{ replace .TranslationBaseName '-' ' ' | title }}" 4 | authors: [] 5 | categories: 6 | - 7 | tags: 8 | - 9 | draft: true 10 | --- 11 | -------------------------------------------------------------------------------- /layouts/shortcodes/katex.html: -------------------------------------------------------------------------------- 1 | {{- $displayMode := ( not ( eq ( .Get 0 ) "inline" ) ) -}} 2 | 3 | {{- print ( cond $displayMode "\\[" "\\(" ) }} 4 | {{ .Inner }} 5 | {{- print ( cond $displayMode "\\]" "\\)" ) -}} 6 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/instagram.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/linkedin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /layouts/partials/comments/staticman/GetStaticmanYML.html: -------------------------------------------------------------------------------- 1 | {{ $rawStaticmanYML := ( readFile "staticman.yml" ) }} 2 | {{ $parsedStaticmanYML := ( transform.Unmarshal $rawStaticmanYML ) }} 3 | 4 | {{ return $parsedStaticmanYML }} 5 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/calendar.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/twitter.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/others/_home.scss: -------------------------------------------------------------------------------- 1 | .home-widgets { 2 | .sep-before { 3 | &:before { 4 | display: none; 5 | 6 | .entry + & { 7 | display: block; 8 | } 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/widgets/_recent-posts.scss: -------------------------------------------------------------------------------- 1 | .widget-recent_posts { 2 | .sidebar & { 3 | .meta { 4 | display: none; 5 | } 6 | 7 | .item { 8 | margin-top: 0; 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /layouts/partials/entry/meta/reading-time.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params.settings.showReadingTime }} 2 | 3 | {{- partial "svg/icon" "clock" -}} 4 | {{ i18n "readingTime" .ReadingTime }} 5 | 6 | {{ end }} 7 | -------------------------------------------------------------------------------- /src/stylesheets/extras/mixins/_mixins.scss: -------------------------------------------------------------------------------- 1 | @mixin font-size($size) { 2 | font-size: #{$size}em; 3 | } 4 | 5 | @mixin screen($screenSize) { 6 | @media screen and (min-width: #{$screenSize}) { 7 | @content; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /exampleSite/content/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Home 3 | menu: 4 | - main 5 | - sidebar 6 | weight: -270 7 | --- 8 | > Minimalism is not a lack of something. It’s simply the perfect amount of something. 9 | > — Nicholas Burroughs 10 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/telegram.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /layouts/partials/head/extra.html: -------------------------------------------------------------------------------- 1 | {{/* 2 | If you need to add content to your page header, override this template in your 3 | blog by creating a file named `/layout/partials/head/extra.html`. This way you 4 | don't have to edit the theme itself. 5 | */}} 6 | -------------------------------------------------------------------------------- /layouts/partials/footer/extra.html: -------------------------------------------------------------------------------- 1 | {{/* 2 | If you need to add content to your page footer, override this template in your 3 | blog by creating a file named `/layouts/partials/footer/extra.html`. This way 4 | you don't have to edit the theme itself. 5 | */}} 6 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/entry/_footer.scss: -------------------------------------------------------------------------------- 1 | .entry-footer { 2 | .container > div { 3 | margin-top: 0.5em; 4 | 5 | &:first-child { 6 | margin-top: 2.5em; 7 | } 8 | } 9 | 10 | .icon { 11 | margin-right: 0.375em; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /layouts/page/search.json: -------------------------------------------------------------------------------- 1 | [ 2 | {{- range $i, $page := .Site.Pages -}} 3 | {{- dict "title" $page.Title "content" $page.Plain "href" $page.RelPermalink | jsonify | safeJS -}} 4 | {{- if ne $i ( sub ( len $.Site.Pages ) 1 ) -}},{{- end -}} 5 | {{- end -}} 6 | ] 7 | -------------------------------------------------------------------------------- /exampleSite/data/authors/muniftanjim.toml: -------------------------------------------------------------------------------- 1 | id = "muniftanjim" 2 | 3 | [email] 4 | username = "muniftanjim" 5 | host = "gmail.com" 6 | 7 | [name] 8 | display = "Munif Tanjim" 9 | 10 | [social] 11 | email = "" 12 | facebook = "MunifTanjim" 13 | twitter = "MunifTanjim" 14 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/entry/_meta.scss: -------------------------------------------------------------------------------- 1 | .entry-meta { 2 | margin-top: 0.75em; 3 | 4 | span { 5 | @include font-size(0.9375); 6 | margin-right: 0.75em; 7 | font-style: italic; 8 | } 9 | 10 | .icon { 11 | margin-right: 0.25em; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /layouts/partials/entry/toc.html: -------------------------------------------------------------------------------- 1 | {{ if eq .Params.toc true }} 2 |
3 | 4 | 5 | {{- i18n "tableOfContents" -}} 6 | 7 | 8 | {{ .TableOfContents }} 9 |
10 | {{ end }} 11 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/codepen.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/series.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /layouts/partials/data/description: -------------------------------------------------------------------------------- 1 | {{- with .Description -}} 2 | {{- . -}} 3 | {{- else -}} 4 | {{- if .IsPage -}} 5 | {{- .Summary -}} 6 | {{- else -}} 7 | {{- with .Site.Params.info.description -}} 8 | {{- . -}} 9 | {{- end -}} 10 | {{- end -}} 11 | {{- end -}} 12 | -------------------------------------------------------------------------------- /src/stylesheets/extras/variables/_structure.scss: -------------------------------------------------------------------------------- 1 | $container__max-width: 740px; 2 | $container__gutter: 20px; 3 | 4 | $sidebar__width: 300px; 5 | 6 | $max-width__cover-wide: 1080px; 7 | 8 | $breakpoint-small: 480px; 9 | $breakpoint-medium: 920px; 10 | 11 | $transition-duration: 0.2s; 12 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/widgets/_taxonomy-cloud.scss: -------------------------------------------------------------------------------- 1 | .widget-taxonomy_cloud { 2 | .sidebar & { 3 | .taxonomy-cloud { 4 | justify-content: flex-end; 5 | 6 | @include font-size(0.875); 7 | } 8 | 9 | li { 10 | padding: 0 0 0.4em 0.8em; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/gitlab.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/stylesheets/navigation/menus/_main.scss: -------------------------------------------------------------------------------- 1 | .main-menu { 2 | & > div { 3 | display: flex; 4 | align-items: center; 5 | } 6 | 7 | li { 8 | display: inline-block; 9 | margin-right: 0.625em; 10 | 11 | &:last-child { 12 | margin-right: 0; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /layouts/partials/comments/isso.html: -------------------------------------------------------------------------------- 1 | {{- $scriptSrc := .Page.Site.Params.comments.isso.scriptSrc -}} 2 | {{- $dataAttrs := .Page.Site.Params.comments.isso.dataAttrs -}} 3 | 4 | 5 | 6 |
7 | -------------------------------------------------------------------------------- /layouts/shortcodes/slideshare.html: -------------------------------------------------------------------------------- 1 | 7 |
8 | -------------------------------------------------------------------------------- /layouts/_default/li.html: -------------------------------------------------------------------------------- 1 |
  • 2 |
    3 | {{ partial "list/date" . }} 4 |
    5 |
    6 |

    7 | 8 | {{- .Title -}} 9 | 10 |

    11 |
    12 |
  • 13 | -------------------------------------------------------------------------------- /src/stylesheets/hugo/shortcodes/_center.scss: -------------------------------------------------------------------------------- 1 | .align-center { 2 | text-align: center; 3 | 4 | & > blockquote { 5 | display: inline-block; 6 | } 7 | 8 | & > ol, 9 | & > ul { 10 | display: inline-block; 11 | text-align: initial; 12 | } 13 | 14 | li { 15 | word-wrap: normal; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /exampleSite/content/page/about.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: About 3 | description: What does Minimo even means?! 4 | menu: main 5 | weight: -210 6 | --- 7 | 8 | Mínimo is a Spanish word that roughly translate to Minimal. 9 | 10 | Minimo is a minimalist theme for Hugo. 11 | 12 | Minimo keeps the focus on your content and lets it shine! 13 | -------------------------------------------------------------------------------- /layouts/partials/list/date.html: -------------------------------------------------------------------------------- 1 | {{- $dateFormat := ( .Site.Params.settings.listDateFormat | default "2006, Jan 02" ) -}} 2 | 3 | {{ i18n "postedOn" }} 4 | 7 | 8 | -------------------------------------------------------------------------------- /layouts/shortcodes/svg.html: -------------------------------------------------------------------------------- 1 | {{ $svg := .Get 0 }} 2 | 6 | -------------------------------------------------------------------------------- /data/config/default/katex.json: -------------------------------------------------------------------------------- 1 | { 2 | "library": { 3 | "js": { 4 | "main": "//unpkg.com/katex/dist/katex.min.js", 5 | "autoRender": "//unpkg.com/katex/dist/contrib/auto-render.min.js" 6 | }, 7 | "css": { 8 | "main": "//unpkg.com/katex/dist/katex.min.css" 9 | } 10 | }, 11 | "options": {} 12 | } 13 | -------------------------------------------------------------------------------- /layouts/_default/li.archive.html: -------------------------------------------------------------------------------- 1 |
  • 2 |
    3 | {{ partial "list/date.archive" . }} 4 |
    5 |
    6 |

    7 | 8 | {{- .Title -}} 9 | 10 |

    11 |
    12 |
  • 13 | -------------------------------------------------------------------------------- /layouts/partials/extras/widget_area.html: -------------------------------------------------------------------------------- 1 | {{- range .Widgets -}} 2 | {{- if eq . "search" -}} 3 | {{- if not ( eq $.Scope.Layout "search" ) -}} 4 | {{- partial ( print "widgets/" . ) $.Scope -}} 5 | {{- end -}} 6 | {{- else -}} 7 | {{- partial ( print "widgets/" . ) $.Scope -}} 8 | {{- end -}} 9 | {{- end -}} 10 | -------------------------------------------------------------------------------- /layouts/partials/list/date.archive.html: -------------------------------------------------------------------------------- 1 | {{- $dateFormat := ( .Site.Params.settings.archiveDateFormat | default "Jan 02" ) -}} 2 | 3 | {{ i18n "postedOn" }} 4 | 7 | 8 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/github.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /layouts/partials/svg/icon.html: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /layouts/partials/entry/header.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |
    4 |

    5 | {{- .Title -}} 6 |

    7 | {{ partial "header/description" . }} 8 |
    9 | {{ partial "entry/meta" . }} 10 |
    11 |
    12 | -------------------------------------------------------------------------------- /exampleSite/content/page/archive.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2022-09-17T18:00:00+06:00 3 | title: Archive 4 | type: page 5 | layout: archive 6 | menu: sidebar 7 | weight: -100 8 | --- 9 | 10 | ## Enabling Archive 11 | 12 | For enabling Archive, add the following frontmatter in your content file: 13 | 14 | ```yaml 15 | type: page 16 | layout: archive 17 | ``` 18 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/others/_icons.scss: -------------------------------------------------------------------------------- 1 | .icon { 2 | display: inline-block; 3 | height: 1em; 4 | width: 1em; 5 | 6 | stroke: currentColor; 7 | fill: none; 8 | 9 | position: relative; 10 | top: 2px; 11 | } 12 | 13 | img.emoji { 14 | height: 1em; 15 | width: 1em; 16 | margin: 0 0.05em 0 0.1em; 17 | vertical-align: -0.1em; 18 | } 19 | -------------------------------------------------------------------------------- /layouts/partials/head/meta.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{ partial "head/opengraph" . }} 7 | 8 | {{ hugo.Generator }} 9 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/youtube.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/others/_404.scss: -------------------------------------------------------------------------------- 1 | .error404 { 2 | .gopher { 3 | margin: 0; 4 | 5 | img { 6 | width: 17.5em; 7 | } 8 | 9 | a { 10 | display: block; 11 | border: 0; 12 | } 13 | 14 | figcaption { 15 | margin-top: 1em; 16 | } 17 | 18 | .title { 19 | margin-bottom: 0; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/others/_archive.scss: -------------------------------------------------------------------------------- 1 | .layout-archive { 2 | .list { 3 | .item { 4 | padding-left: 1em; 5 | .meta { 6 | flex: 0 0 3.5em; 7 | } 8 | } 9 | } 10 | } 11 | 12 | .archive-group { 13 | &.sep-after { 14 | &:last-child { 15 | &:after { 16 | display: none; 17 | } 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /exampleSite/data/comments/33deba780bf80cacf2627abf7a22fec7/85b5b000-33c9-11e8-b7f2-af13eee21e7d.yml: -------------------------------------------------------------------------------- 1 | _id: 85b5b000-33c9-11e8-b7f2-af13eee21e7d 2 | honeypot: '' 3 | permalink: /docs/comments-support/ 4 | content: Comment's on Minimo is now powered by **Staticman**'s superpower! 5 | author: Munif Tanjim 6 | email: 058944a54775b387da964cb3cc3670ff 7 | site: 'https://muniftanjim.dev' 8 | date: 1522357200000 9 | -------------------------------------------------------------------------------- /exampleSite/content/docs/config-file.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2017-09-25T08:00:00+06:00 3 | lastmod: 2018-02-08T15:15:00+06:00 4 | title: "Configuration File: config.toml" 5 | authors: ["muniftanjim"] 6 | categories: 7 | - others 8 | tags: 9 | - config 10 | slug: config-file 11 | --- 12 | 13 | This is the Minimo's configuration file ( `config.toml` ) file of this site: 14 | 15 | {{< file "config.toml" >}} 16 | -------------------------------------------------------------------------------- /src/stylesheets/navigation/_pagination.scss: -------------------------------------------------------------------------------- 1 | .page-links { 2 | margin-top: 2em; 3 | } 4 | 5 | .page-link { 6 | display: inline-block; 7 | padding: 0.25em 0.625em; 8 | 9 | &:first-child { 10 | padding-left: 0; 11 | } 12 | 13 | &:last-child { 14 | padding-right: 0; 15 | } 16 | 17 | &.current { 18 | font-weight: 700; 19 | } 20 | 21 | &.dots { 22 | padding: 0; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /layouts/partials/entry/meta/posted-on.html: -------------------------------------------------------------------------------- 1 | {{- $dateFormat := ( .Site.Params.settings.dateFormat | default "2006, Jan 02" ) -}} 2 | 3 | {{- partial "svg/icon" "calendar" -}} 4 | {{ i18n "postedOn" }} 5 | 8 | 9 | -------------------------------------------------------------------------------- /layouts/taxonomy/series.html: -------------------------------------------------------------------------------- 1 | {{ partial "header" . }} 2 | 3 | {{ partial "header/header" . }} 4 | 5 | {{ if .Content }} 6 |
    7 | {{ partial "entry/content" . }} 8 |
    9 | {{ end }} 10 | 11 |
    12 |
      13 | {{ range .Data.Pages.ByDate }} 14 | {{ .Render "li" }} 15 | {{ end }} 16 |
    17 |
    18 | 19 | {{ partial "footer" . }} 20 | -------------------------------------------------------------------------------- /layouts/_default/single.html: -------------------------------------------------------------------------------- 1 | {{ partial "header" . }} 2 | 3 |
    4 | {{ partial "entry/header" . }} 5 | {{ partial "entry/cover" . }} 6 | {{ partial "entry/toc" . }} 7 | {{ partial "entry/content" . }} 8 | {{ partial "entry/footer" . }} 9 |
    10 | {{ partial "nav/entry_nav" . }} 11 | {{ partial "entry/comments" . }} 12 | 13 | {{ partial "footer" . }} 14 | -------------------------------------------------------------------------------- /layouts/partials/footer/mermaid.html: -------------------------------------------------------------------------------- 1 | {{- $defaultMermaid := .Site.Data.config.default.mermaid -}} 2 | {{- $mermaid := ( or .Site.Data.config.mermaid $defaultMermaid ) -}} 3 | 4 | {{- if eq .Params.mermaid true -}} 5 | 6 | 13 | 14 | {{- end -}} 15 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/_footer.scss: -------------------------------------------------------------------------------- 1 | .footer { 2 | .sep-before { 3 | &:before { 4 | border-bottom-color: $color__accent; 5 | border-bottom-color: var(--color-accent); 6 | } 7 | } 8 | 9 | a { 10 | font-style: italic; 11 | } 12 | 13 | .container > div, 14 | .container > section { 15 | width: 100%; 16 | margin-top: 1em; 17 | 18 | &:first-child { 19 | margin-top: 0; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/stylesheets/navigation/_entry-nav.scss: -------------------------------------------------------------------------------- 1 | .entry-nav { 2 | .sep-before { 3 | &:nth-child(2) { 4 | &:before { 5 | width: 2em; 6 | margin: 1em 0; 7 | } 8 | } 9 | } 10 | 11 | div { 12 | a { 13 | display: block; 14 | font-style: italic; 15 | } 16 | 17 | span { 18 | display: block; 19 | font-style: normal; 20 | @include font-size(0.875); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/scripts/helpers.js: -------------------------------------------------------------------------------- 1 | export const shuffle = array => { 2 | let shuffled = [...array], 3 | currIndex = array.length, 4 | tempValue, 5 | randIndex 6 | 7 | while (currIndex) { 8 | randIndex = Math.floor(Math.random() * currIndex) 9 | currIndex-- 10 | 11 | tempValue = shuffled[currIndex] 12 | shuffled[currIndex] = shuffled[randIndex] 13 | shuffled[randIndex] = tempValue 14 | } 15 | 16 | return shuffled 17 | } 18 | -------------------------------------------------------------------------------- /layouts/_default/terms.html: -------------------------------------------------------------------------------- 1 | {{ partial "header" . }} 2 | 3 | {{ partial "header/header" . }} 4 | 5 | {{ if .Content }} 6 |
    7 | {{ partial "entry/content" . }} 8 |
    9 | {{ end }} 10 | 11 | {{- $shuffle := .Site.Params.settings.taxonomyCloudShuffle -}} 12 | {{- $taxonomy := .Data.Plural -}} 13 | {{ partial "extras/taxonomy_cloud" ( dict "Taxonomy" $taxonomy "Shuffle" $shuffle "Scope" . ) }} 14 | 15 | {{ partial "footer" . }} 16 | -------------------------------------------------------------------------------- /src/stylesheets/typography/_typography.scss: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: $font-family__main; 3 | @include font-size($font-size__main); 4 | line-height: $line-height__body; 5 | color: $color__text-main; 6 | word-wrap: break-word; 7 | 8 | @include screen($breakpoint-small) { 9 | @include font-size($font-size__main * 1.125); 10 | } 11 | } 12 | 13 | @import 'headings'; 14 | 15 | @import 'copy'; 16 | 17 | .desc { 18 | font-style: italic; 19 | } 20 | -------------------------------------------------------------------------------- /data/theme.toml: -------------------------------------------------------------------------------- 1 | [social.base] 2 | codepen = "https://codepen.io/" 3 | email = "mailto:" 4 | facebook = "https://facebook.com/" 5 | github = "https://github.com/" 6 | gitlab = "https://gitlab.com/" 7 | instagram = "https://instagram.com/" 8 | linkedin = "https://linkedin.com/in/" 9 | twitter = "https://twitter.com/" 10 | telegram = "https://t.me/" 11 | google_scholar = "https://scholar.google.com/citations?user=" 12 | youtube = "https://www.youtube.com/channel/" 13 | -------------------------------------------------------------------------------- /layouts/partials/head/head.html: -------------------------------------------------------------------------------- 1 | 2 | {{ partial "head/meta" . }} 3 | {{ partial "data/title" . }} 4 | 5 | {{ with .OutputFormats.Get "RSS" }} 6 | 7 | {{ end }} 8 | {{ partial "head/hreflang" . }} 9 | {{ partial "head/includes" . }} 10 | {{ partial "head/extra" . }} 11 | 12 | -------------------------------------------------------------------------------- /layouts/_default/list.html: -------------------------------------------------------------------------------- 1 | {{ partial "header" . }} 2 | 3 | {{ partial "header/header" . }} 4 | 5 | {{ if .Content }} 6 |
    7 | {{ partial "entry/content" . }} 8 |
    9 | {{ end }} 10 | 11 |
    12 |
      13 | {{ range .Paginator.Pages }} 14 | {{ .Render "li" }} 15 | {{ end }} 16 |
    17 | 18 | {{ partial "nav/pagination" . }} 19 |
    20 | 21 | {{ partial "footer" . }} 22 | -------------------------------------------------------------------------------- /layouts/partials/footer/scripts.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{- range .Site.Params.assets.customJS -}} 6 | 7 | {{- end -}} 8 | 9 | {{ partial "footer/mathjax" . }} 10 | {{- partial "footer/katex" . -}} 11 | {{- partial "footer/mermaid" . -}} 12 | 13 | {{ partial "footer/extra" . }} 14 | -------------------------------------------------------------------------------- /layouts/partials/comments/staticman/replies-list.html: -------------------------------------------------------------------------------- 1 | {{- .Page.Scratch.Add "comments_depth" 1 -}} 2 | {{- $comments := ( index .Page.Site.Data.comments .Page.File.UniqueID ) -}} 3 | {{- $parentId := .ParentId -}} 4 | 5 |
      6 | {{- range $index, $comment := $comments -}} 7 | {{- if ( eq $comment.parent_id $parentId ) -}} 8 | {{ partial "comments/staticman/comment" ( dict "Comment" $comment "Page" $.Page ) }} 9 | {{- end -}} 10 | {{- end -}} 11 |
    12 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/entry/_content.scss: -------------------------------------------------------------------------------- 1 | .entry-content { 2 | & > :last-child { 3 | &, 4 | & > :last-child { 5 | margin-bottom: 0; 6 | } 7 | } 8 | 9 | a { 10 | border-bottom: 0.125em dashed $color__grey; 11 | 12 | &:focus, 13 | &:hover { 14 | border-bottom-color: $color__accent; 15 | border-bottom-color: var(--color-accent); 16 | } 17 | 18 | &.footnote-return { 19 | border-bottom: none; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/widgets/_breadcrumbs.scss: -------------------------------------------------------------------------------- 1 | .widget-breadcrumbs { 2 | ol { 3 | list-style: none; 4 | margin: 0; 5 | } 6 | 7 | li { 8 | display: inline-block; 9 | 10 | &:after { 11 | display: inline-block; 12 | padding: 0 0.25em; 13 | speak: none; 14 | } 15 | 16 | &:last-child { 17 | &:after { 18 | display: none; 19 | } 20 | } 21 | 22 | span { 23 | font-weight: bold; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/widgets/_social-menu.scss: -------------------------------------------------------------------------------- 1 | .widget-social_menu { 2 | ul { 3 | list-style: none; 4 | margin: 0; 5 | } 6 | 7 | li { 8 | display: inline-block; 9 | margin-right: 0.625em; 10 | 11 | &:last-child { 12 | margin-right: 0; 13 | } 14 | 15 | a { 16 | @include font-size(1.125); 17 | } 18 | } 19 | 20 | .sidebar & { 21 | li { 22 | margin-right: 0; 23 | margin-left: 0.625em; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/stylesheets/elements/_links.scss: -------------------------------------------------------------------------------- 1 | a { 2 | color: $color__link; 3 | text-decoration: none; 4 | transition: color 0.1s ease-in-out; 5 | 6 | &:focus { 7 | outline-color: $color__accent; 8 | outline-color: var(--color-accent); 9 | } 10 | 11 | &:active, 12 | &:hover { 13 | outline: 0; 14 | } 15 | 16 | &:active, 17 | &:focus, 18 | &:hover { 19 | color: $color__link-hover; 20 | } 21 | 22 | &.button { 23 | display: inline-block; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/others/_search.scss: -------------------------------------------------------------------------------- 1 | .search-results { 2 | li { 3 | height: 2.5em; 4 | line-height: 2em; 5 | 6 | border: 1px solid $color__border-input; 7 | border-top-width: 0; 8 | 9 | &:last-child { 10 | border-radius: 0 0 0.2em 0.2em; 11 | } 12 | 13 | &.results-empty, 14 | &.searching { 15 | font-style: italic; 16 | } 17 | 18 | a { 19 | display: block; 20 | padding: 0.25em 0.875em; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /exampleSite/content/docs/search-fuse-js.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2018-07-06T01:00:00+06:00 3 | lastmod: 2018-07-20T20:00:00+06:00 4 | title: "Search: Fuse.js" 5 | authors: ["muniftanjim"] 6 | categories: 7 | - features 8 | tags: 9 | - search 10 | - fuse.js 11 | slug: search-fuse-js 12 | toc: true 13 | --- 14 | 15 | ## Configure Fuse.js Search Client 16 | 17 | Select Fuse.js as the search client in your `config.toml` file: 18 | 19 | ```toml 20 | [params.search] 21 | client = "fuse" 22 | ``` 23 | -------------------------------------------------------------------------------- /src/stylesheets/hugo/shortcodes/_convo.scss: -------------------------------------------------------------------------------- 1 | .convo { 2 | ol { 3 | display: table; 4 | list-style: none; 5 | margin: 0; 6 | } 7 | li { 8 | display: table-row; 9 | 10 | & > div { 11 | display: table-cell; 12 | padding-bottom: 1.5em; 13 | } 14 | } 15 | .person { 16 | @include font-size(0.9); 17 | font-style: italic; 18 | text-align: right; 19 | } 20 | .sep { 21 | padding-left: 0.75em; 22 | padding-right: 0.5em; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /exampleSite/content/docs/syntax-highlighting.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2017-09-27T12:00:00+06:00 3 | title: Syntax Highlighting 4 | authors: ["muniftanjim"] 5 | categories: 6 | - features 7 | tags: 8 | - pygments 9 | - chroma 10 | slug: syntax-highlighting 11 | --- 12 | Hugo uses Chroma as it's built-in syntax-highlighter. 13 | 14 | For detailed information about Syntax Highlighting in Hugo, check the [Hugo's Syntax Highlighting Documentation](https://gohugo.io/content-management/syntax-highlighting/). 15 | -------------------------------------------------------------------------------- /layouts/partials/footer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 |
    5 | {{- $footerWidgets := .Site.Params.widgets.footer -}} 6 | {{- partial "extras/widget_area" ( dict "Widgets" $footerWidgets "Scope" . ) -}} 7 | {{ partial "footer/copyright" . }} 8 |
    9 |
    10 | 11 | 12 | 13 | 14 | {{- partial "footer/scripts" . -}} 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | publish = "exampleSite/public" 3 | 4 | [context.production] 5 | command = "ln -s ${PWD} ../minimo && hugo --source=exampleSite --baseURL=${URL}" 6 | 7 | [context.branch-deploy] 8 | command = "ln -s ${PWD} ../minimo && hugo --source=exampleSite --baseURL=${DEPLOY_PRIME_URL}" 9 | 10 | [context.deploy-preview] 11 | command = "ln -s ${PWD} ../minimo && hugo --source=exampleSite --baseURL=${DEPLOY_PRIME_URL}" 12 | 13 | [build.environment] 14 | HUGO_THEMESDIR = "../.." 15 | HUGO_VERSION = "0.123.0" 16 | -------------------------------------------------------------------------------- /src/stylesheets/elements/_lists.scss: -------------------------------------------------------------------------------- 1 | ol, 2 | ul { 3 | padding: 0; 4 | margin: 0 0 1.5em 1.5em; 5 | } 6 | 7 | ul { 8 | &.task-list { 9 | list-style: none; 10 | 11 | label { 12 | font-weight: inherit; 13 | } 14 | 15 | input { 16 | width: auto; 17 | margin-left: -1.5em; 18 | } 19 | } 20 | } 21 | 22 | li ol, 23 | li ul { 24 | margin-bottom: 0; 25 | margin-left: 1.5em; 26 | } 27 | 28 | dt { 29 | font-weight: 700; 30 | } 31 | 32 | dd { 33 | margin: 0 1.5em 1.5em; 34 | } 35 | -------------------------------------------------------------------------------- /layouts/partials/footer/mathjax.html: -------------------------------------------------------------------------------- 1 | {{- $defaultMathjax := .Site.Data.config.default.mathjax -}} 2 | {{- $mathjax := ( or .Site.Data.config.mathjax $defaultMathjax ) -}} 3 | 4 | {{- if eq .Params.mathjax true -}} 5 | 6 | 11 | 12 | 13 | 14 | {{- end -}} 15 | -------------------------------------------------------------------------------- /layouts/shortcodes/file.html: -------------------------------------------------------------------------------- 1 | {{- if gt ( len .Params ) 1 -}} 2 | {{- $.Scratch.Set "format" ( .Get 1 ) -}} 3 | {{- else -}} 4 | {{- $splits := ( split ( .Get 0 ) "." ) -}} 5 | {{- $splitsLength := ( len $splits ) -}} 6 | {{- $format := ( index $splits ( sub $splitsLength 1 ) ) -}} 7 | {{- $.Scratch.Set "format" $format -}} 8 | {{- end -}} 9 | 10 | {{- $file := ( .Get 0 ) -}} 11 | {{- $format := ( $.Scratch.Get "format" ) -}} 12 | 13 | {{- ( print "```" $format "\n" ( readFile $file ) "\n" "```" ) | markdownify -}} 14 | -------------------------------------------------------------------------------- /src/stylesheets/forms/_fields.scss: -------------------------------------------------------------------------------- 1 | input, 2 | select, 3 | textarea { 4 | width: 100%; 5 | padding: 0.625em 0.875em; 6 | border: 1px solid $color__border-input; 7 | border-radius: 0.2em; 8 | color: $color__text-input; 9 | transition: 0.1s ease-in-out; 10 | 11 | &:focus { 12 | border-color: $color__accent; 13 | border-color: var(--color-accent); 14 | outline-color: transparent; 15 | } 16 | } 17 | 18 | input { 19 | &[type='checkbox'], 20 | &[type='radio'] { 21 | width: auto; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/widgets/_about.scss: -------------------------------------------------------------------------------- 1 | .widget-about { 2 | .logo { 3 | max-width: 5em; 4 | 5 | a { 6 | display: block; 7 | line-height: 0; 8 | } 9 | 10 | .sidebar & { 11 | margin-left: auto; 12 | } 13 | } 14 | 15 | .site-title { 16 | margin-bottom: 0; 17 | @include font-size(1.75); 18 | } 19 | 20 | .sidebar &.sep-after { 21 | &:after { 22 | border-bottom-color: $color__accent; 23 | border-bottom-color: var(--color-accent); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /exampleSite/data/comments/33deba780bf80cacf2627abf7a22fec7/c7062840-33ca-11e8-b7f2-af13eee21e7d.yml: -------------------------------------------------------------------------------- 1 | _id: c7062840-33ca-11e8-b7f2-af13eee21e7d 2 | honeypot: '' 3 | permalink: /docs/comments-support/ 4 | parent_id: 85b5b000-33c9-11e8-b7f2-af13eee21e7d 5 | content: "_\"I suppose everyone feels that he's the hero in his own story, but there are no heroes, no villains, just people doing the best they can.\"_ \r\n--- Harold Finch" 6 | author: Munif Tanjim 7 | email: 058944a54775b387da964cb3cc3670ff 8 | site: '' 9 | date: 1522359000000 10 | -------------------------------------------------------------------------------- /layouts/index.html: -------------------------------------------------------------------------------- 1 | {{ partial "header" . }} 2 | 3 | {{ if .Content }} 4 |
    5 | {{ partial "entry/cover" . }} 6 | {{ partial "entry/content" . }} 7 |
    8 | {{ end }} 9 | 10 | {{- $homepageWidgets := .Site.Params.widgets.homepage -}} 11 | {{- if $homepageWidgets -}} 12 |
    13 |
    14 | {{- partial "extras/widget_area" ( dict "Widgets" $homepageWidgets "Scope" . ) -}} 15 |
    16 |
    17 | {{- end -}} 18 | 19 | {{ partial "footer" . }} 20 | -------------------------------------------------------------------------------- /layouts/partials/header/bodyClasses.html: -------------------------------------------------------------------------------- 1 | {{- $sidebarEnabled := .Site.Params.sidebar.enable -}} 2 | {{- $sidebarWidgets := .Site.Params.widgets.sidebar -}} 3 | 4 | {{- if eq .Kind "404" -}} error{{- end -}}{{- .Kind -}} 5 | {{- with .Type }} type-{{ . }}{{ end -}} 6 | {{- with .Layout }} layout-{{ . }}{{ end -}} 7 | {{- with .Data.Singular }} taxonomy-{{ . }}{{ end -}} 8 | {{- if .Params.cover }} has-cover{{ end -}} 9 | {{- if ( and $sidebarEnabled $sidebarWidgets ) }} has-sidebar{{ end -}} 10 | {{- if eq .Params.emoji true }} has-emoji{{ end -}} 11 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/widgets/_search.scss: -------------------------------------------------------------------------------- 1 | .widget-search { 2 | .search-form { 3 | position: relative; 4 | } 5 | 6 | .search-submit { 7 | position: absolute; 8 | top: 0; 9 | right: 0; 10 | 11 | height: 2.5em; 12 | width: 2.5em; 13 | border-radius: 0 0.2em 0.2em 0; 14 | } 15 | 16 | .layout-search & { 17 | header { 18 | display: none; 19 | } 20 | 21 | .search-term { 22 | height: 2.5em; 23 | padding-right: 3em; 24 | border-radius: 0.2em 0.2em 0 0; 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /layouts/shortcodes/text.html: -------------------------------------------------------------------------------- 1 |
    16 | {{- .Inner | markdownify -}} 17 |
    18 | -------------------------------------------------------------------------------- /layouts/partials/entry/taxonomy-list.html: -------------------------------------------------------------------------------- 1 | {{- $txs := ( $.Scratch.Get "taxonomy" ) -}} 2 | {{- $tx := ( $txs | singularize ) -}} 3 | 4 | {{- $taxonomies := ( index $.Site.Taxonomies $txs ) -}} 5 | 6 |
    7 | {{- partial "svg/icon" $tx -}} 8 | {{ ( ( i18n $tx 2 ) | default $txs ) }}: 9 | {{- range $i, $item := ( $.GetTerms $txs ) -}} 10 | {{- if gt $i 0 }}, {{ end -}} 11 | 12 | {{- $item.Title -}} 13 | 14 | {{- end -}} 15 |
    16 | -------------------------------------------------------------------------------- /layouts/partials/comments/staticman/submission-feedback.html: -------------------------------------------------------------------------------- 1 |
    2 |

    {{ i18n "commentSubmissionSuccessTitle" }}

    3 | {{ i18n "commentSubmissionSuccessMessage" }} 4 | {{ i18n "ok" }} 5 |
    6 | 7 |
    8 |

    {{ i18n "commentSubmissionErrorTitle" }}

    9 | {{ i18n "commentSubmissionErrorMessage" }} 10 | {{ i18n "ok" }} 11 |
    12 | -------------------------------------------------------------------------------- /src/stylesheets/elements/_tables.scss: -------------------------------------------------------------------------------- 1 | table, 2 | td, 3 | th { 4 | border: 1px solid $color__border-table; 5 | } 6 | 7 | table { 8 | width: 100%; 9 | margin: 0 0 1.5em; 10 | table-layout: fixed; 11 | border-collapse: separate; 12 | border-spacing: 0; 13 | border-width: 1px 0 0 1px; 14 | } 15 | 16 | caption, 17 | td, 18 | th { 19 | font-weight: 400; 20 | text-align: left; 21 | } 22 | 23 | th { 24 | border-width: 0 1px 1px 0; 25 | font-weight: 700; 26 | } 27 | 28 | td { 29 | border-width: 0 1px 1px 0; 30 | } 31 | 32 | td, 33 | th { 34 | padding: 0.375em; 35 | } 36 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/entry/_cover.scss: -------------------------------------------------------------------------------- 1 | .entry-cover { 2 | figure { 3 | margin-top: 2em; 4 | margin-bottom: 2.5em; 5 | } 6 | 7 | img { 8 | display: block; 9 | } 10 | 11 | figcaption { 12 | text-align: center; 13 | margin: 0.25em auto 0; 14 | padding: 0; 15 | 16 | span { 17 | @include font-size(0.875); 18 | } 19 | } 20 | } 21 | 22 | .cover-wide { 23 | padding: 0; 24 | max-width: $max-width__cover-wide; 25 | } 26 | 27 | .cover-full { 28 | padding: 0; 29 | max-width: 100%; 30 | 31 | img { 32 | width: 100%; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/stylesheets/navigation/menus/_menus.scss: -------------------------------------------------------------------------------- 1 | .menu { 2 | ul { 3 | list-style: none; 4 | margin: 0; 5 | } 6 | 7 | li { 8 | text-transform: uppercase; 9 | 10 | &.current { 11 | & > a { 12 | font-weight: 700; 13 | pointer-events: none; 14 | } 15 | } 16 | } 17 | } 18 | 19 | @import 'main'; 20 | @import 'sidebar'; 21 | 22 | .menu a, 23 | .sub-menu-toggler, 24 | .sidebar-toggler span, 25 | .widget-social_menu a { 26 | color: $color__bluegrey-700; 27 | 28 | &:focus, 29 | &:hover { 30 | color: $color__bluegrey-900; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /data/config/default/widgets.toml: -------------------------------------------------------------------------------- 1 | [about] 2 | title = "" 3 | description = "" 4 | logo = "images/logo.png" 5 | 6 | [breadcrumbs] 7 | separator = "/" 8 | excludeParents = ["page"] 9 | 10 | [recent_posts] 11 | title = "" 12 | length = 5 13 | excludeTypes = ["page"] 14 | 15 | [search] 16 | title = "" 17 | 18 | [sidebar_menu] 19 | title = "" 20 | mirror = "" 21 | 22 | [social_menu] 23 | title = "" 24 | platforms = ["github","facebook","twitter","instagram","email","codepen","gitlab","linkedin","telegram","google_scholar","youtube"] 25 | 26 | [taxonomy_cloud] 27 | title = "" 28 | taxonomy = "tags" 29 | shuffle = true 30 | -------------------------------------------------------------------------------- /layouts/page/archive.html: -------------------------------------------------------------------------------- 1 | {{ partial "header" . }} 2 | 3 | {{ partial "header/header" . }} 4 | 5 | {{ if .Content }} 6 |
    7 | {{ partial "entry/content" . }} 8 |
    9 | {{ end }} 10 | 11 |
    12 | {{ range ( where .Site.RegularPages "Type" "ne" "page" ).GroupByDate "2006" }} 13 |
    14 |

    {{ .Key }}

    15 |
      16 | {{ range .Pages }} 17 | {{ .Render "li.archive" }} 18 | {{ end }} 19 |
    20 |
    21 | {{ end }} 22 |
    23 | 24 | {{ partial "footer" . }} 25 | -------------------------------------------------------------------------------- /layouts/partials/footer/katex.html: -------------------------------------------------------------------------------- 1 | {{- $defaultKatex := .Site.Data.config.default.katex -}} 2 | {{- $katex := ( or .Site.Data.config.katex $defaultKatex ) -}} 3 | 4 | {{- if or ( eq .Params.katex true ) ( .HasShortcode "katex" ) -}} 5 | 6 | 7 | 8 | 9 | 10 | 15 | 16 | {{- end -}} 17 | -------------------------------------------------------------------------------- /layouts/partials/svg/content/git.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /layouts/partials/data/author/displayName: -------------------------------------------------------------------------------- 1 | {{- $.Scratch.Set "authorID" "" -}} 2 | 3 | {{- if eq .Kind "term" -}} 4 | {{- $.Scratch.Set "authorID" .Data.Term -}} 5 | {{- else if eq .Kind "taxonomy" -}} 6 | {{- $.Scratch.Set "authorID" .Name -}} 7 | {{- else if eq .Kind "page" -}} 8 | {{- $.Scratch.Set "authorID" ( index .Params.authors 0 ) -}} 9 | {{- end -}} 10 | 11 | {{- $lang := ( .Params.lang | default .Lang ) -}} 12 | {{- $author := ( index $.Site.Data.authors ( $.Scratch.Get "authorID" ) ) -}} 13 | {{- $i18nAuthor := ( index $author $lang ) -}} 14 | {{- $name := ( or $i18nAuthor.name $author.name ) -}} 15 | {{- $name.display -}} 16 | -------------------------------------------------------------------------------- /layouts/partials/footer/copyright.html: -------------------------------------------------------------------------------- 1 | 19 | -------------------------------------------------------------------------------- /layouts/partials/head/includes.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{- if or ( .Site.Params.settings.rtl ) ( eq .Site.Language.LanguageDirection "rtl" ) -}} 5 | 6 | {{- end -}} 7 | 8 | {{- range .Site.Params.assets.customCSS -}} 9 | 10 | {{- end -}} 11 | 12 | {{- partial "head/css" . -}} 13 | 14 | {{- partial "head/analytics" . -}} 15 | -------------------------------------------------------------------------------- /layouts/partials/head/hreflang.html: -------------------------------------------------------------------------------- 1 | {{- define "hreflang_x" -}} 2 | 3 | {{- end -}} 4 | 5 | {{- define "hreflang_x_default" -}} 6 | {{- if eq .Lang ( index .Site.Languages 0 ).Lang -}} 7 | 8 | {{- end -}} 9 | {{- end -}} 10 | 11 | {{- if .IsTranslated -}} 12 | 13 | {{- template "hreflang_x" . -}} 14 | {{- template "hreflang_x_default" . -}} 15 | {{- range .Translations -}} 16 | {{- template "hreflang_x" . -}} 17 | {{- template "hreflang_x_default" . -}} 18 | {{- end -}} 19 | 20 | {{- end -}} 21 | -------------------------------------------------------------------------------- /static/assets/js/details-polyfill.57b4e5ce.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[2],{45:function(e,n,t){"use strict";t.r(n),t.d(n,"detailsPolyfill",(function(){return i}));var o=document.body,i=function(e){(function(){var e=document.createElement("details");if(!("open"in e))return!1;e.innerHTML="ab",o.appendChild(e);var n=e.offsetHeight;e.open=!0;var t=n!=e.offsetHeight;return o.removeChild(e),t})()||(o.classList.add("no-details"),e.forEach((function(e){e.querySelector("summary").addEventListener("click",(function(){e.getAttribute("open")?(e.open=!1,e.removeAttribute("open")):(e.open=!0,e.setAttribute("open","open"))}))})))}}}]); -------------------------------------------------------------------------------- /layouts/partials/sidebar/toggler.html: -------------------------------------------------------------------------------- 1 | {{- $sidebarEnabled := .Site.Params.sidebar.enable -}} 2 | {{- $sidebarWidgets := .Site.Params.widgets.sidebar -}} 3 | 4 | {{- if ( and $sidebarEnabled $sidebarWidgets ) -}} 5 | 6 | {{ i18n "skipToContent" }} 7 | 8 | 17 | 18 | {{- end -}} 19 | -------------------------------------------------------------------------------- /layouts/partials/entry/meta.html: -------------------------------------------------------------------------------- 1 | {{- $defaultConfig := slice "page" -}} 2 | {{- $config := .Site.Params.settings.hideEntryMeta | default $defaultConfig -}} 3 | {{- $configType := ( printf "%T" $config ) -}} 4 | 5 | {{- if ( eq $configType "bool" ) -}} 6 | {{- $.Scratch.Set "showEntryMeta" ( not $config ) -}} 7 | {{- else -}} 8 | {{- $.Scratch.Set "showEntryMeta" ( not ( in $config .Section ) ) -}} 9 | {{- end -}} 10 | 11 | {{- if ( $.Scratch.Get "showEntryMeta" ) -}} 12 | 17 | {{ end }} 18 | -------------------------------------------------------------------------------- /layouts/partials/comments/staticman/list.html: -------------------------------------------------------------------------------- 1 | {{- $entryId := .File.UniqueID -}} 2 | 3 | {{- if isset .Site.Data.comments $entryId -}} 4 | 5 | {{- $comments := ( index .Site.Data.comments $entryId ) -}} 6 |

    7 | {{ i18n "commentsOnEntry" ( dict "Count" ( len $comments ) "Title" .Title ) }} 8 |

    9 | 10 |
      11 | {{- range $index, $comment := $comments -}} 12 | {{- $.Scratch.Set "comments_depth" 1 -}} 13 | {{- if not $comment.parent_id -}} 14 | {{ partial "comments/staticman/comment" ( dict "Comment" $comment "Page" $ ) }} 15 | {{- end -}} 16 | {{- end -}} 17 |
    18 | 19 | {{- end -}} 20 | -------------------------------------------------------------------------------- /layouts/partials/sidebar/sidebar.html: -------------------------------------------------------------------------------- 1 | {{- $sidebarEnabled := .Site.Params.sidebar.enable -}} 2 | {{- $sidebarWidgets := .Site.Params.widgets.sidebar -}} 3 | 4 | {{- if ( and $sidebarEnabled $sidebarWidgets ) -}} 5 | 6 | 15 | 16 | {{- else -}} 17 | 18 | {{ i18n "skipToContent" }} 19 | 20 | {{- end -}} 21 | -------------------------------------------------------------------------------- /src/stylesheets/elements/_elements.scss: -------------------------------------------------------------------------------- 1 | html { 2 | box-sizing: border-box; 3 | } 4 | 5 | *, 6 | *:after, 7 | *:before { 8 | box-sizing: inherit; 9 | } 10 | 11 | blockquote, 12 | q { 13 | quotes: '' ''; 14 | 15 | &:after, 16 | &:before { 17 | content: ''; 18 | } 19 | 20 | :last-child { 21 | margin-bottom: 0; 22 | } 23 | } 24 | 25 | hr { 26 | border: 0; 27 | height: 1px; 28 | margin: 2em 0; 29 | background-color: $color__background-hr; 30 | } 31 | 32 | img { 33 | max-width: 100%; 34 | height: auto; 35 | } 36 | 37 | figure { 38 | margin: 1em 0; 39 | } 40 | 41 | @import 'links'; 42 | 43 | @import 'lists'; 44 | 45 | @import 'tables'; 46 | -------------------------------------------------------------------------------- /src/stylesheets/extras/variables/_typography.scss: -------------------------------------------------------------------------------- 1 | $font-family__main: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 2 | Oxygen-Sans, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; 3 | $font-family__code: Menlo, Consolas, Monaco, 'Ubuntu Mono', 'Liberation Mono', 4 | 'Lucida Console', monospace; 5 | 6 | $line-height__body: 1.5; 7 | $line-height__heading: 1.2; 8 | 9 | $font-size__base: 16px; 10 | 11 | $font-size__h1: 2; 12 | $font-size__h2: 1.75; 13 | $font-size__h3: 1.5; 14 | $font-size__h4: 1.375; 15 | $font-size__h5: 1.25; 16 | $font-size__h6: 1.125; 17 | 18 | $font-size__main: 1; 19 | $font-size__code: 0.9375; 20 | $font-size__blockquote: 1.125; 21 | -------------------------------------------------------------------------------- /exampleSite/staticman.yml: -------------------------------------------------------------------------------- 1 | comments: 2 | allowedFields: ['author', 'content', 'email', 'parent_id', 'permalink', 'site'] 3 | branch: 'master' 4 | commitMessage: "add [comment]: by {fields.author} \n\n{fields.permalink}#comment-{@id}" 5 | filename: '{@id}' 6 | format: 'yaml' 7 | generatedFields: 8 | date: 9 | type: date 10 | options: 11 | format: 'timestamp' 12 | moderation: false 13 | name: 'Minimo' 14 | path: 'data/comments/{options.postId}' 15 | requiredFields: ['author', 'content', 'email', 'permalink'] 16 | reCaptcha: 17 | enabled: false 18 | # siteKey: '' 19 | # secret: '' 20 | transforms: 21 | email: md5 22 | -------------------------------------------------------------------------------- /layouts/partials/entry/meta/author.html: -------------------------------------------------------------------------------- 1 | {{- with .Params.authors -}} 2 | 3 | {{- $lang := ( $.Params.lang | default $.Lang ) -}} 4 | 5 | 19 | 20 | {{- end -}} 21 | -------------------------------------------------------------------------------- /data/assets.json: -------------------------------------------------------------------------------- 1 | { 2 | "algolia_search": { 3 | "js": "algolia_search.3c88c657.js" 4 | }, 5 | "comments": { 6 | "js": "comments.8316cbbf.js" 7 | }, 8 | "details-polyfill": { 9 | "js": "details-polyfill.57b4e5ce.js" 10 | }, 11 | "fuse_search": { 12 | "js": "fuse_search.5a8b4fd6.js" 13 | }, 14 | "lunr_search": { 15 | "js": "lunr_search.43c384a1.js" 16 | }, 17 | "main": { 18 | "css": "main.e45c9137.css", 19 | "js": "main.56dcff95.js" 20 | }, 21 | "rtl": { 22 | "css": "rtl.e580af8f.css", 23 | "js": "rtl.cebcaee5.js" 24 | }, 25 | "sidebar": { 26 | "js": "sidebar.8b55e6c1.js" 27 | }, 28 | "twemoji": { 29 | "js": "twemoji.b04127dd.js" 30 | } 31 | } -------------------------------------------------------------------------------- /src/stylesheets/layouts/_header.scss: -------------------------------------------------------------------------------- 1 | .header { 2 | .sep-after { 3 | &:after { 4 | border-bottom-color: $color__accent; 5 | border-bottom-color: var(--color-accent); 6 | .has-cover & { 7 | display: none; 8 | } 9 | } 10 | } 11 | } 12 | 13 | .site-header { 14 | display: none; 15 | 16 | @at-root .home &, 17 | .error404 & { 18 | display: flex; 19 | } 20 | } 21 | 22 | .header-info { 23 | margin-top: 1.5em; 24 | 25 | .title { 26 | margin-bottom: 0; 27 | } 28 | 29 | .desc { 30 | margin: 0.5em 0 0; 31 | } 32 | 33 | .taxonomy-name { 34 | @include font-size(0.875); 35 | margin-right: 0.25em; 36 | font-style: italic; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /exampleSite/content/docs/sidebar.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2018-02-07T19:15:00+06:00 3 | lastmod: 2018-03-29T05:20:00+06:00 4 | title: Sidebar 5 | authors: ["muniftanjim"] 6 | categories: 7 | - features 8 | tags: 9 | - config 10 | slug: sidebar 11 | menu: sidebar 12 | --- 13 | 14 | ## Enabling Sidebar 15 | 16 | For enabling Sidebar, use the following configuration options in your **`config.toml`** file: 17 | 18 | ```toml 19 | [params.sidebar] 20 | enable = true 21 | ``` 22 | 23 | - `params.sidebar` [`Map`]: 24 | - `enable` [`Boolean`]: Switch for enabling sidebar 25 | 26 | ## Adding Widgets to Sidebar 27 | 28 | For adding Widgets to the Sidebar, check the [Widgets documentation]({{< relref "/docs/widgets.md#available-widget-areas" >}}). 29 | -------------------------------------------------------------------------------- /static/assets/js/comments.8316cbbf.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[1],{48:function(e,n,t){"use strict";t.r(n),t.d(n,"initComments",(function(){return a}));var o=document.querySelector(".comment-list"),r=document.querySelector("#respond"),c=r.querySelector("form"),i=r.querySelector("#cancel-comment-reply-link"),l=r.querySelector('[name="fields[parent_id]"]'),u=function(e){if(e){var n=o.querySelector("#comment-".concat(e," article"));return l.value=e,n.parentNode.insertBefore(r,n.nextSibling),i.style.display="",c.querySelector("textarea").focus(),!1}},a=function(){i.style.display="none",i.addEventListener("click",(function(e){e.preventDefault(),l.value="",o.parentNode.appendChild(r),i.style.display="none"})),window.moveRespondBlock=u}}}]); -------------------------------------------------------------------------------- /src/stylesheets/layouts/entry/_toc.scss: -------------------------------------------------------------------------------- 1 | details, 2 | summary { 3 | display: block; 4 | } 5 | 6 | summary { 7 | cursor: pointer; 8 | } 9 | 10 | .no-details { 11 | details { 12 | &:not([open]) > :not(summary) { 13 | display: none; 14 | } 15 | 16 | & > summary:before { 17 | content: '\25BC'; 18 | display: inline-block; 19 | margin-right: 0.25em; 20 | transition: 0.1s; 21 | transform: rotate(-90deg); 22 | } 23 | 24 | &[open] > summary:before { 25 | transform: rotate(0deg); 26 | } 27 | } 28 | } 29 | 30 | .entry-toc { 31 | margin-bottom: 2.5em; 32 | 33 | ul { 34 | list-style: none; 35 | } 36 | 37 | nav { 38 | & > ul { 39 | margin: 0; 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/stylesheets/typography/_copy.scss: -------------------------------------------------------------------------------- 1 | p { 2 | margin: 0 0 1.5em; 3 | 4 | &:last-child { 5 | margin: 0; 6 | } 7 | } 8 | 9 | cite, 10 | dfn, 11 | em, 12 | i { 13 | font-style: italic; 14 | } 15 | 16 | blockquote { 17 | @include font-size($font-size__blockquote); 18 | font-style: italic; 19 | 20 | margin: 0 0 1.5em; 21 | padding-left: 1em; 22 | border-left: 0.2em solid $color__blockquote-border; 23 | } 24 | 25 | address { 26 | margin: 0 0 1.5em; 27 | } 28 | 29 | @import 'codes'; 30 | 31 | abbr, 32 | acronym { 33 | border-bottom: 1px dotted $color__black; 34 | cursor: help; 35 | } 36 | 37 | ins, 38 | mark { 39 | background: $color__black; 40 | text-decoration: none; 41 | } 42 | 43 | big { 44 | font-size: 125%; 45 | } 46 | -------------------------------------------------------------------------------- /layouts/partials/comments/utterances.html: -------------------------------------------------------------------------------- 1 | {{- $scriptSrc := "https://utteranc.es/client.js" -}} 2 | 3 | {{- $issueTerm := .Page.Site.Params.comments.utterances.issueTerm -}} 4 | {{- $label := .Page.Site.Params.comments.utterances.label -}} 5 | {{- $theme := .Page.Site.Params.comments.utterances.theme -}} 6 | {{- $username := .Page.Site.Params.comments.utterances.github.username -}} 7 | {{- $repository := .Page.Site.Params.comments.utterances.github.repository -}} 8 | 9 | 20 | -------------------------------------------------------------------------------- /layouts/partials/widgets/recent_posts.html: -------------------------------------------------------------------------------- 1 | {{- $defaultConfig := .Site.Data.config.default.widgets.recent_posts -}} 2 | {{- $configData := ( or .Site.Data.config.widgets.recent_posts $defaultConfig ) -}} 3 | {{- $lang := .Site.Language.Lang -}} 4 | {{- $config := ( ( index $configData $lang ) | default $configData ) -}} 5 | 6 | {{- $length := ( $config.length | default 5 ) -}} 7 | 8 |
    9 |
    10 |

    11 | {{- $config.title | default ( i18n "recentPosts" ) -}} 12 |

    13 |
    14 | 15 |
      16 | {{ range ( first $length ( where .Site.RegularPages "Type" "not in" $config.excludeTypes ) ) }} 17 | {{ .Render "li" }} 18 | {{ end }} 19 |
    20 |
    21 | -------------------------------------------------------------------------------- /layouts/taxonomy/author.terms.html: -------------------------------------------------------------------------------- 1 | {{- $lang := ( $.Params.lang | default $.Lang ) -}} 2 | 3 | {{ partial "header" . }} 4 | 5 | {{ partial "header/header" . }} 6 | 7 |
    8 |
      9 | {{ range .Data.Terms.Alphabetical }} 10 | {{- $author := ( index $.Site.Data.authors .Name ) -}} 11 | {{- $data := ( or ( index $author $lang ) $author ) -}} 12 | {{- $name := $data.name -}} 13 |
    • 14 |

      15 | {{- partial "svg/icon" "author" -}} 16 | 17 | {{- $name.display -}} 18 | 19 |

      20 |
    • 21 | {{ end }} 22 |
    23 |
    24 | 25 | {{ partial "footer" . }} 26 | -------------------------------------------------------------------------------- /src/stylesheets/extras/_accessibility.scss: -------------------------------------------------------------------------------- 1 | .screen-reader-text { 2 | position: absolute; 3 | clip: rect(1px, 1px, 1px, 1px); 4 | clip-path: inset(50%); 5 | height: 1px; 6 | width: 1px; 7 | margin: -1px; 8 | padding: 0; 9 | border: 0; 10 | overflow: hidden; 11 | word-wrap: normal !important; 12 | 13 | &:focus { 14 | display: block; 15 | left: 0.5em; 16 | top: 0.5em; 17 | clip: auto; 18 | clip-path: none; 19 | height: auto; 20 | width: auto; 21 | padding: 1em; 22 | border-radius: 0.25em; 23 | @include font-size(0.875); 24 | font-weight: 700; 25 | line-height: normal; 26 | text-decoration: none; 27 | background: $color__background-screen; 28 | color: $color__text-screen !important; 29 | z-index: 100000; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/widgets/_widgets.scss: -------------------------------------------------------------------------------- 1 | .widget { 2 | &-title { 3 | margin-bottom: 1em; 4 | } 5 | 6 | &.sep-after { 7 | &:after { 8 | margin-top: 1.5em; 9 | margin-bottom: 1.5em; 10 | } 11 | 12 | &:last-of-type { 13 | &:after { 14 | display: none; 15 | } 16 | } 17 | } 18 | 19 | .sidebar & { 20 | &-title { 21 | margin-bottom: 0.5em; 22 | @include font-size($font-size__h5); 23 | } 24 | 25 | .container { 26 | padding: 0; 27 | } 28 | } 29 | } 30 | 31 | .header-widgets { 32 | .main-menu + & { 33 | margin-top: 1em; 34 | } 35 | } 36 | 37 | @import 'about'; 38 | @import 'breadcrumbs'; 39 | @import 'recent-posts'; 40 | @import 'search'; 41 | @import 'social-menu'; 42 | @import 'taxonomy-cloud'; 43 | -------------------------------------------------------------------------------- /layouts/shortcodes/convo.html: -------------------------------------------------------------------------------- 1 |
    2 |
      3 | {{ range ( split .Inner "\n" ) }} 4 | {{ with . }} 5 |
    1. 6 | {{ range $i, $chunk := ( split . "::" ) }} 7 | {{ if or $chunk "s" }} 8 | {{ if eq $i 0 }} 9 |
      10 | {{- $chunk | markdownify -}} 11 |
      12 | {{ else }} 13 |
      14 | {{- print " " ( $.Get "sep" | default ":" ) " " -}} 15 |
      16 |
      17 | {{- $chunk | markdownify -}} 18 |
      19 | {{ end }} 20 | {{ end }} 21 | {{ end }} 22 |
    2. 23 | {{ end }} 24 | {{ end }} 25 |
    26 |
    27 | -------------------------------------------------------------------------------- /layouts/partials/header/header.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |
    4 |

    5 | {{- if eq .Kind "term" -}} 6 | 7 | {{- ( ( i18n .Data.Singular 1 ) | default .Data.Singular ) -}} 8 | {{- print ": " -}} 9 | 10 | {{- end -}} 11 | 12 | {{- if eq .Kind "taxonomy" -}} 13 | {{- ( ( i18n .Data.Singular 2 ) | default .Title ) -}} 14 | {{- else if eq .Data.Singular "author" -}} 15 | {{- partial "data/author/displayName" . -}} 16 | {{- else -}} 17 | {{- .Title -}} 18 | {{- end -}} 19 |

    20 | 21 | {{ partial "header/description" . }} 22 |
    23 |
    24 |
    25 | -------------------------------------------------------------------------------- /layouts/404.html: -------------------------------------------------------------------------------- 1 | {{ partial "header" . }} 2 | 3 |
    4 |
    5 | 6 | {{- .Site.Params.info.title404 | default .Title -}} 7 | 8 |
    9 | 10 | {{ i18n "gopher" }} 11 | 12 | {{- i18n "goHome" -}} 13 | 14 | 15 |
    16 |

    17 | 18 | {{- .Site.Params.info.title404 | default .Title -}} 19 | 20 |

    21 |
    22 |
    23 |
    24 |
    25 | 26 | {{ partial "footer" . }} 27 | -------------------------------------------------------------------------------- /layouts/partials/nav/menus/main.html: -------------------------------------------------------------------------------- 1 | {{- if not .Site.Params.settings.hideMainMenu -}} 2 | 3 | 20 | 21 | {{- else -}} 22 | 23 | {{ partial "sidebar/toggler" . }} 24 | 25 | {{- end -}} 26 | -------------------------------------------------------------------------------- /layouts/partials/entry/cover.html: -------------------------------------------------------------------------------- 1 | {{- with .Params.cover -}} 2 | 3 | {{- $type := ( printf "%T" . ) -}} 4 | {{- $isMap := ( not ( eq $type "string" ) ) -}} 5 | 6 |
    7 |
    11 | {{ . | markdownify }} 15 | {{ if $isMap }} 16 | {{ with .caption }} 17 |
    18 | 19 | {{- . | markdownify -}} 20 | 21 |
    22 | {{ end }} 23 | {{ end }} 24 |
    25 |
    26 | 27 | {{- end -}} 28 | -------------------------------------------------------------------------------- /src/stylesheets/typography/_headings.scss: -------------------------------------------------------------------------------- 1 | .title, 2 | h1, 3 | h2, 4 | h3, 5 | h4, 6 | h5, 7 | h6 { 8 | font-family: $font-family__main; 9 | font-weight: 700; 10 | line-height: $line-height__heading; 11 | color: $color__text-heading; 12 | 13 | margin: 0 0 0.625em; 14 | } 15 | 16 | .entry-content { 17 | h2, 18 | h3, 19 | h4, 20 | h5, 21 | h6 { 22 | margin-top: 1.5em; 23 | 24 | &:first-child { 25 | margin-top: 0; 26 | } 27 | } 28 | } 29 | 30 | .site-title, 31 | h1 { 32 | @include font-size($font-size__h1); 33 | } 34 | 35 | h2 { 36 | @include font-size($font-size__h2); 37 | } 38 | 39 | h3 { 40 | @include font-size($font-size__h3); 41 | } 42 | 43 | h4 { 44 | @include font-size($font-size__h4); 45 | } 46 | 47 | h5 { 48 | @include font-size($font-size__h5); 49 | } 50 | 51 | h6 { 52 | @include font-size($font-size__h6); 53 | } 54 | -------------------------------------------------------------------------------- /exampleSite/content/docs/translation.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2017-09-27T14:00:00+06:00 3 | title: Translation Support 4 | authors: ["muniftanjim"] 5 | categories: 6 | - features 7 | tags: 8 | - translation 9 | - i18n 10 | slug: translation 11 | --- 12 | You can translate Minimo in your own language! 13 | 14 | For example, if you want to translate Minimo in Spanish, you will have to add this to your site's config file: 15 | 16 | ```toml 17 | [languages.es] 18 | lang = "es" 19 | languageName = "Spanish" 20 | weight = 1 21 | ``` 22 | 23 | Then create a folder named **`/i18n/`** in your site's root. And create a file **`/i18n/es.toml`** with the translated strings. 24 | 25 | For reference template you can see the [en.toml](https://github.com/MunifTanjim/minimo/blob/master/i18n/en.toml) file. 26 | 27 | If you want your translation file to be included in Minimo repository, feel free to create a pull request. 28 | -------------------------------------------------------------------------------- /src/stylesheets/typography/_codes.scss: -------------------------------------------------------------------------------- 1 | pre, 2 | code, 3 | kbd, 4 | var, 5 | samp { 6 | font-family: $font-family__code; 7 | 8 | background: $color__background-code; 9 | color: $color__text-code; 10 | 11 | border: 1px solid $color__border-code; 12 | border-radius: 0.25em; 13 | padding: 0.1em 0.25em; 14 | } 15 | 16 | pre { 17 | overflow: auto; 18 | word-wrap: normal; 19 | text-align: initial; 20 | 21 | margin-bottom: 1.5em; 22 | padding: 0.75em 1em; 23 | 24 | code, 25 | kbd, 26 | var, 27 | samp { 28 | background: none; 29 | color: inherit; 30 | 31 | border: 0; 32 | padding: 0; 33 | } 34 | } 35 | 36 | code, 37 | kbd, 38 | var, 39 | samp { 40 | @include font-size($font-size__code); 41 | } 42 | 43 | .highlight { 44 | pre { 45 | border: 0; 46 | margin: 0; 47 | } 48 | 49 | .entry-content & { 50 | margin-bottom: 1.5em; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /layouts/partials/widgets/taxonomy_cloud.html: -------------------------------------------------------------------------------- 1 | {{- $defaultConfig := .Site.Data.config.default.widgets.taxonomy_cloud -}} 2 | {{- $configData := ( or .Site.Data.config.widgets.taxonomy_cloud $defaultConfig ) -}} 3 | {{- $lang := .Site.Language.Lang -}} 4 | {{- $config := ( ( index $configData $lang ) | default $configData ) -}} 5 | 6 | {{- $shuffle := ( $config.shuffle | default true ) -}} 7 | {{- $taxonomy := ( $config.taxonomy | default "tags" ) -}} 8 | {{- $taxonomyData := ( .Site.GetPage $taxonomy ).Data -}} 9 | {{- $taxonomySingular := $taxonomyData.Singular -}} 10 | 11 |
    12 |
    13 |

    14 | {{- ( $config.title | default ( i18n $taxonomySingular 2 ) ) -}} 15 |

    16 |
    17 | 18 | {{ partial "extras/taxonomy_cloud" ( dict "Taxonomy" $taxonomy "Shuffle" $shuffle "Scope" . ) }} 19 | 20 |
    21 | -------------------------------------------------------------------------------- /static/assets/js/rtl.cebcaee5.js: -------------------------------------------------------------------------------- 1 | !function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=43)}({43:function(e,t,r){}}); -------------------------------------------------------------------------------- /src/stylesheets/style.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Theme Name: Minimo 3 | * Author: Munif Tanjim 4 | */ 5 | 6 | @import 'extras/extras'; 7 | 8 | /***************** 9 | # Normalize 10 | *****************/ 11 | @import '~normalize.css/normalize.css'; 12 | 13 | /***************** 14 | # Typography 15 | *****************/ 16 | @import 'typography/typography'; 17 | 18 | /***************** 19 | # Elements 20 | *****************/ 21 | @import 'elements/elements'; 22 | 23 | /***************** 24 | # Forms 25 | *****************/ 26 | @import 'forms/forms'; 27 | 28 | /***************** 29 | # Navigation 30 | *****************/ 31 | @import 'navigation/navigation'; 32 | 33 | /***************** 34 | # Layouts 35 | *****************/ 36 | @import 'layouts/layouts'; 37 | 38 | /***************** 39 | # Accessibility 40 | *****************/ 41 | @import 'extras/accessibility'; 42 | 43 | /***************** 44 | # Hugo Specific 45 | *****************/ 46 | @import 'hugo/hugo'; 47 | -------------------------------------------------------------------------------- /src/stylesheets/forms/_buttons.scss: -------------------------------------------------------------------------------- 1 | .button, 2 | button, 3 | input[type='button'], 4 | input[type='reset'], 5 | input[type='submit'] { 6 | width: auto; 7 | padding: 0.5em 0.75em; 8 | border: 1px solid $color__border-input; 9 | border-radius: 0.2em; 10 | 11 | background: $color__button-background; 12 | color: $color__button-text; 13 | 14 | @include font-size(1); 15 | font-weight: 700; 16 | line-height: 1.15; 17 | text-align: center; 18 | letter-spacing: 1px; 19 | white-space: nowrap; 20 | text-transform: uppercase; 21 | 22 | user-select: none; 23 | cursor: pointer; 24 | 25 | transition: 0.1s ease-in-out; 26 | 27 | &:focus { 28 | outline-color: $color__accent; 29 | outline-color: var(--color-accent); 30 | } 31 | 32 | &:active, 33 | &:hover { 34 | outline: 0; 35 | } 36 | 37 | &:active, 38 | &:focus, 39 | &:hover { 40 | background: $color__button-text; 41 | color: $color__button-background; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /theme.toml: -------------------------------------------------------------------------------- 1 | name = "Minimo" 2 | license = "MIT" 3 | licenselink = "https://github.com/MunifTanjim/minimo/blob/master/LICENSE" 4 | description = "Minimalist theme for Hugo" 5 | homepage = "https://minimo.netlify.app" 6 | tags = [ 7 | "blog", 8 | "minimal", 9 | "minimalist", 10 | "responsive", 11 | "google-analytics" 12 | ] 13 | features = [ 14 | "accessibility", 15 | "algolia", 16 | "analytics", 17 | "breadcrumbs", 18 | "comments", 19 | "cover-image", 20 | "disqus", 21 | "entry-navigation", 22 | "favicon", 23 | "fuse.js", 24 | "isso", 25 | "lunr.js", 26 | "multilingual", 27 | "multi-author", 28 | "opengraph", 29 | "pagination", 30 | "rtl", 31 | "search", 32 | "shortcodes", 33 | "sidebar", 34 | "single-column", 35 | "social-menu", 36 | "staticman", 37 | "syntax-highlighting", 38 | "table-of-contents", 39 | "utterances", 40 | "widgets" 41 | ] 42 | 43 | [author] 44 | name = "Munif Tanjim" 45 | homepage = "https://muniftanjim.dev" 46 | -------------------------------------------------------------------------------- /src/scripts/search/lunr.js: -------------------------------------------------------------------------------- 1 | import lunr from 'lunr' 2 | 3 | import { 4 | appendResults, 5 | getUrlSearchParam, 6 | setSearchingIndicator 7 | } from './helpers' 8 | 9 | const doSearch = (term, idx, pageTitles, resultsBlock) => { 10 | setSearchingIndicator(resultsBlock) 11 | 12 | let results = term 13 | ? idx 14 | .search(term) 15 | .map(result => ({ href: result.ref, title: pageTitles[result.ref] })) 16 | : [] 17 | 18 | appendResults(results, resultsBlock) 19 | } 20 | 21 | const idx = lunr.Index.load(window.lunr_idx) 22 | const pageTitles = window.page_titles 23 | 24 | const searchInputBox = document.getElementById('search-term') 25 | const resultsBlock = document.getElementById('search-results') 26 | 27 | let term = getUrlSearchParam('q') 28 | searchInputBox.value = term 29 | searchInputBox.focus() 30 | doSearch(term, idx, pageTitles, resultsBlock) 31 | 32 | searchInputBox.addEventListener('input', e => { 33 | doSearch(e.target.value, idx, pageTitles, resultsBlock) 34 | }) 35 | -------------------------------------------------------------------------------- /layouts/partials/data/title: -------------------------------------------------------------------------------- 1 | {{- $title := ( .Title ) -}} 2 | {{- $siteTitle := ( .Site.Title ) -}} 3 | {{- $sep := ( .Site.Params.seo.titleSeparator | default "•" ) -}} 4 | {{- $title404 := ( .Site.Params.info.title404 | default $title ) -}} 5 | 6 | {{- if .IsHome -}} 7 | {{ $siteTitle }} 8 | {{- else if eq .Kind "404" -}} 9 | {{ $title404 }} {{ $sep }} {{ $siteTitle }} 10 | {{- else if eq .Kind "term" -}} 11 | {{- ( ( i18n .Data.Singular 1 ) | default .Data.Singular ) -}} 12 | {{- print ": " -}} 13 | {{- if eq .Data.Singular "author" -}} 14 | {{- partial "data/author/displayName" . -}} 15 | {{- else -}} 16 | {{- $title -}} 17 | {{- end -}} 18 | {{- print " " $sep " " $siteTitle -}} 19 | {{- else if ( or .IsNode ( eq .Section "page" ) ) -}} 20 | {{ $title }} {{ $sep }} {{ $siteTitle }} 21 | {{- else -}} 22 | {{- if .Params.authors -}} 23 | {{ $title }} {{ $sep }} {{ partial "data/author/displayName" . }} 24 | {{- else -}} 25 | {{ $title }} {{ $sep }} {{ $siteTitle }} 26 | {{- end -}} 27 | {{- end -}} 28 | -------------------------------------------------------------------------------- /layouts/partials/entry/footer.html: -------------------------------------------------------------------------------- 1 | {{ if not ( eq .Section "page" ) }} 2 |
    3 |
    4 | {{- if and ( eq .Site.Params.settings.showLastmod true ) ( not ( eq .Lastmod .Date ) ) -}} 5 | {{- $dateFormat := ( .Site.Params.settings.dateFormat | default "2006, Jan 02" ) -}} 6 |
    7 | {{- partial "svg/icon" "edit" -}} 8 | {{ i18n "lastUpdated" }}: 9 | 12 |
    13 | {{- end -}} 14 | 15 | {{ range $taxonomy, $pages := .Site.Taxonomies }} 16 | {{- if not ( eq $taxonomy "authors" ) -}} 17 | {{- if ( index $.Params $taxonomy ) -}} 18 | {{- $.Scratch.Set "taxonomy" $taxonomy -}} 19 | {{- partial "entry/taxonomy-list" $ -}} 20 | {{- end -}} 21 | {{- end -}} 22 | {{ end }} 23 |
    24 |
    25 | {{ end }} 26 | -------------------------------------------------------------------------------- /layouts/partials/widgets/about.html: -------------------------------------------------------------------------------- 1 | {{- $defaultConfig := .Site.Data.config.default.widgets.about -}} 2 | {{- $configData := ( or .Site.Data.config.widgets.about $defaultConfig ) -}} 3 | {{- $lang := .Site.Language.Lang -}} 4 | {{- $config := ( ( index $configData $lang ) | default $configData ) -}} 5 | 6 |
    7 |
    8 | {{ with $config.logo }} 9 | 14 | {{ end }} 15 |

    16 | 17 | {{ with $config.title }} 18 | {{- . -}} 19 | {{ else }} 20 | {{- .Site.Title -}} 21 | {{ end }} 22 | 23 |

    24 |
    25 | {{ with $config.description }} 26 | {{- . | markdownify -}} 27 | {{ else }} 28 | {{- .Site.Params.info.description -}} 29 | {{ end }} 30 |
    31 |
    32 | 33 |
    34 | -------------------------------------------------------------------------------- /src/stylesheets/navigation/menus/_sidebar.scss: -------------------------------------------------------------------------------- 1 | .sidebar-menu { 2 | .item { 3 | display: flex; 4 | flex-flow: row wrap; 5 | justify-content: flex-end; 6 | } 7 | 8 | .has-current { 9 | & > a { 10 | font-style: italic; 11 | } 12 | } 13 | 14 | .sub-menu { 15 | display: none; 16 | padding-left: 0; 17 | flex: 100%; 18 | flex-shrink: 0; 19 | 20 | .item:not(.has-children) { 21 | padding-right: 1.2em; 22 | } 23 | } 24 | } 25 | 26 | .sub-menu-toggler { 27 | border: 0; 28 | padding: 0; 29 | margin-left: 0.2em; 30 | font-weight: 400; 31 | width: 1em; 32 | 33 | &:active, 34 | &:focus, 35 | &:hover { 36 | background: none; 37 | } 38 | 39 | & > .sign { 40 | position: relative; 41 | top: -2px; 42 | 43 | &:after { 44 | content: '+'; 45 | } 46 | } 47 | } 48 | 49 | .toggled { 50 | & > .sub-menu { 51 | display: block; 52 | } 53 | 54 | & > .sub-menu-toggler { 55 | & > .sign { 56 | &:after { 57 | content: '–'; 58 | } 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/_lists.scss: -------------------------------------------------------------------------------- 1 | .list { 2 | margin: 0 auto; 3 | list-style: none; 4 | 5 | &-container { 6 | .entry + & { 7 | margin-top: 2.5em; 8 | } 9 | } 10 | 11 | .item { 12 | display: flex; 13 | width: 100%; 14 | margin-top: 1em; 15 | 16 | &:first-of-type { 17 | margin-top: 0; 18 | } 19 | 20 | .meta { 21 | flex: 0 0 6em; 22 | 23 | span { 24 | @include font-size(0.875); 25 | } 26 | } 27 | 28 | &-header { 29 | flex: 1; 30 | } 31 | 32 | &-title { 33 | @include font-size(1); 34 | font-weight: 400; 35 | margin-bottom: 0; 36 | line-height: inherit; 37 | } 38 | 39 | .icon { 40 | margin-right: 0.25em; 41 | } 42 | } 43 | } 44 | 45 | /* Taxonomy Cloud */ 46 | .taxonomy-cloud { 47 | display: flex; 48 | flex-wrap: wrap; 49 | align-items: center; 50 | 51 | li { 52 | max-width: 100%; 53 | padding: 0 1.5em 0.5em 0; 54 | 55 | text-overflow: ellipsis; 56 | white-space: nowrap; 57 | overflow: hidden; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/scripts/details-polyfill.js: -------------------------------------------------------------------------------- 1 | const body = document.body 2 | 3 | const detailsTagSupported = () => { 4 | let el = document.createElement('details') 5 | if (!('open' in el)) return false 6 | 7 | el.innerHTML = 'ab' 8 | body.appendChild(el) 9 | 10 | let diff = el.offsetHeight 11 | el.open = true 12 | let result = diff != el.offsetHeight 13 | 14 | body.removeChild(el) 15 | return result 16 | } 17 | 18 | export const detailsPolyfill = detailsElements => { 19 | if (!detailsTagSupported()) { 20 | body.classList.add('no-details') 21 | 22 | detailsElements.forEach(detailsElement => { 23 | let summaryElement = detailsElement.querySelector('summary') 24 | 25 | summaryElement.addEventListener('click', () => { 26 | if (detailsElement.getAttribute('open')) { 27 | detailsElement.open = false 28 | detailsElement.removeAttribute('open') 29 | } else { 30 | detailsElement.open = true 31 | detailsElement.setAttribute('open', 'open') 32 | } 33 | }) 34 | }) 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /layouts/partials/widgets/search.html: -------------------------------------------------------------------------------- 1 | {{- $defaultConfig := .Site.Data.config.default.widgets.search -}} 2 | {{- $configData := ( or .Site.Data.config.widgets.search $defaultConfig ) -}} 3 | {{- $lang := .Site.Language.Lang -}} 4 | {{- $config := ( ( index $configData $lang ) | default $configData ) -}} 5 | 6 | 28 | -------------------------------------------------------------------------------- /exampleSite/content/docs/emoji-support.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2018-02-27T21:00:00+06:00 3 | title: Emoji Support 4 | authors: ["muniftanjim"] 5 | categories: 6 | - features 7 | tags: 8 | - config 9 | emoji: true 10 | --- 11 | First of all, if you really want emojis, set the `enableEmoji` setting to `true` in your `config.toml` file: 12 | 13 | ```toml 14 | enableEmoji = true 15 | ``` 16 | 17 | This will enable Hugo to find Emoji Shorthands in your content files and render them as Unicode Emoji Characters. 18 | 19 | For example: 20 | 21 | {{% center %}} 22 | :smiley: will become 😃 23 | {{%/ center %}} 24 | 25 | No, it'll probably not be that colorful! Unless your device's operating system natively supports colorful emojis, you will see a black & white one instead. :fire: 26 | 27 | :pencil2: For getting that colorful look, you will have to add this to your content's frontmatter: 28 | 29 | ```yaml 30 | --- 31 | emoji: true 32 | --- 33 | ``` 34 | 35 | And where can you find these Emoji Shorthands :question: 36 | 37 | :tada: Go take a look at: **[Emoji Cheat Sheet](http://www.emoji-cheat-sheet.com/)** 38 | -------------------------------------------------------------------------------- /layouts/partials/head/opengraph/twitter.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{- with .Site.Params.opengraph.twitter.page -}} 4 | 5 | {{- end -}} 6 | 7 | {{- range $authorID := .Params.authors -}} 8 | {{- $author := ( index $.Site.Data.authors $authorID ) -}} 9 | {{- with $author.social.twitter -}} 10 | 11 | {{- end -}} 12 | {{- end -}} 13 | 14 | {{- with .Params.cover -}} 15 | {{- $type := ( printf "%T" . ) -}} 16 | {{- $isMap := ( not ( eq $type "string" ) ) -}} 17 | 18 | {{- $image := "" -}} 19 | {{- if $isMap -}} 20 | {{- $image = .image -}} 21 | {{- else -}} 22 | {{- $image = . -}} 23 | {{- end -}} 24 | 25 | {{- $image = ( replaceRE "^\\./" $.RelPermalink $image ) -}} 26 | 27 | 28 | {{- if $isMap -}} 29 | {{- with .caption -}} 30 | 31 | {{- end -}} 32 | {{- end -}} 33 | {{- end -}} 34 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Munif Tanjim 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 all 13 | 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 THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/scripts/comments.js: -------------------------------------------------------------------------------- 1 | const commentList = document.querySelector('.comment-list') 2 | const respondBlock = document.querySelector('#respond') 3 | const commentForm = respondBlock.querySelector('form') 4 | const cancelReplyLink = respondBlock.querySelector('#cancel-comment-reply-link') 5 | const parentIdInput = respondBlock.querySelector('[name="fields[parent_id]"]') 6 | 7 | const moveRespondBlock = commentId => { 8 | if (!commentId) return 9 | 10 | const comment = commentList.querySelector(`#comment-${commentId} article`) 11 | 12 | parentIdInput.value = commentId 13 | comment.parentNode.insertBefore(respondBlock, comment.nextSibling) 14 | cancelReplyLink.style.display = '' 15 | 16 | commentForm.querySelector('textarea').focus() 17 | 18 | return false 19 | } 20 | 21 | export const initComments = () => { 22 | cancelReplyLink.style.display = 'none' 23 | 24 | cancelReplyLink.addEventListener('click', e => { 25 | e.preventDefault() 26 | 27 | parentIdInput.value = '' 28 | commentList.parentNode.appendChild(respondBlock) 29 | cancelReplyLink.style.display = 'none' 30 | }) 31 | 32 | window.moveRespondBlock = moveRespondBlock 33 | } 34 | -------------------------------------------------------------------------------- /layouts/page/search.html: -------------------------------------------------------------------------------- 1 | {{ partial "header" . }} 2 | 3 | {{ partial "header/header" . }} 4 | 5 | {{ if .Content }} 6 |
    7 | {{ partial "entry/content" . }} 8 |
    9 | {{ end }} 10 | 11 |
    12 | {{ partial "widgets/search" . }} 13 | 14 |
      15 |
    16 |
    17 | 18 | {{- with .Site.Params.search.client -}} 19 | {{- if eq . "lunr" -}} 20 | 21 | {{- else if eq . "algolia" -}} 22 | 27 | {{- end -}} 28 | 29 | {{- $scriptKey := ( print . "_search" ) -}} 30 | {{- $scriptName := ( index $.Site.Data.assets $scriptKey ).js -}} 31 | 32 | {{- end -}} 33 | 34 | {{ partial "footer" . }} 35 | -------------------------------------------------------------------------------- /scripts/generate-search-index-lunr.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const path = require('path') 3 | 4 | const glob = require('glob') 5 | const lunr = require('lunr') 6 | 7 | const publicDir = path.resolve(process.argv[2] || 'public') 8 | 9 | const documentsPaths = glob.sync('**/search/index.json', { 10 | cwd: publicDir, 11 | absolute: true 12 | }) 13 | 14 | documentsPaths.forEach(documentsPath => { 15 | let documents = require(documentsPath) 16 | 17 | let idx = lunr(function() { 18 | this.ref('href') 19 | this.field('title', { boost: 10 }) 20 | this.field('content') 21 | 22 | documents.forEach(doc => { 23 | this.add(doc) 24 | }) 25 | }) 26 | 27 | let pageTitles = documents.reduce( 28 | (pages, doc) => ({ ...pages, [doc.href]: doc.title }), 29 | {} 30 | ) 31 | 32 | fs.writeFile( 33 | documentsPath.replace('index.json', 'lunr_idx.js'), 34 | `window.lunr_idx=${JSON.stringify( 35 | idx 36 | )}\nwindow.page_titles=${JSON.stringify(pageTitles)}`, 37 | err => { 38 | if (err) console.error(err) 39 | else 40 | console.log( 41 | `Lunr.js Index Generated for: ${documentsPath.replace(publicDir, '')}` 42 | ) 43 | } 44 | ) 45 | }) 46 | -------------------------------------------------------------------------------- /layouts/partials/header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{- partial "head/head" . -}} 5 | 6 | 7 | 8 |
    9 | 10 | {{- partial "sidebar/sidebar" . -}} 11 | 12 |
    13 | 14 | {{- partial "nav/menus/main" . -}} 15 | 16 | {{- $headerWidgets := .Site.Params.widgets.header -}} 17 |
    18 |
    19 | {{- partial "extras/widget_area" ( dict "Widgets" $headerWidgets "Scope" . ) -}} 20 |
    21 |
    22 | 23 | 35 | 36 |
    37 | -------------------------------------------------------------------------------- /scripts/generate-search-index-algolia.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | 3 | const algoliasearch = require('algoliasearch') 4 | const glob = require('glob') 5 | 6 | const client = algoliasearch( 7 | process.env.ALGOLIA_APP_ID, 8 | process.env.ALGOLIA_ADMIN_API_KEY 9 | ) 10 | 11 | const indexName = process.env.ALGOLIA_INDEX_NAME || 'minimo_site' 12 | 13 | const publicDir = path.resolve(process.argv[2] || 'public') 14 | 15 | const objectsPaths = glob.sync('**/search/index.json', { 16 | cwd: publicDir, 17 | absolute: true 18 | }) 19 | 20 | const indicesInfo = objectsPaths.map(objectsPath => ({ 21 | path: objectsPath, 22 | name: `${indexName}${objectsPath 23 | .slice(publicDir.length, -'/search/index.json'.length) 24 | .replace('/', '_')}` 25 | })) 26 | 27 | indicesInfo.forEach(indexInfo => { 28 | let objects = require(indexInfo.path) 29 | 30 | objects.forEach(object => { 31 | object.objectID = object.href 32 | }) 33 | 34 | let index = client.initIndex(indexInfo.name) 35 | index.addObjects(objects, (err, _content) => { 36 | if (err) console.error(err.toString()) 37 | else 38 | console.log( 39 | `Algolia Index Generated for: ${indexInfo.path.replace(publicDir, '')}` 40 | ) 41 | }) 42 | }) 43 | -------------------------------------------------------------------------------- /i18n/fa.toml: -------------------------------------------------------------------------------- 1 | [author] 2 | one = "نویسنده" 3 | other = "نویسندگان" 4 | 5 | [by] 6 | other = "از" 7 | 8 | [category] 9 | one = "دسته" 10 | other = "دسته‌ها" 11 | 12 | [contactViaEmail] 13 | other = "تماس با ایمیل" 14 | 15 | [currentPage] 16 | other = "صفحه کنونی" 17 | 18 | [gopher] 19 | other = "گوفر" 20 | 21 | [goHome] 22 | other = "برگشت به خانه" 23 | 24 | [mainMenu] 25 | other = "منو اصلی" 26 | 27 | [next] 28 | other = "بعدی" 29 | 30 | [nextPage] 31 | other = "صفحه بعدی" 32 | 33 | [nextPost] 34 | other = "نوشته بعدی" 35 | 36 | [noTerm] 37 | other = "بدون یک {{ .Term }}!" 38 | 39 | [openAccountInNewTab] 40 | other = "بازکردن حساب {{ .Platform }} در تب جدید" 41 | 42 | [page] 43 | other = "صفحه" 44 | 45 | [previous] 46 | other = "قبلی" 47 | 48 | [previousPage] 49 | other = "صفحه قبلی" 50 | 51 | [previousPost] 52 | other = "نوشته قبلی" 53 | 54 | [postedOn] 55 | other = "ارسال شده در" 56 | 57 | [readingTime] 58 | one = "یک دقیقه مطالعه" 59 | other = "{{ .Count }} دقیقه مطالعه" 60 | 61 | [recentPosts] 62 | other = "آخرین نوشته ها" 63 | 64 | [skipToContent] 65 | other = "رفتن به محتوا" 66 | 67 | [socialMenu] 68 | other = "منوی شبکه‌های اجتماعی" 69 | 70 | [tableOfContents] 71 | other = "فهرست مطالب" 72 | 73 | [tag] 74 | one = "تگ" 75 | other = "تگ‌ها" 76 | -------------------------------------------------------------------------------- /src/stylesheets/extras/variables/_colors.scss: -------------------------------------------------------------------------------- 1 | $color__accent: #ffcd00; 2 | 3 | $color__bluegrey-900: #263238; 4 | $color__bluegrey-800: #37474f; 5 | $color__bluegrey-700: #455a64; 6 | 7 | $color__grey-900: #212121; 8 | $color__grey-400: #bdbdbd; 9 | $color__grey-200: #eeeeee; 10 | $color__grey-50: #fafafa; 11 | 12 | $color__pure-black: #000000; 13 | $color__black: $color__grey-900; 14 | $color__grey: $color__grey-400; 15 | $color__light-grey: $color__grey-200; 16 | $color__white: $color__grey-50; 17 | $color__pure-white: #ffffff; 18 | 19 | $color__background-hr: $color__grey; 20 | $color__background-screen: $color__black; 21 | $color__background-code: $color__light-grey; 22 | 23 | $color__text-heading: $color__bluegrey-900; 24 | $color__text-main: $color__bluegrey-800; 25 | $color__text-screen: $color__white; 26 | $color__text-input: $color__text-main; 27 | $color__text-code: $color__black; 28 | 29 | $color__button-background: $color__pure-white; 30 | $color__button-text: $color__text-main; 31 | 32 | $color__blockquote-border: $color__grey; 33 | 34 | $color__link: $color__black; 35 | $color__link-hover: $color__text-main; 36 | 37 | $color__border-input: $color__grey; 38 | $color__border-table: $color__grey; 39 | $color__border-code: darken($color__background-code, 7); 40 | -------------------------------------------------------------------------------- /exampleSite/content/docs/updating.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2017-09-25T06:00:00+06:00 3 | lastmod: 2018-02-08T14:45:00+06:00 4 | title: Updating Guide 5 | authors: ["muniftanjim"] 6 | categories: 7 | - Tutorial 8 | slug: updating 9 | toc: true 10 | --- 11 | 12 | ## Updating Minimo 13 | 14 | #### Update Minimo clone 15 | 16 | Just replace the `themes/minimo` folder with the latest version of Minimo clone, i.e. delete the old folder and clone again: 17 | 18 | ```sh 19 | rm -rf themes/minimo 20 | git clone --depth 1 https://github.com/MunifTanjim/minimo themes/minimo 21 | ``` 22 | 23 | Then, commit the changes: 24 | 25 | ```sh 26 | git add themes/minimo 27 | git commit -m "update [theme]: minimo" 28 | ``` 29 | 30 | #### Update Minimo submodule 31 | 32 | ```sh 33 | cd themes/minimo 34 | git checkout master 35 | git fetch && git pull 36 | cd ../.. 37 | git add themes/minimo 38 | git commit -m "update [theme]: minimo" 39 | ``` 40 | 41 | ## To Do After Updating Minimo 42 | 43 | After updating Minimo, always check that your site's **`config.toml`** file matches the latest [**`config.toml`** file]({{< relref "/docs/config-file.md" >}}) format. 44 | 45 | A good idea is to double check all the [Configuration settings]({{< relref "/docs/installation.md#configuration-for-minimo" >}}) of Minimo. 46 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/_layouts.scss: -------------------------------------------------------------------------------- 1 | body { 2 | background: $color__pure-white; 3 | } 4 | 5 | .site { 6 | overflow-x: hidden; 7 | } 8 | 9 | .main { 10 | width: 100%; 11 | padding: 2em 0; 12 | 13 | transition: margin-left $transition-duration; 14 | 15 | .sidebar.toggled ~ & { 16 | margin-left: $sidebar__width; 17 | } 18 | 19 | @include screen($breakpoint-medium) { 20 | width: auto; 21 | 22 | .has-sidebar & { 23 | float: left; 24 | width: calc(100% - #{$sidebar__width}); 25 | margin-left: $sidebar__width; 26 | padding-left: 2em; 27 | } 28 | } 29 | } 30 | 31 | .container { 32 | width: 100%; 33 | max-width: $container__max-width; 34 | 35 | padding: 0 $container__gutter; 36 | margin: 0 auto; 37 | 38 | .has-sidebar & { 39 | margin-left: 0; 40 | } 41 | } 42 | 43 | .sep { 44 | &-after:after, 45 | &-before:before { 46 | content: ''; 47 | display: block; 48 | width: 4em; 49 | margin-top: 2.5em; 50 | margin-bottom: 2.5em; 51 | border-bottom: 0.125em solid $color__grey; 52 | } 53 | } 54 | 55 | @import 'sidebar/sidebar'; 56 | 57 | @import 'header'; 58 | 59 | @import 'entry/entry'; 60 | 61 | @import 'lists'; 62 | 63 | @import 'footer'; 64 | 65 | @import 'others/others'; 66 | 67 | @import 'widgets/widgets'; 68 | -------------------------------------------------------------------------------- /i18n/hr.toml: -------------------------------------------------------------------------------- 1 | [author] 2 | one = "Autor" 3 | other = "Autori" 4 | 5 | [by] 6 | other = "od" 7 | 8 | [category] 9 | one = "Kategorija" 10 | other = "Kategorije" 11 | 12 | [contactViaEmail] 13 | other = "Kontakt putem emaila" 14 | 15 | [currentPage] 16 | other = "Trenutačna stranica" 17 | 18 | [gopher] 19 | other = "Gopher" 20 | 21 | [goHome] 22 | other = "Na početnu" 23 | 24 | [mainMenu] 25 | other = "Glavni izbornik" 26 | 27 | [next] 28 | other = "Iduće" 29 | 30 | [nextPage] 31 | other = "Iduća stranica" 32 | 33 | [nextPost] 34 | other = "Iduća objava" 35 | 36 | [noTerm] 37 | other = "Ne postoji niti jedan {{ .Term }}!" 38 | 39 | [openAccountInNewTab] 40 | other = "Otvori {{ .Platform }} u novoj kartici" 41 | 42 | [page] 43 | other = "Stranica" 44 | 45 | [previous] 46 | other = "Prethodno" 47 | 48 | [previousPage] 49 | other = "Prethodna stranica" 50 | 51 | [previousPost] 52 | other = "Prethodna objava" 53 | 54 | [postedOn] 55 | other = "Objavljeno" 56 | 57 | [readingTime] 58 | one = "Vrijeme čitanja: 1 min" 59 | other = "Vrijeme čitanja: {{ .Count }} min" 60 | 61 | [recentPosts] 62 | other = "Nedavne objave" 63 | 64 | [skipToContent] 65 | other = "Idi na sadržaj" 66 | 67 | [socialMenu] 68 | other = "Izbornik socijalnih mreža" 69 | 70 | [tableOfContents] 71 | other = "Sadržaj" 72 | 73 | [tag] 74 | one = "Oznaka" 75 | other = "Oznake" 76 | -------------------------------------------------------------------------------- /src/scripts/search/algolia.js: -------------------------------------------------------------------------------- 1 | import algoliasearch from 'algoliasearch/lite' 2 | 3 | import { 4 | appendResults, 5 | getUrlSearchParam, 6 | setSearchingIndicator 7 | } from './helpers' 8 | 9 | const { appId, indexName, searchApiKey } = window.algolia 10 | 11 | const client = algoliasearch(appId, searchApiKey) 12 | 13 | const index = client.initIndex( 14 | `${indexName}${window.location.pathname.replace('/search/', '')}` 15 | ) 16 | 17 | const doSearch = (term, resultsBlock) => { 18 | setSearchingIndicator(resultsBlock) 19 | 20 | if (!term) { 21 | appendResults([], resultsBlock) 22 | } else { 23 | index.search( 24 | term, 25 | { attributesToRetrieve: ['title', 'href'], hitsPerPage: 10 }, 26 | (err, content) => { 27 | if (err) console.error(err) 28 | else appendResults(content.hits, resultsBlock) 29 | } 30 | ) 31 | } 32 | } 33 | 34 | const searchForm = document.getElementById('search-form') 35 | const searchInputBox = document.getElementById('search-term') 36 | const resultsBlock = document.getElementById('search-results') 37 | 38 | let term = getUrlSearchParam('q') 39 | searchInputBox.value = term 40 | searchInputBox.focus() 41 | doSearch(term, resultsBlock) 42 | 43 | searchForm.addEventListener('submit', e => { 44 | e.preventDefault() 45 | 46 | doSearch(searchInputBox.value, resultsBlock) 47 | }) 48 | -------------------------------------------------------------------------------- /layouts/partials/entry/comments.html: -------------------------------------------------------------------------------- 1 | {{- $config := .Site.Params.comments -}} 2 | 3 | {{- $enabledGlobally := $config.enable -}} 4 | {{- $disabledGlobally := ( not $enabledGlobally ) -}} 5 | 6 | {{ $optOut := ( eq .Params.comments false ) }} 7 | {{ $optIn := .Params.comments }} 8 | 9 | {{- $enableConditionOne := ( and $disabledGlobally $optIn ) -}} 10 | {{- $enableConditionTwo := ( and $enabledGlobally ( not $optOut ) ) -}} 11 | 12 | {{- if ( or $enableConditionOne $enableConditionTwo ) -}} 13 | 14 | {{- $disqusEnabled := .Site.DisqusShortname -}} 15 | {{- $issoEnabled := $config.isso.enable -}} 16 | {{- $staticmanEnabled := $config.staticman.enable -}} 17 | {{- $utterancesEnabled := $config.utterances.enable -}} 18 | 19 | {{- if ( $disqusEnabled | or $issoEnabled | or $staticmanEnabled | or $utterancesEnabled ) -}} 20 |
    21 |
    22 |
    23 | {{- if $disqusEnabled -}} 24 | {{ partial "comments/disqus" . }} 25 | {{- else if $issoEnabled -}} 26 | {{ partial "comments/isso" . }} 27 | {{- else if $staticmanEnabled -}} 28 | {{ partial "comments/staticman" . }} 29 | {{- else if $utterancesEnabled -}} 30 | {{ partial "comments/utterances" . }} 31 | {{- end -}} 32 |
    33 |
    34 |
    35 | {{- end -}} 36 | 37 | {{- end -}} 38 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "minimo", 3 | "description": "Minimalist theme for Hugo", 4 | "version": "2.9.0", 5 | "author": { 6 | "name": "Munif Tanjim", 7 | "url": "https://muniftanjim.dev" 8 | }, 9 | "repository": "MunifTanjim/minimo", 10 | "license": "MIT", 11 | "scripts": { 12 | "build": "NODE_ENV=production webpack", 13 | "start": "hugo server --source=exampleSite --themesDir=../.. --disableFastRender", 14 | "watch": "webpack --watch --progress --colors" 15 | }, 16 | "devDependencies": { 17 | "@babel/core": "^7.4.5", 18 | "@babel/plugin-syntax-dynamic-import": "^7.2.0", 19 | "@babel/preset-env": "^7.4.5", 20 | "assets-webpack-plugin": "^3.9.10", 21 | "autoprefixer": "^9.6.0", 22 | "babel-eslint": "^10.0.1", 23 | "babel-loader": "^8.0.6", 24 | "clean-webpack-plugin": "^3.0.0", 25 | "css-loader": "^2.1.1", 26 | "cssnano": "^4.1.10", 27 | "eslint": "^5.16.0", 28 | "mini-css-extract-plugin": "^0.7.0", 29 | "sass": "^1.83.1", 30 | "postcss-loader": "^3.0.0", 31 | "sass-loader": "^7.1.0", 32 | "webpack": "^4.32.2", 33 | "webpack-cli": "^3.3.12" 34 | }, 35 | "dependencies": { 36 | "algoliasearch": "^3.29.0", 37 | "es6-docready": "^1.0.0", 38 | "fuse.js": "^3.2.1", 39 | "lunr": "^2.3.0", 40 | "normalize.css": "^8.0.0", 41 | "twemoji": "^2.5.1" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/scripts/search/fuse.js: -------------------------------------------------------------------------------- 1 | import Fuse from 'fuse.js' 2 | 3 | import { 4 | appendResults, 5 | getJSON, 6 | getUrlSearchParam, 7 | setSearchingIndicator 8 | } from './helpers' 9 | 10 | const doSearch = (term, fuse, resultsBlock) => { 11 | setSearchingIndicator(resultsBlock) 12 | 13 | let results = term 14 | ? fuse 15 | .search(term) 16 | .map(result => ({ href: result.href, title: result.title })) 17 | : [] 18 | 19 | appendResults(results, resultsBlock) 20 | } 21 | 22 | const options = { 23 | shouldSort: true, 24 | threshold: 0.5, 25 | location: 0, 26 | distance: 500, 27 | maxPatternLength: 32, 28 | minMatchCharLength: 1, 29 | keys: [{ name: 'title', weight: 0.7 }, { name: 'content', weight: 0.3 }] 30 | } 31 | 32 | const searchInputBox = document.getElementById('search-term') 33 | const resultsBlock = document.getElementById('search-results') 34 | 35 | let term = getUrlSearchParam('q') 36 | searchInputBox.value = term 37 | searchInputBox.focus() 38 | 39 | setSearchingIndicator(resultsBlock) 40 | 41 | getJSON(`${window.location.pathname}index.json`, (err, list) => { 42 | if (err) { 43 | console.error(err) 44 | return 45 | } 46 | 47 | let fuse = new Fuse(list, options) 48 | 49 | doSearch(term, fuse, resultsBlock) 50 | 51 | searchInputBox.addEventListener('input', e => { 52 | doSearch(e.target.value, fuse, resultsBlock) 53 | }) 54 | }) 55 | -------------------------------------------------------------------------------- /exampleSite/content/docs/authors.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2017-09-26T06:00:00+06:00 3 | lastmod: 2017-10-11T17:30:00+06:00 4 | title: Authors Setup Guide 5 | authors: ["muniftanjim"] 6 | categories: 7 | - features 8 | tags: 9 | - authors 10 | slug: authors 11 | --- 12 | Minimo supports multiple authors for your site. Just make sure you have the following configuration in your site's **`config.toml`**: 13 | 14 | ```toml 15 | [taxonomies] 16 | author = "authors" 17 | ``` 18 | 19 | Minimo treats Authors as a [Hugo Taxonomy](https://gohugo.io/content-management/taxonomies/). 20 | 21 | ## Author's Profile 22 | 23 | For adding an author to your site: 24 | 25 | - Create **`data/authors`** folder in your site's root directory 26 | - Create a file with the filename format: **`.toml`** 27 | 28 | Now, add information about the author using the structure below: 29 | 30 | **/data/authors/muniftanjim.toml** 31 | 32 | {{< file "data/authors/muniftanjim.toml" >}} 33 | 34 | _You can use either the `[email]` fields or the `[social.email]` field. You don't need to fill them both. However, it is encouraged to use `[email]` instead of `[social.email]`._ 35 | 36 | ## Adding Authors to Contents 37 | 38 | For adding authors to your content include the following option in your content's front-matter: 39 | 40 | ```yaml 41 | --- 42 | authors: ["muniftanjim"] 43 | --- 44 | ``` 45 | 46 | - `authors` [`Array` of `String`s]: username of authors 47 | 48 | That's all. 49 | -------------------------------------------------------------------------------- /layouts/partials/widgets/social_menu.html: -------------------------------------------------------------------------------- 1 | {{- $social := .Site.Params.social -}} 2 | 3 | {{- if $social -}} 4 | 5 | {{- $defaultConfig := .Site.Data.config.default.widgets.social_menu -}} 6 | {{- $configData := ( or .Site.Data.config.widgets.social_menu $defaultConfig ) -}} 7 | {{- $lang := .Site.Language.Lang -}} 8 | {{- $config := ( ( index $configData $lang ) | default $configData ) -}} 9 | 10 |
    11 | {{- with $config.title -}} 12 |
    13 |

    14 | {{- . -}} 15 |

    16 |
    17 | {{- end -}} 18 | 19 | 39 |
    40 | 41 | {{- end -}} 42 | -------------------------------------------------------------------------------- /i18n/ca.toml: -------------------------------------------------------------------------------- 1 | [author] 2 | one = "Autor" 3 | other = "Autors" 4 | 5 | [by] 6 | other = "per" 7 | 8 | [category] 9 | one = "Categoria" 10 | other = "Categories" 11 | 12 | [contactViaEmail] 13 | other = "Contacte per correu" 14 | 15 | [currentPage] 16 | other = "Pàgina actual" 17 | 18 | [gopher] 19 | other = "Gopher" 20 | 21 | [goHome] 22 | other = "Anar a l'inici..." 23 | 24 | [mainMenu] 25 | other = "Menú principal" 26 | 27 | [next] 28 | other = "Següent" 29 | 30 | [nextPage] 31 | other = "Següent pàgina" 32 | 33 | [nextPost] 34 | other = "Següent entrada" 35 | 36 | [noTerm] 37 | other = "Ni un sol {{ .Term }}!" 38 | 39 | [openAccountInNewTab] 40 | other = "Obrir compte de {{ .Platform }} en una nova pestanya" 41 | 42 | [page] 43 | other = "Pàgina" 44 | 45 | [previous] 46 | other = "Anterior" 47 | 48 | [previousPage] 49 | other = "Anterior pàgina" 50 | 51 | [previousPost] 52 | other = "Anterior article" 53 | 54 | [postedOn] 55 | other = "Publicat a" 56 | 57 | [readingTime] 58 | one = "Lectura d'un minut" 59 | other = "{{ .Count }} minuts de lectura" 60 | 61 | [recentPosts] 62 | other = "Entrades recents" 63 | 64 | [skipToContent] 65 | other = "Anar al contingut" 66 | 67 | [skipToMainMenu] 68 | other = "Anar al menú principal" 69 | 70 | [socialMenu] 71 | other = "Menú social" 72 | 73 | [tableOfContents] 74 | other = "Sumari" 75 | 76 | [tag] 77 | one = "Etiqueta" 78 | other = "Etiquetes" 79 | 80 | [toggleSidebar] 81 | other = "Alternar barra lateral" 82 | -------------------------------------------------------------------------------- /exampleSite/data/config/widgets.toml: -------------------------------------------------------------------------------- 1 | # About Widget config 2 | [about] 3 | title = "" # default: .Site.Title 4 | description = "" # default: .Site.Params.info.description 5 | logo = "images/logo.png" # default: "images/logo.png" 6 | 7 | # Breadcrumbs Widget config 8 | [breadcrumbs] 9 | separator = "/" # default: "/" 10 | excludeParents = ["page"] # default: ["page"] 11 | 12 | # Recent Posts Widget config 13 | [recent_posts] 14 | title = "" # default: "Recent Posts" 15 | length = 4 # default: 5 16 | excludeTypes = ["page"] # default: ["page"] 17 | 18 | # Search Widget config 19 | [search] 20 | title = "" # default: "Search" 21 | 22 | # Sidebar Menu Widget config 23 | [sidebar_menu] 24 | title = "" # default: "" 25 | mirror = "" # default: "" 26 | 27 | # Social Menu Widget config 28 | [social_menu] 29 | title = "" # default: "" 30 | platforms = ["github","facebook","twitter","instagram","email","codepen","gitlab","linkedin","telegram","google_scholar","youtube"] 31 | 32 | # Taxonomy Cloud Widget config 33 | [taxonomy_cloud] 34 | title = "" # default: Plural Name for `taxonomyCloud.taxonomy` 35 | taxonomy = "tags" # default: "tags" 36 | shuffle = true # default: true 37 | -------------------------------------------------------------------------------- /exampleSite/content/docs/cover-image.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2017-09-30T14:00:00+06:00 3 | lastmod: 2018-06-04T23:00:00+06:00 4 | title: Cover Image 5 | authors: ["muniftanjim"] 6 | categories: 7 | - features 8 | slug: cover-image 9 | cover: 10 | image: /images/eden-farm-children-s-village.jpg 11 | caption: Eden Farm Children's Village by [Gareth Harper](https://unsplash.com/photos/yACpBcInUos?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) 12 | style: full 13 | --- 14 | You can add cover image to your contents with the **`cover`** paramameter in the content's front-matter. 15 | 16 | You can directly provide the image url: 17 | ```yaml 18 | --- 19 | cover: /images/eden-farm-children-s-village.jpg 20 | --- 21 | ``` 22 | 23 | - `cover` [`String`]: path/url of the cover image 24 | 25 | Or you can provide additional information: 26 | ```yaml 27 | --- 28 | cover: 29 | image: /images/eden-farm-children-s-village.jpg 30 | alternate: Picture of a yellow wall with a blue window in the upper-left corner 31 | caption: Eden Farm Children's Village by Gareth Harper on Unsplash 32 | style: full 33 | --- 34 | ``` 35 | 36 | - `cover` [`Map`]: 37 | - `image` [`String`]: path/url of the cover image 38 | - `alternate` [`String`]: alternate text for the image 39 | - `caption` [`String`]: caption for the cover image 40 | - `style` [`String`]: `full` / `wide` / `normal` 41 | -------------------------------------------------------------------------------- /i18n/sl.toml: -------------------------------------------------------------------------------- 1 | [author] 2 | one = "Avtor" 3 | two = "Avtorja" 4 | few = "Avtorji" 5 | other = "Avtorji" 6 | 7 | [by] 8 | other = "napisal" 9 | 10 | [category] 11 | one = "Kategorija" 12 | two = "Kategoriji" 13 | few = "Kategorije" 14 | other = "Kategorije" 15 | 16 | [contactViaEmail] 17 | other = "Stik po elektronski pošti" 18 | 19 | [currentPage] 20 | other = "Trenutna stran" 21 | 22 | [gopher] 23 | other = "Gopher" 24 | 25 | [goHome] 26 | other = "Na začetek..." 27 | 28 | [mainMenu] 29 | other = "Glavni meni" 30 | 31 | [next] 32 | other = "Naslednji" 33 | 34 | [nextPage] 35 | other = "Naslednja stran" 36 | 37 | [nextPost] 38 | other = "Naslednja objava" 39 | 40 | [noTerm] 41 | other = "Niti enega {{ .Term }}!" 42 | 43 | [openAccountInNewTab] 44 | other = "Odpri {{ .Platform }} v novem zavihku" 45 | 46 | [page] 47 | other = "Stran" 48 | 49 | [previous] 50 | other = "Prejšnji" 51 | 52 | [previousPage] 53 | other = "Prejšnja stran" 54 | 55 | [previousPost] 56 | other = "Prejšnja objava" 57 | 58 | [postedOn] 59 | other = "Objavljeno" 60 | 61 | [readingTime] 62 | one = "ena minuta branja" 63 | two = "dve minuti branja" 64 | few = "{{ .Count }} minute branja" 65 | other = "{{ .Count }} minut branja" 66 | 67 | [recentPosts] 68 | other = "Zadnji zapisi" 69 | 70 | [skipToContent] 71 | other = "Skoči na vsebino" 72 | 73 | [socialMenu] 74 | other = "Povezave na družabna omrežja" 75 | 76 | [tableOfContents] 77 | other = "Kazalo" 78 | 79 | [tag] 80 | one = "Značka" 81 | two = "Znački" 82 | few = "Značke" 83 | other = "Značke" 84 | -------------------------------------------------------------------------------- /i18n/pl.toml: -------------------------------------------------------------------------------- 1 | [author] 2 | one = "Autor" 3 | few = "Autorów" 4 | many = "Autorów" 5 | other = "Autora" 6 | 7 | [by] 8 | other = "przez" 9 | 10 | [category] 11 | one = "Kategoria" 12 | few = "Kategorie" 13 | many = "Kategorii" 14 | other = "Kategorii" 15 | 16 | [contactViaEmail] 17 | other = "Kontakt przez e-mail" 18 | 19 | [currentPage] 20 | other = "Aktualna strona" 21 | 22 | [gopher] 23 | other = "Gopher" 24 | 25 | [goHome] 26 | other = "Idź na start..." 27 | 28 | [mainMenu] 29 | other = "Menu Główne" 30 | 31 | [next] 32 | other = "Następny" 33 | 34 | [nextPage] 35 | other = "Następna strona" 36 | 37 | [nextPost] 38 | other = "Następny post" 39 | 40 | [noTerm] 41 | other = "Brakuje: {{ .Term }}!" 42 | 43 | [openAccountInNewTab] 44 | other = "Otwórz {{ .Platform }} w nowej karcie" 45 | 46 | [page] 47 | other = "Strona" 48 | 49 | [previous] 50 | other = "Poprzedni" 51 | 52 | [previousPage] 53 | other = "Poprzednia strona" 54 | 55 | [previousPost] 56 | other = "Poprzedni post" 57 | 58 | [postedOn] 59 | other = "Wysłane dnia" 60 | 61 | [readingTime] 62 | one = "Jedna minuta czytania" 63 | few = "{{ .Count }} minuty czytania" 64 | many = "{{ .Count }} minut czytania" 65 | other = "{{ .Count }} minut czytania" 66 | 67 | [recentPosts] 68 | other = "Ostatnie Posty" 69 | 70 | [skipToContent] 71 | other = "Przejdź do Treści" 72 | 73 | [socialMenu] 74 | other = "Menu Społecznościowe" 75 | 76 | [tableOfContents] 77 | other = "Spis Treści" 78 | 79 | [tag] 80 | one = "Tag" 81 | few = "Tagi" 82 | many = "Tagów" 83 | other = "Taga" 84 | -------------------------------------------------------------------------------- /layouts/partials/nav/entry_nav.html: -------------------------------------------------------------------------------- 1 | {{- $config := ( .Site.Params.settings.hideEntryNavigation ) -}} 2 | {{- $configType := ( printf "%T" $config ) -}} 3 | 4 | {{- if ( eq $configType "bool" ) -}} 5 | {{- $.Scratch.Set "showEntryNav" ( not $config ) -}} 6 | {{- else -}} 7 | {{- $.Scratch.Set "showEntryNav" ( not ( in $config .Section ) ) -}} 8 | {{- end -}} 9 | 10 | {{- if ( $.Scratch.Get "showEntryNav" ) -}} 11 | 12 | {{ if gt ( len ( where .Site.RegularPages "Section" .Section ) ) 1 }} 13 | 44 | {{ end }} 45 | 46 | {{- end -}} 47 | -------------------------------------------------------------------------------- /src/scripts/main.js: -------------------------------------------------------------------------------- 1 | import './webpack-public-path' 2 | 3 | import '../stylesheets/style' 4 | 5 | import docReady from 'es6-docready' 6 | 7 | import { shuffle } from './helpers' 8 | 9 | docReady(() => { 10 | const body = document.body 11 | 12 | const taxonomyClouds = body.querySelectorAll( 13 | '.taxonomy-cloud:not(.no-shuffle)' 14 | ) 15 | if (taxonomyClouds.length) { 16 | taxonomyClouds.forEach(taxonomyCloud => { 17 | let terms = taxonomyCloud.querySelectorAll('li') 18 | shuffle(terms).forEach(term => term.parentElement.appendChild(term)) 19 | }) 20 | } 21 | 22 | const detailsElements = body.querySelectorAll('details') 23 | if (detailsElements.length) { 24 | import(/* webpackChunkName: "details-polyfill" */ './details-polyfill').then( 25 | ({ detailsPolyfill }) => detailsPolyfill(detailsElements) 26 | ) 27 | } 28 | 29 | let hasEmoji = body.classList.contains('has-emoji') 30 | if (hasEmoji) { 31 | let entry = body.querySelector('.entry') 32 | import(/* webpackChunkName: "twemoji" */ 'twemoji').then(twemoji => 33 | twemoji.parse(entry) 34 | ) 35 | } 36 | 37 | let hasSidebar = body.classList.contains('has-sidebar') 38 | if (hasSidebar) { 39 | import(/* webpackChunkName: "sidebar" */ './sidebar').then( 40 | ({ initSidebar }) => initSidebar() 41 | ) 42 | } 43 | 44 | let hasComments = body.querySelector('#comment-form') 45 | if (hasComments) { 46 | import(/* webpackChunkName: "comments" */ './comments').then( 47 | ({ initComments }) => initComments() 48 | ) 49 | } 50 | }) 51 | -------------------------------------------------------------------------------- /layouts/partials/extras/taxonomy_cloud.html: -------------------------------------------------------------------------------- 1 | {{- $Scope := .Scope -}} 2 | {{- $Site := $Scope.Site -}} 3 | {{- $Scratch := $Scope.Scratch -}} 4 | {{- $Shuffle := ( .Shuffle | default true ) -}} 5 | {{- $TaxonomyPage := ( $Site.GetPage ( print "/" .Taxonomy ) ) -}} 6 | {{- $Data := $TaxonomyPage.Data -}} 7 | 8 |
    9 |
      10 | {{- if gt ( len $Data.Terms ) 0 -}} 11 | {{- $maxSize := 2.0 -}} 12 | {{- $minSize := 1.0 -}} 13 | {{- $sizeSpread := ( sub $maxSize $minSize ) -}} 14 | 15 | {{- $maxCount := ( index $Data.Terms.ByCount 0 ).Count -}} 16 | {{- $minCount := ( index $Data.Terms.ByCount.Reverse 0 ).Count -}} 17 | {{- $countSpread := ( sub $maxCount $minCount ) -}} 18 | 19 | {{- $Scratch.Set "sizeStep" 0 -}} 20 | {{- if gt $countSpread 0 -}} 21 | {{- $Scratch.Set "sizeStep" ( div $sizeSpread $countSpread ) -}} 22 | {{- end -}} 23 | 24 | {{- range $Data.Terms.Alphabetical -}} 25 | {{- $count := .Count -}} 26 | {{- $sizeStep := ( $Scratch.Get "sizeStep" ) -}} 27 | {{- $size := ( add $minSize ( mul $sizeStep ( sub $count $minCount ) ) ) -}} 28 | 29 |
    • 30 | 31 | {{- .Page.Title -}} 32 | 33 |
    • 34 | {{- end -}} 35 | {{- else -}} 36 | 37 | {{- $term := ( ( ( i18n $Data.Singular 1 ) | default $Data.Singular ) ) -}} 38 | {{- i18n "noTerm" ( dict "Term" $term ) -}} 39 | 40 | {{- end -}} 41 |
    42 |
    43 | -------------------------------------------------------------------------------- /static/assets/js/sidebar.8b55e6c1.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[7],{47:function(t,e,i){"use strict";i.r(e),i.d(e,"initSidebar",(function(){return E}));var n=document.body,o=n.querySelector("#sidebar"),r=n.querySelector("#sidebar-toggler"),s=n.querySelector(".sidebar-overlay"),c=n.querySelector("#sidebar-menu"),d=r.cloneNode(!0);d.setAttribute("id","#sidebar-collapse");var u,l,a,f,b,p,w=function(t,e){t.forEach((function(t){return t.setAttribute("aria-expanded",e)}))},g=function(){o.classList.remove("toggled"),w([o,r,d],!1)},y=function(){o.classList.add("toggled"),w([o,r,d],!0),o.focus()},v=0,h=!1,A=!1,L=0,m=function(){f=window.scrollY,l=n.offsetHeight,a=o.offsetHeight,b=Math.round(f+o.getBoundingClientRect().top),a>u?f>v?h?(h=!1,L=b>0?b:0,o.setAttribute("style","top: ".concat(L,"px;"))):!A&&f+u>a+b&&a0?b:0,o.setAttribute("style","top: ".concat(L,"px;"))):!h&&f { 2 | if (results.length === 0) { 3 | resultsBlock.innerHTML = `
  • 4 | ${resultsBlock.dataset.resultsEmpty} 5 |
  • ` 6 | } else { 7 | resultsBlock.innerHTML = results.reduce((prevItem, { href, title }) => { 8 | return `${prevItem}
  • ${title}
  • ` 9 | }, '') 10 | } 11 | } 12 | 13 | export const setSearchingIndicator = resultsBlock => { 14 | resultsBlock.innerHTML = `
  • 15 | ${resultsBlock.dataset.searching}… 16 |
  • ` 17 | } 18 | 19 | export const getUrlSearchParam = name => { 20 | if ('URLSearchParams' in window) { 21 | let urlParams = new URLSearchParams(window.location.search) 22 | return urlParams.get(name) 23 | } else { 24 | name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]') 25 | let regex = new RegExp('[\\?&]' + name + '=([^&#]*)') 26 | let results = regex.exec(location.search) 27 | return results === null 28 | ? '' 29 | : decodeURIComponent(results[1].replace(/\+/g, ' ')) 30 | } 31 | } 32 | 33 | export const getJSON = (url, callback) => { 34 | let request = new XMLHttpRequest() 35 | 36 | request.open('GET', url, true) 37 | 38 | request.onload = () => { 39 | if (request.status >= 200 && request.status < 400) { 40 | let data = JSON.parse(request.responseText) 41 | callback(null, data) 42 | } else { 43 | callback(new Error(request.statusText)) 44 | } 45 | } 46 | 47 | request.onerror = () => { 48 | callback(new Error(`Failed to get JSON! ${request.statusText}`)) 49 | } 50 | 51 | request.send() 52 | } 53 | -------------------------------------------------------------------------------- /exampleSite/content/page/typography.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2017-09-28T08:00:00+06:00 3 | title: Typography 4 | authors: ["muniftanjim"] 5 | slug: typography 6 | menu: main 7 | weight: -230 8 | --- 9 | Here is a paragraph. **Lorem ipsum _dolor_ sit amet**, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 10 | 11 | ## Heading 2 12 | 13 | Another one. 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. 14 | 15 | {{% center %}} 16 | ### Heading 3 17 | 18 | Yet another, but centered! Excepteur sint occaecat ~~cupidatat non proident, sunt in culpa qui officia~~ deserunt mollit anim id est laborum. 19 | {{% /center %}} 20 | 21 | #### Heading 4 22 | 23 | 1. First item 24 | 2. Second item 25 | - Nested unordered item 26 | 3. Third item 27 | 1. Nested ordered item 1 28 | 2. Nested ordered item 2 29 | 30 | ##### Heading 5 31 | 32 | Where are the quotes!!! 33 | 34 | > Simplify, then add lightness. 35 | — Colin Chapman 36 | 37 | Now, [time for some links](/typography#heading-5)! 38 | 39 | - [GoHugo] 40 | - [Hugo Themes][1] 41 | 42 | [GoHugo]: https://gohugo.io 43 | [1]: https://themes.gohugo.io/ 44 | 45 | ###### Heading 6 46 | 47 | Inline code: `echo "What is the meaning of life?"`. Who knows? 48 | 49 | ```javascript 50 | // Codeblock 51 | 52 | var meaningOfLife = 42; 53 | console.log('The meaning of life is: ', meaningOfLife); 54 | ``` 55 | 56 | --- 57 | 58 | Who wants some table? 59 | 60 | Minimo | Caption | More Caption 61 | -------- | --------- | ------------ 62 | Cool | What? | Now, wut?! 63 | 64 | 65 | Ah, enough for today, eh? 66 | -------------------------------------------------------------------------------- /layouts/partials/nav/pagination.html: -------------------------------------------------------------------------------- 1 | {{ if gt .Paginator.TotalPages 1 }} 2 | 46 | {{ end }} 47 | -------------------------------------------------------------------------------- /exampleSite/content/docs/search-support.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2018-07-05T20:00:00+06:00 3 | lastmod: 2018-07-06T01:30:00+06:00 4 | title: "Search Support" 5 | authors: ["muniftanjim"] 6 | categories: 7 | - features 8 | tags: 9 | - search 10 | slug: search-support 11 | toc: true 12 | --- 13 | 14 | Minimo supports the following clients for the search feature: 15 | 16 | - [Algolia](https://www.algolia.com) 17 | - [Fuse.js](http://fusejs.io) 18 | - [Lunr.js](https://lunrjs.com) 19 | 20 | Follow the following steps for enabling search in your site. 21 | 22 | ## Create Search Page 23 | 24 | First of all, you'll need to create a search page. 25 | 26 | Create a markdown file under `/content/page/` directory with the filename `search`. If your site is multilingual, you can include language code in the filename. For example: 27 | 28 | - `/content/page/search.md` 29 | - `/content/page/search.en.md` 30 | 31 | Add the following options in the frontmatter: 32 | 33 | ```yaml 34 | type: page 35 | layout: search 36 | outputs: 37 | - html 38 | - json 39 | ``` 40 | 41 | ## Select Search Client 42 | 43 | For selecting the client for search feature, use the following options in your `config.toml` file: 44 | 45 | ```toml 46 | [params.search] 47 | client = "" 48 | ``` 49 | 50 | - `params.search` [`Map`]: 51 | - `client` [`String`]: Name of the Search Client (_supported values:_ `algolia`,`fuse`,`lunr`) 52 | 53 | ## Client Specific Steps 54 | 55 | The next steps are different for each search client: 56 | 57 | - [**Algolia**]({{< relref "/docs/search-algolia.md" >}}) 58 | - [**Fuse.js**]({{< relref "/docs/search-fuse-js.md" >}}) 59 | - [**Lunr.js**]({{< relref "/docs/search-lunr-js.md" >}}) 60 | 61 | After you complete those steps, you are good to go! 62 | 63 | ## Add Search Widget 64 | 65 | You might also want to add the [`search` widget]({{< relref "/docs/widgets.md#widget-search" >}}). 66 | -------------------------------------------------------------------------------- /exampleSite/content/docs/search-lunr-js.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2018-07-05T20:30:00+06:00 3 | title: "Search: Lunr.js" 4 | authors: ["muniftanjim"] 5 | categories: 6 | - features 7 | tags: 8 | - search 9 | - lunr.js 10 | slug: search-lunr-js 11 | toc: true 12 | --- 13 | 14 | ## Configure Lunr.js Search Client 15 | 16 | Select Lunr.js as the search client in your `config.toml` file: 17 | 18 | ```toml 19 | [params.search] 20 | client = "lunr" 21 | ``` 22 | 23 | ## Generate Search Index for Lunr.js 24 | 25 | Lunr.js will need a search index for searching across your site. So, you'll need to generate that search index for Lunr.js before you deploy your site. 26 | 27 | Minimo comes with a script for generating the search index for Lunr.js: `/scripts/generate-search-index-lunr.js`. 28 | 29 | ### Install Dependencies 30 | 31 | Node.js must be installed on your system for using the generator script. 32 | 33 | It also need the following npm packages: 34 | 35 | - `glob` 36 | - `lunr` 37 | 38 | For installing `lunr` and `glob` globally use the following command: 39 | 40 | ```sh 41 | npm install -g lunr glob 42 | ``` 43 | 44 | ### Run the Script 45 | 46 | After you've generated your site with Hugo, run `generate-search-index-lunr.js` with `node`. 47 | 48 | If Minimo is installed under `/themes/minimo` directory, you'll run it as: 49 | 50 | ```sh 51 | node ./themes/minimo/scripts/generate-search-index-lunr.js 52 | ``` 53 | 54 | The `generate-search-index-lunr.js` script accepts an optional argument for Hugo's `publishDir` (_relative to your site's root directory_). 55 | 56 | So, if you've got a different `publishDir` (say `site`), pass it as the first argument: 57 | 58 | ```sh 59 | node ./themes/minimo/scripts/generate-search-index-lunr.js site 60 | ``` 61 | 62 | If the generation was successful, you'll see output like this: 63 | 64 | ```sh 65 | Lunr.js Index Generated for: /search/index.json 66 | ``` 67 | 68 | That's all. Now you can deploy your site. 69 | -------------------------------------------------------------------------------- /layouts/partials/comments/staticman/comment.html: -------------------------------------------------------------------------------- 1 | {{- $comment := .Comment -}} 2 | {{- $maxDepth := .Page.Site.Params.comments.staticman.maxDepth -}} 3 | 4 |
  • 5 |
    6 |
    7 |
    8 | {{ i18n "authorsAvatar" ( dict "Author" $comment.author ) }} 9 | 10 | {{- if $comment.site -}} 11 | 12 | {{- $comment.author -}} 13 | 14 | {{- else -}} 15 | {{- $comment.author -}} 16 | {{- end -}} 17 | 18 | {{ i18n "says" }}: 19 |
    20 | 28 |
    29 |
    30 | {{ $comment.content | markdownify }} 31 |
    32 | 39 |
    40 | {{- if lt ( .Page.Scratch.Get "comments_depth" ) $maxDepth -}} 41 | {{ partial "comments/staticman/replies-list" ( dict "ParentId" $comment._id "Page" .Page ) }} 42 | {{- end -}} 43 |
  • 44 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/entry/_comments.scss: -------------------------------------------------------------------------------- 1 | .comments { 2 | ol { 3 | list-style: none; 4 | 5 | &.comment-list { 6 | margin: 0; 7 | } 8 | } 9 | 10 | &-title { 11 | @include font-size(1.25); 12 | margin-bottom: 1.5em; 13 | } 14 | } 15 | 16 | .comment { 17 | position: relative; 18 | margin: 1em 0; 19 | 20 | &-header { 21 | min-height: 3em; 22 | } 23 | 24 | .avatar { 25 | float: left; 26 | height: 3em; 27 | width: 3em; 28 | border-radius: 0.25em; 29 | margin-right: 0.75em; 30 | } 31 | 32 | &-meta { 33 | @include font-size(0.875); 34 | } 35 | 36 | .fn { 37 | display: inline-block; 38 | margin-top: 0.1em; 39 | } 40 | 41 | .says { 42 | @extend .screen-reader-text; 43 | } 44 | 45 | .reply { 46 | display: inline-block; 47 | position: absolute; 48 | right: 0; 49 | margin-top: -2em; 50 | 51 | a { 52 | display: inline-block; 53 | } 54 | } 55 | 56 | &-content { 57 | margin-top: 0.75em; 58 | border-radius: 0.25em; 59 | border: 1px solid $color__grey; 60 | padding: 1em; 61 | padding-bottom: 2em; 62 | 63 | @extend .entry-content; 64 | } 65 | 66 | &-respond { 67 | margin: 1.5em 0; 68 | } 69 | 70 | &-reply-title { 71 | small { 72 | display: inline-block; 73 | @include font-size(0.5); 74 | margin-left: 1em; 75 | } 76 | } 77 | 78 | &-form { 79 | label { 80 | display: inline-block; 81 | margin-bottom: 0.25em; 82 | } 83 | 84 | & > div { 85 | margin-top: 1em; 86 | } 87 | } 88 | 89 | &-submission-feedback { 90 | display: none; 91 | position: relative; 92 | border-radius: 0.25em; 93 | border: 1px solid $color__grey; 94 | padding: 1.5em; 95 | margin-bottom: 1.5em; 96 | 97 | a { 98 | position: absolute; 99 | top: 1.5em; 100 | right: 1.5em; 101 | @include font-size(0.875); 102 | } 103 | 104 | &:target { 105 | display: block; 106 | } 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /layouts/partials/widgets/sidebar_menu.html: -------------------------------------------------------------------------------- 1 | {{- $defaultConfig := .Site.Data.config.default.widgets.sidebar_menu -}} 2 | {{- $configData := ( or .Site.Data.config.widgets.sidebar_menu $defaultConfig ) -}} 3 | {{- $lang := .Site.Language.Lang -}} 4 | {{- $config := ( ( index $configData $lang ) | default $configData ) -}} 5 | 6 | {{- $menu := ( $config.mirror | default "sidebar" ) -}} 7 | 8 | {{- $.Scratch.Set "menu" $menu -}} 9 | 10 | {{- $items := ( index .Site.Menus $menu ) -}} 11 | 12 | {{- if $items -}} 13 | 14 |
    15 | {{- with $config.title -}} 16 |
    17 |

    18 | {{- . -}} 19 |

    20 |
    21 | {{- end -}} 22 | 23 | 32 | 33 |
    34 | 35 | {{- end -}} 36 | 37 | {{- define "menu_item" -}} 38 | 39 | {{- $menu := ( .Page.Scratch.Get "menu" ) -}} 40 | 41 | {{- $isCurrent := ( .Page.IsMenuCurrent $menu .Item ) -}} 42 | {{- $hasCurrent := ( .Page.HasMenuCurrent $menu .Item ) -}} 43 | {{- $hasChildren := ( .Item.HasChildren ) -}} 44 | 45 |
  • 50 | 51 | {{- with .Item.Pre -}}{{- . -}}{{- end -}} 52 | {{- .Item.Name -}} 53 | {{- with .Item.Post -}}{{- . -}}{{- end -}} 54 | 55 | 56 | {{- if $hasChildren -}} 57 | 58 | 62 | 63 | 68 | {{- end -}} 69 | 70 |
  • 71 | 72 | {{- end -}} 73 | -------------------------------------------------------------------------------- /exampleSite/content/docs/opengraph.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2017-09-26T08:00:00+06:00 3 | lastmod: 2017-10-11T18:00:00+06:00 4 | title: Opengraph Support 5 | authors: ["muniftanjim"] 6 | categories: 7 | - features 8 | tags: 9 | - og 10 | slug: opengraph 11 | --- 12 | Minimo has built-in support for Opengraph tags. It will pick up most of the things from your contents' front-matters & Hugo configuration. 13 | 14 | You can use these options in you content's front-matter: 15 | 16 | ```yaml 17 | --- 18 | audios: [] # for og:audio tags 19 | images: [] # for og:image tags 20 | videos: [] # for og:video tags 21 | --- 22 | ``` 23 | 24 | - `audios` [`Array` of `String`s]: path/url of audio files 25 | - `images` [`Array` of `String`s]: path/url of image files 26 | - `videos` [`Array` of `String`s]: path/url of video files 27 | 28 | _N.B.: the front-matter syntax shown here is `yaml`. If you use a different format (e.g. `toml`), the syntax will change accordingly._ 29 | 30 | If you add [**Cover Image**]({{< relref "cover-image.md" >}}) to you content, it will also be picked up. 31 | 32 | ## Facebook Opengraph 33 | 34 | You can set these options in your `config.toml` files for better integration with Facebook: 35 | 36 | ```toml 37 | [params.opengraph.facebook] 38 | admins = [] # for fb:admins tags 39 | appID = "" # for fb:app_id tag 40 | pageID = "" # for article:publisher tag 41 | ``` 42 | 43 | - `admins` [`Array` of `String`s]: Facebook Profile IDs 44 | - `appID` [`String`]: Facebook Application ID 45 | - `pageid` [`String`]: Facebook Page ID 46 | 47 | Also, the `[social.facebook]` field from the [Author's Profile]( /docs/authors/#author-s-profile) data is used for `article:author` tag. 48 | 49 | ## Twitter Cards 50 | 51 | Minimo has built-in support for [Twitter Cards](https://developer.twitter.com/en/docs/tweets/optimize-with-cards/overview/abouts-cards). 52 | 53 | You can set these options in your `config.toml` files to provide additional information for Twitter Cards: 54 | 55 | ```toml 56 | [params.opengraph.twitter] 57 | page = "" # for twitter:site tag 58 | ``` 59 | 60 | - `page` [`String`]: Twitter Page's Username 61 | 62 | Also, the `[social.twitter]` field from the [Author's Profile]( /docs/authors/#author-s-profile) data is used for `twitter:creator` tag. 63 | -------------------------------------------------------------------------------- /layouts/partials/widgets/breadcrumbs.html: -------------------------------------------------------------------------------- 1 | {{- $defaultConfig := .Site.Data.config.default.widgets.breadcrumbs -}} 2 | {{- $configData := ( or .Site.Data.config.widgets.breadcrumbs $defaultConfig ) -}} 3 | {{- $lang := .Site.Language.Lang -}} 4 | {{- $config := ( ( index $configData $lang ) | default $configData ) -}} 5 | 6 | {{- define "breadcrumbs_add_parents" -}} 7 | {{- .Scratch.Set "parent" .Page.Parent -}} 8 | {{- if eq .Page.Kind "term" -}} 9 | {{- .Scratch.Set "parent" ( .Page.Site.GetPage ( print "/" .Page.Data.Plural ) ) -}} 10 | {{- end -}} 11 | 12 | {{- $parent := ( .Scratch.Get "parent" ) -}} 13 | 14 | {{- if $parent -}} 15 | {{- if and ( ne $parent.Kind "home" ) ( not ( in .Config.excludeParents $parent.Type ) ) -}} 16 | {{- .Scratch.Add "crumbs" $parent -}} 17 | {{- end }} 18 | {{ template "breadcrumbs_add_parents" ( dict "Config" .Config "Page" $parent "Scratch" .Scratch ) }} 19 | {{- end -}} 20 | {{- end -}} 21 | 22 | {{- define "breadcrumbs" -}} 23 | {{- $crumbs := ( .Scratch.Get "crumbs" ) -}} 24 | {{- $length := len $crumbs -}} 25 | {{- $separator := .Config.separator -}} 26 | 27 | 28 |
    29 | 47 |
    48 | {{- end -}} 49 | 50 | {{- $scratch := newScratch -}} 51 | 52 | {{- $scratch.Set "crumbs" ( slice . ) -}} 53 | {{- template "breadcrumbs_add_parents" ( dict "Config" $config "Page" . "Scratch" $scratch ) -}} 54 | {{- if ne .Kind "home" -}} 55 | {{- $scratch.Add "crumbs" .Site.Home -}} 56 | {{- end -}} 57 | 58 | {{- template "breadcrumbs" ( dict "Config" $config "Scratch" $scratch ) -}} 59 | -------------------------------------------------------------------------------- /src/stylesheets/layouts/sidebar/_sidebar.scss: -------------------------------------------------------------------------------- 1 | .sidebar { 2 | visibility: hidden; 3 | 4 | float: left; 5 | left: -$sidebar__width; 6 | position: absolute; 7 | 8 | width: $sidebar__width; 9 | max-width: 100%; 10 | min-height: 100%; 11 | padding: 2em 0; 12 | margin-right: -100%; 13 | 14 | outline: 0; 15 | z-index: 99999; 16 | transition: left $transition-duration; 17 | 18 | text-align: right; 19 | background: $color__pure-white; 20 | 21 | &.toggled { 22 | visibility: visible; 23 | left: 0; 24 | } 25 | 26 | .sep-after { 27 | &:after { 28 | margin-left: auto; 29 | } 30 | } 31 | 32 | @include screen($breakpoint-medium) { 33 | visibility: visible; 34 | left: 0; 35 | } 36 | } 37 | 38 | .sidebar-toggler { 39 | background: none; 40 | border: 0; 41 | 42 | .icon { 43 | @include font-size(1.25); 44 | } 45 | 46 | &:focus, 47 | &:hover, 48 | &:active { 49 | background: none; 50 | } 51 | 52 | .main & { 53 | padding: 0; 54 | position: absolute; 55 | right: $container__gutter; 56 | 57 | &[aria-expanded='true'] { 58 | display: none; 59 | } 60 | 61 | .close { 62 | display: none; 63 | } 64 | } 65 | 66 | .main-menu & { 67 | position: static; 68 | margin-right: 0.75em; 69 | 70 | &[aria-expanded='true'] { 71 | display: inline-block; 72 | } 73 | } 74 | 75 | .sidebar & { 76 | position: absolute; 77 | top: 0.5em; 78 | left: 0.5em; 79 | 80 | z-index: 2027; 81 | 82 | .open { 83 | display: none; 84 | } 85 | } 86 | 87 | @include screen($breakpoint-medium) { 88 | display: none; 89 | } 90 | } 91 | 92 | .sidebar-overlay { 93 | display: none; 94 | 95 | .sidebar.toggled & { 96 | display: block; 97 | 98 | &:after { 99 | content: ''; 100 | display: block; 101 | position: fixed; 102 | top: 0; 103 | right: 0; 104 | bottom: 0; 105 | left: 0; 106 | z-index: -2027; 107 | 108 | background: $color__pure-white; 109 | opacity: 0.75; 110 | } 111 | 112 | @include screen($breakpoint-medium) { 113 | display: none; 114 | } 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![GitHub release](https://img.shields.io/github/release/MunifTanjim/minimo.svg?style=for-the-badge)](https://github.com/MunifTanjim/minimo/releases/latest) 2 | [![GitHub Release Date](https://img.shields.io/github/release-date/MunifTanjim/minimo.svg?style=for-the-badge)](https://github.com/MunifTanjim/minimo/releases) 3 | [![license](https://img.shields.io/github/license/MunifTanjim/minimo.svg?style=for-the-badge)](https://github.com/MunifTanjim/minimo/blob/master/LICENSE) 4 | 5 | ![Minimo – Minimalist theme for Hugo](https://raw.githubusercontent.com/MunifTanjim/minimo/master/images/tn.png) 6 | 7 | # Minimo 8 | 9 | Minimalist theme for Hugo. 10 | 11 | ## Documentation 12 | 13 | Check the [Minimo Documentation](https://minimo.netlify.com/docs/) for detailed documentation of Minimo. 14 | 15 | #### Getting Up & Running 16 | 17 | Follow these guides for getting your site up & running with Minimo: 18 | 19 | - **Install Minimo**: [Installation Guide](https://minimo.netlify.com/docs/installation) 20 | - **Setup Authors**: [Authors Setup Guide](https://minimo.netlify.com/docs/authors) 21 | - **Configure Widgets**: [Widgets Documentation](https://minimo.netlify.com/docs/widgets) 22 | 23 | #### Updating Minimo 24 | 25 | Follow the [**Updating Guide**](https://minimo.netlify.com/docs/updating) to update Minimo to its latest version. 26 | 27 | After updating Minimo, always check that your site's **`config.toml`** file matches the latest [**`config.toml`** file](https://minimo.netlify.com/docs/config-file) format. 28 | 29 | A good idea is to double check all the [Configuration settings](https://minimo.netlify.com/docs/installation#configuration-for-minimo) of Minimo. 30 | 31 | ## Development 32 | 33 | If you find a bug or want to request a new feature, feel free to open an issue. 34 | 35 | ## Changelog 36 | 37 | [Changelog for Minimo](https://github.com/MunifTanjim/minimo/blob/master/CHANGELOG.md) 38 | 39 | ## License 40 | 41 | Minimo is licensed under the MIT License. Check the [LICENSE](https://github.com/MunifTanjim/minimo/blob/master/LICENSE) file for details. 42 | 43 | The following resources are included/used in the theme: 44 | 45 | - [Feather](https://feather.netlify.com/) by Cole Bemis - Licensed under the [MIT License](https://github.com/colebemis/feather/blob/master/LICENSE). 46 | -------------------------------------------------------------------------------- /exampleSite/content/docs/installation.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2017-09-25T02:00:00+06:00 3 | lastmod: 2018-02-08T15:00:00+06:00 4 | title: Installation Guide 5 | authors: ["muniftanjim"] 6 | categories: 7 | - Tutorial 8 | slug: installation 9 | toc: true 10 | --- 11 | First of all you will need to setup a Hugo site. You can follow the [Hugo's Quick Start Guide](https://gohugo.io/getting-started/quick-start/) for that. 12 | 13 | After you're done with that, it's time for installing Minimo! 14 | 15 | ## Installing Minimo 16 | 17 | There are two different ways you can install Minimo: 18 | 19 | 1. As clone 20 | 2. As submodule 21 | 22 | _The second method is recommended._ 23 | 24 | #### Install Minimo as clone 25 | 26 | With this method, you will simply clone it. And a copy of Minimo's repository will be stored with the rest of you site. Enter the following command for cloning Minimo: 27 | 28 | ```sh 29 | git clone --depth 1 https://github.com/MunifTanjim/minimo themes/minimo 30 | ``` 31 | 32 | #### Install Minimo as submodule 33 | 34 | This method doesn't store a copy of Minimo's repository inside your site's repository. Rather it adds Minimo as a dependency. Start by this command: 35 | 36 | ```sh 37 | git submodule add https://github.com/MunifTanjim/minimo themes/minimo 38 | ``` 39 | 40 | This will add Minimo's repository as a submodule to your site's repository. Now, you will have to pull the theme: 41 | 42 | ```sh 43 | git submodule init 44 | git submodule update 45 | ``` 46 | 47 | That's all, Minimo is ready to be used. 48 | 49 | ## Configuration for Minimo 50 | 51 | For getting started with Minimo, copy the **`config.toml`** file from the **`exampleSite`** directory inside Minimo's repository to your site repository: 52 | 53 | ```sh 54 | cp themes/minimo/exampleSite/config.toml . 55 | ``` 56 | 57 | You can take a look at the [**`config.toml`** file]({{< relref "/docs/config-file.md" >}}) of this site. 58 | 59 | Now, you can start editing this file and change the configuration! 60 | 61 | ### Setting up Authors 62 | 63 | Follow the [Authors Setup Guide]({{< relref "/docs/authors.md" >}}) for setting up authors for you site. 64 | 65 | ### Setting up Widgets 66 | 67 | If you want to use Widgets on your site, take a look at the [Widgets documentation]({{< relref "/docs/widgets.md" >}}) 68 | 69 | ------------- 70 | 71 | Et voilà! Minimo is ready! 72 | -------------------------------------------------------------------------------- /i18n/zh.toml: -------------------------------------------------------------------------------- 1 | [author] 2 | one = "作者" 3 | other = "作者们" 4 | 5 | [authorsAvatar] 6 | other = "{{ .Author }}的头像" 7 | 8 | [by] 9 | other = "by" 10 | 11 | [cancel] 12 | other = "取消" 13 | 14 | [cancelComment] 15 | other = "取消评论" 16 | 17 | [category] 18 | one = "分类" 19 | other = "分类" 20 | 21 | [comment] 22 | other = "评论" 23 | 24 | [commentSubmissionErrorMessage] 25 | other = "发生错误。无法提交您的评论。请再试一次。谢谢你!" 26 | 27 | [commentSubmissionErrorTitle] 28 | other = "啊,抱歉!" 29 | 30 | [commentSubmissionSuccessMessage] 31 | other = "您的评论已提交。它不久后将会出现在该页面!" 32 | 33 | [commentSubmissionSuccessTitle] 34 | other = "谢谢你!" 35 | 36 | [commentsOnEntry] 37 | one = "只有{{ .Count }}评论了{{ .Title }}" 38 | other = "{{ .Count }}评论了{{ .Title }}" 39 | 40 | [contactViaEmail] 41 | other = "通过邮件联系" 42 | 43 | [currentPage] 44 | other = "当前页" 45 | 46 | [email] 47 | other = "邮件" 48 | 49 | [gopher] 50 | other = "Gopher" 51 | 52 | [goHome] 53 | other = "去主页..." 54 | 55 | [leaveAComment] 56 | other = "发表评论" 57 | 58 | [mainMenu] 59 | other = "主菜单" 60 | 61 | [name] 62 | other = "名字" 63 | 64 | [next] 65 | other = "下一个" 66 | 67 | [nextPage] 68 | other = "下一页" 69 | 70 | [nextPost] 71 | other = "下一篇文章" 72 | 73 | [noTerm] 74 | other = "一个{{ .Term }}也没有!" 75 | 76 | [ok] 77 | other = "OK" 78 | 79 | [openAccountInNewTab] 80 | other = "在新标签打开{{ .Platform }}的账户" 81 | 82 | [page] 83 | other = "页面" 84 | 85 | [previous] 86 | other = "上一个" 87 | 88 | [previousPage] 89 | other = "上一页" 90 | 91 | [previousPost] 92 | other = "上一篇文章" 93 | 94 | [postedOn] 95 | other = "发布" 96 | 97 | [readingTime] 98 | one = "需要一分钟读完" 99 | other = "需要{{ .Count }}分钟读完" 100 | 101 | [recentPosts] 102 | other = "最近文章" 103 | 104 | [reply] 105 | other = "回复" 106 | 107 | [replyToAuthor] 108 | other = "回复{{ .Author }}" 109 | 110 | [says] 111 | other = "言论" 112 | 113 | [series] 114 | one = "系列" 115 | other = "系列" 116 | 117 | [sidebarMenu] 118 | other = "侧边菜单" 119 | 120 | [skipToContent] 121 | other = "跳到文章" 122 | 123 | [skipToMainMenu] 124 | other = "跳到主页" 125 | 126 | [socialMenu] 127 | other = "社交菜单" 128 | 129 | [submitComment] 130 | other = "评论" 131 | 132 | [tableOfContents] 133 | other = "内容目录" 134 | 135 | [tag] 136 | one = "标签" 137 | other = "标签" 138 | 139 | [toggleSidebar] 140 | other = "切换侧边栏" 141 | 142 | [website] 143 | other = "网站" 144 | -------------------------------------------------------------------------------- /i18n/de.toml: -------------------------------------------------------------------------------- 1 | [author] 2 | one = "Autor" 3 | other = "Autoren" 4 | 5 | [by] 6 | other = "von" 7 | 8 | [cancel] 9 | other = "Abbrechen" 10 | 11 | [cancelComment] 12 | other = "Kommentar abbrechen" 13 | 14 | [category] 15 | one = "Kategorie" 16 | other = "Kategorien" 17 | 18 | [comment] 19 | other = "Kommentar" 20 | 21 | [commentSubmissionErrorMessage] 22 | other = "Fehler aufgetreten. Ihe Kommentar konnte nicht übermittelt werden. Bitte versuchen Sie es später erneut. Danke!" 23 | 24 | [commentSubmissionErrorTitle] 25 | other = "Fehler" 26 | 27 | [commentSubmissionSuccessMessage] 28 | other = "Ihr Kommentar wurde übermittelt. Er wird in Kürze auf dieser Seite erscheinen!" 29 | 30 | [commentSubmissionSuccessTitle] 31 | other = "Vielen Dank." 32 | 33 | [commentsOnEntry] 34 | one = "Nur {{ .Count }} Kommentar bei {{ .Title }}" 35 | other = "{{ .Count }} Kommentare bei {{ .Title }}" 36 | 37 | [contactViaEmail] 38 | other = "Per E-Mail kontaktieren" 39 | 40 | [currentPage] 41 | other = "Aktuelle Seite" 42 | 43 | [email] 44 | other = "E-Mail" 45 | 46 | [gopher] 47 | other = "Gopher" 48 | 49 | [goHome] 50 | other = "Zur Startseite …" 51 | 52 | [leaveAComment] 53 | other = "Einen Kommentar hinterlassen" 54 | 55 | [mainMenu] 56 | other = "Hauptmenü" 57 | 58 | [name] 59 | other = "Name" 60 | 61 | [next] 62 | other = "Weiter" 63 | 64 | [nextPage] 65 | other = "Nächste Seite" 66 | 67 | [nextPost] 68 | other = "Nächster Beitrag" 69 | 70 | [noTerm] 71 | other = "Kein einziges {{ .Term }}!" 72 | 73 | [ok] 74 | other = "OK" 75 | 76 | [openAccountInNewTab] 77 | other = "{{ .Platform }} in neuem Tab öffnen" 78 | 79 | [page] 80 | other = "Seite" 81 | 82 | [previous] 83 | other = "Vorherige" 84 | 85 | [previousPage] 86 | other = "Vorherige Seite" 87 | 88 | [previousPost] 89 | other = "Vorheriger Beitrag" 90 | 91 | [postedOn] 92 | other = "Veröffentlicht am" 93 | 94 | [readingTime] 95 | one = "Eine Minute Lesezeit" 96 | other = "{{ .Count }} Minuten Lesezeit" 97 | 98 | [recentPosts] 99 | other = "Vorherige Beiträge" 100 | 101 | [search] 102 | other = "Suchen" 103 | 104 | [skipToContent] 105 | other = "Zum Inhalt springen" 106 | 107 | [socialMenu] 108 | other = "Social-Menü" 109 | 110 | [submitComment] 111 | other = "Kommentieren" 112 | 113 | [tableOfContents] 114 | other = "Inhaltsverzeichnis" 115 | 116 | [tag] 117 | one = "Schlagwort" 118 | other = "Schlagwörter" 119 | 120 | [website] 121 | other = "Webseite" 122 | -------------------------------------------------------------------------------- /exampleSite/content/docs/menus.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2017-09-27T10:00:00+06:00 3 | lastmod: 2018-05-24T02:10:00+06:00 4 | title: Menus Setup Guide 5 | authors: ["muniftanjim"] 6 | categories: 7 | - features 8 | tags: 9 | - menus 10 | slug: menus 11 | toc: true 12 | menu: 13 | sidebar: 14 | name: Menus 15 | parent: docs 16 | --- 17 | Minimo has three menus. 18 | 19 | 1. Main Menu 20 | 2. Sidebar Menu 21 | 3. Social Menu 22 | 23 | ## Main Menu 24 | 25 | **name**: `main` 26 | 27 | Main menu is located at the top of the site. 28 | 29 | Check [Hugo's Menus Documentation](https://gohugo.io/content-management/menus/) for information about managing this menu. 30 | 31 | You can hide the Main Menu using the following option in your `config.toml` file: 32 | 33 | ```toml 34 | [params.settings] 35 | hideMainMenu = true 36 | ``` 37 | 38 | ## Sidebar Menu 39 | 40 | **name**: `sidebar` 41 | 42 | Social Menu is available as Widget: `sidebar_menu`. Add it to the `sidebar` [Widget Area]({{< relref "/docs/widgets.md#available-widget-areas" >}}) to use it. 43 | 44 | You can use Sidebar Menu as normal [Hugo Menus](https://gohugo.io/content-management/menus/). 45 | 46 | Or you can use it to mirror another menu by using the `sidebar_menu.mirror` option in your [Widgets Configuration File]({{< relref "/docs/widgets.md#widgets-configuration-file" >}}). For example, this will mirror the Main Menu: 47 | 48 | ```toml 49 | [sidebar_menu] 50 | ... 51 | mirror = "main" 52 | ``` 53 | 54 | The sidebar menu can display nested menus. The sub-pages need to have a page as `parent` defined in the page's front matter: 55 | 56 | ```yaml 57 | menu: 58 | main: 59 | parent: myParentPage 60 | ``` 61 | 62 | ## Social Menu 63 | 64 | Social Menu is available as Widget: `social_menu`. You can add it to [Widget Areas]({{< relref "/docs/widgets.md#available-widget-areas" >}}) to use it. 65 | 66 | Use the variables under `[params.social]` in your `config.toml` file for adding your social profiles: 67 | 68 | ```toml 69 | [params.social] 70 | codepen = "..." 71 | email = "..." 72 | facebook = "..." 73 | ... 74 | ``` 75 | 76 | You only have to add your usernames. Minimo will take care of the rest. 77 | 78 | #### Changing Social Menu Icons Order 79 | 80 | If you want to change the order of the social menu icons, use the `social_menu.platforms` option in your [Widgets Configuration File]({{< relref "/docs/widgets.md#widgets-configuration-file" >}}). 81 | 82 | The social menu icons will appear in the order you specify in the `platforms` array. 83 | -------------------------------------------------------------------------------- /exampleSite/content/docs/katex-support.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2018-08-12T12:30:00+06:00 3 | lastmod: 2019-07-07T02:00:00+06:00 4 | title: KaTeX Support 5 | authors: ["muniftanjim"] 6 | categories: 7 | - features 8 | tags: 9 | - config 10 | - katex 11 | slug: katex-support 12 | --- 13 | 14 | ## KaTeX Syntax for Markdown 15 | 16 | In your Markdown content, use the `katex` shortcode for inserting KaTeX. Check documentation for [Shortcode: katex]({{< relref "/docs/shortcodes.md#shortcode-katex" >}}). 17 | 18 | **Here's an example Markdown content:** 19 | 20 | ```md 21 | When {{}} a \ne 0 {{}}, there are two solutions to 22 | 23 | {{}} ax^2 + bx + c = 0 {{}} 24 | 25 | and they are: 26 | 27 | {{}} 28 | x = {-b \pm \sqrt{b^2-4ac} \over 2a} 29 | {{}} 30 | ``` 31 | 32 | **Output:** 33 | 34 | When {{< katex inline >}} a \ne 0 {{< /katex >}}, there are two solutions to 35 | 36 | {{< katex >}} ax^2 + bx + c = 0 {{< /katex >}} 37 | 38 | and they are: 39 | 40 | {{< katex >}} 41 | x = {-b \pm \sqrt{b^2-4ac} \over 2a} 42 | {{< /katex >}} 43 | 44 | ## Customize KaTeX Configuration 45 | 46 | You can customize the default behavior of KaTeX if you want. 47 | 48 | Minimo picks up configuration for KaTeX from the **`/data/config/katex.json`** file. 49 | 50 | The default configuration options look like this: 51 | 52 | ```json 53 | { 54 | "library": { 55 | "js": { 56 | "main": "//unpkg.com/katex/dist/katex.min.js", 57 | "autoRender": "//unpkg.com/katex/dist/contrib/auto-render.min.js" 58 | }, 59 | "css": { 60 | "main": "//unpkg.com/katex/dist/katex.min.css" 61 | } 62 | }, 63 | "options": {} 64 | } 65 | ``` 66 | 67 | - `library` [`Object`]: 68 | - `js` [`Object`]: 69 | - `main` [`String`]: URL for the main KaTeX library 70 | - `autoRender` [`String`]: URL for the [auto-render extension](https://khan.github.io/KaTeX/docs/autorender.html) 71 | - `css` [`Object`]: 72 | - `main` [`String`]: URL for the main KaTeX stylesheet 73 | - `options` [`Object`]: 74 | - _[KaTeX configuration options](https://khan.github.io/KaTeX/docs/options.html)_ 75 | 76 | So, if you want to tinker with it's configuration options: 77 | 78 | - Create a `/data/config/katex.json` file in your site's repository 79 | - Copy the default configuration options 80 | - Start hacking 81 | 82 | #### Related Guides 83 | 84 | - [Configuration Options](https://khan.github.io/KaTeX/docs/options.html) 85 | - [Auto-render Extension](https://khan.github.io/KaTeX/docs/autorender.html) 86 | -------------------------------------------------------------------------------- /static/assets/css/rtl.e580af8f.css: -------------------------------------------------------------------------------- 1 | blockquote{padding-left:0;padding-right:1em;border-left:0;border-right:.2em solid #bdbdbd}body{direction:rtl}ol,ul{margin:0 2em 1.5em 0}li>ol,li>ul{padding-left:0;padding-right:1.5em;margin-left:0;margin-right:.5em}caption,td,th{text-align:right}.main-menu li{margin-right:0;margin-left:.625em}.main-menu li:last-child{margin-left:0}.sidebar-menu .sub-menu{padding-right:0}.sidebar-menu .sub-menu .item:not(.has-children){padding-right:0;padding-left:1.2em}.sub-menu-toggler{margin-left:0;margin-right:.2em}.page-link:first-child{padding-left:.625em;padding-right:0}.page-link:last-child{padding-left:0;padding-right:.625em}.page-link.next .icon,.page-link.prev .icon{transform:rotate(180deg)}.main{transition:margin-right .2s}.sidebar.toggled~.main{margin-left:0;margin-right:300px}@media screen and (min-width:920px){.has-sidebar .main{float:right;margin-left:0;margin-right:300px;padding-left:0;padding-right:2em}}.has-sidebar .container{margin-left:auto;margin-right:0}.sidebar{float:right;left:auto;right:-300px;margin-right:0;margin-left:-100%;transition:right .2s;text-align:left}.sidebar.toggled{right:0}.sidebar .sep-after:after{margin-left:0;margin-right:auto}@media screen and (min-width:920px){.sidebar{left:auto;right:0}}.main .sidebar-toggler{right:auto;left:20px}.main-menu .sidebar-toggler{margin-right:0;margin-left:.75em}.sidebar .sidebar-toggler{left:auto;right:.5em}.header-info .taxonomy-name{margin-right:0;margin-left:.25em}.entry-meta>span{display:inline-block}.entry-meta span{margin-right:0;margin-left:.75em}.entry-meta .icon,.no-details details>summary:before{margin-right:0;margin-left:.25em}.entry-footer .icon{margin-right:0;margin-left:.375em}.comment .avatar{float:right;margin-right:0;margin-left:.75em}.comment .reply{right:auto;left:0}.comment-reply-title small{margin-left:0;margin-right:1em}.comment-submission-feedback a{right:auto;left:1.5em}.list .item .icon{margin-right:0;margin-left:.25em}.taxonomy-cloud li{padding:0 0 .5em 1.5em}img.emoji{margin:0 .1em 0 .05em}.layout-archive .list .item{padding-left:0;padding-right:1em}.sidebar .widget-about .logo{margin-left:0;margin-right:auto}.widget-search .search-submit{right:auto;left:0;border-radius:.2em 0 0 0}.layout-search .widget-search .search-term{padding-right:.875em;padding-left:3em}.widget-social_menu li{margin-right:0;margin-left:.625em}.widget-social_menu li:last-child{margin-left:0}.sidebar .widget-social_menu li{margin-left:0;margin-right:.625em}.sidebar .widget-taxonomy_cloud li{padding:0 .8em .4em 0}.screen-reader-text:focus{left:auto;right:.5em}.convo .sep{padding-left:.5em;padding-right:.75em} 2 | -------------------------------------------------------------------------------- /i18n/bn.toml: -------------------------------------------------------------------------------- 1 | [author] 2 | one = "লেখক" 3 | other = "লেখকেরা" 4 | 5 | [authorsAvatar] 6 | other = "{{ .Author }}-এর ছবি" 7 | 8 | [by] 9 | other = "লিখেছে" 10 | 11 | [cancel] 12 | other = "বাদ দাও" 13 | 14 | [cancelComment] 15 | other = "কমেন্ট করা বাদ দাও" 16 | 17 | [category] 18 | one = "ক্যাটেগরি" 19 | other = "ক্যাটেগরিসমূহ" 20 | 21 | [comment] 22 | other = "কমেন্ট" 23 | 24 | [commentSubmissionErrorMessage] 25 | other = "সমস্যা দেখা দিয়েছে। কমেন্ট সাবমিট করা যায় নি। অনুগ্রহ করে আবার চেষ্টা করো। ধন্যবাদ!" 26 | 27 | [commentSubmissionErrorTitle] 28 | other = "এহহে, স্যরি!" 29 | 30 | [commentSubmissionSuccessMessage] 31 | other = "কমেন্ট সাবমিট করা হয়েছে। কিছুক্ষণের মধ্যেই সেটা এই পেজে দেখা যাবে!" 32 | 33 | [commentSubmissionSuccessTitle] 34 | other = "ধন্যবাদ!" 35 | 36 | [commentsOnEntry] 37 | one = "{{ .Title }}-এ কমেন্ট শুধুমাত্র {{ .Count }}টা" 38 | other = "{{ .Title }}-এ কমেন্ট {{ .Count }}টা" 39 | 40 | [contactViaEmail] 41 | other = "ইমেইলে যোগাযোগ করো" 42 | 43 | [currentPage] 44 | other = "এই পৃষ্ঠা" 45 | 46 | [email] 47 | other = "ইমেইল" 48 | 49 | [gopher] 50 | other = "গোফার" 51 | 52 | [goHome] 53 | other = "গোড়ায় ফিরে চলো..." 54 | 55 | [leaveAComment] 56 | other = "কমেন্ট দিয়ে যাও..." 57 | 58 | [mainMenu] 59 | other = "মেইন মেনু" 60 | 61 | [name] 62 | other = "নাম" 63 | 64 | [next] 65 | other = "পরেরটা" 66 | 67 | [nextPage] 68 | other = "পরের পৃষ্ঠা" 69 | 70 | [nextPost] 71 | other = "পরের পোস্ট" 72 | 73 | [noTerm] 74 | other = "কোন {{ .Term }} নেই!" 75 | 76 | [ok] 77 | other = "ঠিক আছে" 78 | 79 | [openAccountInNewTab] 80 | other = "{{ .Platform }} একাউন্ট নতুন ট্যাবে খোল" 81 | 82 | [page] 83 | other = "পৃষ্ঠা" 84 | 85 | [previous] 86 | other = "আগেরটা" 87 | 88 | [previousPage] 89 | other = "আগের পৃষ্ঠা" 90 | 91 | [previousPost] 92 | other = "আগের পোস্ট" 93 | 94 | [postedOn] 95 | other = "তারিখ" 96 | 97 | [readingTime] 98 | one = "এক মিনিট লম্বা" 99 | other = "{{ .Count }} মিনিট লম্বা" 100 | 101 | [recentPosts] 102 | other = "সাম্প্রতিক পোষ্টগুলো" 103 | 104 | [reply] 105 | other = "উত্তর দাও" 106 | 107 | [replyToAuthor] 108 | other = "{{ .Author }}-কে উত্তর দাও" 109 | 110 | [says] 111 | other = "বলেছে" 112 | 113 | [series] 114 | one = "সিরিজ" 115 | other = "সিরিজসমূহ" 116 | 117 | [sidebarMenu] 118 | other = "সাইডবার মেনু" 119 | 120 | [skipToContent] 121 | other = "কন্টেন্টে যাও" 122 | 123 | [skipToMainMenu] 124 | other = "মেইন মেনুতে যাও" 125 | 126 | [socialMenu] 127 | other = "সোশ্যাল মেনু" 128 | 129 | [submitComment] 130 | other = "কমেন্ট!" 131 | 132 | [tableOfContents] 133 | other = "এক নজরে" 134 | 135 | [tag] 136 | one = "ট্যাগ" 137 | other = "ট্যাগসমূহ" 138 | 139 | [toggleSidebar] 140 | other = "সাইডবার ট্যুগল কর" 141 | 142 | [website] 143 | other = "ওয়েবসাইট" 144 | -------------------------------------------------------------------------------- /exampleSite/content/docs/search-algolia.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2018-07-05T23:30:00+06:00 3 | title: "Search: Algolia" 4 | authors: ["muniftanjim"] 5 | categories: 6 | - features 7 | tags: 8 | - search 9 | - algolia 10 | slug: search-algolia 11 | toc: true 12 | --- 13 | 14 | ## Configure Algolia Search Client 15 | 16 | Select Algolia as the search client in your `config.toml` file: 17 | 18 | ```toml 19 | [params.search] 20 | client = "algolia" 21 | ``` 22 | 23 | Also, add configuration options for Algolia: 24 | 25 | ```toml 26 | [params.search.algolia] 27 | appId = "" 28 | indexName = "" 29 | searchApiKey = "" 30 | ``` 31 | 32 | - `params.search.algolia` [`Map`]: 33 | - `appId` [`String`]: Algolia Application ID 34 | - `indexName` [`String`]: Name for Algolia Indices 35 | _default: `minimo_site`_ 36 | - `searchApiKey` [`String`]: Algolia Search-Only API Key 37 | 38 | You'll find various information related to your Algolia account in the [Algolia Dashboard](https://www.algolia.com/dashboard). 39 | 40 | ## Generate Search Index for Algolia 41 | 42 | Algolia will need a search index for searching across your site. So, you'll need to generate that search index for Algolia before you deploy your site. 43 | 44 | Minimo comes with a script for generating the search index for Algolia: `/scripts/generate-search-index-algolia.js`. 45 | 46 | ### Install Dependencies 47 | 48 | Node.js must be installed on your system for using the generator script. 49 | 50 | It also needs the following npm packages: 51 | 52 | - `algoliasearch` 53 | - `glob` 54 | 55 | For installing `algoliasearch` and `glob` globally use the following command: 56 | 57 | ```sh 58 | npm install -g algoliasearch glob 59 | ``` 60 | 61 | ### Set Environment Variables 62 | 63 | The generator script uses the following environment variables: 64 | 65 | - `ALGOLIA_APP_ID` (`required`): Algolia Application ID 66 | - `ALGOLIA_ADMIN_API_KEY` (`required`): Algolia Admin API Key 67 | - `ALGOLIA_INDEX_NAME` (`optional`): Name for Algolia Indices 68 | _default: `minimo_site`_ 69 | 70 | ### Run the Script 71 | 72 | After you've generated your site with Hugo, run `generate-search-index-algolia.js` with `node`. 73 | 74 | If Minimo is installed under `/themes/minimo` directory, you'll run it as: 75 | 76 | ```sh 77 | node ./themes/minimo/scripts/generate-search-index-algolia.js 78 | ``` 79 | 80 | The `generate-search-index-algolia.js` script accepts an optional argument for Hugo's `publishDir` (_relative to your site's root directory_). 81 | 82 | So, if you've got a different `publishDir` (say `site`), pass it as the first argument: 83 | 84 | ```sh 85 | node ./themes/minimo/scripts/generate-search-index-algolia.js site 86 | ``` 87 | 88 | If the generation was successful, you'll see output like this: 89 | 90 | ``` 91 | Algolia Index Generated for: /search/index.json 92 | ``` 93 | 94 | That's all. Now you can deploy your site. 95 | -------------------------------------------------------------------------------- /i18n/en.toml: -------------------------------------------------------------------------------- 1 | [author] 2 | one = "Author" 3 | other = "Authors" 4 | 5 | [authorsAvatar] 6 | other = "{{ .Author }}'s avatar" 7 | 8 | [by] 9 | other = "by" 10 | 11 | [cancel] 12 | other = "Cancel" 13 | 14 | [cancelComment] 15 | other = "Cancel comment" 16 | 17 | [category] 18 | one = "Category" 19 | other = "Categories" 20 | 21 | [comment] 22 | other = "Comment" 23 | 24 | [commentSubmissionErrorMessage] 25 | other = "Error occured. Couldn't submit your comment. Please try again. Thank You!" 26 | 27 | [commentSubmissionErrorTitle] 28 | other = "Yikes, Sorry!" 29 | 30 | [commentSubmissionSuccessMessage] 31 | other = "Your comment has been submitted. It will appear on this page shortly!" 32 | 33 | [commentSubmissionSuccessTitle] 34 | other = "Thank You!" 35 | 36 | [commentsOnEntry] 37 | one = "Only {{ .Count }} comment on {{ .Title }}" 38 | other = "{{ .Count }} comments on {{ .Title }}" 39 | 40 | [contactViaEmail] 41 | other = "Contact via Email" 42 | 43 | [currentPage] 44 | other = "Current page" 45 | 46 | [email] 47 | other = "Email" 48 | 49 | [gopher] 50 | other = "Gopher" 51 | 52 | [goHome] 53 | other = "Go Home..." 54 | 55 | [lastUpdated] 56 | other = "Last updated" 57 | 58 | [leaveAComment] 59 | other = "Leave a comment" 60 | 61 | [mainMenu] 62 | other = "Main Menu" 63 | 64 | [name] 65 | other = "Name" 66 | 67 | [next] 68 | other = "Next" 69 | 70 | [nextPage] 71 | other = "Next page" 72 | 73 | [nextPost] 74 | other = "Next post" 75 | 76 | [noTerm] 77 | other = "Not a single {{ .Term }}!" 78 | 79 | [ok] 80 | other = "OK" 81 | 82 | [openAccountInNewTab] 83 | other = "Open {{ .Platform }} account in new tab" 84 | 85 | [page] 86 | other = "Page" 87 | 88 | [previous] 89 | other = "Previous" 90 | 91 | [previousPage] 92 | other = "Previous page" 93 | 94 | [previousPost] 95 | other = "Previous post" 96 | 97 | [postedOn] 98 | other = "Posted on" 99 | 100 | [readingTime] 101 | one = "One min read" 102 | other = "{{ .Count }} mins read" 103 | 104 | [recentPosts] 105 | other = "Recent Posts" 106 | 107 | [reply] 108 | other = "Reply" 109 | 110 | [replyToAuthor] 111 | other = "Reply to {{ .Author }}" 112 | 113 | [says] 114 | other = "says" 115 | 116 | [search] 117 | other = "Search" 118 | 119 | [searchResultEmpty] 120 | other = "Nothing found!" 121 | 122 | [searching] 123 | other = "Searching" 124 | 125 | [series] 126 | one = "Series" 127 | other = "Series" 128 | 129 | [sidebarMenu] 130 | other = "Sidebar Menu" 131 | 132 | [skipToContent] 133 | other = "Skip to Content" 134 | 135 | [skipToMainMenu] 136 | other = "Skip to Main Menu" 137 | 138 | [socialMenu] 139 | other = "Social Menu" 140 | 141 | [submitComment] 142 | other = "Comment!" 143 | 144 | [tableOfContents] 145 | other = "Table of Contents" 146 | 147 | [tag] 148 | one = "Tag" 149 | other = "Tags" 150 | 151 | [toggleSidebar] 152 | other = "Toggle Sidebar" 153 | 154 | [website] 155 | other = "Website" 156 | -------------------------------------------------------------------------------- /i18n/ar.toml: -------------------------------------------------------------------------------- 1 | [author] 2 | one = "مؤلف" 3 | other = "مؤلفين" 4 | 5 | [authorsAvatar] 6 | other = "الصورة الرمزية لِـ{{ .Author }}" 7 | 8 | [by] 9 | other = "مِن قِبَل" 10 | 11 | [cancel] 12 | other = "إلغاء" 13 | 14 | [cancelComment] 15 | other = "إلغاء التعليق" 16 | 17 | [category] 18 | one = "فئة" 19 | other = "فئات" 20 | 21 | [comment] 22 | other = "تعليق" 23 | 24 | [commentSubmissionErrorMessage] 25 | other = "حدث خطأ. تعذر إرسال تعليقك. أعد المحاولة مجددًا. شكرًا لك!" 26 | 27 | [commentSubmissionErrorTitle] 28 | other = "عذرًا!" 29 | 30 | [commentSubmissionSuccessMessage] 31 | other = "تم إرسال تعليقك. سيظهر هنا بعد حين!" 32 | 33 | [commentSubmissionSuccessTitle] 34 | other = "شكرًا لك!" 35 | 36 | [commentsOnEntry] 37 | one = "إلّا {{ .Count }} تعليق على {{ .Title }}" 38 | other = "{{ .Count }} تعليقات على {{ .Title }}" 39 | 40 | [contactViaEmail] 41 | other = "الإتصال عبر البريد الإلكتروني" 42 | 43 | [currentPage] 44 | other = "الصفحة الحالية" 45 | 46 | [email] 47 | other = "البريد الإلكتروني" 48 | 49 | [gopher] 50 | other = "Gopher" 51 | 52 | [goHome] 53 | other = "انتقل إلى الرئيسية..." 54 | 55 | [lastUpdated] 56 | other = "آخر تعديل" 57 | 58 | [leaveAComment] 59 | other = "اترك تعليقًا" 60 | 61 | [mainMenu] 62 | other = "القئمة الرئيسية" 63 | 64 | [name] 65 | other = "الإسم" 66 | 67 | [next] 68 | other = "التالي" 69 | 70 | [nextPage] 71 | other = "الصفحة التالية" 72 | 73 | [nextPost] 74 | other = "المنشور التالي" 75 | 76 | [noTerm] 77 | other = "ليس هناك أية {{ .Term }}!" 78 | 79 | [ok] 80 | other = "حسنًا" 81 | 82 | [openAccountInNewTab] 83 | other = "افتح حساب {{ .Platform }} في لسان جديد" 84 | 85 | [page] 86 | other = "صفحة" 87 | 88 | [previous] 89 | other = "السابقة" 90 | 91 | [previousPage] 92 | other = "الصفحة السابقة" 93 | 94 | [previousPost] 95 | other = "المنشور السابق" 96 | 97 | [postedOn] 98 | other = "نُشِر في" 99 | 100 | [readingTime] 101 | one = "قراءة تستغرق دقيقة" 102 | other = "قراءة تستغرق {{ .Count }} دقائق" 103 | 104 | [recentPosts] 105 | other = "أحدث المنشورات" 106 | 107 | [reply] 108 | other = "رد" 109 | 110 | [replyToAuthor] 111 | other = "رد على {{ .Author }}" 112 | 113 | [says] 114 | other = "قال" 115 | 116 | [search] 117 | other = "البحث" 118 | 119 | [searchResultEmpty] 120 | other = "لا شيء موجود!" 121 | 122 | [searching] 123 | other = "البحث جارٍ" 124 | 125 | [series] 126 | one = "سلاسل" 127 | other = "سلاسل" 128 | 129 | [sidebarMenu] 130 | other = "القائمة الجانبية" 131 | 132 | [skipToContent] 133 | other = "تجاهل إلى المحتوى" 134 | 135 | [skipToMainMenu] 136 | other = "تجاهل إلى القائمة الرئيسية" 137 | 138 | [socialMenu] 139 | other = "القائمة الإجتماعية" 140 | 141 | [submitComment] 142 | other = "علّق!" 143 | 144 | [tableOfContents] 145 | other = "فهرس المحتويات" 146 | 147 | [tag] 148 | one = "وسم" 149 | other = "وسوم" 150 | 151 | [toggleSidebar] 152 | other = "إخفاء أو إظهار القائمة الجانبية" 153 | 154 | [website] 155 | other = "موقع الويب" 156 | -------------------------------------------------------------------------------- /i18n/hu.toml: -------------------------------------------------------------------------------- 1 | [author] 2 | one = "Szerző" 3 | other = "Szerzők" 4 | 5 | [authorsAvatar] 6 | other = "{{ .Author }} avatarja" 7 | 8 | [by] 9 | other = "írta" 10 | 11 | [cancel] 12 | other = "Mégse" 13 | 14 | [cancelComment] 15 | other = "Megjegyzés visszavonása" 16 | 17 | [category] 18 | one = "Kategória" 19 | other = "Kategóriák" 20 | 21 | [comment] 22 | other = "Megjegyzések" 23 | 24 | [commentSubmissionErrorMessage] 25 | other = "Hiba! Nem tudtam a megjegyzést beküldeni. Kérlek, próbáld újra!" 26 | 27 | [commentSubmissionErrorTitle] 28 | other = "Ooopsz! Bocsi!" 29 | 30 | [commentSubmissionSuccessMessage] 31 | other = "A megjegyzést beküldtem. Hamarosan meg fog jelenni." 32 | 33 | [commentSubmissionSuccessTitle] 34 | other = "Köszi!" 35 | 36 | [commentsOnEntry] 37 | one = "Csak {{ .Count }} megjegyzés van a {{ .Title }} cikkhez" 38 | other = "{{ .Count }} megjegyzés van a {{ .Title }} cikkhez" 39 | 40 | [contactViaEmail] 41 | other = "Írj e-mailt" 42 | 43 | [currentPage] 44 | other = "Aktuális oldal" 45 | 46 | [email] 47 | other = "E-mail" 48 | 49 | [gopher] 50 | other = "Gopher" 51 | 52 | [goHome] 53 | other = "Nyitólap..." 54 | 55 | [lastUpdated] 56 | other = "Utoljára frissítve" 57 | 58 | [leaveAComment] 59 | other = "Írj megjegyzést" 60 | 61 | [mainMenu] 62 | other = "Főmenü" 63 | 64 | [name] 65 | other = "Név" 66 | 67 | [next] 68 | other = "Következő" 69 | 70 | [nextPage] 71 | other = "Következő oldal" 72 | 73 | [nextPost] 74 | other = "Következő cikk" 75 | 76 | [noTerm] 77 | other = "Ez nem egyszerű {{ .Term }}!" 78 | 79 | [ok] 80 | other = "OK" 81 | 82 | [openAccountInNewTab] 83 | other = "A(z) {{ .Platform }} új lapon nyílik meg" 84 | 85 | [page] 86 | other = "Oldal" 87 | 88 | [previous] 89 | other = "Előző" 90 | 91 | [previousPage] 92 | other = "Előző oldal" 93 | 94 | [previousPost] 95 | other = "Előző cikk" 96 | 97 | [postedOn] 98 | other = "Megosztva" 99 | 100 | [readingTime] 101 | one = "Egyperces olvasnivaló" 102 | other = "{{ .Count }} percnyi olvasnivaló" 103 | 104 | [recentPosts] 105 | other = "Legújabb cikkek" 106 | 107 | [reply] 108 | other = "Válasz" 109 | 110 | [replyToAuthor] 111 | other = "Válaszolj a szerzőnek" 112 | 113 | [says] 114 | other = "írja" 115 | 116 | [search] 117 | other = "Keresés" 118 | 119 | [searchResultEmpty] 120 | other = "Nincs találat." 121 | 122 | [searching] 123 | other = "Keresés..." 124 | 125 | [series] 126 | one = "Sorozat" 127 | other = "Sorozatok" 128 | 129 | [sidebarMenu] 130 | other = "Oldalsó menü" 131 | 132 | [skipToContent] 133 | other = "Ugrás a tartalomhoz" 134 | 135 | [skipToMainMenu] 136 | other = "Ugrás a főmenühöz" 137 | 138 | [socialMenu] 139 | other = "Társasági menü" 140 | 141 | [submitComment] 142 | other = "Beküld" 143 | 144 | [tableOfContents] 145 | other = "Tartalom" 146 | 147 | [tag] 148 | one = "Címke" 149 | other = "Címkék" 150 | 151 | [toggleSidebar] 152 | other = "Oldalsáv kapcsolása" 153 | 154 | [website] 155 | other = "Honlap" 156 | -------------------------------------------------------------------------------- /i18n/it.toml: -------------------------------------------------------------------------------- 1 | [author] 2 | one = "Autore" 3 | other = "Autori" 4 | 5 | [authorsAvatar] 6 | other = "Avatar di {{ .Author }}" 7 | 8 | [by] 9 | other = "di" 10 | 11 | [cancel] 12 | other = "Cancella" 13 | 14 | [cancelComment] 15 | other = "Cancella il commento" 16 | 17 | [category] 18 | one = "Categoria" 19 | other = "Categorie" 20 | 21 | [comment] 22 | other = "Commento" 23 | 24 | [commentSubmissionErrorMessage] 25 | other = "Si è verificato un errore. Impossibile inviare il commento. Perfavore riprova più tardi" 26 | 27 | [commentSubmissionErrorTitle] 28 | other = "Oh perbacco!" 29 | 30 | [commentSubmissionSuccessMessage] 31 | other = "Il tuo commmento è stato inviato con successo. Comparirà nella pagina a breve!" 32 | 33 | [commentSubmissionSuccessTitle] 34 | other = "Grazie!" 35 | 36 | [commentsOnEntry] 37 | one = "Solo {{ .Count }} commento su {{ .Title }}" 38 | other = "{{ .Count }} commenti su {{ .Title }}" 39 | 40 | [contactViaEmail] 41 | other = "Contatta via Email" 42 | 43 | [currentPage] 44 | other = "Pagina corrente" 45 | 46 | [email] 47 | other = "Email" 48 | 49 | [gopher] 50 | other = "Gopher" 51 | 52 | [goHome] 53 | other = "Vai alla Home..." 54 | 55 | [leaveAComment] 56 | other = "Lascia un commento" 57 | 58 | [mainMenu] 59 | other = "Menu Principale" 60 | 61 | [name] 62 | other = "Nome" 63 | 64 | [next] 65 | other = "Successivo" 66 | 67 | [nextPage] 68 | other = "Pagina successiva" 69 | 70 | [nextPost] 71 | other = "Post successivo" 72 | 73 | [noTerm] 74 | other = "Nessun {{ .Term }}!" 75 | 76 | [ok] 77 | other = "OK" 78 | 79 | [openAccountInNewTab] 80 | other = "Apri l'account {{ .Platform }} in una nuova tab" 81 | 82 | [page] 83 | other = "Pagina" 84 | 85 | [previous] 86 | other = "Precedente" 87 | 88 | [previousPage] 89 | other = "Pagina precedente" 90 | 91 | [previousPost] 92 | other = "Post prececente" 93 | 94 | [postedOn] 95 | other = "Pubblicato il" 96 | 97 | [readingTime] 98 | one = "Un minuto di lettura" 99 | other = "{{ .Count }} minuti di lettura" 100 | 101 | [recentPosts] 102 | other = "Post recenti" 103 | 104 | [reply] 105 | other = "Rispondi" 106 | 107 | [replyToAuthor] 108 | other = "Respondi a {{ .Author }}" 109 | 110 | [says] 111 | other = "dice" 112 | 113 | [search] 114 | other = "Cerca" 115 | 116 | [searchResultEmpty] 117 | other = "Nessun risultato" 118 | 119 | [searching] 120 | other = "Ricerca in corso" 121 | 122 | [series] 123 | one = "Serie" 124 | other = "Serie" 125 | 126 | [sidebarMenu] 127 | other = "Menu Laterale" 128 | 129 | [skipToContent] 130 | other = "Vai al contenuto" 131 | 132 | [skipToMainMenu] 133 | other = "Vai al menu principale" 134 | 135 | [socialMenu] 136 | other = "Menu social" 137 | 138 | [submitComment] 139 | other = "Commenta!" 140 | 141 | [tableOfContents] 142 | other = "Sommario" 143 | 144 | [tag] 145 | one = "Tag" 146 | other = "Tag" 147 | 148 | [toggleSidebar] 149 | other = "Mostra o nascondi barra laterale" 150 | 151 | [website] 152 | other = "Sito" 153 | -------------------------------------------------------------------------------- /i18n/vi.toml: -------------------------------------------------------------------------------- 1 | [author] 2 | one = "Tác giả" 3 | other = "Các tác giả" 4 | 5 | [authorsAvatar] 6 | other = "Hình đại diện của {{ .Author }}" 7 | 8 | [by] 9 | other = "bởi" 10 | 11 | [cancel] 12 | other = "Huỷ bỏ" 13 | 14 | [cancelComment] 15 | other = "Huỷ bình luận" 16 | 17 | [category] 18 | one = "Danh mục" 19 | other = "Các danh mục" 20 | 21 | [comment] 22 | other = "Bình luận" 23 | 24 | [commentSubmissionErrorMessage] 25 | other = "Đã có lỗi xảy ra. Không thể gởi bình luận của bạn. Vui lòng thử lại. Cảm ơn!" 26 | 27 | [commentSubmissionErrorTitle] 28 | other = "Ồ, Xin lỗi!" 29 | 30 | [commentSubmissionSuccessMessage] 31 | other = "Bình luận của bạn đã được gởi đi. Nó sẽ sớm xuất hiện trên trang này!" 32 | 33 | [commentSubmissionSuccessTitle] 34 | other = "Cảm ơn bạn!" 35 | 36 | [commentsOnEntry] 37 | one = "Chỉ có {{ .Count }} bình luận trên {{ .Title }}" 38 | other = "Có {{ .Count }} bình luận trên {{ .Title }}" 39 | 40 | [contactViaEmail] 41 | other = "Liên hệ qua Email" 42 | 43 | [currentPage] 44 | other = "Trang hiện tại" 45 | 46 | [email] 47 | other = "Email" 48 | 49 | [gopher] 50 | other = "Gopher" 51 | 52 | [goHome] 53 | other = "Về trang chủ..." 54 | 55 | [lastUpdated] 56 | other = "Cập nhật gần đây" 57 | 58 | [leaveAComment] 59 | other = "Bình luận" 60 | 61 | [mainMenu] 62 | other = "Menu Chính" 63 | 64 | [name] 65 | other = "Tên" 66 | 67 | [next] 68 | other = "Tiếp theo" 69 | 70 | [nextPage] 71 | other = "Trang tiếp theo" 72 | 73 | [nextPost] 74 | other = "Bài viết tiếp theo" 75 | 76 | [noTerm] 77 | other = "Không phải là một {{ .Term }}!" 78 | 79 | [ok] 80 | other = "Đồng ý" 81 | 82 | [openAccountInNewTab] 83 | other = "Mở tài khoản {{ .Platform }} trong một tab mới" 84 | 85 | [page] 86 | other = "Trang" 87 | 88 | [previous] 89 | other = "Trước đó" 90 | 91 | [previousPage] 92 | other = "Trang trước" 93 | 94 | [previousPost] 95 | other = "Bài viết trước" 96 | 97 | [postedOn] 98 | other = "Đăng vào" 99 | 100 | [readingTime] 101 | one = "Một phút đọc" 102 | other = "{{ .Count }} phút đọc" 103 | 104 | [recentPosts] 105 | other = "Những bài viết gần đây" 106 | 107 | [reply] 108 | other = "Trả lời" 109 | 110 | [replyToAuthor] 111 | other = "Trả lời {{ .Author }}" 112 | 113 | [says] 114 | other = "nói" 115 | 116 | [search] 117 | other = "Tìm kiếm" 118 | 119 | [searchResultEmpty] 120 | other = "Không tìm thấy!" 121 | 122 | [searching] 123 | other = "Đang tìm kiếm" 124 | 125 | [series] 126 | one = "Loạt bài" 127 | other = "Loạt bài" 128 | 129 | [sidebarMenu] 130 | other = "Menu Sidebar" 131 | 132 | [skipToContent] 133 | other = "Vào nội dung chính" 134 | 135 | [skipToMainMenu] 136 | other = "Đến Menu chính" 137 | 138 | [socialMenu] 139 | other = "Menu mạng xã hội" 140 | 141 | [submitComment] 142 | other = "Đăng bình luận!" 143 | 144 | [tableOfContents] 145 | other = "Mục lục" 146 | 147 | [tag] 148 | one = "Thẻ" 149 | other = "Các thẻ" 150 | 151 | [toggleSidebar] 152 | other = "Đóng mở Sidebar" 153 | 154 | [website] 155 | other = "Trang web" 156 | -------------------------------------------------------------------------------- /i18n/id.toml: -------------------------------------------------------------------------------- 1 | [author] 2 | one = "Pengarang" 3 | other = "Pengarang" 4 | 5 | [authorsAvatar] 6 | other = "Avatar {{ .Author }}" 7 | 8 | [by] 9 | other = "oleh" 10 | 11 | [cancel] 12 | other = "Batal" 13 | 14 | [cancelComment] 15 | other = "Batal menanggapi" 16 | 17 | [category] 18 | one = "Kategori" 19 | other = "Kategori" 20 | 21 | [comment] 22 | other = "Tanggapan" 23 | 24 | [commentSubmissionErrorMessage] 25 | other = "Terdapat galat. Tidak dapat mengirim tanggapanmu. Silakan coba lagi. Terima kasih." 26 | 27 | [commentSubmissionErrorTitle] 28 | other = "Oops, maaf." 29 | 30 | [commentSubmissionSuccessMessage] 31 | other = "Tanggapanmu telah dikirim dan akan segera muncul di laman ini." 32 | 33 | [commentSubmissionSuccessTitle] 34 | other = "Terima kasih." 35 | 36 | [commentsOnEntry] 37 | one = "Hanya terdapat {{ .Count }} tanggapan di {{ .Title }}" 38 | other = "Terdapat {{ .Count }} tanggapan di {{ .Title }}" 39 | 40 | [contactViaEmail] 41 | other = "Hubungi melalui Surel" 42 | 43 | [currentPage] 44 | other = "Laman saat ini" 45 | 46 | [email] 47 | other = "Surel" 48 | 49 | [gopher] 50 | other = "Gopher" 51 | 52 | [goHome] 53 | other = "Ke Beranda..." 54 | 55 | [lastUpdated] 56 | other = "Pembaruan terakhir" 57 | 58 | [leaveAComment] 59 | other = "Tinggalkan tanggapan" 60 | 61 | [mainMenu] 62 | other = "Menu Utama" 63 | 64 | [name] 65 | other = "Nama" 66 | 67 | [next] 68 | other = "Selanjutnya" 69 | 70 | [nextPage] 71 | other = "Laman selanjutnya" 72 | 73 | [nextPost] 74 | other = "Pos Selanjutnya" 75 | 76 | [noTerm] 77 | other = "Tidak ada satu pun {{ .Term }}!" 78 | 79 | [ok] 80 | other = "Oke" 81 | 82 | [openAccountInNewTab] 83 | other = "Buka akun {{ .Platform }} di tab baru" 84 | 85 | [page] 86 | other = "Laman" 87 | 88 | [previous] 89 | other = "Sebelumnya" 90 | 91 | [previousPage] 92 | other = "Laman sebelumnya" 93 | 94 | [previousPost] 95 | other = "Pos sebelumnya" 96 | 97 | [postedOn] 98 | other = "Diposkan pada" 99 | 100 | [readingTime] 101 | one = "1 menit membaca" 102 | other = "{{ .Count }} menit membaca" 103 | 104 | [recentPosts] 105 | other = "Pos Terakhir" 106 | 107 | [reply] 108 | other = "Balas" 109 | 110 | [replyToAuthor] 111 | other = "Balas kepada {{ .Author }}" 112 | 113 | [says] 114 | other = "mengatakan" 115 | 116 | [search] 117 | other = "Cari" 118 | 119 | [searchResultEmpty] 120 | other = "Tidak ditemukan" 121 | 122 | [searching] 123 | other = "Mencari" 124 | 125 | [series] 126 | one = "Seri" 127 | other = "Seri" 128 | 129 | [sidebarMenu] 130 | other = "Menu Sisi" 131 | 132 | [skipToContent] 133 | other = "Lompat ke konten" 134 | 135 | [skipToMainMenu] 136 | other = "Lompat ke Menu Utama" 137 | 138 | [socialMenu] 139 | other = "Menu Sosial" 140 | 141 | [submitComment] 142 | other = "Taggapi" 143 | 144 | [tableOfContents] 145 | other = "Daftar Isi" 146 | 147 | [tag] 148 | one = "Label" 149 | other = "Label" 150 | 151 | [toggleSidebar] 152 | other = "Buka/Tutup Bilah Sisi" 153 | 154 | [website] 155 | other = "Situs web" 156 | -------------------------------------------------------------------------------- /i18n/tr.toml: -------------------------------------------------------------------------------- 1 | [author] 2 | one = "Yazar" 3 | other = "Yazarlar" 4 | 5 | [authorsAvatar] 6 | other = "{{ .Author }}'ın avatarı" 7 | 8 | [by] 9 | other = "tarafından" 10 | 11 | [cancel] 12 | other = "İptal et" 13 | 14 | [cancelComment] 15 | other = "Yorumu iptal et" 16 | 17 | [category] 18 | one = "Kategori" 19 | other = "Kategoriler" 20 | 21 | [comment] 22 | other = "Yorum" 23 | 24 | [commentSubmissionErrorMessage] 25 | other = "Hata oluştu. Yorumunuz gönderilemedi. Lütfen tekrar deneyin. Teşekkürler!" 26 | 27 | [commentSubmissionErrorTitle] 28 | other = "Ooops, üzgünüm!" 29 | 30 | [commentSubmissionSuccessMessage] 31 | other = "Yorumunuz gönderildi. Kısa zaman içerisinde bu sayfada görüntülenecek!" 32 | 33 | [commentSubmissionSuccessTitle] 34 | other = "Teşekkürler!" 35 | 36 | [commentsOnEntry] 37 | one = "{{ .Title }} için yalnızca {{ .Count }} yorum yapın" 38 | other = "{{ .Title }} hakkında {{ .Count }} yorum" 39 | 40 | [contactViaEmail] 41 | other = "E-posta yoluyla iletişim" 42 | 43 | [currentPage] 44 | other = "Şu anki sayfa" 45 | 46 | [email] 47 | other = "E-posta" 48 | 49 | [gopher] 50 | other = "Sincap" 51 | 52 | [goHome] 53 | other = "Ana sayfaya gidin..." 54 | 55 | [lastUpdated] 56 | other = "Son güncelleme" 57 | 58 | [leaveAComment] 59 | other = "Yorum yap" 60 | 61 | [mainMenu] 62 | other = "Ana Menü" 63 | 64 | [name] 65 | other = "İsim" 66 | 67 | [next] 68 | other = "Sonraki" 69 | 70 | [nextPage] 71 | other = "Sonraki sayfa" 72 | 73 | [nextPost] 74 | other = "Sonraki gönderi" 75 | 76 | [noTerm] 77 | other = "Tek bir {{ .Term }} değil!" 78 | 79 | [ok] 80 | other = "Tamam" 81 | 82 | [openAccountInNewTab] 83 | other = "{{ .Platform }} hesabını yeni sekmede açın" 84 | 85 | [page] 86 | other = "Sayfa" 87 | 88 | [previous] 89 | other = "Önceki" 90 | 91 | [previousPage] 92 | other = "Önceki sayfa" 93 | 94 | [previousPost] 95 | other = "Önceki gönderi" 96 | 97 | [postedOn] 98 | other = "Gönderilme tarihi" 99 | 100 | [readingTime] 101 | one = "1 dk okuma süresi" 102 | other = "{{ .Count }} dakika okuma süresi" 103 | 104 | [recentPosts] 105 | other = "Yeni Gönderiler" 106 | 107 | [reply] 108 | other = "Yanıtla" 109 | 110 | [replyToAuthor] 111 | other = "{{ .Author }}'a yanıt verin" 112 | 113 | [says] 114 | other = "der" 115 | 116 | [search] 117 | other = "Ara" 118 | 119 | [searchResultEmpty] 120 | other = "Herhangi bir şey bulunamadı!" 121 | 122 | [searching] 123 | other = "Arıyor" 124 | 125 | [series] 126 | one = "Dizi" 127 | other = "Diziler" 128 | 129 | [sidebarMenu] 130 | other = "Yan Menü" 131 | 132 | [skipToContent] 133 | other = "İçeriğe geç" 134 | 135 | [skipToMainMenu] 136 | other = "Ana menüye geç" 137 | 138 | [socialMenu] 139 | other = "Sosyal Menü" 140 | 141 | [submitComment] 142 | other = "Yorumu gönder!" 143 | 144 | [tableOfContents] 145 | other = "İçindekiler" 146 | 147 | [tag] 148 | one = "Etiket" 149 | other = "Etiketler" 150 | 151 | [toggleSidebar] 152 | other = "Kenar çubuğunu kapat" 153 | 154 | [website] 155 | other = "Web site" 156 | -------------------------------------------------------------------------------- /exampleSite/content/docs/mathjax-support.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2018-02-27T18:00:00+06:00 3 | lastmod: 2019-09-28T21:00:00+06:00 4 | title: MathJax Support 5 | authors: ["muniftanjim"] 6 | categories: 7 | - features 8 | tags: 9 | - config 10 | slug: mathjax-support 11 | mathjax: true 12 | --- 13 | 14 | For enabling MathJax, add this to your content's frontmatter: 15 | 16 | ```yaml 17 | --- 18 | mathjax: true 19 | --- 20 | ``` 21 | 22 | ## MathJax Syntax for Markdown 23 | 24 | In your Markdown content, use `\\(`...`\\)` delimiters for in-line mathematics. 25 | 26 | For mathematics blocks you can use either `$$`...`$$` or `\\[`...`\\]` as delimiters. 27 | 28 | **Here's an example Markdown content:** 29 | 30 | ```md 31 | When \\( a \ne 0 \\), there are two solutions to 32 | 33 | $$ ax^2 + bx + c = 0 $$ 34 | 35 | and they are: 36 | 37 | \\[ x = {-b \pm \sqrt{b^2-4ac} \over 2a} \\] 38 | ``` 39 | 40 | **Output:** 41 | 42 | When \\( a \ne 0 \\), there are two solutions to 43 | 44 | $$ ax^2 + bx + c = 0 $$ 45 | 46 | and they are: 47 | 48 | \\[x = {-b \pm \sqrt{b^2-4ac} \over 2a}\\] 49 | 50 | ## Customize MathJax Configuration 51 | 52 | You can customize the default behavior of MathJax if you want. 53 | 54 | Minimo picks up configuration for MathJax from the **`/data/config/mathjax.json`** file. 55 | 56 | The default configuration options look like this: 57 | 58 | ```json 59 | { 60 | "library": { 61 | "path": "//unpkg.com/mathjax@2.7.5/MathJax.js", 62 | "config": "TeX-MML-AM_CHTML" 63 | }, 64 | "config": {} 65 | } 66 | ``` 67 | 68 | - `library` [`Object`]: 69 | - `path` [`String`]: URL for the main **_MathJax.js_** file. 70 | - `config` [`String`]: _Configuration file_'s name/path 71 | - `config` [`Object`]: 72 | - _In-line configuration options_ 73 | 74 | So, if you want to tinker with it's configuration options: 75 | 76 | - Create a `/data/config/mathjax.json` file in your site's repository 77 | - Copy the default configuration options 78 | - Start hacking 79 | 80 | For exmaple, if you want to enable `$`...`$` delimiters for in-line mathematics, you probably want something like this: 81 | 82 | ```json 83 | { 84 | "library": { 85 | "path": "//unpkg.com/mathjax@2.7.5/MathJax.js", 86 | "config": "TeX-MML-AM_CHTML" 87 | }, 88 | "config": { 89 | "tex2jax": { 90 | "inlineMath": [["$", "$"], ["\\(", "\\)"]], 91 | "processEscapes": true 92 | } 93 | } 94 | } 95 | ``` 96 | 97 | ### Notice 98 | 99 | MathJax version above `2.7.5` is not guaranted to work. 100 | 101 | #### Related Guides 102 | 103 | - [Using a configuration file](https://docs.mathjax.org/en/latest/configuration.html#using-a-configuration-file) 104 | - [Combined Configurations](https://docs.mathjax.org/en/latest/config-files.html#combined-configurations) 105 | - [Using in-line configuration options](https://docs.mathjax.org/en/latest/configuration.html#using-in-line-configuration-options) 106 | - [Configuration Options](https://docs.mathjax.org/en/latest/options/index.html) 107 | -------------------------------------------------------------------------------- /i18n/es.toml: -------------------------------------------------------------------------------- 1 | [author] 2 | one = "Autor" 3 | other = "Autores" 4 | 5 | [authorsAvatar] 6 | other = "Avatar del {{ .Author }}" 7 | 8 | [by] 9 | other = "por" 10 | 11 | [cancel] 12 | other = "Cancelar" 13 | 14 | [cancelComment] 15 | other = "Cancelar el comentario" 16 | 17 | [category] 18 | one = "Categoría" 19 | other = "Categorías" 20 | 21 | [comment] 22 | other = "Comentario" 23 | 24 | [commentSubmissionErrorMessage] 25 | other = "Un error se produjo. Su comentario no se pudo enviar. Por favor volver a intentar. ¡Gracias!" 26 | 27 | [commentSubmissionErrorTitle] 28 | other = "¿Ups, perdón!" 29 | 30 | [commentSubmissionSuccessMessage] 31 | other = "Su comentario fue enviado. ¡Pronto aparecerá en esta página!" 32 | 33 | [commentSubmissionSuccessTitle] 34 | other = "¡Gracias!" 35 | 36 | [commentsOnEntry] 37 | one = "{{ .Count }} solo comentario para {{ .Title }}" 38 | other = "{{ .Count }} comentarios para {{ .Title }}" 39 | 40 | [contactViaEmail] 41 | other = "Contacto vía correo" 42 | 43 | [currentPage] 44 | other = "Página actual" 45 | 46 | [email] 47 | other = "Correo electrónico" 48 | 49 | [gopher] 50 | other = "Gopher" 51 | 52 | [goHome] 53 | other = "Ir al inicio..." 54 | 55 | [leaveAComment] 56 | other = "Dejar un comentario" 57 | 58 | [mainMenu] 59 | other = "Menú principal" 60 | 61 | [name] 62 | other = "Nombre" 63 | 64 | [next] 65 | other = "Siguiente" 66 | 67 | [nextPage] 68 | other = "Siguiente página" 69 | 70 | [nextPost] 71 | other = "Siguiente entrada" 72 | 73 | [noTerm] 74 | other = "¡Ni un sólo {{ .Term }}!" 75 | 76 | [ok] 77 | other = "OK" 78 | 79 | [openAccountInNewTab] 80 | other = "Abrir cuenta de {{ .Platform }} en una nueva pestaña" 81 | 82 | [page] 83 | other = "Página" 84 | 85 | [previous] 86 | other = "Anterior" 87 | 88 | [previousPage] 89 | other = "Anterior página" 90 | 91 | [previousPost] 92 | other = "Anterior entrada" 93 | 94 | [postedOn] 95 | other = "Posteado en" 96 | 97 | [readingTime] 98 | one = "Lectura de un minuto" 99 | other = "{{ .Count }} minutos de lectura" 100 | 101 | [recentPosts] 102 | other = "Entradas recientes" 103 | 104 | [reply] 105 | other = "Responder" 106 | 107 | [replyToAuthor] 108 | other = "Responder a {{ .Author }}" 109 | 110 | [says] 111 | other = "dice" 112 | 113 | [search] 114 | other = "Buscar" 115 | 116 | [searchResultEmpty] 117 | other = "¡No se encontraron resultados!" 118 | 119 | [searching] 120 | other = "Buscando" 121 | 122 | [series] 123 | one = "Serie" 124 | other = "Series" 125 | 126 | [sidebarMenu] 127 | other = "Menú lateral" 128 | 129 | [skipToContent] 130 | other = "Saltar al contenido" 131 | 132 | [skipToMainMenu] 133 | other = "Saltar al menú principal" 134 | 135 | [socialMenu] 136 | other = "Menú social" 137 | 138 | [submitComment] 139 | other = "¡Comentar!" 140 | 141 | [tableOfContents] 142 | other = "Índice" 143 | 144 | [tag] 145 | one = "Etiqueta" 146 | other = "Etiquetas" 147 | 148 | [toggleSidebar] 149 | other = "Alternar barra lateral" 150 | 151 | [website] 152 | other = "Sitio web" 153 | -------------------------------------------------------------------------------- /i18n/fr.toml: -------------------------------------------------------------------------------- 1 | [author] 2 | one = "Auteur" 3 | other = "Auteurs" 4 | 5 | [authorsAvatar] 6 | other = "Avatar de {{ .Author }}" 7 | 8 | [by] 9 | other = "par" 10 | 11 | [cancel] 12 | other = "Annuler" 13 | 14 | [cancelComment] 15 | other = "Annuler le commentaire" 16 | 17 | [category] 18 | one = "Catégorie" 19 | other = "Catégories" 20 | 21 | [comment] 22 | other = "Commentaire" 23 | 24 | [commentSubmissionErrorMessage] 25 | other = "Une erreur s'est produite. Le commentaire n'a pas pu être envoyé. Veuillez réessayer. Merci !" 26 | 27 | [commentSubmissionErrorTitle] 28 | other = "Houlà, désolé !" 29 | 30 | [commentSubmissionSuccessMessage] 31 | other = "Votre commentaire a été envoyé. Il s'affichera bientôt sur cette page !" 32 | 33 | [commentSubmissionSuccessTitle] 34 | other = "Merci !" 35 | 36 | [commentsOnEntry] 37 | one = "Seulement {{ .Count }} commentaire sur {{ .Title }}" 38 | other = "{{ .Count }} commentaires sur {{ .Title }}" 39 | 40 | [contactViaEmail] 41 | other = "Contacter par mail" 42 | 43 | [currentPage] 44 | other = "Page actuelle" 45 | 46 | [email] 47 | other = "Mail" 48 | 49 | [gopher] 50 | other = "Gopher" 51 | 52 | [goHome] 53 | other = "Retourner à l'accueil..." 54 | 55 | [leaveAComment] 56 | other = "Laisser un commentaire" 57 | 58 | [mainMenu] 59 | other = "Menu principal" 60 | 61 | [name] 62 | other = "Nom" 63 | 64 | [next] 65 | other = "Suivant" 66 | 67 | [nextPage] 68 | other = "Page suivante" 69 | 70 | [nextPost] 71 | other = "Billet suivant" 72 | 73 | [noTerm] 74 | other = "Aucun(e) {{ .Term }}!" 75 | 76 | [ok] 77 | other = "OK" 78 | 79 | [openAccountInNewTab] 80 | other = "Ouvrir {{ .Platform }} dans un nouvel onglet" 81 | 82 | [page] 83 | other = "Page" 84 | 85 | [previous] 86 | other = "Précédent" 87 | 88 | [previousPage] 89 | other = "Page précédente" 90 | 91 | [previousPost] 92 | other = "Billet précédent" 93 | 94 | [postedOn] 95 | other = "Publié le" 96 | 97 | [readingTime] 98 | one = "Une minute de lecture" 99 | other = "{{ .Count }} minutes de lecture" 100 | 101 | [recentPosts] 102 | other = "Billets récents" 103 | 104 | [reply] 105 | other = "Répondre" 106 | 107 | [replyToAuthor] 108 | other = "Répondre à {{ .Author }}" 109 | 110 | [says] 111 | other = "a dit" 112 | 113 | [search] 114 | other = "Recherche" 115 | 116 | [searchResultEmpty] 117 | other = "Aucun résultat !" 118 | 119 | [searching] 120 | other = "Recherche en cours" 121 | 122 | [series] 123 | one = "Série" 124 | other = "Séries" 125 | 126 | [sidebarMenu] 127 | other = "Menu de la barre latérale" 128 | 129 | [skipToContent] 130 | other = "Aller au contenu" 131 | 132 | [skipToMainMenu] 133 | other = "Aller au menu principal" 134 | 135 | [socialMenu] 136 | other = "Social Menu" 137 | 138 | [submitComment] 139 | other = "Commenter !" 140 | 141 | [tableOfContents] 142 | other = "Table des matières" 143 | 144 | [tag] 145 | one = "Étiquette" 146 | other = "Étiquettes" 147 | 148 | [toggleSidebar] 149 | other = "Déplier la barre latérale" 150 | 151 | [website] 152 | other = "Site web" 153 | -------------------------------------------------------------------------------- /i18n/pt-BR.toml: -------------------------------------------------------------------------------- 1 | [author] 2 | one = "Autor" 3 | other = "Autores" 4 | 5 | [authorsAvatar] 6 | other = "Avatar de {{ .Author }}" 7 | 8 | [by] 9 | other = "por" 10 | 11 | [cancel] 12 | other = "Cancelar" 13 | 14 | [cancelComment] 15 | other = "Cancelar comentário" 16 | 17 | [category] 18 | one = "Categoria" 19 | other = "Categorias" 20 | 21 | [comment] 22 | other = "Comentar" 23 | 24 | [commentSubmissionErrorMessage] 25 | other = "Ocorreu um erro. Seu comentário não pôde ser enviado. Por favor, tente novamente. Obrigado!" 26 | 27 | [commentSubmissionErrorTitle] 28 | other = "Eita, desculpa!" 29 | 30 | [commentSubmissionSuccessMessage] 31 | other = "Seu comentário foi enviado. Aparecerá em breve nesta página!" 32 | 33 | [commentSubmissionSuccessTitle] 34 | other = "Obrigado!" 35 | 36 | [commentsOnEntry] 37 | one = "Apenas {{ .Count }} comentário em {{ .Title }}" 38 | other = "{{ .Count }} comentários em {{ .Title }}" 39 | 40 | [contactViaEmail] 41 | other = "Entre em contato por email" 42 | 43 | [currentPage] 44 | other = "Página atual" 45 | 46 | [email] 47 | other = "Email" 48 | 49 | [gopher] 50 | other = "Gopher" 51 | 52 | [goHome] 53 | other = "Ir para o início..." 54 | 55 | [lastUpdated] 56 | other = "Ultima atualização" 57 | 58 | [leaveAComment] 59 | other = "Deixe um comentário" 60 | 61 | [mainMenu] 62 | other = "Menu principal" 63 | 64 | [name] 65 | other = "Nome" 66 | 67 | [next] 68 | other = "Próximo" 69 | 70 | [nextPage] 71 | other = "Próxima página" 72 | 73 | [nextPost] 74 | other = "Próxima publicação" 75 | 76 | [noTerm] 77 | other = "{{ .Term }} não foi encontrado!" 78 | 79 | [ok] 80 | other = "OK" 81 | 82 | [openAccountInNewTab] 83 | other = "Abra {{ .Platform }} em uma nova aba" 84 | 85 | [page] 86 | other = "Página" 87 | 88 | [previous] 89 | other = "Anterior" 90 | 91 | [previousPage] 92 | other = "Página anterior" 93 | 94 | [previousPost] 95 | other = "Publicação anterior" 96 | 97 | [postedOn] 98 | other = "Publicado em" 99 | 100 | [readingTime] 101 | one = "Um minuto de leitura" 102 | other = "{{ .Count }} minutos de leitura" 103 | 104 | [recentPosts] 105 | other = "Publicações recentes" 106 | 107 | [reply] 108 | other = "Responder" 109 | 110 | [replyToAuthor] 111 | other = "Responder a {{ .Author }}" 112 | 113 | [says] 114 | other = "diz" 115 | 116 | [search] 117 | other = "Buscar" 118 | 119 | [searchResultEmpty] 120 | other = "Nada encontrado!" 121 | 122 | [searching] 123 | other = "Buscando" 124 | 125 | [series] 126 | one = "Série" 127 | other = "Séries" 128 | 129 | [sidebarMenu] 130 | other = "Sidebar Menu" 131 | 132 | [skipToContent] 133 | other = "Pular para Índice" 134 | 135 | [skipToMainMenu] 136 | other = "Pular para Menu Principal" 137 | 138 | [socialMenu] 139 | other = "Menu Social" 140 | 141 | [submitComment] 142 | other = "Comente!" 143 | 144 | [tableOfContents] 145 | other = "Índice" 146 | 147 | [tag] 148 | one = "Tag" 149 | other = "Tags" 150 | 151 | [toggleSidebar] 152 | other = "Habilitar barra lateral" 153 | 154 | [website] 155 | other = "Website" 156 | --------------------------------------------------------------------------------