├── .github └── workflows │ ├── gh-pages.yml │ └── release.yml ├── .gitignore ├── LICENSE ├── README.md ├── archetypes └── default.md ├── assets ├── js │ ├── builtin-copy.js │ ├── emgithub.js │ ├── header.js │ ├── math.js │ ├── prism-autoloader.js │ ├── prism.js │ ├── search.js │ └── zooming.js ├── lib │ ├── css │ │ └── prism.css │ ├── icns │ │ ├── feather-sprite-v4.29.0.svg │ │ └── simple-icons-sprite-v11.15.0.svg │ └── js │ │ ├── prism-copy-to-clipboard-v1.29.0.min.js │ │ ├── prism-line-numbers-v1.29.0.min.js │ │ ├── prism-v1.29.0.min.js │ │ ├── uFuzzy-v1.0.14.esm.js │ │ └── zooming-v2.1.1.min.js └── scss │ ├── base.scss │ ├── color.scss │ ├── components │ ├── breadcrumbs.scss │ ├── collapsible-menu.scss │ ├── color-block.scss │ ├── emgithub.scss │ ├── footer.scss │ ├── header.scss │ ├── icon-group.scss │ ├── icon.scss │ ├── menus.scss │ ├── nav.scss │ ├── pagination.scss │ ├── search-menu.scss │ ├── sidebar.scss │ └── terms-cloud.scss │ ├── core.scss │ ├── layout │ ├── article.scss │ ├── balloon.scss │ ├── bookcase.scss │ ├── gallery.scss │ ├── list.scss │ ├── postcard.scss │ └── term.scss │ ├── mixins │ ├── items.scss │ ├── margin.scss │ ├── padding.scss │ └── text.scss │ ├── purecss │ └── _base.scss │ └── vars.scss ├── exampleSite ├── .gitignore ├── config │ └── _default │ │ ├── config.toml │ │ ├── languages.toml │ │ ├── markup.toml │ │ ├── menus │ │ ├── menus.en.toml │ │ └── menus.zh-tw.toml │ │ └── params.toml ├── content │ ├── en │ │ ├── _index.md │ │ ├── about │ │ │ ├── acknowledgement.md │ │ │ ├── features.md │ │ │ ├── index.md │ │ │ ├── support.md │ │ │ └── timeline.md │ │ ├── changelog.md │ │ ├── configuration │ │ │ ├── _index.md │ │ │ ├── page.md │ │ │ ├── site.md │ │ │ └── theme.md │ │ ├── layouts │ │ │ ├── _index.md │ │ │ ├── balloon │ │ │ │ ├── _index.md │ │ │ │ ├── demo │ │ │ │ │ ├── _index.md │ │ │ │ │ └── single.md │ │ │ │ └── docs.md │ │ │ ├── blank │ │ │ │ ├── _index.md │ │ │ │ ├── demo │ │ │ │ │ ├── _index.md │ │ │ │ │ ├── post1.md │ │ │ │ │ ├── post2.md │ │ │ │ │ └── post3.md │ │ │ │ └── docs.md │ │ │ ├── bookcase │ │ │ │ ├── _index.md │ │ │ │ ├── demo │ │ │ │ │ ├── _index.md │ │ │ │ │ ├── balloon │ │ │ │ │ │ └── _index.md │ │ │ │ │ ├── list │ │ │ │ │ │ ├── _index.md │ │ │ │ │ │ ├── post1.md │ │ │ │ │ │ ├── post2.md │ │ │ │ │ │ └── post3.md │ │ │ │ │ └── regular-page.md │ │ │ │ └── docs.md │ │ │ ├── gallery │ │ │ │ ├── _index.md │ │ │ │ ├── demo │ │ │ │ │ └── _index.md │ │ │ │ └── docs.md │ │ │ ├── list │ │ │ │ ├── _index.md │ │ │ │ ├── demo │ │ │ │ │ ├── _index.md │ │ │ │ │ ├── post1.md │ │ │ │ │ ├── post2.md │ │ │ │ │ └── post3.md │ │ │ │ └── docs.md │ │ │ └── postcard │ │ │ │ ├── _index.md │ │ │ │ ├── demo │ │ │ │ ├── _index.md │ │ │ │ ├── post1.md │ │ │ │ ├── post2.md │ │ │ │ ├── post3.md │ │ │ │ ├── post4.md │ │ │ │ ├── post5.md │ │ │ │ └── post6.md │ │ │ │ └── docs.md │ │ ├── posts │ │ │ ├── _index.md │ │ │ ├── emoji-support.md │ │ │ ├── markdown-syntax.md │ │ │ ├── math-typesetting.md │ │ │ ├── placeholder-text.md │ │ │ └── rich-content.md │ │ ├── setup.md │ │ └── shortcodes │ │ │ ├── _index.md │ │ │ ├── bookcase.md │ │ │ ├── breadcrumbs.md │ │ │ ├── codepen.md │ │ │ ├── color-block.md │ │ │ ├── emgithub.md │ │ │ ├── icon-group.md │ │ │ ├── icon.md │ │ │ ├── jsfiddle.md │ │ │ ├── recent-posts.md │ │ │ └── terms-cloud.md │ └── zh-tw │ │ ├── _index.md │ │ └── posts │ │ ├── emoji-support.md │ │ ├── markdown-syntax.md │ │ ├── math-typesetting.md │ │ ├── placeholder-text.md │ │ └── rich-content.md ├── resources │ └── _gen │ │ └── assets │ │ └── scss │ │ ├── core.scss_fb96db281e67f7a46a7605a5c94807cc.content │ │ └── core.scss_fb96db281e67f7a46a7605a5c94807cc.json └── static │ ├── clock.jpg │ ├── cover │ ├── balloon.png │ ├── balloon_dark.png │ ├── bookcase.png │ ├── bookcase_dark.png │ ├── catalogue.png │ ├── catalogue_dark.png │ ├── coding.png │ ├── coding_dark.png │ ├── desktop.png │ ├── desktop_dark.png │ ├── list.png │ ├── list_dark.png │ ├── picture.png │ ├── picture_dark.png │ ├── vase.png │ └── vase_dark.png │ ├── favicon.ico │ ├── icons │ ├── balloon.svg │ ├── balloon_dark.svg │ ├── bookcase.svg │ ├── bookcase_dark.svg │ ├── catalogue.svg │ ├── catalogue_dark.svg │ ├── coding.svg │ ├── coding_dark.svg │ ├── desktop.svg │ ├── desktop_dark.svg │ ├── list.svg │ ├── list_dark.svg │ ├── picture.svg │ ├── picture_dark.svg │ ├── vase.svg │ └── vase_dark.svg │ ├── pottery.jpg │ ├── thanks.jpg │ └── user.css ├── i18n ├── en.toml ├── fr-fr.toml ├── ru.toml └── zh-tw.toml ├── images ├── screenshot.png └── tn.png ├── layouts ├── 404.html ├── _default │ ├── _markup │ │ └── render-heading.html │ ├── baseof.html │ ├── index.json │ ├── list.html │ ├── rss.xml │ ├── single.html │ ├── taxonomy.html │ └── term.html ├── balloon │ ├── list.html │ └── single.html ├── blank │ └── list.html ├── bookcase │ └── list.html ├── gallery │ ├── list.html │ └── single.html ├── home.html ├── partials │ ├── balloon │ │ ├── card-item.html │ │ ├── dot.html │ │ ├── head-item.html │ │ ├── head │ │ │ ├── desktop.html │ │ │ └── mobile.html │ │ ├── layout.html │ │ ├── line.html │ │ └── title-item.html │ ├── bookcase │ │ ├── item.html │ │ └── layout.html │ ├── collapsible-menu.html │ ├── content.html │ ├── disqus.html │ ├── footer.html │ ├── gallery │ │ └── layout.html │ ├── head.html │ ├── header.html │ ├── list.html │ ├── nav.html │ ├── navbar │ │ ├── nested-desktop.html │ │ └── nested-mobile.html │ ├── postcard │ │ └── layout.html │ ├── resources │ │ ├── css.html │ │ └── js.html │ ├── search-menu.html │ ├── svg │ │ ├── feather.html │ │ └── simple.html │ └── terms-cloud.html ├── postcard │ └── list.html └── shortcodes │ ├── bookcase.html │ ├── breadcrumbs.html │ ├── codepen.html │ ├── color-block.html │ ├── emgithub.html │ ├── icon-group.html │ ├── icon.html │ ├── jsfiddle.html │ ├── recent-posts.html │ └── terms-cloud.html └── theme.toml /.github/workflows/gh-pages.yml: -------------------------------------------------------------------------------- 1 | name: github pages 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | jobs: 9 | deploy: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v4 13 | with: 14 | ref: main 15 | token: ${{ secrets.GITHUB_TOKEN }} 16 | fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod 17 | 18 | - name: Setup Hugo 19 | uses: peaceiris/actions-hugo@v2 20 | with: 21 | hugo-version: '0.128.0' 22 | extended: true 23 | 24 | - name: Setup public 25 | run: git worktree add -B gh-pages ./exampleSite/public origin/gh-pages 26 | 27 | - name: Clean public 28 | run: rm -rf ./exampleSite/public/* 29 | 30 | - name: Build 31 | run: hugo -s exampleSite --baseURL https://kaiiiz.github.io/hugo-theme-monochrome --themesDir=../.. --minify --environment production 32 | 33 | - name: Deploy 34 | uses: peaceiris/actions-gh-pages@v4 35 | with: 36 | github_token: ${{ secrets.GITHUB_TOKEN }} 37 | publish_dir: ./exampleSite/public 38 | publish_branch: gh-pages 39 | 40 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: github pages 2 | 3 | on: 4 | push: 5 | tags: 6 | - "v*.*.*" 7 | 8 | jobs: 9 | deploy: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v3 13 | with: 14 | ref: dev 15 | token: ${{ secrets.GITHUB_TOKEN }} 16 | fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod 17 | 18 | - name: Create Release 19 | uses: ncipollo/release-action@v1 20 | with: 21 | draft: true 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.toptal.com/developers/gitignore/api/node 3 | # Edit at https://www.toptal.com/developers/gitignore?templates=node 4 | 5 | ### Node ### 6 | # Logs 7 | logs 8 | *.log 9 | npm-debug.log* 10 | yarn-debug.log* 11 | yarn-error.log* 12 | lerna-debug.log* 13 | 14 | # Diagnostic reports (https://nodejs.org/api/report.html) 15 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 16 | 17 | # Runtime data 18 | pids 19 | *.pid 20 | *.seed 21 | *.pid.lock 22 | 23 | # Directory for instrumented libs generated by jscoverage/JSCover 24 | lib-cov 25 | 26 | # Coverage directory used by tools like istanbul 27 | coverage 28 | *.lcov 29 | 30 | # nyc test coverage 31 | .nyc_output 32 | 33 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 34 | .grunt 35 | 36 | # Bower dependency directory (https://bower.io/) 37 | bower_components 38 | 39 | # node-waf configuration 40 | .lock-wscript 41 | 42 | # Compiled binary addons (https://nodejs.org/api/addons.html) 43 | build/Release 44 | 45 | # Dependency directories 46 | node_modules/ 47 | jspm_packages/ 48 | 49 | # TypeScript v1 declaration files 50 | typings/ 51 | 52 | # TypeScript cache 53 | *.tsbuildinfo 54 | 55 | # Optional npm cache directory 56 | .npm 57 | 58 | # Optional eslint cache 59 | .eslintcache 60 | 61 | # Optional stylelint cache 62 | .stylelintcache 63 | 64 | # Microbundle cache 65 | .rpt2_cache/ 66 | .rts2_cache_cjs/ 67 | .rts2_cache_es/ 68 | .rts2_cache_umd/ 69 | 70 | # Optional REPL history 71 | .node_repl_history 72 | 73 | # Output of 'npm pack' 74 | *.tgz 75 | 76 | # Yarn Integrity file 77 | .yarn-integrity 78 | 79 | # dotenv environment variables file 80 | .env 81 | .env.test 82 | .env*.local 83 | 84 | # parcel-bundler cache (https://parceljs.org/) 85 | .cache 86 | .parcel-cache 87 | 88 | # Next.js build output 89 | .next 90 | 91 | # Nuxt.js build / generate output 92 | .nuxt 93 | dist 94 | 95 | # Gatsby files 96 | .cache/ 97 | # Comment in the public line in if your project uses Gatsby and not Next.js 98 | # https://nextjs.org/blog/next-9-1#public-directory-support 99 | # public 100 | 101 | # vuepress build output 102 | .vuepress/dist 103 | 104 | # Serverless directories 105 | .serverless/ 106 | 107 | # FuseBox cache 108 | .fusebox/ 109 | 110 | # DynamoDB Local files 111 | .dynamodb/ 112 | 113 | # TernJS port file 114 | .tern-port 115 | 116 | # Stores VSCode versions used for testing VSCode extensions 117 | .vscode-test 118 | 119 | # End of https://www.toptal.com/developers/gitignore/api/node 120 | 121 | 122 | # Created by https://www.toptal.com/developers/gitignore/api/macos 123 | # Edit at https://www.toptal.com/developers/gitignore?templates=macos 124 | 125 | ### macOS ### 126 | # General 127 | .DS_Store 128 | .AppleDouble 129 | .LSOverride 130 | 131 | # Icon must end with two \r 132 | Icon 133 | 134 | 135 | # Thumbnails 136 | ._* 137 | 138 | # Files that might appear in the root of a volume 139 | .DocumentRevisions-V100 140 | .fseventsd 141 | .Spotlight-V100 142 | .TemporaryItems 143 | .Trashes 144 | .VolumeIcon.icns 145 | .com.apple.timemachine.donotpresent 146 | 147 | # Directories potentially created on remote AFP share 148 | .AppleDB 149 | .AppleDesktop 150 | Network Trash Folder 151 | Temporary Items 152 | .apdisk 153 | 154 | # End of https://www.toptal.com/developers/gitignore/api/macos 155 | 156 | # Ignore files generated from Hugo build 157 | /assets/jsconfig.json 158 | .hugo_build.lock 159 | 160 | .vscode 161 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2021 kaiiiz 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | 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, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
12 | A fast, clean and responsive hugo theme 13 |
14 | 15 | ## Demo & Documents 16 | 17 | See [kaiiiz.github.io/hugo-theme-monochrome](https://kaiiiz.github.io/hugo-theme-monochrome) 18 | 19 | ## Features 20 | 21 | 1. **Clean UI with small resources.** Monochrome has clean UI design with ~5KB gzipped bundled CSS. 22 | 23 | 2. **Self-Contained.** Monochrome doesn't require webpack, nodejs and other dependencies to setup or edit, just hugo. 24 | 25 | 3. **Responsive layout.** Adapt to different viewpoint, from desktop to mobile. 26 | 27 | 4. **Support light/dark mode.** Low-light UI. 28 | 29 | 5. **Multiple layouts built-in.** Monochrome now supports 6 different layouts. See [Demo](https://kaiiiz.github.io/hugo-theme-monochrome/layouts/). 30 | 31 | 6. **Nested navbar and Multilingual mode.** Make good use of hugo's well-designed structure. 32 | 33 | 7. **Syntax Highlighting (with copy feature).** Integrate both server-side solution (Chroma, hugo built-in) and client-side solution (Prism.js, for someone who need more languages supported). 34 | 35 | 8. **Site Search with real-time matches highlight.** Powered by uFuzzy. 36 | 37 | 9. **SEO-friendly.** Easily change your author, description, keywords, open graph, twitter card meatdata. 38 | 39 | 10. **Support mathematical notation.** Powered by MathJax. 40 | 41 | 11. **Useful shortcodes.** See [Document](https://kaiiiz.github.io/hugo-theme-monochrome/shortcodes/). 42 | 43 | ## Installation 44 | 45 | See [Setup](https://kaiiiz.github.io/hugo-theme-monochrome/setup) 46 | 47 | ## Configuration 48 | 49 | See [Configuration](https://kaiiiz.github.io/hugo-theme-monochrome/configuration/) 50 | 51 | ## Acknowledgement 52 | 53 | * [PrismJS/prism](https://github.com/PrismJS/prism) MIT 54 | * [leeoniya/uFuzzy](https://github.com/leeoniya/uFuzzy) MIT 55 | * [mathjax/MathJax](https://github.com/mathjax/MathJax) Apache-2.0 56 | * [kingdido999/zooming](https://github.com/kingdido999/zooming) MIT 57 | * [feathericons/feather](https://github.com/feathericons/feather) MIT 58 | * [simple-icons/simple-icons](https://github.com/simple-icons/simple-icons) CC0-1.0 59 | 60 | ## Support 61 | 62 | If you find my work brings value to your life and would like to support its development, you can sponsor me in the following ways. 63 | 64 |🙈 :see_no_evil:
🙉 :hear_no_evil:
🙊 :speak_no_evil:
🙈 :see_no_evil:
🙉 :hear_no_evil:
🙊 :speak_no_evil:
]*>\s*)(]*>\s* |