├── .github ├── ISSUE_TEMPLATE │ ├── bug-report.md │ ├── config.yml │ └── feature-request.md └── workflows │ └── sync-2-gitee.yml ├── .gitignore ├── LICENSE ├── README.md ├── README.zh.md ├── VERSION ├── archetypes └── default.md ├── assets ├── css │ ├── _colors.scss │ ├── _common │ │ ├── components │ │ │ ├── 3rd │ │ │ │ ├── disqusjs.scss │ │ │ │ ├── gitalk.scss │ │ │ │ ├── gitter.scss │ │ │ │ ├── index.scss │ │ │ │ ├── livere.scss │ │ │ │ ├── related-posts.scss │ │ │ │ ├── search.scss │ │ │ │ ├── utterances.scss │ │ │ │ └── waline.scss │ │ │ ├── index.scss │ │ │ ├── pages │ │ │ │ ├── breadcrumb.scss │ │ │ │ ├── categories.scss │ │ │ │ ├── flinks.scss │ │ │ │ ├── index.scss │ │ │ │ ├── schedule.scss │ │ │ │ └── tag-cloud.scss │ │ │ ├── post │ │ │ │ ├── index.scss │ │ │ │ ├── post-alert.scss │ │ │ │ ├── post-body.scss │ │ │ │ ├── post-collapse.scss │ │ │ │ ├── post-followme.scss │ │ │ │ ├── post-footer.scss │ │ │ │ ├── post-gallery.scss │ │ │ │ ├── post-header.scss │ │ │ │ ├── post-nav.scss │ │ │ │ ├── post-reward.scss │ │ │ │ └── post-widgets.scss │ │ │ ├── reading-progress.scss │ │ │ └── tool-buttons.scss │ │ ├── outline │ │ │ ├── footer │ │ │ │ └── index.scss │ │ │ ├── header │ │ │ │ ├── bookmark.scss │ │ │ │ ├── github-banner.scss │ │ │ │ ├── index.scss │ │ │ │ ├── menu.scss │ │ │ │ ├── site-meta.scss │ │ │ │ └── site-nav.scss │ │ │ ├── index.scss │ │ │ ├── mobile.scss │ │ │ └── sidebar │ │ │ │ ├── index.scss │ │ │ │ ├── sidebar-author-links.scss │ │ │ │ ├── sidebar-author.scss │ │ │ │ ├── sidebar-blogroll.scss │ │ │ │ ├── sidebar-button.scss │ │ │ │ ├── sidebar-card-widget.scss │ │ │ │ ├── sidebar-dimmer.scss │ │ │ │ ├── sidebar-nav.scss │ │ │ │ ├── sidebar-toc.scss │ │ │ │ ├── sidebar-toggle.scss │ │ │ │ └── site-state.scss │ │ └── scaffolding │ │ │ ├── animation │ │ │ ├── hover.scss │ │ │ ├── icon.scss │ │ │ ├── index.scss │ │ │ └── show.scss │ │ │ ├── base.scss │ │ │ ├── buttons.scss │ │ │ ├── comments.scss │ │ │ ├── fontawesome │ │ │ ├── animation.scss │ │ │ └── index.scss │ │ │ ├── highlight │ │ │ ├── copy-code.scss │ │ │ ├── index.scss │ │ │ └── monokai.scss │ │ │ ├── index.scss │ │ │ ├── normalize.scss │ │ │ ├── pagination.scss │ │ │ ├── tables.scss │ │ │ ├── tags │ │ │ ├── bilibili.scss │ │ │ ├── blockquote-center.scss │ │ │ ├── group-pictures.scss │ │ │ ├── index.scss │ │ │ ├── label.scss │ │ │ ├── link-grid.scss │ │ │ ├── note.scss │ │ │ ├── pdf.scss │ │ │ └── tabs.scss │ │ │ └── toggles.scss │ ├── _mixins.scss │ ├── _schemes │ │ ├── Gemini │ │ │ └── index.scss │ │ ├── Mist │ │ │ ├── _header.scss │ │ │ ├── _layout.scss │ │ │ ├── _menu.scss │ │ │ ├── _posts-expand.scss │ │ │ └── index.scss │ │ ├── Muse │ │ │ ├── _header.scss │ │ │ ├── _layout.scss │ │ │ ├── _menu.scss │ │ │ ├── _sidebar.scss │ │ │ ├── _sub-menu.scss │ │ │ └── index.scss │ │ └── Pisces │ │ │ ├── _header.scss │ │ │ ├── _layout.scss │ │ │ ├── _menu.scss │ │ │ ├── _sidebar.scss │ │ │ ├── _sub-menu.scss │ │ │ └── index.scss │ ├── _variables │ │ ├── Gemini.scss │ │ ├── Mist.scss │ │ ├── Muse.scss │ │ ├── Pisces.scss │ │ └── base.scss │ ├── main.scss │ └── noscript.scss └── js │ ├── 3rd │ ├── comments │ │ ├── artalk.js │ │ ├── giscus.js │ │ ├── livere.js │ │ ├── twikoo.js │ │ ├── utterances.js │ │ ├── waline.js │ │ └── waline3.js │ ├── others │ │ ├── clipboard.js │ │ ├── counter.js │ │ ├── lawidget.js │ │ ├── math.js │ │ └── mermaid.js │ ├── search │ │ ├── algolia.js │ │ └── local.js │ └── share │ │ ├── addtoany.js │ │ └── sharethis.js │ ├── bookmark.js │ ├── comments-buttons.js │ ├── comments.js │ ├── config.js │ ├── motion.js │ ├── next-boot.js │ ├── pjax.js │ ├── schedule.js │ ├── schemes │ └── muse.js │ └── utils.js ├── data ├── config.yaml └── resources.yaml ├── exampleSite ├── content │ ├── about │ │ ├── index.en-us.md │ │ └── index.md │ ├── archives │ │ ├── _index.en-us.md │ │ └── _index.md │ ├── flinks │ │ ├── index.en-us.md │ │ └── index.md │ └── post │ │ ├── 01-hello-world │ │ ├── index.en-us.md │ │ └── index.md │ │ ├── 02-external-link │ │ ├── index.en-us.md │ │ └── index.md │ │ ├── 03-markdown-syntax │ │ ├── index.en-us.md │ │ └── index.md │ │ ├── 04-emoji-support │ │ ├── index.en-us.md │ │ └── index.md │ │ ├── 05-table-of-content │ │ ├── index.en-us.md │ │ └── index.md │ │ ├── 06-image-viewer │ │ ├── index.en-us.md │ │ ├── index.md │ │ └── photos │ │ │ ├── preview_cute-scottish-fold-cat.jpg │ │ │ ├── preview_horses.jpg │ │ │ ├── preview_luxury-resort-in-maldives.jpg │ │ │ ├── preview_norway-autumn-landscape.jpg │ │ │ ├── preview_owl-family-background.jpg │ │ │ ├── preview_scottish-fold-kitten.jpg │ │ │ ├── preview_sea-shell.jpg │ │ │ └── preview_the-arch-sunset.jpg │ │ ├── 07-custom-files │ │ ├── index.en-us.md │ │ └── index.md │ │ ├── 08-no-header-title │ │ ├── index.en-us.md │ │ └── index.md │ │ ├── 09-syntax-highlighting │ │ ├── index.en-us.md │ │ └── index.md │ │ ├── 10-math-formula │ │ ├── index.en-us.md │ │ └── index.md │ │ ├── 11-mermaid-charts │ │ ├── index.en-us.md │ │ └── index.md │ │ ├── 12-shortcodes │ │ ├── index.en-us.md │ │ └── index.md │ │ └── 13-hugo-blockquote │ │ ├── index.en-us.md │ │ └── index.md ├── data │ └── flinks │ │ ├── en-us.yaml │ │ └── zh-cn.yaml ├── hugo.yaml ├── layouts │ └── partials │ │ ├── custom_footer.html │ │ └── custom_sidebar.html ├── startup.sh └── static │ ├── css │ └── custom_style.css │ ├── imgs │ ├── ali-pay.png │ └── wechat-pay.png │ └── music │ ├── gongqijun.jpg │ └── sky.mp3 ├── go.mod ├── hugo-theme-next.go ├── i18n ├── de.yaml ├── en-us.yaml ├── fr-fr.yaml ├── zh-cn.yaml └── zh-tw.yaml ├── images ├── hugo-next-primary.png ├── hugo-next-secondary.png ├── hugo-next-symbol.png ├── screenshot.png ├── tn.png └── use-hugo-next-starter.png ├── layouts ├── 404.html ├── _markup │ ├── render-blockquote.html │ ├── render-codeblock-mermaid.html │ ├── render-codeblock.html │ ├── render-heading.html │ ├── render-image.html │ └── render-link.html ├── _partials │ ├── _funs │ │ ├── add_unix_param.html │ │ ├── cal_siteinfo.html │ │ ├── get_cdn_res.html │ │ └── get_plugin.html │ ├── _thirdparty │ │ ├── analytics │ │ │ ├── 51la.html │ │ │ ├── baidu.html │ │ │ ├── busuanzi.html │ │ │ ├── cloudflare.html │ │ │ └── google.html │ │ ├── chat │ │ │ └── gitter.html │ │ ├── comment │ │ │ ├── artalk.html │ │ │ ├── comm_loading.html │ │ │ ├── giscus.html │ │ │ ├── livere.html │ │ │ ├── twikoo.html │ │ │ ├── utterances.html │ │ │ ├── waline.html │ │ │ └── waline3.html │ │ ├── search │ │ │ ├── algolia.html │ │ │ └── local.html │ │ └── share │ │ │ ├── addtoany.html │ │ │ └── sharethis.html │ ├── comments.html │ ├── footer.html │ ├── head.html │ ├── head │ │ ├── config.html │ │ ├── facebook.html │ │ ├── favicon.html │ │ ├── googleplus.html │ │ ├── meta.html │ │ ├── open_graph.html │ │ ├── opengraph.html │ │ ├── script │ │ │ ├── analytics.html │ │ │ ├── global.html │ │ │ └── plugins.html │ │ ├── styles.html │ │ ├── twitter.html │ │ └── verify.html │ ├── header.html │ ├── header │ │ ├── brand.html │ │ ├── menus.html │ │ └── search.html │ ├── init.html │ ├── langs.html │ ├── list.html │ ├── pagination.html │ ├── post.html │ ├── post │ │ ├── body.html │ │ ├── footer.html │ │ ├── footer_meta │ │ │ ├── copyright.html │ │ │ ├── followme.html │ │ │ ├── reward.html │ │ │ └── tags.html │ │ ├── header.html │ │ └── header_meta │ │ │ ├── categories.html │ │ │ ├── comments.html │ │ │ ├── created_date.html │ │ │ ├── readtime.html │ │ │ ├── update_date.html │ │ │ ├── views.html │ │ │ └── words.html │ ├── scripts.html │ ├── sidebar.html │ ├── sidebar │ │ ├── overview.html │ │ └── siteinfo.html │ └── widgets.html ├── _shortcodes │ ├── bilibili.html │ ├── mermaid.html │ ├── music.html │ ├── note.html │ └── quote.html ├── archives │ ├── list.html │ └── section.html ├── baseof.html ├── flinks │ └── single.html ├── home.html ├── list.algoliaindexes.json ├── list.html ├── list.localindexes.xml ├── section.html ├── single.html ├── taxonomy.html └── terms.html ├── static ├── css │ └── noscript.css ├── imgs │ ├── algolia-logo.svg │ ├── cc │ │ ├── big │ │ │ ├── by.svg │ │ │ ├── by_nc.svg │ │ │ ├── by_nc_nd.svg │ │ │ ├── by_nc_sa.svg │ │ │ ├── by_nd.svg │ │ │ ├── by_sa.svg │ │ │ └── cc_zero.svg │ │ ├── cc.svg │ │ └── small │ │ │ ├── by.svg │ │ │ ├── by_nc.svg │ │ │ ├── by_nc_nd.svg │ │ │ ├── by_nc_sa.svg │ │ │ ├── by_nd.svg │ │ │ ├── by_sa.svg │ │ │ └── cc_zero.svg │ ├── flags │ │ ├── en-us.svg │ │ ├── fr-fr.svg │ │ └── zh-cn.svg │ ├── gongan.png │ ├── hugo_next_avatar.png │ ├── hugo_next_logo.png │ ├── icons │ │ ├── apple_touch_icon_next.png │ │ ├── favicon.ico │ │ ├── favicon_16x16_next.png │ │ └── favicon_32_32_next.png │ ├── img-lazy-loading.gif │ ├── notbyai │ │ ├── en │ │ │ ├── black.svg │ │ │ └── white.svg │ │ ├── fr │ │ │ ├── black.svg │ │ │ └── white.svg │ │ ├── zh-hans │ │ │ ├── black.svg │ │ │ └── white.svg │ │ └── zh-hant │ │ │ ├── black.svg │ │ │ └── white.svg │ └── vendors │ │ ├── github.svg │ │ ├── upyun.png │ │ └── vercel.svg └── js │ ├── .gitkeep │ └── 3rd │ ├── algoliasearch │ └── 4.24.0 │ │ └── algoliasearch-lite.umd.min.js │ ├── animate.css │ └── 3.1.1 │ │ └── animate.min.css │ ├── animejs │ └── 3.2.2 │ │ └── anime.min.js │ ├── aplayer │ └── 1.10.1 │ │ ├── APlayer.min.css │ │ └── APlayer.min.js │ ├── artalk │ └── 2.6.4 │ │ ├── Artalk.min.css │ │ └── Artalk.min.js │ ├── auto-render │ └── 0.16.11 │ │ └── contrib │ │ └── auto-render.min.js │ ├── clipboard.js │ └── 2.0.11 │ │ └── clipboard.min.js │ ├── font-awesome │ └── 6.7.2 │ │ ├── css │ │ └── all.min.css │ │ └── webfonts │ │ ├── fa-brands-400.ttf │ │ ├── fa-brands-400.woff2 │ │ ├── fa-regular-400.ttf │ │ ├── fa-regular-400.woff2 │ │ ├── fa-solid-900.ttf │ │ ├── fa-solid-900.woff2 │ │ ├── fa-v4compatibility.ttf │ │ └── fa-v4compatibility.woff2 │ ├── instantsearch.js │ └── 4.73.2 │ │ └── instantsearch.production.min.js │ ├── katex │ └── 0.16.15 │ │ ├── contrib │ │ └── auto-render.min.js │ │ ├── fonts │ │ ├── KaTeX_AMS-Regular.ttf │ │ ├── KaTeX_AMS-Regular.woff │ │ ├── KaTeX_AMS-Regular.woff2 │ │ ├── KaTeX_Caligraphic-Bold.ttf │ │ ├── KaTeX_Caligraphic-Bold.woff │ │ ├── KaTeX_Caligraphic-Bold.woff2 │ │ ├── KaTeX_Caligraphic-Regular.ttf │ │ ├── KaTeX_Caligraphic-Regular.woff │ │ ├── KaTeX_Caligraphic-Regular.woff2 │ │ ├── KaTeX_Fraktur-Bold.ttf │ │ ├── KaTeX_Fraktur-Bold.woff │ │ ├── KaTeX_Fraktur-Bold.woff2 │ │ ├── KaTeX_Fraktur-Regular.ttf │ │ ├── KaTeX_Fraktur-Regular.woff │ │ ├── KaTeX_Fraktur-Regular.woff2 │ │ ├── KaTeX_Main-Bold.ttf │ │ ├── KaTeX_Main-Bold.woff │ │ ├── KaTeX_Main-Bold.woff2 │ │ ├── KaTeX_Main-BoldItalic.ttf │ │ ├── KaTeX_Main-BoldItalic.woff │ │ ├── KaTeX_Main-BoldItalic.woff2 │ │ ├── KaTeX_Main-Italic.ttf │ │ ├── KaTeX_Main-Italic.woff │ │ ├── KaTeX_Main-Italic.woff2 │ │ ├── KaTeX_Main-Regular.ttf │ │ ├── KaTeX_Main-Regular.woff │ │ ├── KaTeX_Main-Regular.woff2 │ │ ├── KaTeX_Math-BoldItalic.ttf │ │ ├── KaTeX_Math-BoldItalic.woff │ │ ├── KaTeX_Math-BoldItalic.woff2 │ │ ├── KaTeX_Math-Italic.ttf │ │ ├── KaTeX_Math-Italic.woff │ │ ├── KaTeX_Math-Italic.woff2 │ │ ├── KaTeX_SansSerif-Bold.ttf │ │ ├── KaTeX_SansSerif-Bold.woff │ │ ├── KaTeX_SansSerif-Bold.woff2 │ │ ├── KaTeX_SansSerif-Italic.ttf │ │ ├── KaTeX_SansSerif-Italic.woff │ │ ├── KaTeX_SansSerif-Italic.woff2 │ │ ├── KaTeX_SansSerif-Regular.ttf │ │ ├── KaTeX_SansSerif-Regular.woff │ │ ├── KaTeX_SansSerif-Regular.woff2 │ │ ├── KaTeX_Script-Regular.ttf │ │ ├── KaTeX_Script-Regular.woff │ │ ├── KaTeX_Script-Regular.woff2 │ │ ├── KaTeX_Size1-Regular.ttf │ │ ├── KaTeX_Size1-Regular.woff │ │ ├── KaTeX_Size1-Regular.woff2 │ │ ├── KaTeX_Size2-Regular.ttf │ │ ├── KaTeX_Size2-Regular.woff │ │ ├── KaTeX_Size2-Regular.woff2 │ │ ├── KaTeX_Size3-Regular.ttf │ │ ├── KaTeX_Size3-Regular.woff │ │ ├── KaTeX_Size3-Regular.woff2 │ │ ├── KaTeX_Size4-Regular.ttf │ │ ├── KaTeX_Size4-Regular.woff │ │ ├── KaTeX_Size4-Regular.woff2 │ │ ├── KaTeX_Typewriter-Regular.ttf │ │ ├── KaTeX_Typewriter-Regular.woff │ │ └── KaTeX_Typewriter-Regular.woff2 │ │ ├── katex.min.css │ │ └── katex.min.js │ ├── mathjax │ └── 3.2.2 │ │ └── es5 │ │ └── tex-mml-svg.min.js │ ├── mermaid │ └── 10.9.1 │ │ └── mermaid.min.js │ ├── meting │ └── 2.0.1 │ │ └── Meting.min.js │ ├── twikoo │ └── 1.6.44 │ │ └── twikoo.all.min.js │ ├── viewerjs │ └── 1.11.6 │ │ ├── viewer.min.css │ │ └── viewer.min.js │ └── waline │ ├── 2.15.8 │ ├── comment.min.js │ ├── pageview.min.js │ ├── waline.min.css │ └── waline.min.js │ └── 3.5.7 │ ├── comment.min.js │ ├── pageview.min.js │ ├── waline.min.css │ ├── waline.min.js │ └── waline.umd.min.js └── theme.toml /.github/ISSUE_TEMPLATE/bug-report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 错误报告(Bug Report) 3 | about: 没有达到预期的效果(Something isn't working as expected) 4 | labels: bug 5 | --- 6 | 7 | 请按照此 Issue 模版提供相关信息,例如源码仓库、网站链接和屏幕截图,这将有助于我们进行调查。 8 | (Please follow this Issue template to provide relevant information, such as source code repository, website URL and screenshots, which will help us investigate.) 9 | 10 | 11 | ## 问题自检列表 (Issue Checklist) 12 | 13 | > 请确认如下情况已检查,并将 [ ] 换成 [x] 来选择 (Change [ ] to [x] to selected which your could make sure) 14 | 15 | - [ ] 已使用 Hugo Extended 0.134.0 或更高的版本 (I'm using Hugo Extended version 0.134.0 or later) 16 | - [ ] 已使用 Hugo NexT 4.0 或更高的版本 (I'm using Hugo NexT version 4.0 or later) 17 | - [ ] 已阅读 [Hugo 故障排除](https://gohugo.io/troubleshooting/)并尝试修复无果 (I had already read the [Troubleshooting page of Hugo](https://gohugo.io/troubleshooting/)) 18 | - [ ] 已搜索过当前所有[已知问题](https://github.com/hugo-next/hugo-theme-next/issues)和[讨论区](https://github.com/hugo-next/hugo-theme-next/discussions/categories/q-a) ,但没有找到帮助 (I had already searched for current [Issues](https://github.com/hugo-next/hugo-theme-next/issues) and [Q & A](https://github.com/hugo-next/hugo-theme-next/discussions/categories/q-a), which does not help me.) 19 | 20 | *** 21 | 22 | ## 预期行为 (Expected behavior) 23 | 24 | > 请描述你想实现的预期效果 (Please describe the expected behavior what you want) 25 | 26 | 27 | ## 实际行为 (Actual behavior) 28 | 29 | > 请同时提供网站链接、屏幕截图和源码地址 (Please provide your site links, screenshots and code repository) 30 | 31 | 32 | ## 问题重现步骤 (Steps to reproduce the behavior) 33 | 34 | 35 | 36 | ## 环境信息 (Environment Information) 37 | 38 | ### 主题配置(Configuration) 39 | 40 | > 提供主题 `config.yaml` 中修改过的部分内容 (Paste ONLY CHANGED CONFIGURATION from `config.yaml`) 41 | 42 | ```yaml 43 | 44 | ``` 45 | 46 | ## 其他有用信息 (Other Information) 47 | 48 | > 例如:操作系统、浏览器等 (e.g. Browser, System) 49 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: GitHub Discussions 4 | url: https://github.com/hugo-next/hugo-theme-next/discussions/categories/q-a 5 | about: 请在此处提问或回答问题(Please ask and answer questions here) -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 新功能请求(Feature Request) 3 | about: Suggest an idea for this project 4 | labels: feature request 5 | --- 6 | 7 | 请按照此新功能模版提供相关信息,如详细的功能描述或同类效果屏幕截图,这将有助于我们进行调查。 8 | (Please follow this new feature template to provide relevant information, such as detail description for feature or some screenshots, which will help us investigate.) 9 | 10 | 11 | ## 新功能描述 (New feature description) 12 | 13 | 14 | ## 效果参考截图 (Screenshots if it possible) 15 | 16 | -------------------------------------------------------------------------------- /.github/workflows/sync-2-gitee.yml: -------------------------------------------------------------------------------- 1 | name: sync-2-gitee 2 | 3 | on: 4 | push 5 | 6 | jobs: 7 | sync-2-gitee: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Sync to Gitee 11 | uses: wearerequired/git-mirror-action@master 12 | env: 13 | SSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }} 14 | with: 15 | source-repo: git@github.com:hugo-next/hugo-theme-next.git 16 | destination-repo: git@gitee.com:hugo-next/hugo-theme-next.git -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore files in Hugo NexT theme 2 | 3 | # Special files in content folder 4 | exampleSite/public/ 5 | exampleSite/resources/ 6 | exampleSite/.hugo_build.lock 7 | exampleSite/hugo.dev.yaml 8 | exampleSite/hugo.release.yaml 9 | exampleSite/dev-startup.sh 10 | 11 | 12 | 13 | # vscode 14 | .vscode/ 15 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2022 hugo-next 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. -------------------------------------------------------------------------------- /VERSION: -------------------------------------------------------------------------------- 1 | 4.8.2 -------------------------------------------------------------------------------- /archetypes/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ replace .Name "-" " " | title }}" 3 | description: "{{ .Name }}" 4 | keywords: "{{replace .Name "-" ","}}" 5 | 6 | date: {{ .Date }} 7 | lastmod: {{ .Date }} 8 | 9 | categories: 10 | - 11 | tags: 12 | - 13 | - 14 | 15 | # 原文作者 16 | # Post's origin author name 17 | #author: 18 | # 原文链接 19 | # Post's origin link URL 20 | #link: 21 | # 图片链接,用在open graph和twitter卡片上 22 | # Image source link that will use in open graph and twitter card 23 | #imgs: 24 | # 在首页展开内容 25 | # Expand content on the home page 26 | #expand: true 27 | # 外部链接地址,访问时直接跳转 28 | # It's means that will redirecting to external links 29 | #extlink: 30 | # 在当前页面关闭评论功能 31 | # Disabled comment plugins in this post 32 | #comment: 33 | # enable: false 34 | # 关闭文章目录功能 35 | # Disable table of content 36 | #toc: false 37 | # 绝对访问路径 38 | # Absolute link for visit 39 | #url: "{{ lower .Name }}.html" 40 | # 开启文章置顶,数字越小越靠前 41 | # Sticky post set-top in home page and the smaller number will more forward. 42 | #weight: 1 43 | # 开启数学公式渲染,可选值: mathjax, katex 44 | # Support Math Formulas render, options: mathjax, katex 45 | #math: mathjax 46 | # 开启各种图渲染,如流程图、时序图、类图等 47 | # Enable chart render, such as: flow, sequence, classes etc 48 | #mermaid: true 49 | --- 50 | 51 | {{ .Name }} 52 | 53 | 54 | -------------------------------------------------------------------------------- /assets/css/_common/components/3rd/disqusjs.scss: -------------------------------------------------------------------------------- 1 | @if $disqusjs_enable and $darkmode { 2 | @media (prefers-color-scheme:dark) { 3 | html #dsqjs a { 4 | color: var(--link-color) 5 | } 6 | 7 | html #dsqjs a:focus,html #dsqjs a:hover { 8 | color: var(--link-hover-color) 9 | } 10 | 11 | html #dsqjs .dsqjs-nav,html #dsqjs footer { 12 | border-color: var(--card-bg-color) 13 | } 14 | 15 | html #dsqjs .dsqjs-load-more,html #dsqjs .dsqjs-load-more:hover,html #dsqjs .dsqjs-nav-tab,html #dsqjs .dsqjs-no-comment,html #dsqjs .dsqjs-post-content { 16 | color: var(--text-color) 17 | } 18 | 19 | html #dsqjs .dsqjs-order-label { 20 | background-color: #3e4b5e 21 | } 22 | 23 | html #dsqjs .dsqjs-order-radio:checked+.dsqjs-order-label { 24 | background-color: var(--content-bg-color) 25 | } 26 | 27 | html #dsqjs .dsqjs-tab-active>span:after { 28 | background-color: #2e9fff!important 29 | } 30 | 31 | html #dsqjs .dsqjs-footer,html #dsqjs .dsqjs-meta { 32 | color: var(--text-color) 33 | } 34 | 35 | html #dsqjs .dsqjs-post-body blockquote { 36 | border-color: var(--content-bg-color) 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /assets/css/_common/components/3rd/gitalk.scss: -------------------------------------------------------------------------------- 1 | @if $gitalk_enable { 2 | .gt-header a, .gt-comments a, .gt-popup a { 3 | border-bottom: 0; 4 | } 5 | 6 | .gt-container .gt-popup .gt-action.is--active::before { 7 | top: .7em; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /assets/css/_common/components/3rd/gitter.scss: -------------------------------------------------------------------------------- 1 | @if $gitter_enable { 2 | .gitter-open-chat-button { 3 | $alignment: sidebar-toggle-alignment(false); 4 | #{nth($alignment, 1)}: auto !important; 5 | #{nth($alignment, 2)}: 10px !important; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /assets/css/_common/components/3rd/index.scss: -------------------------------------------------------------------------------- 1 | @import 'disqusjs'; 2 | @import 'gitalk'; 3 | @import 'utterances'; 4 | @import 'search'; 5 | @import 'related-posts'; 6 | @import 'gitter'; 7 | @import 'livere'; 8 | @import 'waline'; 9 | 10 | .use-motion .animated { 11 | // Fix issue #48 #55 12 | animation-fill-mode: none; 13 | // Fix issue #46 .animated in .sidebar 14 | visibility: inherit; 15 | } 16 | 17 | .use-motion .sidebar .animated { 18 | animation-fill-mode: both; 19 | } 20 | -------------------------------------------------------------------------------- /assets/css/_common/components/3rd/livere.scss: -------------------------------------------------------------------------------- 1 | @if $livere_enable { 2 | #livereAdWrapper, #taboola-livere { 3 | display: none; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /assets/css/_common/components/3rd/related-posts.scss: -------------------------------------------------------------------------------- 1 | @if $related_posts_enable { 2 | .popular-posts-header { 3 | border-bottom: 1px solid $gainsboro; 4 | font-size: $font-size-large; 5 | margin-bottom: 10px; 6 | margin-top: $post-eof-margin-bottom; 7 | } 8 | 9 | .popular-posts { 10 | padding: 0; 11 | 12 | .popular-posts-item { 13 | margin-left: 2em; 14 | 15 | .popular-posts-title { 16 | font-size: $font-size-small; 17 | font-weight: normal; 18 | line-height: $line-height-base * 1.2; 19 | margin: 0; 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /assets/css/_common/components/3rd/utterances.scss: -------------------------------------------------------------------------------- 1 | // TODO maybe use for next time 2 | // @if $utterances_enable { 3 | // .utterances { 4 | // max-width: unset; 5 | // min-height: 300px; 6 | // } 7 | // } 8 | -------------------------------------------------------------------------------- /assets/css/_common/components/3rd/waline.scss: -------------------------------------------------------------------------------- 1 | @if $waline_enable { 2 | .wl-actions>button:nth-child(3) { 3 | display: none 4 | } 5 | 6 | @include mobile() { 7 | .wl-reaction-img { 8 | width: 28px; 9 | height: 28px; 10 | } 11 | .wl-reaction-votes { 12 | padding: 0.85px; 13 | font-weight: 500; 14 | font-size: .65em; 15 | line-height: .85; 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /assets/css/_common/components/index.scss: -------------------------------------------------------------------------------- 1 | .noscript-warning { 2 | background-color: lighten($red, 20%); 3 | color: white; 4 | font-family: sans-serif; 5 | font-size: 1rem; 6 | font-weight: bold; 7 | left: 0; 8 | position: fixed; 9 | text-align: center; 10 | top: 0; 11 | width: 100%; 12 | z-index: $zindex-5; 13 | } 14 | 15 | .hidden { 16 | display: none !important; 17 | } 18 | 19 | .show { 20 | display: block !important; 21 | } 22 | 23 | @import 'tool-buttons'; 24 | @import 'reading-progress'; 25 | 26 | @import 'post'; 27 | @import 'pages'; 28 | @import '3rd'; 29 | -------------------------------------------------------------------------------- /assets/css/_common/components/pages/breadcrumb.scss: -------------------------------------------------------------------------------- 1 | ul.breadcrumb { 2 | font-size: $font-size-smallest; 3 | list-style: none; 4 | margin: 1em 0; 5 | padding: 0 2em; 6 | text-align: center; 7 | 8 | li { 9 | display: inline; 10 | } 11 | 12 | li:not(:first-child)::before { 13 | content: '/\00a0'; 14 | font-weight: normal; 15 | padding: .5em; 16 | } 17 | 18 | li:last-child { 19 | font-weight: bold; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /assets/css/_common/components/pages/categories.scss: -------------------------------------------------------------------------------- 1 | .category-all-page { 2 | 3 | min-height: 700px; 4 | 5 | .category-all-title { 6 | font-size: 1.35em; 7 | text-align: center; 8 | } 9 | 10 | .category-all { 11 | margin-top: 40px; 12 | } 13 | 14 | .category-list { 15 | list-style: none; 16 | margin: 0; 17 | padding: 0; 18 | 19 | .category-list-item:before { 20 | font-family: var(--fa-style-family,"Font Awesome 6 Free"); 21 | font-weight: var(--fa-style,900); 22 | content: "\f07c"; 23 | margin-right: 5px; 24 | } 25 | 26 | .category-list-item { 27 | margin: 5px 10px; 28 | font-weight: bold; 29 | } 30 | } 31 | 32 | .category-list-count { 33 | color: $grey; 34 | padding: 0 2px; 35 | 36 | &::before { 37 | content: ' ('; 38 | } 39 | 40 | &::after { 41 | content: ') '; 42 | } 43 | } 44 | 45 | .category-children-list { 46 | padding-left: 38px; 47 | list-style: none; 48 | 49 | .category-children-list-item:before { 50 | font-family: var(--fa-style-family,"Font Awesome 6 Free"); 51 | font-weight: var(--fa-style,900); 52 | content: "\f0ae"; 53 | margin-right: 5px; 54 | } 55 | 56 | .category-children-list-item { 57 | font-size: 0.925em; 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /assets/css/_common/components/pages/index.scss: -------------------------------------------------------------------------------- 1 | // Page specific styles 2 | @import 'categories'; 3 | @import 'schedule'; 4 | @import 'breadcrumb'; 5 | @import 'tag-cloud'; 6 | @import 'flinks'; -------------------------------------------------------------------------------- /assets/css/_common/components/pages/tag-cloud.scss: -------------------------------------------------------------------------------- 1 | .tag-cloud { 2 | text-align: center; 3 | min-height: 700px; 4 | 5 | .tag-cloud-title { 6 | text-align: center; 7 | font-size: 1.35em; 8 | 9 | .tag-list-count { 10 | font-size: 0.56em; 11 | } 12 | } 13 | 14 | .tag-cloud-tags { 15 | margin-top: 40px; 16 | } 17 | 18 | a { 19 | display: inline-block; 20 | margin: 10px; 21 | } 22 | } 23 | 24 | @for $tag-cloud from 0 through 10 { 25 | $tag-cloud-color : mix($tag-cloud-end, $tag-cloud-start, $tag-cloud * 10); 26 | .tag-cloud-#{$tag-cloud} { 27 | border-bottom-color: $tag-cloud-color; 28 | color: $tag-cloud-color; 29 | font-size: #{0.85+($tag-cloud * 0.05)}em 30 | } 31 | } 32 | 33 | @if $darkmode { 34 | @media (prefers-color-scheme: dark) { 35 | @for $tag-cloud from 0 through 10 { 36 | $tag-cloud-color : mix($tag-cloud-end-dark, $tag-cloud-start-dark, $tag-cloud * 10); 37 | .tag-cloud-#{$tag-cloud} { 38 | border-bottom-color: $tag-cloud-color; 39 | color: $tag-cloud-color; 40 | } 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /assets/css/_common/components/post/index.scss: -------------------------------------------------------------------------------- 1 | .rtl { 2 | &.post-body { 3 | p, a, h1, h2, h3, h4, h5, h6, li, ul, ol { 4 | direction: rtl; 5 | font-family: UKIJ Ekran; 6 | } 7 | } 8 | 9 | &.post-title { 10 | font-family: UKIJ Ekran; 11 | } 12 | } 13 | 14 | .post-button { 15 | margin-top: 40px; 16 | text-align: center; 17 | } 18 | 19 | .use-motion { 20 | @if $motion_trans_post_block { 21 | .post-block, .flinks-block, .pagination, .comments, .post-comments { 22 | visibility: hidden; 23 | } 24 | } 25 | 26 | @if $motion_trans_post_header { 27 | .post-header, .flinks-header { 28 | visibility: hidden; 29 | } 30 | } 31 | 32 | @if $motion_trans_post_body { 33 | .post-body, .flinks-body { 34 | visibility: hidden; 35 | } 36 | } 37 | 38 | @if $motion_trans_coll_header { 39 | .collection-header { 40 | visibility: hidden; 41 | } 42 | } 43 | } 44 | 45 | @if $toc_number { 46 | .autonumber { 47 | counter-reset: h2; 48 | 49 | h2 { 50 | counter-reset: h3; 51 | &:before{ 52 | counter-increment: h2; 53 | content: counter(h2) ". "; 54 | } 55 | } 56 | 57 | h3 { 58 | counter-reset: h4; 59 | &:before{ 60 | counter-increment: h3; 61 | content: counter(h2) ". " counter(h3) ". "; 62 | } 63 | } 64 | 65 | h4 { 66 | counter-reset: h5; 67 | &:before{ 68 | counter-increment: h4; 69 | content: counter(h2) "." counter(h3) "." counter(h4) ". "; 70 | } 71 | } 72 | } 73 | } 74 | 75 | @import 'post-collapse'; 76 | @import 'post-body'; 77 | @import 'post-gallery'; 78 | @import 'post-header'; 79 | @import 'post-nav'; 80 | @import 'post-footer'; 81 | @import 'post-widgets'; 82 | @import 'post-reward'; 83 | @import 'post-followme'; -------------------------------------------------------------------------------- /assets/css/_common/components/post/post-alert.scss: -------------------------------------------------------------------------------- 1 | 2 | @mixin alert-styles($type, $color) { 3 | .post-alert-#{$type} { 4 | padding: 0 0 0 10px; 5 | border-left: 6px solid $color; 6 | font-size: 0.825em; 7 | color: $color; 8 | } 9 | } 10 | 11 | @each $key, $color in $post_alert_colors { 12 | @include alert-styles(#{$key}, $color); 13 | } 14 | 15 | .post-alert-title, .post-expired-title { 16 | 17 | display: flex; 18 | align-items: center; 19 | line-height: 1.5; 20 | margin: 0; 21 | 22 | i { 23 | font-size: 1.25em; 24 | text-align: center; 25 | vertical-align: middle; 26 | } 27 | 28 | span { 29 | margin: 0 0 0 8px; 30 | letter-spacing: 0.08em; 31 | } 32 | } 33 | 34 | .post-alert-content, .post-expired-content { 35 | color: var(--text-color); 36 | } -------------------------------------------------------------------------------- /assets/css/_common/components/post/post-followme.scss: -------------------------------------------------------------------------------- 1 | @if $follow_me { 2 | .followme { 3 | color: $grey; 4 | /* padding: 1em 1.5em; */ 5 | text-align: center; 6 | @include post-card(); 7 | border-left: none; 8 | border-bottom: #46b404 solid 5px; 9 | 10 | .social-list { 11 | @include flex-wrap(); 12 | 13 | .social-item { 14 | margin: .5em 2em; 15 | 16 | a:hover { 17 | font-weight: bold; 18 | } 19 | 20 | @include tablet-mobile() { 21 | margin: .5em .75em; 22 | } 23 | } 24 | 25 | .social-link { 26 | border: 0; 27 | display: inline-block; 28 | text-align: center; 29 | 30 | .icon { 31 | font-size: 1.75em; 32 | } 33 | 34 | .label { 35 | display: block; 36 | font-size: 14px; 37 | } 38 | } 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /assets/css/_common/components/post/post-gallery.scss: -------------------------------------------------------------------------------- 1 | .post-gallery { 2 | display: flex; 3 | min-height: 200px; 4 | 5 | .post-gallery-image { 6 | flex: 1; 7 | 8 | &:not(:first-child) { 9 | clip-path: polygon(40px 0, 100% 0, 100% 100%, 0 100%); 10 | margin-left: -20px; 11 | } 12 | 13 | &:not(:last-child) { 14 | margin-right: -20px; 15 | } 16 | 17 | img { 18 | height: 100%; 19 | object-fit: cover; 20 | // Override darkmode image opacity. 21 | opacity: 1; 22 | width: 100%; 23 | } 24 | } 25 | } 26 | 27 | .posts-expand .post-gallery { 28 | margin-bottom: 60px; 29 | } 30 | 31 | .posts-collapse .post-gallery { 32 | margin: 15px 0; 33 | } 34 | -------------------------------------------------------------------------------- /assets/css/_common/components/post/post-nav.scss: -------------------------------------------------------------------------------- 1 | .post-nav { 2 | border-top: 1px solid $gainsboro; 3 | display: flex; 4 | gap: 30px; 5 | justify-content: space-between; 6 | margin-top: 1em; 7 | padding: 10px 5px 0; 8 | } 9 | 10 | .post-nav-item { 11 | flex: 1; 12 | 13 | a { 14 | border-bottom: 0; 15 | display: block; 16 | font-size: $font-size-small; 17 | line-height: 1.6; 18 | 19 | &:active { 20 | top: 2px; 21 | } 22 | } 23 | 24 | .fa { 25 | font-size: $font-size-smallest; 26 | } 27 | 28 | &:first-child { 29 | .fa { 30 | margin-right: 5px; 31 | } 32 | } 33 | 34 | &:last-child { 35 | text-align: right; 36 | 37 | .fa { 38 | margin-left: 5px; 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /assets/css/_common/components/post/post-reward.scss: -------------------------------------------------------------------------------- 1 | .reward-container { 2 | margin: $post-card-margin; 3 | /* padding: 1em 0; */ 4 | text-align: center; 5 | 6 | div>i { 7 | font-size: 1.85em; 8 | margin-right: 4px; 9 | } 10 | 11 | button { 12 | @include button($sidebar-highlight); 13 | border: 2px solid $sidebar-highlight; 14 | border-radius: 2px; 15 | outline: 0; 16 | transition: all $transition-ease; 17 | vertical-align: text-top; 18 | } 19 | } 20 | 21 | .post-reward { 22 | display: none; 23 | padding-top: 20px; 24 | 25 | &.active { 26 | display: block; 27 | } 28 | 29 | .post-reward-item { 30 | display: inline-block; 31 | 32 | span { 33 | display: block; 34 | } 35 | 36 | @if $reward_settings_animation { 37 | 38 | &:hover span { 39 | animation: next-roll .1s infinite linear; 40 | // The animation may affect :hover of img in dark mode 41 | pointer-events: none; 42 | } 43 | 44 | } 45 | } 46 | 47 | img { 48 | display: inline-block; 49 | margin: .8em 1.2em; 50 | max-width: 100%; 51 | width: 180px; 52 | border: #eee 1px solid; 53 | box-shadow:rgba(0,0,0,0.2) 0 1px 5px 0px; 54 | } 55 | } 56 | 57 | @keyframes next-roll { 58 | from { 59 | transform: rotateZ(30deg); 60 | } 61 | 62 | to { 63 | transform: rotateZ(-30deg); 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /assets/css/_common/components/post/post-widgets.scss: -------------------------------------------------------------------------------- 1 | .post-widgets { 2 | border-top: 1px solid $gainsboro; 3 | margin-top: 15px; 4 | text-align: center; 5 | } 6 | 7 | .wpac-rating-container { 8 | height: 20px; 9 | line-height: 20px; 10 | margin-top: 10px; 11 | padding-top: 6px; 12 | text-align: center; 13 | } 14 | 15 | .social-like { 16 | display: flex; 17 | font-size: $font-size-small; 18 | justify-content: center; 19 | text-align: center; 20 | } 21 | -------------------------------------------------------------------------------- /assets/css/_common/components/reading-progress.scss: -------------------------------------------------------------------------------- 1 | @if $reading_progress_enable { 2 | .reading-progress-bar { 3 | --progress: 0; 4 | background: $reading_progress_color; 5 | height: $reading_progress_height; 6 | position: fixed; 7 | z-index: $zindex-5; 8 | 9 | @if $reading_progress_reversed { 10 | width: calc(100% - var(--progress)); 11 | } @else { 12 | width: var(--progress); 13 | } 14 | 15 | @if $reading_progress_start == 'right' { 16 | right: 0; 17 | } @else { 18 | left: 0; 19 | } 20 | 21 | @if $reading_progress_position == 'bottom' { 22 | bottom: 0; 23 | } @else { 24 | top: 0; 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /assets/css/_common/components/tool-buttons.scss: -------------------------------------------------------------------------------- 1 | .tool-buttons { 2 | 3 | @include sidebar-toggle(); 4 | background: none; 5 | bottom: 58px; 6 | filter: alpha(opacity=0); 7 | font-size: $font-size-smaller; 8 | @include mobile() { 9 | font-size: $font-size-smallest; 10 | } 11 | 12 | .button { 13 | display: block; 14 | margin-bottom: 5px; 15 | width: 36px; 16 | height: 36px; 17 | border-radius: 5px; 18 | background-color: $tool-btn-bg; 19 | color: $tool-btn-color; 20 | text-align: center; 21 | line-height: 35px; 22 | padding: 0; 23 | outline: 0; 24 | border: none; 25 | text-transform: none; 26 | cursor: pointer; 27 | opacity: $tool-btn-opacity; 28 | touch-action: manipulation; 29 | 30 | @include mobile() { 31 | width: 24px; 32 | height: 24px; 33 | line-height: 24px; 34 | border-radius: 3px; 35 | } 36 | 37 | &:hover { 38 | color: $tool-btn-hover-fore-color; 39 | opacity: $tool-btn-opacity-hover; 40 | } 41 | } 42 | 43 | .goto-comments { 44 | display: none; 45 | } 46 | } 47 | 48 | @if $back2top_enable { 49 | .back-to-top { 50 | 51 | @if not $back2top_scrollpercent { 52 | span { 53 | display: none; 54 | } 55 | } 56 | 57 | @if $back2top_sidebar { 58 | margin: 20px -$sidebar-offset -10px -20px; 59 | opacity: 0; 60 | transition: opacity $transition-ease; 61 | 62 | &.back-to-top-on { 63 | cursor: pointer; 64 | opacity: $b2t-opacity; 65 | 66 | &:hover { 67 | opacity: $b2t-opacity-hover; 68 | } 69 | } 70 | } @else { 71 | bottom: $b2t-position-bottom; 72 | box-sizing: border-box; 73 | color: $b2t-color; 74 | padding: 0 6px; 75 | transition: bottom $transition-ease; 76 | @include sidebar-toggle(); 77 | 78 | @if not $back2top_scrollpercent { 79 | width: 24px; 80 | } 81 | 82 | &:hover { 83 | color: $sidebar-highlight; 84 | } 85 | 86 | &.back-to-top-on { 87 | bottom: $b2t-position-bottom-on; 88 | } 89 | } 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /assets/css/_common/outline/header/bookmark.scss: -------------------------------------------------------------------------------- 1 | @if $bookmark_enable { 2 | .book-mark-link { 3 | border-bottom: 0; 4 | position: fixed; 5 | top: -10px; 6 | 7 | transition: top .3s; 8 | -moz-transition:top .3s; 9 | -webkit-transition:top .3s; 10 | -o-transition:top .3s; 11 | 12 | @if not $github_banner_enable { 13 | @include sidebar-toggle-position(true); 14 | } @else { 15 | left: 30px; 16 | } 17 | 18 | @include tablet-mobile() { 19 | display: none; 20 | } 21 | 22 | &::before { 23 | color: $bookmark_color; 24 | font-size: 32px; 25 | line-height: 1; 26 | @include font-family-icons('\f02e'); 27 | } 28 | } 29 | 30 | .book-mark-link:hover, .book-mark-link-fixed { 31 | top: -2px; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /assets/css/_common/outline/header/github-banner.scss: -------------------------------------------------------------------------------- 1 | @if $github_banner_enable { 2 | @keyframes octocat-wave { 3 | 0%, 100% { 4 | transform: rotate(0); 5 | } 6 | 7 | 20%, 60% { 8 | transform: rotate(-25deg); 9 | } 10 | 11 | 40%, 80% { 12 | transform: rotate(10deg); 13 | } 14 | } 15 | 16 | .github-corner { 17 | :hover .octo-arm { 18 | animation: octocat-wave 560ms ease-in-out; 19 | } 20 | 21 | svg { 22 | color: white; 23 | fill: var(--theme-color); 24 | position: absolute; 25 | right: 0; 26 | top: 0; 27 | z-index: $zindex-0; 28 | } 29 | 30 | @include tablet-mobile() { 31 | @if $local_search_enable or $algolia_search_enable { 32 | display: none; 33 | } 34 | 35 | svg { 36 | @if ($scheme == 'Pisces') or ($scheme == 'Gemini') { 37 | color: var(--theme-color); 38 | fill: white; 39 | } 40 | } 41 | 42 | .github-corner:hover .octo-arm { 43 | animation: none; 44 | } 45 | 46 | .github-corner .octo-arm { 47 | animation: octocat-wave 560ms ease-in-out; 48 | } 49 | } 50 | 51 | @if $scheme == 'Mist' { 52 | @include mobile() { 53 | svg { 54 | top: inherit; 55 | } 56 | } 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /assets/css/_common/outline/header/index.scss: -------------------------------------------------------------------------------- 1 | // Header Section 2 | // -------------------------------------------------- 3 | .headband { 4 | background: $headband-bg; 5 | height: $headband-height; 6 | 7 | @include tablet-mobile() { 8 | display: none; 9 | } 10 | } 11 | 12 | // Fix issue #521 13 | header.header { 14 | background: $head-bg; 15 | } 16 | 17 | .header-inner { 18 | @include main-container(); 19 | } 20 | 21 | .site-brand-container { 22 | display: flex; 23 | flex-shrink: 0; 24 | padding: 0 10px; 25 | } 26 | 27 | .use-motion { 28 | header.header, .site-brand-container .toggle { 29 | opacity: 0; 30 | } 31 | } 32 | 33 | @import 'site-meta'; 34 | @import 'site-nav'; 35 | @import 'menu'; 36 | 37 | @import 'bookmark'; 38 | @import 'github-banner'; 39 | -------------------------------------------------------------------------------- /assets/css/_common/outline/header/menu.scss: -------------------------------------------------------------------------------- 1 | // Menu 2 | // -------------------------------------------------- 3 | .menu, .menu-children { 4 | margin: 0; 5 | padding: 1em 0; 6 | text-align: center; 7 | } 8 | 9 | .menu-children { 10 | max-height: 0; 11 | padding: 0; 12 | overflow: hidden; 13 | transition: max-height 1.5s ease-out; 14 | } 15 | 16 | .menu-children { 17 | &.expand { 18 | max-height: 400px; 19 | transition: max-height 1.5s ease-in; 20 | } 21 | } 22 | 23 | .menu-item, .menu-child-item { 24 | display: inline-block; 25 | list-style: none; 26 | margin: 0 10px; 27 | 28 | @include mobile() { 29 | display: block; 30 | margin-top: 10px; 31 | 32 | &.menu-item-search { 33 | display: none; 34 | } 35 | } 36 | 37 | a { 38 | border-bottom: 0; 39 | display: block; 40 | font-size: $font-size-smaller; 41 | transition: border-color $transition-ease; 42 | 43 | &:hover, &.menu-item-active { 44 | background: var(--menu-item-bg-color); 45 | } 46 | } 47 | 48 | .fa, .fab, .far, .fas { 49 | margin-right: 8px; 50 | width: 16px; 51 | text-align: center; 52 | } 53 | 54 | .badge { 55 | display: inline-block; 56 | font-weight: bold; 57 | line-height: 1; 58 | margin-left: .35em; 59 | margin-top: .35em; 60 | text-align: center; 61 | white-space: nowrap; 62 | 63 | @include mobile() { 64 | float: right; 65 | margin-left: 0; 66 | } 67 | } 68 | 69 | .menu-item-shrink-icon { 70 | float: right; 71 | } 72 | } 73 | 74 | .menu-child-item { 75 | display: block; 76 | margin: 0; 77 | } 78 | 79 | .use-motion .menu-item { 80 | visibility: hidden; 81 | } 82 | -------------------------------------------------------------------------------- /assets/css/_common/outline/header/site-meta.scss: -------------------------------------------------------------------------------- 1 | .site-meta { 2 | flex-grow: 1; 3 | text-align: center; 4 | 5 | @include mobile() { 6 | text-align: center; 7 | } 8 | } 9 | 10 | .custom-logo-image { 11 | margin-top: 20px; 12 | 13 | @include tablet-mobile() { 14 | display: none; 15 | } 16 | } 17 | 18 | .brand { 19 | border-bottom: 0; 20 | color: var(--brand-color); 21 | display: inline-block; 22 | padding: 0 40px; 23 | 24 | &:hover { 25 | color: var(--brand-hover-color); 26 | } 27 | } 28 | 29 | .site-title { 30 | font-family: $font-family-logo; 31 | font-size: $font-size-title; 32 | font-weight: normal; 33 | line-height: 1.5; 34 | margin: 0; 35 | } 36 | 37 | .site-subtitle { 38 | color: $subtitle-color; 39 | font-size: $font-size-subtitle; 40 | margin: 10px 0; 41 | } 42 | 43 | .use-motion { 44 | .site-title, .site-subtitle, .custom-logo-image { 45 | opacity: 0; 46 | position: relative; 47 | top: -10px; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /assets/css/_common/outline/header/site-nav.scss: -------------------------------------------------------------------------------- 1 | .site-nav-toggle, .site-nav-right { 2 | display: none; 3 | 4 | @include mobile() { 5 | @include flex-column(); 6 | } 7 | 8 | .toggle { 9 | color: var(--text-color); 10 | padding: 10px; 11 | width: 22px; 12 | 13 | .toggle-line { 14 | background: var(--text-color); 15 | border-radius: 1px; 16 | } 17 | } 18 | } 19 | 20 | .site-nav { 21 | @include mobile() { 22 | @include site-nav-hide-by-default(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /assets/css/_common/outline/index.scss: -------------------------------------------------------------------------------- 1 | @import 'header'; 2 | @import 'sidebar'; 3 | @import 'footer'; 4 | 5 | @import 'mobile'; 6 | -------------------------------------------------------------------------------- /assets/css/_common/outline/sidebar/index.scss: -------------------------------------------------------------------------------- 1 | .sidebar-inner, .sidebar-card-widget { 2 | color: $grey-dark; 3 | // Init Sidebar & TOC inner dimensions on all pages and for all schemes. 4 | $offset : if(($scheme == 'Pisces') or ($scheme == 'Gemini'), $sidebar-offset, $sidebar-padding); 5 | max-height: calc(100vh - #{$offset * 2}); 6 | padding: $sidebar-padding 10px; 7 | text-align: center; 8 | @include flex-column(); 9 | } 10 | 11 | .site-overview-item:not(:first-child) { 12 | margin-top: 10px; 13 | } 14 | 15 | .cc-license { 16 | 17 | margin-top: 6px; 18 | 19 | .cc-opacity { 20 | border-bottom: 0; 21 | opacity: .7; 22 | 23 | &:hover { 24 | opacity: .9; 25 | } 26 | } 27 | 28 | img { 29 | display: inline-block; 30 | max-width: 120px; 31 | max-height: 42px; 32 | } 33 | } 34 | 35 | @import 'sidebar-author'; 36 | @import 'sidebar-author-links'; 37 | @import 'sidebar-button'; 38 | @import 'sidebar-blogroll'; 39 | @import 'sidebar-dimmer'; 40 | @import 'sidebar-nav'; 41 | @import 'sidebar-toggle'; 42 | @import 'sidebar-toc'; 43 | @import 'site-state'; 44 | @import 'sidebar-card-widget'; 45 | -------------------------------------------------------------------------------- /assets/css/_common/outline/sidebar/sidebar-author-links.scss: -------------------------------------------------------------------------------- 1 | .links-of-author, .links-of-social { 2 | a { 3 | font-size: $font-size-smaller; 4 | } 5 | 6 | @if not $social_icons_only { 7 | .fa, .fab, .far, .fas { 8 | margin-right: 2px; 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /assets/css/_common/outline/sidebar/sidebar-author.scss: -------------------------------------------------------------------------------- 1 | .site-author-image { 2 | border: $site-author-image-border-width solid $site-author-image-border-color; 3 | width: $site-author-image-width; 4 | height: $site-author-image-width; 5 | padding: 2px; 6 | 7 | @if $avatar_rounded { 8 | border-radius: 50%; 9 | } 10 | 11 | @if $avatar_rotated { 12 | transition: transform 1s ease-out; 13 | 14 | &:hover { 15 | transform: rotateZ(360deg); 16 | } 17 | } 18 | } 19 | 20 | .site-author-name { 21 | color: $site-author-name-color; 22 | font-weight: $site-author-name-weight; 23 | margin: $site-author-name-margin; 24 | } 25 | 26 | .site-description { 27 | color: $site-description-color; 28 | font-size: $site-description-font-size; 29 | margin-top: $site-description-margin-top; 30 | } 31 | -------------------------------------------------------------------------------- /assets/css/_common/outline/sidebar/sidebar-blogroll.scss: -------------------------------------------------------------------------------- 1 | .links-of-blogroll { 2 | font-size: $font-size-smaller; 3 | } 4 | 5 | .links-of-blogroll-title { 6 | font-size: $font-size-small; 7 | font-weight: 600; 8 | margin-top: 0; 9 | } 10 | 11 | .links-of-blogroll-list { 12 | list-style: none; 13 | margin: 0; 14 | padding: 0; 15 | } 16 | -------------------------------------------------------------------------------- /assets/css/_common/outline/sidebar/sidebar-button.scss: -------------------------------------------------------------------------------- 1 | .sidebar .sidebar-button { 2 | &:not(:first-child) { 3 | margin-top: 15px; 4 | } 5 | 6 | button { 7 | @include button($orange); 8 | border: 1px solid $orange; 9 | border-radius: 4px; 10 | 11 | .fa, .fab, .far, .fas { 12 | margin-right: 5px; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /assets/css/_common/outline/sidebar/sidebar-card-widget.scss: -------------------------------------------------------------------------------- 1 | .sidebar-card-widget { 2 | background: var(--content-bg-color); 3 | @if ($scheme == 'Pisces') or ($scheme == 'Gemini'){ 4 | border-radius: $border-radius; 5 | box-shadow: $box-shadow; 6 | } 7 | box-sizing: border-box; 8 | color: var(--text-color); 9 | margin-top: $sidebar-offset; 10 | 11 | .item-headline { 12 | text-align: left; 13 | font-size: $font-size-small; 14 | font-weight: bold; 15 | 16 | span { 17 | margin-left: 8px; 18 | } 19 | } 20 | 21 | .siteinfo { 22 | font-size: $font-size-small; 23 | text-align: left; 24 | 25 | .siteinfo-item { 26 | display: flex; 27 | -webkit-box-align: center; 28 | align-items: center; 29 | padding: 2px 10px 0; 30 | 31 | i { 32 | width: 16px; 33 | height: 16px; 34 | text-align: center; 35 | margin-right: 4px; 36 | } 37 | 38 | 39 | div:first-child { 40 | -webkit-box-flex: 1; 41 | -moz-box-flex: 1; 42 | -o-box-flex: 1; 43 | box-flex: 1; 44 | -webkit-flex: 1; 45 | -ms-flex: 1; 46 | flex: 1; 47 | padding-right: 20px; 48 | } 49 | } 50 | } 51 | } 52 | 53 | .back-to-top-card { 54 | margin: 0; 55 | padding: 0; 56 | 57 | div:first-child { 58 | margin: 0; 59 | } 60 | } -------------------------------------------------------------------------------- /assets/css/_common/outline/sidebar/sidebar-dimmer.scss: -------------------------------------------------------------------------------- 1 | .sidebar-dimmer { 2 | display: none; 3 | } 4 | 5 | @include tablet-mobile() { 6 | .sidebar-dimmer { 7 | background: black; 8 | display: block; 9 | height: 100%; 10 | left: 0; 11 | opacity: 0; 12 | position: fixed; 13 | top: 0; 14 | transition: visibility .4s, opacity .4s; 15 | visibility: hidden; 16 | width: 100%; 17 | z-index: $zindex-1; 18 | 19 | .sidebar-active & { 20 | opacity: .7; 21 | visibility: visible; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /assets/css/_common/outline/sidebar/sidebar-nav.scss: -------------------------------------------------------------------------------- 1 | // Sidebar Navigation 2 | .sidebar-nav { 3 | display: none; 4 | margin: 0; 5 | padding-bottom: 20px; 6 | padding-left: 0; 7 | 8 | .sidebar-nav-active & { 9 | display: block; 10 | } 11 | 12 | li { 13 | border-bottom: 1px solid transparent; 14 | color: $sidebar-nav-color; 15 | cursor: pointer; 16 | display: inline-block; 17 | font-size: $font-size-small; 18 | 19 | &.sidebar-nav-overview { 20 | margin-left: 10px; 21 | } 22 | 23 | &:hover { 24 | color: $sidebar-nav-hover-color; 25 | border-bottom-color: $sidebar-highlight; 26 | } 27 | } 28 | } 29 | 30 | .sidebar-toc-active .sidebar-nav-toc, .sidebar-overview-active .sidebar-nav-overview { 31 | border-bottom-color: $sidebar-highlight; 32 | color: $sidebar-highlight; 33 | font-weight: bold; 34 | 35 | &:hover { 36 | color: $sidebar-highlight; 37 | } 38 | } 39 | 40 | // Need for Sidebar/TOC inner scrolling if content taller then viewport. 41 | .sidebar-panel-container { 42 | flex: 1; 43 | overflow-x: hidden; 44 | overflow-y: auto; 45 | } 46 | 47 | .sidebar-panel { 48 | display: none; 49 | } 50 | 51 | .sidebar-overview-active .site-overview-wrap { 52 | // Flexbox layout makes it possible to reorder the child 53 | // elements of .site-overview-item through the `order` CSS property 54 | @include flex-column(); 55 | } 56 | 57 | .sidebar-toc-active .post-toc-wrap { 58 | display: block; 59 | } 60 | -------------------------------------------------------------------------------- /assets/css/_common/outline/sidebar/sidebar-toggle.scss: -------------------------------------------------------------------------------- 1 | .sidebar-toggle { 2 | bottom: 45px; 3 | height: 12px; 4 | padding: 6px 5px; 5 | width: 14px; 6 | @include sidebar-toggle(); 7 | } 8 | 9 | .sidebar-toggle:hover .toggle-line { 10 | background: $sidebar-highlight; 11 | } 12 | 13 | @media (any-hover: hover) { 14 | body:not(.sidebar-active) .sidebar-toggle:hover { 15 | @include toggle-arrow($sidebar_position); 16 | } 17 | } 18 | 19 | .sidebar-active .sidebar-toggle { 20 | @include toggle-close($sidebar_position); 21 | } 22 | -------------------------------------------------------------------------------- /assets/css/_common/outline/sidebar/site-state.scss: -------------------------------------------------------------------------------- 1 | @if $site_state { 2 | .site-state { 3 | @include flex-wrap(); 4 | line-height: 1.4; 5 | } 6 | 7 | .site-state-item { 8 | // Fix issue #103 9 | // The click area of the link becomes smaller 10 | padding: 0 15px; 11 | border-left: 1px solid #eee; 12 | 13 | &:first-child { 14 | border-left: none; 15 | } 16 | 17 | a { 18 | border-bottom: 0; 19 | display: block; 20 | } 21 | } 22 | 23 | 24 | 25 | .site-state-item-count { 26 | display: block; 27 | font-size: $site-state-item-count-font-size; 28 | font-weight: 600; 29 | } 30 | 31 | .site-state-item-name { 32 | color: $site-state-item-name-color; 33 | font-size: $site-state-item-name-font-size; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /assets/css/_common/scaffolding/animation/icon.scss: -------------------------------------------------------------------------------- 1 | @keyframes beat { 2 | 0%, 100% { 3 | transform: scale(1); 4 | } 5 | 6 | 10%, 30% { 7 | transform: scale(.9); 8 | } 9 | 10 | 20%, 40%, 60%, 80% { 11 | transform: scale(1.1); 12 | } 13 | 14 | 50%, 70% { 15 | transform: scale(1.1); 16 | } 17 | } -------------------------------------------------------------------------------- /assets/css/_common/scaffolding/animation/index.scss: -------------------------------------------------------------------------------- 1 | @import 'icon'; 2 | @import 'show'; 3 | @import 'hover'; -------------------------------------------------------------------------------- /assets/css/_common/scaffolding/animation/show.scss: -------------------------------------------------------------------------------- 1 | // tabshow animation 2 | @-moz-keyframes tabshow { 3 | 0% { 4 | -webkit-transform: translateY(15px); 5 | -moz-transform: translateY(15px); 6 | -o-transform: translateY(15px); 7 | -ms-transform: translateY(15px); 8 | transform: translateY(15px); 9 | } 10 | 100% { 11 | -webkit-transform: translateY(0); 12 | -moz-transform: translateY(0); 13 | -o-transform: translateY(0); 14 | -ms-transform: translateY(0); 15 | transform: translateY(0); 16 | } 17 | } 18 | @-webkit-keyframes tabshow { 19 | 0% { 20 | -webkit-transform: translateY(15px); 21 | -moz-transform: translateY(15px); 22 | -o-transform: translateY(15px); 23 | -ms-transform: translateY(15px); 24 | transform: translateY(15px); 25 | } 26 | 100% { 27 | -webkit-transform: translateY(0); 28 | -moz-transform: translateY(0); 29 | -o-transform: translateY(0); 30 | -ms-transform: translateY(0); 31 | transform: translateY(0); 32 | } 33 | } 34 | @-o-keyframes tabshow { 35 | 0% { 36 | -webkit-transform: translateY(15px); 37 | -moz-transform: translateY(15px); 38 | -o-transform: translateY(15px); 39 | -ms-transform: translateY(15px); 40 | transform: translateY(15px); 41 | } 42 | 100% { 43 | -webkit-transform: translateY(0); 44 | -moz-transform: translateY(0); 45 | -o-transform: translateY(0); 46 | -ms-transform: translateY(0); 47 | transform: translateY(0); 48 | } 49 | } 50 | @keyframes tabshow { 51 | 0% { 52 | -webkit-transform: translateY(15px); 53 | -moz-transform: translateY(15px); 54 | -o-transform: translateY(15px); 55 | -ms-transform: translateY(15px); 56 | transform: translateY(15px); 57 | } 58 | 100% { 59 | -webkit-transform: translateY(0); 60 | -moz-transform: translateY(0); 61 | -o-transform: translateY(0); 62 | -ms-transform: translateY(0); 63 | transform: translateY(0); 64 | } 65 | } -------------------------------------------------------------------------------- /assets/css/_common/scaffolding/buttons.scss: -------------------------------------------------------------------------------- 1 | .btn { 2 | background: var(--btn-default-bg); 3 | border: 2px solid var(--btn-default-border-color); 4 | border-radius: $btn-default-radius; 5 | color: var(--btn-default-color); 6 | display: inline-block; 7 | font-size: $font-size-small; 8 | line-height: 2; 9 | padding: 0 20px; 10 | transition: background-color $transition-ease; 11 | 12 | &:hover { 13 | background: var(--btn-default-hover-bg); 14 | border-color: var(--btn-default-hover-border-color); 15 | color: var(--btn-default-hover-color); 16 | } 17 | 18 | + .btn { 19 | margin: 0 0 8px 8px; 20 | } 21 | 22 | .fa-fw { 23 | text-align: left; 24 | width: (18em / 14); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /assets/css/_common/scaffolding/fontawesome/animation.scss: -------------------------------------------------------------------------------- 1 | .fa-spin { 2 | -webkit-animation: fa-spin .8s infinite linear; 3 | animation: fa-spin .8s infinite linear; 4 | } -------------------------------------------------------------------------------- /assets/css/_common/scaffolding/fontawesome/index.scss: -------------------------------------------------------------------------------- 1 | @import 'animation'; -------------------------------------------------------------------------------- /assets/css/_common/scaffolding/highlight/index.scss: -------------------------------------------------------------------------------- 1 | @import 'copy-code'; 2 | @import 'monokai'; 3 | 4 | %code-inline { 5 | background: var(--highlight-background); 6 | color: var(--highlight-foreground); 7 | } 8 | 9 | pre { 10 | padding: 18px; 11 | margin: 0; 12 | } 13 | 14 | p > code, li > code { 15 | @extend %code-inline; 16 | border-radius: 3px; 17 | padding: 3px 6px; 18 | } 19 | 20 | pre, code { 21 | font-family: $code-font-family; 22 | } 23 | 24 | 25 | kbd { 26 | @extend %code-inline; 27 | border: 2px solid $grey-light; 28 | border-radius: .2em; 29 | box-shadow: .1em .1em .2em rgba(0, 0, 0, .1); 30 | font-family: inherit; 31 | padding: .1em .3em; 32 | white-space: nowrap; 33 | } -------------------------------------------------------------------------------- /assets/css/_common/scaffolding/index.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Scaffolding 3 | // ================================================== 4 | @import 'normalize'; 5 | @import 'base'; 6 | @import 'tables'; 7 | @import 'buttons'; 8 | @import 'toggles'; 9 | @import 'highlight'; 10 | @import 'tags'; 11 | @import 'pagination'; 12 | @import 'comments'; 13 | @import 'fontawesome'; 14 | @import 'animation'; 15 | -------------------------------------------------------------------------------- /assets/css/_common/scaffolding/pagination.scss: -------------------------------------------------------------------------------- 1 | %page-number-basic { 2 | display: inline-block; 3 | margin: -1px 10px 0; 4 | padding: 0 10px; 5 | 6 | @include mobile() { 7 | margin: 0 5px; 8 | } 9 | } 10 | 11 | %page-number-current { 12 | background: $pagination-active-bg; 13 | border-color: $pagination-active-border; 14 | color: $pagination-active-color; 15 | } 16 | 17 | .pagination { 18 | border-top: 1px solid $pagination-border; 19 | margin: 120px 0 0; 20 | text-align: center; 21 | 22 | .prev, .next, .page-number { 23 | @extend %page-number-basic; 24 | border-bottom: 0; 25 | border-top: 1px solid $pagination-link-border; 26 | transition: border-color $transition-ease; 27 | 28 | &:hover { 29 | border-top-color: $pagination-link-hover-border; 30 | } 31 | } 32 | 33 | @include mobile() { 34 | border-top: 0; 35 | 36 | .prev, .next, .page-number { 37 | border-bottom: 1px solid $pagination-link-border; 38 | border-top: 0; 39 | 40 | &:hover { 41 | border-bottom-color: $pagination-link-hover-border; 42 | } 43 | } 44 | } 45 | 46 | .space { 47 | @extend %page-number-basic; 48 | margin: 0; 49 | padding: 0; 50 | } 51 | 52 | .page-number.current { 53 | @extend %page-number-current; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /assets/css/_common/scaffolding/tables.scss: -------------------------------------------------------------------------------- 1 | .table-container { 2 | width: 100%; 3 | overflow: auto; 4 | } 5 | 6 | table { 7 | border-collapse: collapse; 8 | border-spacing: 0; 9 | font-size: $table-font-size; 10 | margin: 0 0 20px 0; 11 | width: 100%; 12 | // Not sure it work better. 13 | //table-layout: fixed; 14 | word-wrap: anywhere; 15 | } 16 | 17 | tbody tr { 18 | &:nth-of-type(odd) { 19 | background: var(--table-row-odd-bg-color); 20 | } 21 | 22 | &:hover { 23 | background: var(--table-row-hover-bg-color); 24 | } 25 | } 26 | 27 | caption, th, td { 28 | padding: 8px; 29 | } 30 | 31 | th, td { 32 | border: 1px solid $table-border-color; 33 | border-bottom: 3px solid $table-cell-border-bottom-color; 34 | } 35 | 36 | th { 37 | font-weight: 700; 38 | padding-bottom: 10px; 39 | } 40 | 41 | td { 42 | border-bottom-width: 1px; 43 | } 44 | -------------------------------------------------------------------------------- /assets/css/_common/scaffolding/tags/bilibili.scss: -------------------------------------------------------------------------------- 1 | .bilibili-video { 2 | position: relative; 3 | width: 100%; 4 | height: 0; 5 | padding-bottom: 50%; 6 | margin: auto; 7 | text-align: center; 8 | 9 | iframe { 10 | position: absolute; 11 | width: 100%; 12 | height: 100%; 13 | left: 0; 14 | top: 0; 15 | } 16 | } -------------------------------------------------------------------------------- /assets/css/_common/scaffolding/tags/blockquote-center.scss: -------------------------------------------------------------------------------- 1 | // Blockquote with all children centered. 2 | .blockquote-center { 3 | border-left: 0; 4 | margin: 40px 0; 5 | padding: 0; 6 | position: relative; 7 | text-align: center; 8 | 9 | &::before, &::after { 10 | left: 0; 11 | line-height: 1; 12 | opacity: .6; 13 | position: absolute; 14 | width: 100%; 15 | } 16 | 17 | &::before { 18 | border-top: 1px solid $grey-light; 19 | text-align: left; 20 | top: -20px; 21 | @include font-family-icons('\f10d'); 22 | } 23 | 24 | &::after { 25 | border-bottom: 1px solid $grey-light; 26 | bottom: -20px; 27 | text-align: right; 28 | @include font-family-icons('\f10e'); 29 | } 30 | 31 | p, div { 32 | text-align: center; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /assets/css/_common/scaffolding/tags/group-pictures.scss: -------------------------------------------------------------------------------- 1 | .group-picture { 2 | margin-bottom: 20px; 3 | 4 | .group-picture-row { 5 | display: flex; 6 | gap: 3px; 7 | margin-bottom: 3px; 8 | } 9 | 10 | .group-picture-column { 11 | flex: 1; 12 | 13 | img { 14 | height: 100%; 15 | margin: 0; 16 | object-fit: cover; 17 | width: 100%; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /assets/css/_common/scaffolding/tags/index.scss: -------------------------------------------------------------------------------- 1 | @import 'blockquote-center'; 2 | @import 'group-pictures'; 3 | @import 'label'; 4 | @import 'link-grid'; 5 | @import 'note'; 6 | @import 'pdf'; 7 | @import 'tabs'; 8 | @import 'bilibili' 9 | -------------------------------------------------------------------------------- /assets/css/_common/scaffolding/tags/label.scss: -------------------------------------------------------------------------------- 1 | //@use 'sass:map'; 2 | 3 | .post-body .label { 4 | color: $text-color; 5 | padding: 0 2px; 6 | 7 | @each $type in $note-types { 8 | &.#{$type} { 9 | background: map-get($label, $type); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/css/_common/scaffolding/tags/pdf.scss: -------------------------------------------------------------------------------- 1 | @if $pdf_enable { 2 | .pdfobject-container { 3 | iframe, embed { 4 | height: $pdf_height; 5 | width: 100%; 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /assets/css/_common/scaffolding/toggles.scss: -------------------------------------------------------------------------------- 1 | .toggle { 2 | line-height: 0; 3 | 4 | .toggle-line { 5 | background: white; 6 | display: block; 7 | height: 2px; 8 | left: 0; 9 | position: relative; 10 | top: 0; 11 | transition: all .4s; 12 | width: 100%; 13 | 14 | &:not(:first-child) { 15 | margin-top: 3px; 16 | } 17 | } 18 | } 19 | 20 | .toggle.toggle-arrow { 21 | @include toggle-arrow($sidebar_position); 22 | } 23 | 24 | .toggle.toggle-close { 25 | @include toggle-close($sidebar_position); 26 | } 27 | -------------------------------------------------------------------------------- /assets/css/_schemes/Mist/_header.scss: -------------------------------------------------------------------------------- 1 | // Header 2 | // -------------------------------------------------- 3 | .header-inner { 4 | align-items: center; 5 | display: flex; 6 | padding: 20px 0; 7 | 8 | @include mobile() { 9 | display: block; 10 | padding: 10px 0; 11 | } 12 | } 13 | 14 | .site-meta { 15 | line-height: normal; 16 | 17 | .brand { 18 | padding: 2px 1px; 19 | 20 | @include mobile() { 21 | display: block; 22 | } 23 | } 24 | 25 | .site-title { 26 | font-weight: bolder; 27 | } 28 | } 29 | 30 | .logo-line { 31 | background: var(--brand-color); 32 | display: block; 33 | height: 2px; 34 | margin: 0 auto; 35 | width: 75%; 36 | 37 | @include mobile() { 38 | display: none; 39 | } 40 | } 41 | 42 | .use-motion { 43 | .logo-line:first-of-type { 44 | transform: scaleX(0); 45 | transform-origin: left; 46 | } 47 | 48 | .logo-line:last-of-type { 49 | transform: scaleX(0); 50 | transform-origin: right; 51 | } 52 | } 53 | 54 | .site-subtitle { 55 | display: none; 56 | } 57 | -------------------------------------------------------------------------------- /assets/css/_schemes/Mist/_layout.scss: -------------------------------------------------------------------------------- 1 | // Tags 2 | // -------------------------------------------------- 3 | hr { 4 | height: 2px; 5 | margin: 20px 0; 6 | } 7 | 8 | // Components 9 | // -------------------------------------------------- 10 | .btn { 11 | padding: 0 10px; 12 | } 13 | 14 | .headband { 15 | display: none; 16 | } 17 | 18 | // Pagination 19 | // -------------------------------------------------- 20 | .pagination { 21 | text-align: left; 22 | 23 | @include mobile() { 24 | margin: 80px 0 0; 25 | text-align: center; 26 | } 27 | } 28 | 29 | // Footer 30 | // -------------------------------------------------- 31 | .footer { 32 | background: var(--content-bg-color); 33 | color: var(--text-color); 34 | padding: 10px 0; 35 | } 36 | 37 | .footer-inner { 38 | text-align: left; 39 | 40 | @include mobile() { 41 | text-align: center; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /assets/css/_schemes/Mist/_menu.scss: -------------------------------------------------------------------------------- 1 | // Menu 2 | // -------------------------------------------------- 3 | .site-nav { 4 | flex-grow: 1; 5 | 6 | @include mobile() { 7 | padding: 0 10px 0; 8 | } 9 | } 10 | 11 | .main-menu { 12 | @include mobile() { 13 | padding-top: 10px; 14 | } 15 | } 16 | 17 | .menu { 18 | padding: 0; 19 | 20 | .menu-item { 21 | margin: 0; 22 | 23 | @include mobile() { 24 | margin-top: 5px; 25 | } 26 | 27 | a { 28 | border-radius: 2px; 29 | padding: 0 10px; 30 | transition-property: background; 31 | 32 | @include mobile() { 33 | text-align: left; 34 | } 35 | } 36 | 37 | // a + ul { 38 | // top: calc(30% + 5px); 39 | // } 40 | 41 | .badge { 42 | background: white; 43 | border-radius: 10px; 44 | color: $black-light; 45 | padding: 1px 4px; 46 | text-shadow: 1px 1px 0 rgba(0, 0, 0, .1); 47 | } 48 | 49 | .menu-item-shrink-icon { 50 | margin-left: 5px; 51 | } 52 | } 53 | } 54 | 55 | .menu-children { 56 | display: none; 57 | transition: transform 1s ease-in-out; 58 | transform: translateY(-100%); 59 | // position: absolute; 60 | // z-index: 999; 61 | 62 | &.expand { 63 | display: block; 64 | max-height: 400px; 65 | transition: transform 1.5s ease-in; 66 | transform: translateY(-100%); 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /assets/css/_schemes/Mist/_posts-expand.scss: -------------------------------------------------------------------------------- 1 | // Post Expand 2 | // -------------------------------------------------- 3 | .posts-expand { 4 | &.index { 5 | .post-header { 6 | text-align: left; 7 | 8 | @include mobile() { 9 | text-align: center; 10 | } 11 | } 12 | 13 | .post-meta-container { 14 | margin-top: 5px; 15 | } 16 | 17 | .post-meta { 18 | justify-content: flex-start; 19 | 20 | @include mobile() { 21 | justify-content: center; 22 | } 23 | } 24 | } 25 | 26 | .post-eof { 27 | display: none; 28 | } 29 | 30 | .post-block:not(:first-of-type) { 31 | margin-top: 120px; 32 | } 33 | 34 | .post-header { 35 | margin-bottom: 20px; 36 | } 37 | 38 | .post-tags { 39 | text-align: left; 40 | 41 | a { 42 | background: var(--content-bg-color); 43 | border-bottom: 0; 44 | padding: 1px 5px; 45 | 46 | &:hover { 47 | background: var(--menu-item-bg-color); 48 | } 49 | } 50 | } 51 | 52 | .post-nav { 53 | margin-top: 40px; 54 | } 55 | } 56 | 57 | .post-button { 58 | margin-top: 20px; 59 | text-align: left; 60 | 61 | .btn { 62 | background: none; 63 | border: 0; 64 | border-bottom: 2px solid var(--btn-default-border-color); 65 | padding: 0; 66 | transition-property: border; 67 | 68 | &:hover { 69 | border-bottom-color: var(--btn-default-hover-border-color); 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /assets/css/_schemes/Mist/index.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Mist scheme 3 | // ================================================== 4 | @import '_layout'; 5 | @import '_header'; 6 | @import '_menu'; 7 | @import '_posts-expand'; 8 | @import '../Muse/_layout'; 9 | @import '../Muse/_sidebar'; 10 | @import '../Muse/_sub-menu'; 11 | -------------------------------------------------------------------------------- /assets/css/_schemes/Muse/_header.scss: -------------------------------------------------------------------------------- 1 | .custom-logo-image { 2 | background: white; 3 | margin: 0 auto 10px; 4 | max-width: 150px; 5 | padding: 5px; 6 | } 7 | 8 | .brand { 9 | background: var(--btn-default-bg); 10 | } 11 | 12 | .header-inner { 13 | padding-top: 100px; 14 | 15 | @include mobile() { 16 | padding-top: 50px; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /assets/css/_schemes/Muse/_layout.scss: -------------------------------------------------------------------------------- 1 | .main-inner { 2 | @include main-container(); 3 | 4 | @include mobile() { 5 | padding-left: 20px; 6 | padding-right: 20px; 7 | } 8 | } 9 | 10 | .header-inner, .main-inner, .footer-inner { 11 | @include mobile() { 12 | width: auto; 13 | } 14 | } 15 | 16 | // Page - Container 17 | // -------------------------------------------------- 18 | .main-inner { 19 | padding-bottom: $content-padding-bottom; 20 | } 21 | 22 | .post-block:first-of-type { 23 | padding-top: $posts-first-padding; 24 | 25 | @include mobile() { 26 | padding-top: $posts-first-padding-mobile; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /assets/css/_schemes/Muse/_menu.scss: -------------------------------------------------------------------------------- 1 | .site-nav { 2 | @include mobile() { 3 | padding-top: 30px; 4 | } 5 | } 6 | 7 | .main-menu { 8 | @include mobile() { 9 | border-bottom: 1px solid $grey-lighter; 10 | border-top: 1px solid $grey-lighter; 11 | } 12 | } 13 | 14 | .menu { 15 | @include mobile() { 16 | text-align: left; 17 | } 18 | } 19 | 20 | .menu .menu-item { 21 | @include mobile() { 22 | margin: 0 10px; 23 | } 24 | 25 | a { 26 | border-bottom: 1px solid transparent; 27 | 28 | @include mobile() { 29 | padding: 5px 10px; 30 | } 31 | 32 | &:hover, &.menu-item-active { 33 | background: transparent; 34 | border-bottom: 1px solid var(--link-hover-color); 35 | 36 | @include mobile() { 37 | border-bottom: 1px dotted $grey-lighter; 38 | } 39 | } 40 | } 41 | 42 | .fa, .fab, .far, .fas { 43 | @include tablet-desktop() { 44 | display: block; 45 | line-height: 2; 46 | margin-right: 0; 47 | width: 100%; 48 | } 49 | } 50 | 51 | .badge { 52 | background: $gainsboro; 53 | color: $black-light; 54 | padding: 1px 4px; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /assets/css/_schemes/Muse/_sidebar.scss: -------------------------------------------------------------------------------- 1 | @if $sidebar_position == 'right' { 2 | .sidebar-active { 3 | @include desktop() { 4 | padding-right: $sidebar-desktop; 5 | } 6 | } 7 | 8 | .sidebar { 9 | right: 0 - $sidebar-desktop; 10 | 11 | .sidebar-active & { 12 | right: 0; 13 | } 14 | } 15 | } @else { 16 | .sidebar-active { 17 | @include desktop() { 18 | padding-left: $sidebar-desktop; 19 | } 20 | } 21 | 22 | .sidebar { 23 | left: 0 - $sidebar-desktop; 24 | 25 | .sidebar-active & { 26 | left: 0; 27 | } 28 | } 29 | } 30 | 31 | .sidebar { 32 | background: $black-deep; 33 | bottom: 0; 34 | @if not $back2top_sidebar { 35 | box-shadow: inset 0 2px 6px black; 36 | } 37 | position: fixed; 38 | top: 0; 39 | transition: all $transition-ease-out; 40 | width: $sidebar-desktop; 41 | z-index: $zindex-2; 42 | 43 | a { 44 | border-bottom-color: $black-light; 45 | color: $grey-dark; 46 | 47 | &:hover { 48 | border-bottom-color: $gainsboro; 49 | color: $gainsboro; 50 | } 51 | } 52 | } 53 | 54 | .links-of-author, .links-of-social { 55 | &:not(:first-child) { 56 | margin-top: 15px; 57 | } 58 | 59 | a { 60 | border-bottom-color: $black-light; 61 | display: inline-block; 62 | margin-bottom: 10px; 63 | margin-right: 10px; 64 | vertical-align: middle; 65 | 66 | @if $social_icons_transition { 67 | transition: all $transition-ease; 68 | } 69 | 70 | &::before { 71 | background: rgb(random(255), random(255), random(255)); 72 | display: inline-block; 73 | margin-right: 3px; 74 | transform: translateY(-2px); 75 | @include round-icon(4px); 76 | } 77 | } 78 | } 79 | 80 | .links-of-blogroll-item { 81 | @if $links_settings_layout == 'inline' { 82 | display: inline-block; 83 | } 84 | padding: 2px 10px; 85 | 86 | a { 87 | box-sizing: border-box; 88 | display: inline-block; 89 | max-width: 280px; 90 | overflow: hidden; 91 | text-overflow: ellipsis; 92 | white-space: nowrap; 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /assets/css/_schemes/Muse/_sub-menu.scss: -------------------------------------------------------------------------------- 1 | .sub-menu { 2 | margin: 10px 0; 3 | 4 | .menu-item { 5 | display: inline-block; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /assets/css/_schemes/Muse/index.scss: -------------------------------------------------------------------------------- 1 | @import '_layout'; 2 | @import '_header'; 3 | @import '_menu'; 4 | @import '_sub-menu'; 5 | @import '_sidebar'; 6 | -------------------------------------------------------------------------------- /assets/css/_schemes/Pisces/_header.scss: -------------------------------------------------------------------------------- 1 | .site-brand-container { 2 | background: var(--theme-color); 3 | 4 | .site-nav-on & { 5 | @include tablet-mobile() { 6 | box-shadow: 0 0 16px rgba(0, 0, 0, .5); 7 | } 8 | } 9 | } 10 | 11 | .site-meta { 12 | padding: 20px 0; 13 | } 14 | 15 | .brand { 16 | padding: 0; 17 | } 18 | 19 | .site-subtitle { 20 | margin: 10px 10px 0; 21 | } 22 | 23 | .site-nav-toggle, .site-nav-right { 24 | @include tablet() { 25 | @include flex-column(); 26 | } 27 | 28 | .toggle { 29 | color: white; 30 | 31 | .toggle-line { 32 | background: white; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /assets/css/_schemes/Pisces/_layout.scss: -------------------------------------------------------------------------------- 1 | .header-inner { 2 | background: var(--content-bg-color); 3 | border-radius: $border-radius-inner; 4 | box-shadow: $box-shadow-inner; 5 | width: $sidebar-desktop; 6 | 7 | @include tablet-mobile() { 8 | border-radius: initial; 9 | width: auto; 10 | } 11 | } 12 | 13 | .main { 14 | // Make sure that .header and .main-inner are the same height 15 | // Required for .sidebar `position: sticky;` 16 | align-items: stretch; 17 | display: flex; 18 | justify-content: space-between; 19 | @include main-container(); 20 | 21 | @if $sidebar_position == 'right' { 22 | flex-direction: row-reverse; 23 | } 24 | 25 | @include tablet-mobile() { 26 | display: block; 27 | width: auto; 28 | } 29 | } 30 | 31 | .main-inner { 32 | border-radius: $border-radius-inner; 33 | box-sizing: border-box; 34 | width: $content-wrap; 35 | 36 | @include tablet-mobile() { 37 | border-radius: initial; 38 | width: 100%; 39 | } 40 | } 41 | 42 | .footer-inner { 43 | @if $sidebar_position == 'right' { 44 | padding-right: $sidebar-desktop + $sidebar-offset; 45 | } @else { 46 | padding-left: $sidebar-desktop + $sidebar-offset; 47 | } 48 | 49 | @include tablet-mobile() { 50 | padding-left: 0; 51 | padding-right: 0; 52 | width: auto; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /assets/css/_schemes/Pisces/_menu.scss: -------------------------------------------------------------------------------- 1 | .site-nav { 2 | @include tablet() { 3 | @include site-nav-hide-by-default(); 4 | } 5 | } 6 | 7 | .menu .menu-item { 8 | display: block; 9 | margin: 0; 10 | 11 | a { 12 | padding: 5px 20px; 13 | position: relative; 14 | text-align: left; 15 | transition-property: background-color; 16 | } 17 | 18 | @include tablet-mobile() { 19 | &.menu-item-search { 20 | display: none; 21 | } 22 | } 23 | 24 | .badge { 25 | background: $grey-light; 26 | border-radius: 10px; 27 | color: var(--content-bg-color); 28 | float: right; 29 | padding: 2px 5px; 30 | text-shadow: 1px 1px 0 rgba(0, 0, 0, .1); 31 | } 32 | } 33 | 34 | @if not $menu_settings_badges { 35 | .main-menu .menu-item-active::after { 36 | background: $grey; 37 | border-radius: 50%; 38 | content: ' '; 39 | height: 6px; 40 | margin-top: -3px; 41 | position: absolute; 42 | right: 15px; 43 | top: 50%; 44 | width: 6px; 45 | } 46 | } -------------------------------------------------------------------------------- /assets/css/_schemes/Pisces/_sidebar.scss: -------------------------------------------------------------------------------- 1 | .sidebar { 2 | margin-top: $sidebar-offset; 3 | // https://caniuse.com/css-sticky 4 | position: -webkit-sticky; 5 | position: sticky; 6 | top: $sidebar-offset; 7 | width: $sidebar-desktop; 8 | 9 | @include tablet-mobile() { 10 | display: none; 11 | } 12 | 13 | @if $motion_enable and $motion_transition_sidebar { 14 | visibility: hidden; 15 | } 16 | } 17 | 18 | .sidebar-toggle { 19 | display: none; 20 | } 21 | 22 | .sidebar-inner { 23 | background: var(--content-bg-color); 24 | border-radius: $border-radius; 25 | box-shadow: $box-shadow; 26 | box-sizing: border-box; 27 | color: var(--text-color); 28 | } 29 | 30 | .site-state-item { 31 | padding: 0 10px; 32 | } 33 | 34 | .sidebar .sidebar-button { 35 | border-bottom: 1px dotted $grey-light; 36 | border-top: 1px dotted $grey-light; 37 | 38 | button { 39 | border: 0; 40 | color: $orange; 41 | display: block; 42 | width: 100%; 43 | 44 | &:hover { 45 | background: none; 46 | border: 0; 47 | color: darken($orange, 20%); 48 | } 49 | } 50 | } 51 | 52 | .links-of-author, .links-of-social { 53 | @include flex-wrap(); 54 | } 55 | 56 | .links-of-author-item, .links-of-social-item { 57 | @include sidebar-inline-links-item(); 58 | 59 | @if not $social_icons_only { 60 | width: 50%; 61 | } 62 | 63 | a { 64 | border-bottom: 0; 65 | border-radius: 4px; 66 | display: block; 67 | 68 | &:hover { 69 | background: var(--body-bg-color); 70 | } 71 | } 72 | } 73 | 74 | .links-of-blogroll-item { 75 | @if $links_settings_layout == 'inline' { 76 | display: inline-block; 77 | max-width: 100%; 78 | margin: 5px; 79 | } 80 | } 81 | 82 | @if $back2top_sidebar { 83 | // Only when back2top.sidebar is true, apply the following styles 84 | .back-to-top { 85 | background: var(--body-bg-color); 86 | margin: 8px -#{$sidebar-offset} -10px -18px; 87 | 88 | &.back-to-top-on { 89 | margin-top: 16px; 90 | } 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /assets/css/_schemes/Pisces/_sub-menu.scss: -------------------------------------------------------------------------------- 1 | .sub-menu { 2 | margin: 0; 3 | padding: 6px 0; 4 | 5 | .menu-item { 6 | display: inline-block; 7 | 8 | a { 9 | background: transparent; 10 | margin: 5px 10px; 11 | padding: initial; 12 | 13 | &:hover { 14 | background: transparent; 15 | color: $sidebar-highlight; 16 | } 17 | } 18 | } 19 | 20 | .menu-item-active { 21 | border-bottom-color: $sidebar-highlight; 22 | color: $sidebar-highlight; 23 | 24 | &:hover { 25 | border-bottom-color: $sidebar-highlight; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /assets/css/_schemes/Pisces/index.scss: -------------------------------------------------------------------------------- 1 | @import '_layout'; 2 | @import '_header'; 3 | @import '_menu'; 4 | @import '_sub-menu'; 5 | @import '_sidebar'; 6 | 7 | .main-inner { 8 | background: var(--content-bg-color); 9 | box-shadow: $box-shadow-inner; 10 | padding: $content-desktop-padding; 11 | 12 | @include tablet-mobile() { 13 | padding: 20px; 14 | } 15 | } 16 | 17 | // Sub-menu(s). 18 | .sub-menu { 19 | border-bottom: 1px solid $table-border-color; 20 | } 21 | 22 | .post-block:first-of-type { 23 | padding-top: 40px; 24 | } 25 | 26 | .pagination { 27 | @include mobile() { 28 | margin-bottom: 10px; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /assets/css/_variables/Gemini.scss: -------------------------------------------------------------------------------- 1 | // Variables of Gemini scheme 2 | // ================================================== 3 | 4 | @import 'Pisces'; 5 | 6 | // Settings for some of the most global styles. 7 | // -------------------------------------------------- 8 | $body-bg-color : #eee; 9 | 10 | // Borders. 11 | // -------------------------------------------------- 12 | $box-shadow-inner : 0 2px 2px 0 rgba(0, 0, 0, .12), 0 3px 1px -2px rgba(0, 0, 0, .06), 0 1px 5px 0 rgba(0, 0, 0, .12); 13 | $box-shadow : 0 2px 2px 0 rgba(0, 0, 0, .12), 0 3px 1px -2px rgba(0, 0, 0, .06), 0 1px 5px 0 rgba(0, 0, 0, .12), 0 -1px .5px 0 rgba(0, 0, 0, .09); 14 | 15 | $border-radius-inner : initial; 16 | $border-radius : initial; 17 | // $border-radius-inner : 0 0 3px 3px; 18 | // $border-radius : 3px; 19 | -------------------------------------------------------------------------------- /assets/css/_variables/Mist.scss: -------------------------------------------------------------------------------- 1 | // Variables of Mist scheme 2 | // ================================================== 3 | 4 | @import 'Muse'; 5 | 6 | $content-padding-bottom : 80px; 7 | $posts-first-padding : 80px; 8 | $posts-first-padding-mobile : 60px; 9 | 10 | $link-decoration-color : $grey-light; 11 | $content-bg-color : $whitesmoke; 12 | $menu-item-bg-color : $grey-lighter; 13 | 14 | $head-bg : var(--content-bg-color); 15 | $brand-color : $black-deep; 16 | $brand-hover-color : $brand-color; 17 | 18 | $posts-collapse-left : 0; 19 | 20 | $btn-default-bg : transparent; 21 | $btn-default-color : var(--link-color); 22 | $btn-default-hover-bg : transparent; 23 | $btn-default-border-color : var(--link-color); 24 | $btn-default-hover-color : var(--link-hover-color); 25 | $btn-default-hover-border-color : var(--link-hover-color); 26 | -------------------------------------------------------------------------------- /assets/css/_variables/Muse.scss: -------------------------------------------------------------------------------- 1 | // Variables of Muse scheme 2 | // ================================================== 3 | 4 | $sidebar-width : if(type-of($sidebar_width) == number, $sidebar_width, 320); 5 | $sidebar-desktop : $sidebar-width * 1px; 6 | 7 | $content-padding-bottom : 60px; 8 | $posts-first-padding : 70px; 9 | $posts-first-padding-mobile : 35px; 10 | -------------------------------------------------------------------------------- /assets/css/noscript.scss: -------------------------------------------------------------------------------- 1 | body { margin-top: 2rem; } 2 | 3 | .use-motion .menu-item, 4 | .use-motion .sidebar, 5 | .use-motion .post-block, 6 | .use-motion .flinks-block, 7 | .use-motion .pagination, 8 | .use-motion .comments, 9 | .use-motion .post-header, 10 | .use-motion .flinks-header, 11 | .use-motion .post-body, 12 | .use-motion .flinks-body, 13 | .use-motion .collection-header { 14 | visibility: visible; 15 | } 16 | 17 | .use-motion header.header, 18 | .use-motion .site-brand-container .toggle, 19 | .use-motion .footer { opacity: initial; } 20 | 21 | .use-motion .site-title, 22 | .use-motion .site-subtitle, 23 | .use-motion .custom-logo-image { 24 | opacity: initial; 25 | top: initial; 26 | } 27 | 28 | .use-motion .logo-line { 29 | transform: scaleX(1); 30 | } 31 | 32 | .search-pop-overlay, .sidebar-nav { display: none; } 33 | .sidebar-panel { display: block; } 34 | -------------------------------------------------------------------------------- /assets/js/3rd/comments/artalk.js: -------------------------------------------------------------------------------- 1 | /* Artalk comment plugin */ 2 | NexT.plugins.comments.artalk = function() { 3 | const element = '.artalk-container'; 4 | if (!NexT.CONFIG.artalk 5 | || !NexT.utils.checkDOMExist(element)) return; 6 | 7 | const artalk_js = NexT.utils.getCDNResource(NexT.CONFIG.artalk.js); 8 | const { 9 | site, 10 | placeholder, 11 | server, 12 | } = NexT.CONFIG.artalk.cfg; 13 | 14 | NexT.utils.lazyLoadComponent(element, function() { 15 | NexT.utils.getScript(artalk_js, function(){ 16 | const artalk_css = NexT.utils.getCDNResource(NexT.CONFIG.artalk.css); 17 | NexT.utils.getStyle(artalk_css); 18 | 19 | new Artalk({ 20 | el : element, 21 | pageKey : NexT.CONFIG.permalink, 22 | pageTitle : NexT.CONFIG.title, 23 | server : server, 24 | site : site, 25 | locale : NexT.CONFIG.lang, 26 | placeholder : placeholder, 27 | darkMode : 'auto' 28 | }); 29 | }); 30 | 31 | NexT.utils.hiddeLodingCmp(element); 32 | }); 33 | } -------------------------------------------------------------------------------- /assets/js/3rd/comments/giscus.js: -------------------------------------------------------------------------------- 1 | /* Giscus comment plugin */ 2 | NexT.plugins.comments.giscus = function() { 3 | const element = '.giscus-container'; 4 | if (!NexT.CONFIG.page.comments 5 | || !NexT.CONFIG.giscus 6 | || !NexT.utils.checkDOMExist(element)) return; 7 | 8 | const { 9 | category, 10 | categoryid, 11 | emit, 12 | inputposition, 13 | mapping, 14 | reactions, 15 | repo, 16 | repoid, 17 | theme } = NexT.CONFIG.giscus.cfg; 18 | 19 | 20 | NexT.utils.lazyLoadComponent(element, function() { 21 | NexT.utils.getScript(NexT.CONFIG.giscus.js, { 22 | attributes: { 23 | 'async' : true, 24 | 'crossorigin' : 'anonymous', 25 | 'data-repo' : repo, 26 | 'data-repo-id' : repoid, 27 | 'data-category' : category, 28 | 'data-category-id' : categoryid, 29 | 'data-mapping' : mapping, 30 | 'data-reactions-enabled' : reactions ? 1:0, 31 | 'data-emit-metadata' : emit ? 1:0, 32 | 'data-input-position' : inputposition, 33 | 'data-theme' : theme, 34 | 'data-lang' : NexT.CONFIG.lang, 35 | 'data-loading' : 'lazy' 36 | }, 37 | parentNode: document.querySelector(element) 38 | }); 39 | 40 | NexT.utils.hiddeLodingCmp(element); 41 | }); 42 | } -------------------------------------------------------------------------------- /assets/js/3rd/comments/livere.js: -------------------------------------------------------------------------------- 1 | /* LiveRe comment plugin */ 2 | NexT.plugins.comments.livere = function() { 3 | const element = '#lv-container'; 4 | if (!NexT.CONFIG.livere 5 | || !NexT.utils.checkDOMExist(element)) return; 6 | 7 | NexT.utils.lazyLoadComponent(element, function() { 8 | NexT.utils.getScript(NexT.CONFIG.livere.js, { 9 | attributes: { 10 | async: true 11 | }, 12 | parentNode: document.querySelector(element) 13 | }); 14 | 15 | NexT.utils.hiddeLodingCmp(element); 16 | }); 17 | } 18 | -------------------------------------------------------------------------------- /assets/js/3rd/comments/twikoo.js: -------------------------------------------------------------------------------- 1 | /* Twikoo comment plugin */ 2 | NexT.plugins.comments.twikoo = function () { 3 | const element = '#tcomment'; 4 | if (!NexT.CONFIG.page.comments 5 | || !NexT.CONFIG.twikoo 6 | || !NexT.utils.checkDOMExist(element)) return; 7 | 8 | const twikoo_js = NexT.utils.getCDNResource(NexT.CONFIG.twikoo.js); 9 | 10 | NexT.utils.lazyLoadComponent("#twikoo", function() { 11 | NexT.utils.getScript(twikoo_js, function(){ 12 | twikoo.init({ 13 | envId: NexT.CONFIG.twikoo.cfg.envid, 14 | el: element, 15 | region: NexT.CONFIG.twikoo.cfg.region ? NexT.CONFIG.twikoo.cfg.region : 'ap-shanghai', 16 | lang: NexT.CONFIG.lang ? NexT.CONFIG.lang : 'zh-CN', 17 | }); 18 | 19 | NexT.utils.hiddeLodingCmp("#twikoo"); 20 | }); 21 | }); 22 | } -------------------------------------------------------------------------------- /assets/js/3rd/comments/utterances.js: -------------------------------------------------------------------------------- 1 | /* Utterances comment plugin */ 2 | NexT.plugins.comments.utterances = function() { 3 | const element = '.utterances-container'; 4 | if (!NexT.CONFIG.utterances 5 | || !NexT.utils.checkDOMExist(element)) return; 6 | 7 | const { 8 | repo, 9 | issueterm, 10 | label, 11 | theme } = NexT.CONFIG.utterances.cfg; 12 | 13 | NexT.utils.lazyLoadComponent(element, function() { 14 | NexT.utils.getScript(NexT.CONFIG.utterances.js, { 15 | attributes: { 16 | 'async' : true, 17 | 'crossorigin' : 'anonymous', 18 | 'repo' : repo, 19 | 'issue-term' : issueterm, 20 | 'label' : label, 21 | 'theme' : theme 22 | }, 23 | parentNode: document.querySelector(element) 24 | }); 25 | 26 | NexT.utils.hiddeLodingCmp(element); 27 | }); 28 | } 29 | -------------------------------------------------------------------------------- /assets/js/3rd/comments/waline.js: -------------------------------------------------------------------------------- 1 | /* Waline comment plugin */ 2 | NexT.plugins.comments.waline = function() { 3 | const element = '.waline-container'; 4 | if (!NexT.CONFIG.waline 5 | || !NexT.utils.checkDOMExist(element)) return; 6 | 7 | const { 8 | emoji, 9 | imguploader, 10 | placeholder, 11 | sofa, 12 | requiredmeta, 13 | serverurl, 14 | wordlimit, 15 | reaction, 16 | reactiontext, 17 | reactiontitle 18 | } = NexT.CONFIG.waline.cfg; 19 | 20 | const waline_js = NexT.utils.getCDNResource(NexT.CONFIG.waline.js); 21 | 22 | let locale = { 23 | placeholder : placeholder, 24 | sofa : sofa, 25 | reactionTitle : reactiontitle 26 | }; 27 | 28 | reactiontext.forEach(function(value, index){ 29 | locale['reaction'+index] = value; 30 | }); 31 | 32 | NexT.utils.lazyLoadComponent(element, function () { 33 | NexT.utils.getScript(waline_js, function(){ 34 | const waline_css = NexT.utils.getCDNResource(NexT.CONFIG.waline.css); 35 | NexT.utils.getStyle(waline_css, 'before'); 36 | 37 | Waline.init({ 38 | locale, 39 | el : element, 40 | emoji : emoji, 41 | imageUploader : imguploader, 42 | wordLimit : wordlimit, 43 | requiredMeta : requiredmeta, 44 | reaction : reaction, 45 | serverURL : serverurl, 46 | lang : NexT.CONFIG.lang, 47 | dark : 'html[data-theme="dark"]' 48 | }); 49 | 50 | NexT.utils.hiddeLodingCmp(element); 51 | }) 52 | }); 53 | } -------------------------------------------------------------------------------- /assets/js/3rd/comments/waline3.js: -------------------------------------------------------------------------------- 1 | /* Waline3 comment plugin */ 2 | NexT.plugins.comments.waline3 = function () { 3 | const element = '.waline3-container'; 4 | if (!NexT.CONFIG.waline3 5 | || !NexT.utils.checkDOMExist(element)) return; 6 | 7 | const { 8 | emoji, 9 | search, 10 | imguploader, 11 | placeholder, 12 | sofa, 13 | requiredmeta, 14 | serverurl, 15 | wordlimit, 16 | reaction, 17 | reactiontext, 18 | reactiontitle 19 | } = NexT.CONFIG.waline3.cfg; 20 | 21 | const waline_js = NexT.utils.getCDNResource(NexT.CONFIG.waline3.js); 22 | 23 | NexT.utils.lazyLoadComponent(element, () => { 24 | 25 | const waline_css = NexT.utils.getCDNResource(NexT.CONFIG.waline3.css); 26 | NexT.utils.getStyle(waline_css, 'before'); 27 | 28 | let waline_script = ` 29 | let locale = { 30 | placeholder : '${placeholder}', 31 | sofa : '${sofa}', 32 | reactionTitle : '${reactiontitle}' 33 | }; 34 | 35 | let recatt = ${JSON.stringify(reactiontext)} 36 | recatt.forEach(function(value, index){ 37 | locale['reaction'+index] = value; 38 | }); 39 | 40 | import('${waline_js}').then((Waline) => { 41 | Waline.init({ 42 | locale, 43 | el : '${element}', 44 | emoji : ${emoji}, 45 | search : ${search}, 46 | imageUploader : ${imguploader}, 47 | wordLimit : ${wordlimit}, 48 | requiredMeta : ${JSON.stringify(requiredmeta)}, 49 | reaction : ${reaction}, 50 | serverURL : '${serverurl}', 51 | dark : 'html[data-theme="dark"]' 52 | }); 53 | 54 | NexT.utils.hiddeLodingCmp('${element}'); 55 | }); 56 | `; 57 | 58 | NexT.utils.getScript(null, { module: true, textContent: waline_script }); 59 | }); 60 | } -------------------------------------------------------------------------------- /assets/js/3rd/others/lawidget.js: -------------------------------------------------------------------------------- 1 | /* 51La sidebar data widget */ 2 | NexT.plugins.others.lawidget = function() { 3 | 4 | if (!NexT.CONFIG.lawidget ) { 5 | return; 6 | } 7 | 8 | const element = '#siteinfo-card-widget'; 9 | const lawt_js = NexT.CONFIG.lawidget.js.replace('laId', NexT.CONFIG.lawidget.id); 10 | 11 | NexT.utils.lazyLoadComponent(element, function () { 12 | NexT.utils.getScript(lawt_js,{ 13 | attributes: { 14 | id: 'LA-DATA-WIDGET', 15 | crossorigin: 'anonymous', 16 | charset: 'UTF-8', 17 | defer: true 18 | }, 19 | parentNode: document.getElementById('la-siteinfo-widget') 20 | }, NexT.utils.fmtLaWidget()); 21 | }); 22 | } -------------------------------------------------------------------------------- /assets/js/3rd/others/math.js: -------------------------------------------------------------------------------- 1 | /* Math render plugin */ 2 | NexT.plugins.others.math = function() { 3 | const render = NexT.CONFIG.page.math.render; 4 | 5 | if (render === 'mathjax') { 6 | const render_js = NexT.utils.getCDNResource(NexT.CONFIG.page.math.js); 7 | const mathjaxCfg = ` 8 | window.MathJax = { 9 | // 自定义内联数学公式的分隔符号 10 | tex: { 11 | inlineMath: [['$', '$'], ['\\(', '\\)']] 12 | }, 13 | // SVG 渲染配置为全局共享字体缓存 14 | svg: { 15 | fontCache: 'global' 16 | }, 17 | // 排除特定的HTML标签,避免过度渲染 18 | options: { 19 | skipHtmlTags: ["script", "noscript", "style", "textarea", "pre", "footer"], 20 | } 21 | }; 22 | `; 23 | NexT.utils.getScript(null, { textContent: mathjaxCfg }); 24 | NexT.utils.getScript(render_js, { attributes: { id: "MathJax-script", "async": true }}); 25 | } 26 | 27 | if (render === 'katex') { 28 | const render_css = NexT.utils.getCDNResource(NexT.CONFIG.page.math.css); 29 | NexT.utils.getStyle(render_css); 30 | const render_js_list = NexT.CONFIG.page.math.js; 31 | render_js_list.forEach(js => { 32 | const js_loader = NexT.utils.getScript(NexT.utils.getCDNResource(js)); 33 | if(js.name === 'auto-render') { 34 | js_loader.then(function(){ 35 | renderMathInElement(document.body, { 36 | delimiters: [ 37 | {left: '$$', right: '$$', display: true}, 38 | {left: '$', right: '$', display: false}, 39 | {left: '\\(', right: '\\)', display: false}, 40 | {left: '\\[', right: '\\]', display: true} 41 | ], 42 | 43 | throwOnError : false 44 | }) 45 | }); 46 | } 47 | }); 48 | } 49 | } -------------------------------------------------------------------------------- /assets/js/3rd/others/mermaid.js: -------------------------------------------------------------------------------- 1 | /* Mermaid plugin */ 2 | NexT.plugins.others.mermaid = function() { 3 | const mermaid_js = NexT.utils.getCDNResource(NexT.CONFIG.page.mermaid.js); 4 | 5 | NexT.utils.getScript(mermaid_js, function(){ 6 | mermaid.initialize({ 7 | sequence: { 8 | showSequenceNumbers: true, 9 | actorMargin: 50, 10 | diagramMarginX:10, 11 | diagramMarginY:10 12 | } 13 | }); 14 | }); 15 | } -------------------------------------------------------------------------------- /assets/js/3rd/share/addtoany.js: -------------------------------------------------------------------------------- 1 | /* Addtoany share plugin */ 2 | NexT.plugins.share.addtoany = function() { 3 | const element = '.a2a_kit'; 4 | if (!NexT.CONFIG.share.enable || !NexT.utils.checkDOMExist(element)) return; 5 | 6 | const addtoany = NexT.CONFIG.share.addtoany; 7 | 8 | if (!addtoany) return; 9 | 10 | NexT.utils.lazyLoadComponent(element, function() { 11 | let addtoany_cfg = ` 12 | var a2a_config = a2a_config || {}; 13 | a2a_config.onclick = 1; 14 | a2a_config.locale = "${addtoany.locale}"; 15 | a2a_config.num_services = ${addtoany.num}; 16 | `; 17 | 18 | NexT.utils.getScript(null, { 19 | textContent: addtoany_cfg 20 | }); 21 | 22 | NexT.utils.getScript(addtoany.js, () => { NexT.utils.hiddeLodingCmp(element); }); 23 | }); 24 | } -------------------------------------------------------------------------------- /assets/js/3rd/share/sharethis.js: -------------------------------------------------------------------------------- 1 | /* Sharethis share plugin */ 2 | NexT.plugins.share.sharethis = function() { 3 | const element = '.sharethis-inline-share-buttons'; 4 | if (!NexT.CONFIG.share.enable || !NexT.utils.checkDOMExist(element)) return; 5 | 6 | const sharethis = NexT.CONFIG.share.sharethis; 7 | 8 | if (!sharethis) return; 9 | 10 | const sharethis_js = sharethis.js.replace(/id/, sharethis.id); 11 | 12 | NexT.utils.lazyLoadComponent(element, function() { 13 | NexT.utils.getScript(sharethis_js, { 14 | attributes: { 15 | async: 'async' 16 | } 17 | }); 18 | 19 | NexT.utils.hiddeLodingCmp(element); 20 | }); 21 | } -------------------------------------------------------------------------------- /assets/js/bookmark.js: -------------------------------------------------------------------------------- 1 | /* global CONFIG */ 2 | 3 | document.addEventListener('DOMContentLoaded', () => { 4 | 'use strict'; 5 | 6 | const doSaveScroll = () => { 7 | localStorage.setItem('bookmark' + location.pathname, window.scrollY); 8 | }; 9 | 10 | const scrollToMark = () => { 11 | let top = localStorage.getItem('bookmark' + location.pathname); 12 | top = parseInt(top, 10); 13 | // If the page opens with a specific hash, just jump out 14 | if (!isNaN(top) && location.hash === '') { 15 | // Auto scroll to the position 16 | window.anime({ 17 | targets : document.scrollingElement, 18 | duration : 200, 19 | easing : 'linear', 20 | scrollTop: top 21 | }); 22 | } 23 | }; 24 | // Register everything 25 | const init = function(trigger) { 26 | // Create a link element 27 | const link = document.querySelector('.book-mark-link'); 28 | // Scroll event 29 | window.addEventListener('scroll', () => link.classList.toggle('book-mark-link-fixed', window.scrollY === 0), { passive: true }); 30 | // Register beforeunload event when the trigger is auto 31 | if (trigger === 'auto') { 32 | // Register beforeunload event 33 | window.addEventListener('beforeunload', doSaveScroll); 34 | document.addEventListener('pjax:send', doSaveScroll); 35 | } 36 | // Save the position by clicking the icon 37 | link.addEventListener('click', () => { 38 | doSaveScroll(); 39 | window.anime({ 40 | targets : link, 41 | duration: 200, 42 | easing : 'linear', 43 | top : -30, 44 | complete: () => { 45 | setTimeout(() => { 46 | link.style.top = ''; 47 | }, 400); 48 | } 49 | }); 50 | }); 51 | scrollToMark(); 52 | document.addEventListener('pjax:success', scrollToMark); 53 | }; 54 | 55 | init(NexT.CONFIG.bookmark.save); 56 | }); 57 | -------------------------------------------------------------------------------- /assets/js/comments-buttons.js: -------------------------------------------------------------------------------- 1 | /* global CONFIG */ 2 | 3 | (function() { 4 | const commentButton = document.querySelectorAll('.comment-button'); 5 | commentButton.forEach(element => { 6 | const commentClass = element.classList[2]; 7 | element.addEventListener('click', () => { 8 | commentButton.forEach(active => active.classList.toggle('active', active === element)); 9 | document.querySelectorAll('.comment-position').forEach(active => active.classList.toggle('active', active.classList.contains(commentClass))); 10 | if (NexT.CONFIG.comments.storage) { 11 | localStorage.setItem('comments_active', commentClass); 12 | } 13 | }); 14 | }); 15 | let { activeClass } = NexT.CONFIG.comments; 16 | if (NexT.CONFIG.comments.storage) { 17 | activeClass = localStorage.getItem('comments_active') || activeClass; 18 | } 19 | if (activeClass) { 20 | const activeButton = document.querySelector(`.comment-button.${activeClass}`); 21 | if (activeButton) { 22 | activeButton.click(); 23 | } 24 | } 25 | })(); 26 | -------------------------------------------------------------------------------- /assets/js/comments.js: -------------------------------------------------------------------------------- 1 | /* global CONFIG */ 2 | 3 | window.addEventListener('tabs:register', () => { 4 | let { activeClass } = NexT.CONFIG.comments; 5 | if (NexT.CONFIG.comments.storage) { 6 | activeClass = localStorage.getItem('comments_active') || activeClass; 7 | } 8 | if (activeClass) { 9 | const activeTab = document.querySelector(`a[href="#comment-${activeClass}"]`); 10 | if (activeTab) { 11 | activeTab.click(); 12 | } 13 | } 14 | }); 15 | if (NexT.CONFIG.comments.storage) { 16 | window.addEventListener('tabs:click', event => { 17 | if (!event.target.matches('.tabs-comment .tab-content .tab-pane')) return; 18 | const commentClass = event.target.classList[1]; 19 | localStorage.setItem('comments_active', commentClass); 20 | }); 21 | } 22 | -------------------------------------------------------------------------------- /assets/js/pjax.js: -------------------------------------------------------------------------------- 1 | /* global NexT, CONFIG, Pjax */ 2 | 3 | const pjax = new Pjax({ 4 | selectors: [ 5 | 'head title', 6 | 'script[type="application/json"]', 7 | '.main-inner', 8 | '.post-toc-wrap', 9 | '.languages', 10 | '.pjax' 11 | ], 12 | analytics: false, 13 | cacheBust: false, 14 | scrollTo : !NexT.CONFIG.bookmark.enable 15 | }); 16 | 17 | document.addEventListener('pjax:success', () => { 18 | pjax.executeScripts(document.querySelectorAll('script[data-pjax]')); 19 | NexT.boot.refresh(); 20 | // Define Motion Sequence & Bootstrap Motion. 21 | if (NexT.CONFIG.motion.enable) { 22 | NexT.motion.integrator 23 | .init() 24 | .add(NexT.motion.middleWares.subMenu) 25 | .add(NexT.motion.middleWares.postList) 26 | .bootstrap(); 27 | } 28 | if (NexT.CONFIG.sidebar.display !== 'remove') { 29 | const hasTOC = document.querySelector('.post-toc'); 30 | document.querySelector('.sidebar-inner').classList.toggle('sidebar-nav-active', hasTOC); 31 | NexT.utils.activateSidebarPanel(hasTOC ? 0 : 1); 32 | NexT.utils.updateSidebarPosition(); 33 | } 34 | }); 35 | -------------------------------------------------------------------------------- /data/config.yaml: -------------------------------------------------------------------------------- 1 | # Hugo NexT theme's custom config 2 | 3 | hugoVersion: 0.146.0 4 | 5 | version: 4.8.2 6 | 7 | domain: hugo-next.eu.org 8 | -------------------------------------------------------------------------------- /exampleSite/content/about/index.en-us.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "About Hugo NexT Organization" 3 | 4 | date: 2025-01-25T18:00:52+08:00 5 | lastmod: 2025-01-25T18:00:52+08:00 6 | 7 | share: false 8 | followme: false 9 | nav: false 10 | copyright: false 11 | url: about.html 12 | --- 13 | 14 | The `Hugo NexT` organization is jointly established by numerous friends from around the world who are fond of the `NexT` theme and style. The aim is to continue promoting and enhancing this theme within the `Hugo` engine. We warmly welcome you to join us! 15 | 16 | # Our Vision 17 | 18 | Continuing the classic black-and-white color scheme of `NexT`, it maintains simple usability and powerful functionality. 19 | 20 | # Usage Feedback 21 | 22 | - Join the online discussions on [GitHub Discussions](https://github.com/hugo-next/hugo-theme-next/discussions) or [Gitter](https://gitter.im/hugo-next/community) :beers: 23 | - [GitHub Issues](https://github.com/hugo-next/hugo-theme-next/issues/new?labels=Bug&template=bug-report.md) Submit a bug report :bug: 24 | - [GitHub Feature](https://github.com/hugo-next/hugo-theme-next/issues/new?labels=Feature+Request&template=feature-request.md) to propose new feature ideas :sparkles: 25 | 26 | > [!INFO] 27 | > Chinese's users can also join the QQ group for communication: 604710815 28 | 29 | {{< music url="/music/sky.mp3" name="City of the Sky" artist="Hayao Miyazaki" cover="/music/gongqijun.jpg" autoplay="true" >}} -------------------------------------------------------------------------------- /exampleSite/content/about/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "关于 Hugo NexT 组织" 3 | 4 | date: 2022-06-09T20:12:52+08:00 5 | lastmod: 2022-06-09T20:12:52+08:00 6 | 7 | share: false 8 | followme: false 9 | nav: false 10 | copyright: false 11 | url: about.html 12 | --- 13 | 14 | `Hugo NexT` 组织是由众多喜爱 `NexT` 主题及风格的世界各地友人共同组建而成,为的就是让这个主题继续在 `Hugo` 引擎中也能得到发扬光大,在此也欢迎你的加入! 15 | 16 | # 我们的愿景 17 | 18 | 延续 `NexT` 经典的黑白调搭配,保持简单的易用性及强大的功能。 19 | 20 | # 使用反馈 21 | 22 | - 加入 [GitHub Discussions](https://github.com/hugo-next/hugo-theme-next/discussions) 或 [Gitter](https://gitter.im/hugo-next/community) 在线讨论 :beers: 23 | - [GitHub Issues](https://github.com/hugo-next/hugo-theme-next/issues/new?labels=Bug&template=bug-report.md) 提交错误报告 :bug: 24 | - [GitHub Feature](https://github.com/hugo-next/hugo-theme-next/issues/new?labels=Feature+Request&template=feature-request.md) 表新功能的想法 :sparkles: 25 | 26 | > [!INFO] 27 | > 同时国内用户也可加入 QQ 群交流: 604710815 28 | 29 | {{< music url="/music/sky.mp3" name="天空之城" artist="宫崎骏" cover="/music/gongqijun.jpg" autoplay="true" >}} -------------------------------------------------------------------------------- /exampleSite/content/archives/_index.en-us.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2025-01-25T20:46:25+08:00 3 | --- -------------------------------------------------------------------------------- /exampleSite/content/archives/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2022-07-26T21:46:25+08:00 3 | --- -------------------------------------------------------------------------------- /exampleSite/content/flinks/index.en-us.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Demo Sites" 3 | type: flinks 4 | url: flinks.html 5 | --- 6 | 7 | If you want to exchange friendly links on this site, please leave your site information in the comment section. The format reference is as follows: 8 | 9 | ```yaml 10 | - name: Hugo-NexT 11 | desc: Hugo NexT Official Site. 12 | avatar: https://hugo-next.eu.org/imgs/hugo_next_avatar.png 13 | link: https://hugo-next.eu.org 14 | ``` -------------------------------------------------------------------------------- /exampleSite/content/flinks/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "站点示例" 3 | type: flinks 4 | url: flinks.html 5 | --- 6 | 7 | 如想交换本站友情链接,请在评论区留下你的站点信息,格式参考如下: 8 | 9 | ```yaml 10 | - name: Hugo-NexT 11 | desc: Hugo NexT 官方预览网站。 12 | avatar: https://hugo-next.eu.org/imgs/hugo_next_avatar.png 13 | link: https://hugo-next.eu.org 14 | ``` -------------------------------------------------------------------------------- /exampleSite/content/post/01-hello-world/index.en-us.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Hello world" 3 | description: "Quickly describe the basic usage of Hugo website building." 4 | 5 | date: 2025-01-25T19:12:32+08:00 6 | lastmod: 2025-01-25T19:12:32+08:00 7 | 8 | categories: 9 | - StartBuilSite 10 | 11 | tags: 12 | - Hugo 13 | - Start now 14 | 15 | url: demo/hello-world.html 16 | toc: true 17 | weight: 2 18 | --- 19 | 20 | > Use the keyword `weight` to top the article. 21 | 22 | [Hugo](https://gohugo.io/), It is currently the fastest website construction framework in the world and one of the most popular open-source static site generators. With its astonishing speed and flexibility, Hugo has once again made website construction interesting. 23 | 24 | 25 | 26 | ## Quick Start 27 | 28 | ### Publish a new article 29 | 30 | ```shell 31 | $ hugo new hello-world.md 32 | ``` 33 | 34 | More information: [Content format](https://gohugo.io/content-management/formats/) 35 | 36 | ### Start service 37 | 38 | ```shell 39 | $ hugo server 40 | ``` 41 | 42 | More information: [Hugo Service Command Line](https://gohugo.io/commands/hugo_server/) 43 | 44 | ### Generate static files 45 | 46 | ```shell 47 | $ hugo 48 | ``` 49 | 50 | More information: [Hugo website building](https://gohugo.io/commands/hugo/) 51 | 52 | ### Deploy to server 53 | 54 | ```language 55 | $ hugo deploy 56 | ``` 57 | 58 | More information: [Hugo Release](https://gohugo.io/commands/hugo_deploy/) 59 | 60 | Good luck, I believe you will love Hugo's journey of building a website! -------------------------------------------------------------------------------- /exampleSite/content/post/01-hello-world/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "世界,你好!" 3 | description: "快速的描述下有关于 Hugo 建站的基本用法。" 4 | 5 | lastmod: 2022-06-03T16:43:23+08:00 6 | date: 2022-06-02T11:52:03+08:00 7 | 8 | categories: 9 | - 开始建站 10 | 11 | tags: 12 | - Hugo 13 | - 开始 14 | 15 | byAi: true 16 | url: demo/hello-world.html 17 | toc: true 18 | weight: 2 19 | --- 20 | 21 | > “使用 `weight` 关键字置顶文章。” 22 | 23 | [Hugo](https://gohugo.io/) 是现今世界上最快的网站建设框架,也是最流行的开源静态站点生成器之一。 凭借其惊人的速度和灵活性,Hugo 让建设网站再次变得有趣起来。 24 | 25 | 26 | 27 | ## 快速开始 28 | 29 | ### 发表新文章 30 | 31 | ```shell 32 | $ hugo new hello-world.md 33 | ``` 34 | 35 | 更多信息:[内容格式](https://gohugo.io/content-management/formats/) 36 | 37 | ### 启动服务 38 | 39 | ```shell 40 | $ hugo server 41 | ``` 42 | 43 | 更多信息:[Hugo 服务命令行](https://gohugo.io/commands/hugo_server/) 44 | 45 | ### 生成静态文件 46 | 47 | ```shell 48 | $ hugo 49 | ``` 50 | 51 | 更多信息:[Hugo 建站](https://gohugo.io/commands/hugo/) 52 | 53 | ### 部署到服务器 54 | 55 | ```language 56 | $ hugo deploy 57 | ``` 58 | 59 | 更多信息:[Hugo 发布](https://gohugo.io/commands/hugo_deploy/) 60 | 61 | 祝你好运,相信你会喜欢上 Hugo 建站的旅程! -------------------------------------------------------------------------------- /exampleSite/content/post/02-external-link/index.en-us.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Welcome to the Hugo NexT organization" 3 | description: "Hugo NexT is a theme specifically designed for the Hugo engine, maintaining simplicity, ease of use, and powerful functionality! " 4 | Keywords: "Hugo, NexT, organization" 5 | 6 | date: 2025-01-25T20:59:12+08:00 7 | lastmod: 2025-01-25T20:59:12+08:00 8 | 9 | categories: 10 | - Example 11 | tags: 12 | - Hugo 13 | - NexT 14 | 15 | expand: true 16 | extlink: https://gitee.com/hugo-next/hugo-theme-next/ 17 | 18 | weight: 1 19 | --- 20 | 21 | Welcome to the Hugo NexT documentation site! It is from [Theme NexT](https://theme-next.js.org/) The transplanted one is [Hugo](https://gohugo.io/) The high-quality and elegant theme created maintains its easy-to-use features and powerful functionality. 22 | 23 | 24 | 25 | ## User Guide 26 | 27 | Setting up a NexT theme is easy. Simply follow the documentation to quickly create your personal website! 28 | 29 | ## Feedback 30 | 31 | - Visit the Awesome NexT list to share plugins and tutorials with other users. 32 | - Join our Gitter chat. 33 | - Add or improve translations within seconds. 34 | - Report one in GitHub Issues :bug: . 35 | - Apply for a new feature on GitHub. 36 | - Request a vote for the most popular feature. -------------------------------------------------------------------------------- /exampleSite/content/post/02-external-link/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "欢迎加入 Hugo NexT 组织!" 3 | description: "Hugo NexT 是专门为 Hugo 引擎所打造的主题,保持简单易用和强大的功能!" 4 | keywords: "Hugo,NexT,组织" 5 | 6 | date: 2022-06-01T15:59:41+08:00 7 | lastmod: 2022-06-01T15:59:41+08:00 8 | 9 | categories: 10 | - 示例文章 11 | tags: 12 | - Hugo 13 | - NexT 14 | 15 | expand: true 16 | extlink: https://gitee.com/hugo-next/hugo-theme-next/ 17 | 18 | weight: 1 19 | --- 20 | 21 | 欢迎来到 `Hugo NexT` 文档站点! 它是从 [Theme NexT](https://theme-next.js.org/) 移植过来的为 [Hugo](https://gohugo.io/)打造的高品质优雅主题,保持简单易用的特性和强大的功能。 22 | 23 | 24 | 25 | ## 用户指南 26 | 27 | 设置 NexT 主题很容易。只需遵循文档,就可快速创建您的个人网站! 28 | 29 | ## 反馈 30 | 31 | - 访问 Awesome NexT 列表,与其他用户分享插件和教程。 32 | - 加入我们的 Gitter 聊天。 33 | - 在几秒钟内添加或改进翻译。 34 | - 在 GitHub Issues 中报告一个 :bug:。 35 | - 在 GitHub 上申请一个新特性。 36 | - 为最受欢迎的功能请求投票。 37 | 38 | -------------------------------------------------------------------------------- /exampleSite/content/post/05-table-of-content/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "文章目录导航" 3 | description: "描述下 NexT 主题下的文章目录导航效果。" 4 | keywords: "文章,目录,导航" 5 | 6 | date: 2022-06-08T21:12:52+08:00 7 | lastmod: 2022-06-08T21:12:52+08:00 8 | 9 | categories: 10 | - 示例文章 11 | tags: 12 | - 目录 13 | - 导航 14 | - 博客 15 | 16 | toc: true 17 | url: demo/table-of-content.html 18 | --- 19 | 20 | 巴顿将军说过:“衡量一个人是否成功,不是看他站到顶峰,而是从顶峰跌落之后的反弹力”,褚时健的人生便是如此,中年发家致富,名利双收,之后又跌落到谷底,等到74岁再创业,10年后带着褚橙归来,东山再起收获亿万财富,他的发展轨迹就是反弹的过程。 21 | 22 | 23 | 24 | ![禇老](https://wfqqreader-1252317822.image.myqcloud.com/cover/568/814568/t6_814568.jpg) 25 | 26 | ## 早年的故事 27 | 28 | ### 起始 29 | 30 | 2014年的春天,在云南省华宁县和宜良县的交界处,一座名叫矣则的小山村里,一处已经有上百年历史的古旧四合院宅子被拆掉。村委会正带领村民们进行“美丽乡村”的建设,一年以后,旧有村居将再也看不到,代之而起的是钢筋混凝土的新式民居。就像10年、20年前中国大小城市的改造一样,这个群山围绕的小村子也开始陷入“工地模式”。 31 | 32 | #### 童年浪花 33 | 34 | 在江河边长大的孩子几乎都有一个当仁不让的特长:善水。褚时健也不例外,他不仅从小就在南盘江和花鱼塘里扑腾出了上佳的游泳技术,五六岁已经可以一个猛子扎出老远,而且从七八岁就可以在南盘江和河滩上的鱼塘里捉鱼了。 35 | 36 | ### 少年故事 37 | 38 | 褚时健在乡村自由自在生活的十多年,其实正是中国社会风雨飘摇的十多年。特别是1937年卢沟桥事变后,日本人发动全面侵华战争,短短两三年间,中国的大部分国土相继沦陷 39 | 40 | ## 激情的青春十年 41 | 42 | ### 当上了游击队员 43 | 44 | 1948年夏天,褚时健回乡,在禄丰车站小学做了一名老师,同时也和褚时仁、褚时杰一起继续保持与共产党组织的联系,做一些传递情报的工作 45 | 46 | #### 战火纷飞 47 | 48 | 因为战斗力相较悬殊,所以游击队只能是靠打一枪换一个地方的办法,专找敌人薄弱的地方攻击,但更多时候,都是在防御和转移阵地。 49 | 50 | ### 迎来解放 51 | 52 | 1949年12月,国民党云南省主席卢汉在昆明宣布起义,云南正式拉开解放的序幕。1950年2月20日,陈赓、宋任穷、周保中率解放军第二野战军第四兵团进入昆明,24日,陈赓宣布云南全境解放。 53 | 54 | ## 生活的断层 55 | 56 | ### 跌入生活底层 57 | 58 | “反右”运动中被打倒的人在“右派”身份确定后,只有一条路可走:下放到农场。农场名副其实,就是干农活儿的地方,必须过和农民一样的生活。 59 | 60 | ## 尾声 61 | 62 | ### 岁月像一条河 63 | 64 | 2015年,是褚时健和马静芬结婚60周年,被称为“钻石婚”的纪念年份。这简直是一份人生的奖赏,在中国离婚率愈益升高的当下,60年的婚姻,几乎就像一个前世之梦。一个甲子的相伴相随,褚时健和马静芬共同经历了国家和个人的各种风浪,共同面对过生死。他们两人已经不仅是夫妻,更是一对战友。尽管马静芬偶尔会对褚时健年轻时候的粗心抱怨上两句,但说到最后,她会说一句:“没有我就没有他,没有他也就没有我。” 65 | 66 | ## 作者致谢 67 | 68 | 这本书从2014年初夏开始采访,到今天完稿,历时18个月。封面上“作者”只能是我一个人的名字,但也只有我自己知道,这本书,包含了太多人的心力和体力。我当然首先要致谢王石先生,没有他就没有这本书。我自己细想下来,没有王石先生一直的鞭策和鼓励,也没有我写作工作的今天。从2006年我开始从事专业写作工作以来,他给我创造了很多写作的机会,并且不吝自己诸多人生和学习的体会和感悟,一一传递予我。知遇之恩,感谢非常。 69 | 70 | 最后,我当然要把最大的感谢致予褚时健先生。不仅是因为他慷慨、坦率面对我的各种提问,更重要的是,在倾听他的故事的过程里,他繁盛的人生经历,他的强大生命力,他对生活、对事业的一片赤子之心,也丰富了我对自己人生的思考。 -------------------------------------------------------------------------------- /exampleSite/content/post/06-image-viewer/index.en-us.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Image Browsing Tool" 3 | description: "By default, images within the article will be browsed. Clicking on an image will display a larger image, while clicking on a blank space will close it." 4 | Keywords: "image, image, browser, photo album" 5 | 6 | date: 2025-01-25T21:28:12+08:00 7 | lastmod: 2025-01-25T21:28:12+08:00 8 | 9 | categories: 10 | - Example 11 | 12 | tags: 13 | - Image 14 | - Album 15 | - Browse 16 | 17 | url: "demo/image-viewer.html" 18 | toc: false 19 | expired: true 20 | --- 21 | 22 | This theme comes with an image browser function that supports browsing images that appear in the article area. Clicking on an image can view a larger image, while clicking on a blank space can close it. No need to configure any parameters, just add image information at the corresponding position in the article. 23 | 24 | 25 | 26 | The image browser referenced [fengyuanchen](https://fengyuanchen.github.io/) Developed [viewerjs](https://fengyuanchen.github.io/viewerjs/) Supports displaying image name, size, rotation, scaling, playback, and other functions. You can click on the following example image to view the experience: 27 | 28 | ## Animals 29 | 30 | ![cute-scottish-fold-cat](/demo/image-viewer/photos/preview_cute-scottish-fold-cat.jpg) 31 | ![scottish-fold-kitten](/demo/image-viewer/photos/preview_scottish-fold-kitten.jpg) 32 | ![hourses](/demo/image-viewer/photos/preview_horses.jpg) 33 | ![owl-family-background](/demo/image-viewer/photos/preview_owl-family-background.jpg) 34 | 35 | ## Scenery 36 | 37 | ![luxury-resort-in-maldives](/demo/image-viewer/photos/preview_luxury-resort-in-maldives.jpg) 38 | ![sea-shell](/demo/image-viewer/photos/preview_sea-shell.jpg) 39 | ![the-arch-sunset](/demo/image-viewer/photos/preview_the-arch-sunset.jpg) 40 | ![norway-autumn-landscape](/demo/image-viewer/photos/preview_norway-autumn-landscape.jpg) -------------------------------------------------------------------------------- /exampleSite/content/post/06-image-viewer/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "图像浏览工具 " 3 | description: "默认会对文章内的图片, 进行图片浏览,点击图片可以查看大图,点击空白处可以关闭。" 4 | keywords: "image,图像,浏览器,相册" 5 | 6 | date: 2024-07-21T10:28:12+08:00 7 | lastmod: 2024-07-21T10:28:12+08:00 8 | 9 | categories: 10 | - 示例文章 11 | 12 | tags: 13 | - 图像 14 | - 相册 15 | - 浏览 16 | 17 | url: "/demo/image-viewer.html" 18 | toc: false 19 | expired: true 20 | --- 21 | 22 | 本主题自带图像浏览器功能,支持对文章区域内出现的图片进行浏览,点击图片可以查看大图,点击空白处可以关闭。不需要配置任何参数,只要在文章里面相应的位置添加图片信息即可 。 23 | 24 | 25 | 26 | 图像浏览器引用了 [fengyuanchen](https://fengyuanchen.github.io/) 开发的 [viewerjs](https://fengyuanchen.github.io/viewerjs/),支持显示图像名称,尺寸,旋转,缩放,播放等功能。可点击如下的示例图像查看体验: 27 | 28 | ## 动物 29 | 30 | ![cute-scottish-fold-cat](/demo/image-viewer/photos/preview_cute-scottish-fold-cat.jpg) 31 | ![scottish-fold-kitten](/demo/image-viewer/photos/preview_scottish-fold-kitten.jpg) 32 | ![hourses](/demo/image-viewer/photos/preview_horses.jpg) 33 | ![owl-family-background](/demo/image-viewer/photos/preview_owl-family-background.jpg) 34 | 35 | ## 风景 36 | 37 | ![luxury-resort-in-maldives](/demo/image-viewer/photos/preview_luxury-resort-in-maldives.jpg) 38 | ![sea-shell](/demo/image-viewer/photos/preview_sea-shell.jpg) 39 | ![the-arch-sunset](/demo/image-viewer/photos/preview_the-arch-sunset.jpg) 40 | ![norway-autumn-landscape](/demo/image-viewer/photos/preview_norway-autumn-landscape.jpg) -------------------------------------------------------------------------------- /exampleSite/content/post/06-image-viewer/photos/preview_cute-scottish-fold-cat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/exampleSite/content/post/06-image-viewer/photos/preview_cute-scottish-fold-cat.jpg -------------------------------------------------------------------------------- /exampleSite/content/post/06-image-viewer/photos/preview_horses.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/exampleSite/content/post/06-image-viewer/photos/preview_horses.jpg -------------------------------------------------------------------------------- /exampleSite/content/post/06-image-viewer/photos/preview_luxury-resort-in-maldives.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/exampleSite/content/post/06-image-viewer/photos/preview_luxury-resort-in-maldives.jpg -------------------------------------------------------------------------------- /exampleSite/content/post/06-image-viewer/photos/preview_norway-autumn-landscape.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/exampleSite/content/post/06-image-viewer/photos/preview_norway-autumn-landscape.jpg -------------------------------------------------------------------------------- /exampleSite/content/post/06-image-viewer/photos/preview_owl-family-background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/exampleSite/content/post/06-image-viewer/photos/preview_owl-family-background.jpg -------------------------------------------------------------------------------- /exampleSite/content/post/06-image-viewer/photos/preview_scottish-fold-kitten.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/exampleSite/content/post/06-image-viewer/photos/preview_scottish-fold-kitten.jpg -------------------------------------------------------------------------------- /exampleSite/content/post/06-image-viewer/photos/preview_sea-shell.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/exampleSite/content/post/06-image-viewer/photos/preview_sea-shell.jpg -------------------------------------------------------------------------------- /exampleSite/content/post/06-image-viewer/photos/preview_the-arch-sunset.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/exampleSite/content/post/06-image-viewer/photos/preview_the-arch-sunset.jpg -------------------------------------------------------------------------------- /exampleSite/content/post/07-custom-files/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "支持用户自定义设计" 3 | description: "用户可以通过自定义文件配置,实现对站点的样式和布局进行个性化的调整。" 4 | keywords: "custom,files,layout" 5 | 6 | date: 2022-09-10T21:02:32+08:00 7 | lastmod: 2022-09-10T21:02:32+08:00 8 | 9 | categories: 10 | - 示例文章 11 | 12 | tags: 13 | - 自定义 14 | - 个性化 15 | - 布局 16 | 17 | url: "demo/custom-files.html" 18 | toc: true 19 | --- 20 | 21 | 对于熟悉前端开发的用户来说,可以通过自定义文件配置,实现对站点的样式和布局进行个性化的调整。其中布局方面主要是支持左侧边栏的站点概览部分,以及站点底部2个位置,但样式的重置可以是整个站点的任意位置。 22 | 23 | ## 打开配置参数 24 | 25 | 首先要明确在配置文件的 `params` 区域中有配置如下参数: 26 | 27 | ```yaml 28 | customFilePath: 29 | sidebar: custom_sidebar.html 30 | footer: custom_footer.html 31 | style: /css/custom_style.css 32 | ``` 33 | 34 | {{< note warning >}} 35 | 36 | **注意:** `sidebar` 和 `footer` 的文件命名不可以与它们的参数名称相同,不然会影响系统默认的布局设计,切记!!! :smile: 37 | 38 | {{< /note >}} 39 | 40 | 然后在站点的根目录下创建 `layouts/partials` 2个目录,用于存放自定布局设计文件,另外在站点根目录下创建 `static/css` 2个目录,用于存放自定义 CSS 样式文件。一切就绪后,就可以参考如下的步骤,完成自己的设计想法。 41 | 42 | ## 侧边栏设计 43 | 44 | 在前面创建 `partials` 目录中新一个后缀名为 `html` 的文件,可以在里面书写你所想表达的设计或内容,比如引入一些第三方组件内容。示例如下: 45 | 46 | ```html 47 |
48 | 支持自定义CSS和Sidebar布局啦💄💄💄 49 |
50 | ``` 51 | 52 | 再把该文件的路径配置到相应的参数中,效果请查看左侧边栏底部的效果。 53 | 54 | ## 底部设计 55 | 56 | 在前面创建 `partials` 目录中新一个后缀名为 `html` 的文件,可以在里面书写你所想表达的设计或内容,比如引入一些第三方组件内容。示例如下: 57 | 58 | ```html 59 | 62 | ``` 63 | 64 | 再把该文件的路径配置到相应的参数中,效果请查看站点底部的效果。 65 | 66 | ## 自定义样式 67 | 68 | 在前面创建 `css` 目录中新一个后缀名为 `css` 的文件,然后可以在里面把站点的样式进行重定义,或是增加一些自己定义的样式设计,在写文章时进行引用,示例如下: 69 | 70 | ```html 71 | .custom-head5 { 72 | font-size: 1.2em; 73 | color: #ed6c24; 74 | font-weight: bold; 75 | } 76 | ``` 77 | 78 | 再把该文件的路径配置到相应的参数中,效果参考如下: 79 | 80 | 我是自定义的标题样式效果!!! 81 | -------------------------------------------------------------------------------- /exampleSite/content/post/08-no-header-title/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "没有H1-6标题头和评论的文章" 3 | description: "用于测试在没有H1-6标题头时,文章的目录导航是否会直接关闭,并关闭评论功能。" 4 | keywords: "toc,header" 5 | 6 | date: 2022-10-06T09:02:26+08:00 7 | lastmod: 2022-10-30T21:03:16+08:00 8 | 9 | categories: 10 | - 示例文章 11 | tags: 12 | - toc 13 | - 标题 14 | 15 | comment: 16 | enable: false 17 | url: "demo/no-header-title.html" 18 | expired: true 19 | --- 20 | 21 | 刘慈欣2018克拉克奖获奖感言(部分内容节选)。 22 | 23 | > [!INFO] 24 | > 用于测试在没有H1-6标题头时,文章的目录导航是否会直接关闭,并关闭评论功能。 25 | 26 | 27 | 28 | 先生们、女士们,晚上好, 29 | 30 | 很荣幸获得Clarke Award for Imagination in Service to Society Award。 31 | 32 | 这个奖项是对想象力的奖励,而想象力是人类所拥有的一种似乎只应属于神的能力,它存在的意义也远超出我们的想象。有历史学家说过,人类之所以能够超越地球上的其它物种建立文明,主要是因为他们能够在自己的大脑中创造出现实中不存在的东西。在未来,当人工智能拥有超过人类的智力时,想象力也许是我们对于它们所拥有的惟一优势。 33 | 34 | 科幻小说是基于想象力的文学,而最早给我留下深刻印象的是Arthur . Clarke的作品。除了Jules Verne和George Wells外,Clarke的作品是最早进入中国的西方现代科幻小说。在上世纪八十年代初,中国出版了他的《2001:A Space Odyssey》和《Rendezvous With Rama》。当时文革刚刚结束,旧的生活和信仰已经崩塌,新的还没有建立起来,我和其他年轻人一样,心中一片迷茫。这两本书第一次激活了我想象力,思想豁然开阔许多,有小溪流进大海的感觉。读完《2001:A Space Odyssey》的那天深夜,我走出家门仰望星空,那时的中国的天空还没有太多的污染,能够看到银河,在我的眼中,星空与过去完全不一样了,我第一次对宇宙的宏大与神秘产生了敬畏感,这是一种宗教般的感觉。而后来读到的《Rendezvous With Rama》,也让我惊叹如何可以用想象力构造一个栩栩如生的想象世界。正是Clarke带给我的这些感受,让我后来成为一名科幻作家。 35 | 36 | 现在,三十多年过去了,我渐渐发现,我们这一代在上世纪六十年代出生于中国的人,很可能是人类历史上最幸运的人,因为之前没有任何一代人,像我们这样目睹周围的世界发生了如此巨大的变化,我们现在生活的世界,与我们童年的世界已经完全是两个不同的世界,而这种变化还在加速发生着。中国是一个充满着未来感的国度,中国的未来可能充满着挑战和危机,但从来没有像现在这样具有吸引力,这就给科幻小说提供了肥沃的土壤,使其在中国受到了空前的关注,作为一个在六十年代出生在中国的科幻小说家,则是幸运中的幸运。 37 | 38 | 我期待有那么一天,像那些曾经描写过信息时代的科幻小说一样,描写太空航行的科幻小说也变的平淡无奇了,那时的火星和小行星带都是乏味的地方,有无数的人在那里谋生;木星和它众多的卫星已成为旅游胜地,阻止人们去那里的唯一障碍就是昂贵的价格。 39 | 40 | 但即使在这个时候,宇宙仍是一个大的无法想象的存在,距我们最近的恒星仍然遥不可及。浩瀚的星空永远能够承载我们无穷的想象力。 41 | 42 | 谢谢大家。 43 | 44 | 45 | > [点击阅读全文](https://weread.qq.com/web/reader/ce032b305a9bc1ce0b0dd2akecc32f3013eccbc87e4b62e) 46 | -------------------------------------------------------------------------------- /exampleSite/data/flinks/en-us.yaml: -------------------------------------------------------------------------------- 1 | # 友情链接 2 | # Friend's links 3 | 4 | - FLinksTitle: Office Demo Site 5 | FLinksDesc: Example content from the official theme. 6 | FLinksList: 7 | - name: Hugo 8 | desc: The fastest website construction framework in the world! 9 | avatar: https://gohugo.io/favicon-32x32.png 10 | link: https://gohugo.io 11 | timeout: 2 12 | visible: true 13 | 14 | - name: Hugo-NexT 15 | desc: Hugo NexT Official Site 16 | avatar: https://hugo-next.eu.org/imgs/hugo_next_avatar.png 17 | link: https://hugo-next.eu.org 18 | timeout: 2 19 | visible: true 20 | 21 | - name: Fanmeng Star Dust Space Station 22 | desc: Even ordinary people have their own dreams! 23 | avatar: https://elkan1788.github.io/imgs/avatar.png 24 | link: https://lisenhui.cn 25 | timeout: 2 26 | visible: true 27 | 28 | 29 | - FLinksTitle: Hugo NexT Fan Groups 30 | FLinksDesc: Exciting presentation from Hugo NexT theme enthusiasts! 31 | FLinksList: 32 | - name: Ahaji 33 | desc: The first Hugo NexT loyal fan user on the entire network! 34 | avatar: https://a.happy2008.top/imgs/stayhome-small.png 35 | link: https://a.happy2008.top/ 36 | timeout: 2 37 | visible: true -------------------------------------------------------------------------------- /exampleSite/data/flinks/zh-cn.yaml: -------------------------------------------------------------------------------- 1 | # 友情链接 2 | # Friend's links 3 | 4 | - FLinksTitle: 官方示例 5 | FLinksDesc: 来自主题官方的示例内容。 6 | FLinksList: 7 | - name: Hugo 8 | desc: 世界上最快的网站建设框架! 9 | avatar: https://gohugo.io/favicon-32x32.png 10 | link: https://gohugo.io 11 | timeout: 2 12 | visible: true 13 | 14 | - name: Hugo-NexT 15 | desc: Hugo NexT 官方预览网站。 16 | avatar: https://hugo-next.eu.org/imgs/hugo_next_avatar.png 17 | link: https://hugo-next.eu.org 18 | timeout: 2 19 | visible: true 20 | 21 | - name: 凡梦星尘空间站 22 | desc: 再平凡的人也有属于他的梦想! 23 | avatar: https://elkan1788.github.io/imgs/avatar.png 24 | link: https://lisenhui.cn 25 | timeout: 2 26 | visible: true 27 | 28 | 29 | - FLinksTitle: Hugo NexT 粉丝群体 30 | FLinksDesc: 来自 Hugo NexT 主题爱好者们的精彩呈现! 31 | FLinksList: 32 | - name: 阿哈吉 33 | desc: 全网首个 Hugo NexT 忠实粉丝用户 34 | avatar: https://a.happy2008.top/imgs/stayhome-small.png 35 | link: https://a.happy2008.top/ 36 | timeout: 2 37 | visible: true -------------------------------------------------------------------------------- /exampleSite/layouts/partials/custom_footer.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /exampleSite/layouts/partials/custom_sidebar.html: -------------------------------------------------------------------------------- 1 |
2 | 支持自定义CSS和Sidebar布局啦💄💄💄 3 |
-------------------------------------------------------------------------------- /exampleSite/startup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 本地快速启动脚本 3 | # Quick start in local. 4 | 5 | next() { 6 | cat << EOT 7 | ======================================== 8 | ███╗ ██╗███████╗██╗ ██╗████████╗ 9 | ████╗ ██║██╔════╝╚██╗██╔╝╚══██╔══╝ 10 | ██╔██╗ ██║█████╗ ╚███╔╝ ██║ 11 | ██║╚██╗██║██╔══╝ ██╔██╗ ██║ 12 | ██║ ╚████║███████╗██╔╝ ██╗ ██║ 13 | ╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝ ╚═╝ 14 | ======================================== 15 | Hugo NexT version $1 16 | Documentation: https://hugo-next.eu.org 17 | ======================================== 18 | EOT 19 | } 20 | 21 | next `cat ../VERSION` 22 | 23 | hugo server -t ../.. --port 1414 --panicOnWarning --config hugo.yaml 24 | -------------------------------------------------------------------------------- /exampleSite/static/css/custom_style.css: -------------------------------------------------------------------------------- 1 | /** Custom style defined file **/ 2 | 3 | .mydefined { 4 | font-size: 0.65em; 5 | color: #ed6c24; 6 | } 7 | 8 | .custom-footer { 9 | color: #ed6c24; 10 | } 11 | 12 | .custom-head5 { 13 | font-size: 1.2em; 14 | color: #ed6c24; 15 | font-weight: bold; 16 | } -------------------------------------------------------------------------------- /exampleSite/static/imgs/ali-pay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/exampleSite/static/imgs/ali-pay.png -------------------------------------------------------------------------------- /exampleSite/static/imgs/wechat-pay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/exampleSite/static/imgs/wechat-pay.png -------------------------------------------------------------------------------- /exampleSite/static/music/gongqijun.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/exampleSite/static/music/gongqijun.jpg -------------------------------------------------------------------------------- /exampleSite/static/music/sky.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/exampleSite/static/music/sky.mp3 -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module github.com/hugo-next/hugo-theme-next 2 | 3 | go 1.18 -------------------------------------------------------------------------------- /hugo-theme-next.go: -------------------------------------------------------------------------------- 1 | package hugothemenext 2 | -------------------------------------------------------------------------------- /images/hugo-next-primary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/images/hugo-next-primary.png -------------------------------------------------------------------------------- /images/hugo-next-secondary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/images/hugo-next-secondary.png -------------------------------------------------------------------------------- /images/hugo-next-symbol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/images/hugo-next-symbol.png -------------------------------------------------------------------------------- /images/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/images/screenshot.png -------------------------------------------------------------------------------- /images/tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/images/tn.png -------------------------------------------------------------------------------- /images/use-hugo-next-starter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/images/use-hugo-next-starter.png -------------------------------------------------------------------------------- /layouts/_markup/render-blockquote.html: -------------------------------------------------------------------------------- 1 | {{ if eq .Type "alert" }} 2 | {{ $postAlert := site.Params.postAlerts }} 3 | {{ $alertCfg := index $postAlert .AlertType }} 4 |
5 |
6 | 7 | 8 | {{ with .AlertTitle }} 9 | {{ . }} 10 | {{ else }} 11 | {{ or (T (printf "PostAlert.%s" .AlertType)) (title .AlertType) }} 12 | {{ end }} 13 | 14 |
15 |
16 | {{ .Text }} 17 |
18 |
19 | {{ else }} 20 |
21 | {{ .Text }} 22 |
23 | {{ end }} -------------------------------------------------------------------------------- /layouts/_markup/render-codeblock-mermaid.html: -------------------------------------------------------------------------------- 1 | 2 | {{ $align := default "center" (.Attributes.align) }} 3 | {{ $bc := default "#ffffff" (.Attributes.bc) }} 4 |
5 | {{ .Inner | htmlEscape | safeHTML }} 6 |
7 | {{ .Page.Store.SetInMap "scParams" "mermaid" true }} -------------------------------------------------------------------------------- /layouts/_markup/render-codeblock.html: -------------------------------------------------------------------------------- 1 | {{ $result := transform.HighlightCodeBlock . }} 2 | {{ $result.Wrapped }} 3 | 4 | {{ .Page.Store.Set "codeblock" true }} -------------------------------------------------------------------------------- /layouts/_markup/render-heading.html: -------------------------------------------------------------------------------- 1 | {{ .Text | safeHTML }} 2 | 3 | -------------------------------------------------------------------------------- /layouts/_markup/render-image.html: -------------------------------------------------------------------------------- 1 | {{ .Text }} -------------------------------------------------------------------------------- /layouts/_markup/render-link.html: -------------------------------------------------------------------------------- 1 | {{ $extURL := and .Page.Site.Params.exturl.enable (strings.HasPrefix .Destination "http") }} 2 | 3 | {{ .Text | safeHTML }} 4 | {{ if and $extURL .Page.Site.Params.exturl.icon }} 5 | 6 | {{ end }} 7 | -------------------------------------------------------------------------------- /layouts/_partials/_funs/add_unix_param.html: -------------------------------------------------------------------------------- 1 | {{/** Add unix time end of link URL. **/}} 2 | {{ $timeUnix := time.Now.Unix }} 3 | {{ $withTimeLink := printf "%s?=%d" . $timeUnix }} 4 | {{ return $withTimeLink }} -------------------------------------------------------------------------------- /layouts/_partials/_funs/cal_siteinfo.html: -------------------------------------------------------------------------------- 1 | {{/** Calculate some information for site operation **/}} 2 | {{ $scratch := newScratch }} 3 | {{ $pages := (where .Page.Site.RegularPages "Section" "in" .Site.Params.mainSections).ByLastmod.Reverse }} 4 | 5 | {{ range $pages }} 6 | {{ $scratch.Add "totalWords" .WordCount }} 7 | {{ $scratch.Add "totalTimes" .ReadingTime }} 8 | {{ end }} 9 | 10 | {{ range first 1 $pages }} 11 | {{ $lastMod := default .Date .Lastmod }} 12 | {{ $scratch.Set "first" $lastMod }} 13 | {{ end }} 14 | {{ range last 1 $pages }} 15 | {{ $scratch.Set "last" .Date }} 16 | {{ end }} 17 | 18 | {{ return $scratch }} -------------------------------------------------------------------------------- /layouts/_partials/_funs/get_cdn_res.html: -------------------------------------------------------------------------------- 1 | {{/* Use to get resources path with vendor */}} 2 | 3 | {{ $fmt := "%s/%s@%s/%s" }} 4 | 5 | {{ $npm := .res.name }} 6 | {{ $file := .res.file }} 7 | 8 | {{ if ne .router.type "nodejs" }} 9 | {{ $file = replaceRE `(dist|lib|source\/js)\/` "" .res.file }} 10 | {{ $fmt = "%s/%s/%s/%s" }} 11 | {{ else }} 12 | {{ with .res.alias }} 13 | {{ $npm = . }} 14 | {{ end }} 15 | {{ end }} 16 | 17 | {{ $pluginRes := printf $fmt .router.url $npm .res.version $file }} 18 | 19 | {{ return $pluginRes }} -------------------------------------------------------------------------------- /layouts/_partials/_funs/get_plugin.html: -------------------------------------------------------------------------------- 1 | {{/* Get third party js plugins resource */}} 2 | 3 | {{ $pluginPath := printf "%s/%s/%s" "js/3rd" .class .plugin }} 4 | {{ $targetPath := printf "js/%s" .plugin }} 5 | {{ $plugin := resources.Get $pluginPath | resources.ExecuteAsTemplate $targetPath .ctx }} 6 | 7 | {{ if hugo.IsProduction }} 8 | {{ $plugin = $plugin | minify }} 9 | {{ end }} 10 | {{ $unixSrc := partial "_funs/add_unix_param.html" $plugin.RelPermalink }} 11 | -------------------------------------------------------------------------------- /layouts/_partials/_thirdparty/analytics/51la.html: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /layouts/_partials/_thirdparty/analytics/baidu.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layouts/_partials/_thirdparty/analytics/busuanzi.html: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /layouts/_partials/_thirdparty/analytics/cloudflare.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /layouts/_partials/_thirdparty/analytics/google.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layouts/_partials/_thirdparty/chat/gitter.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /layouts/_partials/_thirdparty/comment/artalk.html: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /layouts/_partials/_thirdparty/comment/comm_loading.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
-------------------------------------------------------------------------------- /layouts/_partials/_thirdparty/comment/giscus.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /layouts/_partials/_thirdparty/comment/livere.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /layouts/_partials/_thirdparty/comment/twikoo.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /layouts/_partials/_thirdparty/comment/utterances.html: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /layouts/_partials/_thirdparty/comment/waline.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /layouts/_partials/_thirdparty/comment/waline3.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /layouts/_partials/_thirdparty/search/algolia.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 |
10 |
11 |
12 |
13 | -------------------------------------------------------------------------------- /layouts/_partials/_thirdparty/search/local.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 |
6 | 9 |
10 | 11 | 12 | 13 |
14 |
15 |
16 | 17 |
18 |
-------------------------------------------------------------------------------- /layouts/_partials/_thirdparty/share/addtoany.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
-------------------------------------------------------------------------------- /layouts/_partials/_thirdparty/share/sharethis.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /layouts/_partials/comments.html: -------------------------------------------------------------------------------- 1 | {{ $root := . }} 2 | {{ with .Site.Params.comments }} 3 | {{ $tc := and .storage (gt (len .nav) 1) }} 4 | {{ $active := .active }} 5 | {{ $fc := .active }} 6 | {{ $sc := "" }} 7 | {{ $sn := "" }} 8 |
9 |
10 |
11 | 12 | {{ T "PostComments.title" }} 13 |
14 | {{ if $tc }} 15 | {{ $sn = (sort .nav "weight") }} 16 | {{ $fc = index $sn 0 }} 17 | {{ $sc = index $sn 1 }} 18 |
19 | {{ $fc.title }} 20 | 21 | {{ $sc.title }} 22 |
23 | {{ end }} 24 |
25 |
26 | {{ $cp := "_thirdparty/comment/%s.html" }} 27 | {{ if $tc }} 28 | {{ range $sn }} 29 |
30 | {{ partial "_thirdparty/comment/comm_loading.html" . }} 31 | {{ partial (printf $cp (lower .name)) $root }} 32 |
33 | {{ end }} 34 | {{ else }} 35 |
36 | {{ partial "_thirdparty/comment/comm_loading.html" . }} 37 | {{ partial (printf $cp $fc) $root }} 38 |
39 | {{ end }} 40 |
41 |
42 | {{ end }} 43 | -------------------------------------------------------------------------------- /layouts/_partials/head.html: -------------------------------------------------------------------------------- 1 | {{ partial "head/meta.html" . }} 2 | {{ partial "head/opengraph.html" . }} 3 | {{ partial "head/twitter.html" . }} 4 | {{ partial "head/googleplus.html" . }} 5 | {{ partial "head/facebook.html" . }} 6 | {{ partial "head/verify.html" . }} 7 | {{ partial "head/styles.html" . }} 8 | 63 | {{ partialCached "head/script/analytics.html" . }} 64 | 65 | -------------------------------------------------------------------------------- /layouts/_partials/head/facebook.html: -------------------------------------------------------------------------------- 1 | {{ with .Site.Params.openGraph.facebook }} 2 | {{ range $attr, $val := . }} 3 | 4 | {{ end }} 5 | {{ end }} -------------------------------------------------------------------------------- /layouts/_partials/head/favicon.html: -------------------------------------------------------------------------------- 1 | 2 | {{ with .Site.Params.favicon }} 3 | 4 | 5 | 6 | 7 | 8 | {{ end }} 9 | -------------------------------------------------------------------------------- /layouts/_partials/head/googleplus.html: -------------------------------------------------------------------------------- 1 | {{ with .Site.Params.openGraph.googlePlus }} 2 | 3 | {{ end }} -------------------------------------------------------------------------------- /layouts/_partials/head/meta.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ if .Site.Params.darkmode }} 4 | 5 | {{ else }} 6 | 7 | {{ end }} 8 | {{ hugo.Generator }} 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | {{ if .IsPage }} 18 | {{ with .Date }} 19 | 20 | {{ end }} 21 | {{ with .Lastmod }} 22 | 23 | {{ end }} 24 | {{ end }} 25 | {{ $img := .Site.Params.customLogo | default .Site.Params.avatar.url }} 26 | {{ if and .IsPage (isset .Params "images") }} 27 | {{ $img := index .Params.images 0 }} 28 | {{ end }} 29 | {{ .Scratch.Set "metaImg" $img }} 30 | 31 | 32 | -------------------------------------------------------------------------------- /layouts/_partials/head/open_graph.html: -------------------------------------------------------------------------------- 1 | {{ $Site := .Site }} 2 | {{ $Params := .Site.Params }} 3 | {{ $Page := .Page }} 4 | {{ $langCode := .Scratch.Get "langCode" }} 5 | {{ with .Site.Params.openGraph }} 6 | {{ if .enable }} 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | {{ with .twitter }} 16 | {{ range $attr, $val := . }} 17 | 18 | {{ end }} 19 | {{ end }} 20 | 21 | {{ with .googlePlus }} 22 | 23 | {{ end }} 24 | 25 | {{ with .facebook }} 26 | {{ range $attr, $val := . }} 27 | 28 | {{ end }} 29 | {{ end }} 30 | 31 | {{ end }} 32 | {{ end }} -------------------------------------------------------------------------------- /layouts/_partials/head/opengraph.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params.openGraph.enable }} 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | {{ if .IsPage }} 13 | 14 | 15 | 16 | {{ end }} 17 | {{ end }} 18 | -------------------------------------------------------------------------------- /layouts/_partials/head/script/analytics.html: -------------------------------------------------------------------------------- 1 | {{ if isset .Site.Params.analytics "laid" }} 2 | {{ partial "_thirdparty/analytics/51la.html" . }} 3 | {{ end }} 4 | {{ if isset .Site.Params.analytics "baidu" }} 5 | {{ partial "_thirdparty/analytics/baidu.html" . }} 6 | {{ end }} 7 | {{ if isset .Site.Params.analytics "google" }} 8 | {{ partial "_thirdparty/analytics/google.html" . }} 9 | {{ end }} 10 | {{ if or (isset .Site.Params.analytics "busuanzi") (eq .Site.Params.postMeta.views.plugin "busuanzi") }} 11 | {{ partial "_thirdparty/analytics/busuanzi.html" . }} 12 | {{ end }} 13 | {{ if isset .Site.Params.analytics "cloudflare" }} 14 | {{ partial "_thirdparty/analytics/cloudflare.html" . }} 15 | {{ end }} -------------------------------------------------------------------------------- /layouts/_partials/head/script/plugins.html: -------------------------------------------------------------------------------- 1 | {{/* Define loading plugin scripts which only need in pages */}} 2 | {{ if .IsPage }} 3 | 4 | {{/** Append codeblack render action **/}} 5 | {{ if .Store.Get "codeblock" }} 6 | {{ partial "_funs/get_plugin.html" (dict "ctx" . "class" "others" "plugin" "clipboard.js") }} 7 | {{ end }} 8 | 9 | {{/** Short code params **/}} 10 | {{ $scParam := .Store.Get "scParams" }} 11 | 12 | {{/** Append math render action **/}} 13 | {{ if or .Params.math .Site.Params.math }} 14 | {{ partial "_funs/get_plugin.html" (dict "ctx" . "class" "others" "plugin" "math.js") }} 15 | {{ end }} 16 | 17 | {{/** Append mermaid render action **/}} 18 | {{ if $scParam.mermaid }} 19 | {{ partial "_funs/get_plugin.html" (dict "ctx" . "class" "others" "plugin" "mermaid.js") }} 20 | {{ end }} 21 | 22 | {{ end }} -------------------------------------------------------------------------------- /layouts/_partials/head/styles.html: -------------------------------------------------------------------------------- 1 | 2 | {{ $cssRes := .Site.Data.resources.css }} 3 | {{ $vendor := .Site.Params.vendors.plugins }} 4 | {{ $router := .Scratch.Get "router" }} 5 | 6 | {{ range $css := $cssRes }} 7 | {{ $pluginCss := partial "_funs/get_cdn_res.html" (dict "res" . "vendor" $vendor "router" $router) }} 8 | 9 | {{ end }} 10 | 11 | 12 | {{ $scss := resources.Get "css/main.scss" }} 13 | {{ $scss = $scss | resources.ExecuteAsTemplate "main.scss" . }} 14 | {{ $css := $scss | toCSS (dict "targetPath" "/css/main.css" "outputStyle" "expanded") }} 15 | {{ if hugo.IsProduction }} 16 | {{ $css = $css | minify }} 17 | {{ end }} 18 | {{ $unixHref := partial "_funs/add_unix_param.html" $css.RelPermalink }} 19 | 20 | 21 | 22 | 40 | 41 | 42 | {{ $custom := .Scratch.Get "style" }} 43 | {{ if $custom }} 44 | {{ $unixHref := partial "_funs/add_unix_param.html" $custom }} 45 | 46 | {{ end }} 47 | -------------------------------------------------------------------------------- /layouts/_partials/head/twitter.html: -------------------------------------------------------------------------------- 1 | {{ with .Site.Params.openGraph.twitter }} 2 | {{ $img := $.Params.openGraph.twitter.image | default ($.Scratch.Get "metaImg") }} 3 | 4 | 5 | 6 | 7 | 8 | 9 | {{ end }} 10 | -------------------------------------------------------------------------------- /layouts/_partials/head/verify.html: -------------------------------------------------------------------------------- 1 | {{ if .IsHome }} 2 | {{ with .Site.Params.googleSiteVerification }} 3 | 4 | {{ end }} 5 | {{ with .Site.Params.bingSiteVerification }} 6 | 7 | {{ end }} 8 | {{ with .Site.Params.yandexSiteVerification }} 9 | 10 | {{ end }} 11 | {{ with .Site.Params.baiduSiteVerification }} 12 | 13 | {{ end }} 14 | {{ end }} -------------------------------------------------------------------------------- /layouts/_partials/header.html: -------------------------------------------------------------------------------- 1 | {{ partialCached "header/brand.html" . }} 2 | {{ partial "header/menus.html" . }} 3 | {{ partialCached "header/search.html" . }} -------------------------------------------------------------------------------- /layouts/_partials/header/brand.html: -------------------------------------------------------------------------------- 1 | {{ $title := .Site.Title }} 2 |
3 | 10 | 11 |
12 | {{ if and .Site.Params.customLogo (eq .Site.Params.scheme "Muse") }} 13 | {{ $title }} 14 | {{ end }} 15 | 16 | 17 | 18 |

{{ $title }}

19 | 20 |
21 | {{ if isset .Site.Params "subtitle" }} 22 |

{{ .Site.Params.subtitle }}

23 | {{ end }} 24 | {{ if and .Site.Params.customLogo (or (eq .Site.Params.scheme "Gemini") (eq .Site.Params.scheme "Pisces"))}} 25 | {{ $title }} 26 | {{ end }} 27 |
28 | 29 | 36 |
-------------------------------------------------------------------------------- /layouts/_partials/header/menus.html: -------------------------------------------------------------------------------- 1 | {{ $ms := .Site.Params.menuSets }} 2 | {{ $curP := .Page }} 3 | -------------------------------------------------------------------------------- /layouts/_partials/header/search.html: -------------------------------------------------------------------------------- 1 | {{ if or .Site.Params.algoliaSearch.enable .Site.Params.localSearch.enable }} 2 |
3 | 10 |
11 | {{ end }} -------------------------------------------------------------------------------- /layouts/_partials/langs.html: -------------------------------------------------------------------------------- 1 | {{ if hugo.IsMultilingual}} 2 |
3 | 4 |
5 |
6 | 7 | {{ .Site.Language.LanguageName }} 8 | 9 |
10 |
11 | {{ with .AllTranslations }} 12 | {{ range . }} 13 | {{ $langCode := lower .Language.LanguageCode }} 14 |
15 | 16 | {{ .Language.LanguageName }} 17 |
18 | {{ end }} 19 | {{ end }} 20 |
21 |
22 |
23 | {{ end }} -------------------------------------------------------------------------------- /layouts/_partials/list.html: -------------------------------------------------------------------------------- 1 | {{ range . }} 2 |
3 | {{ .Key }} 4 |
5 | {{ range .Pages }} 6 |
7 |
8 | 14 |
15 | {{ if isset .Params "extlink" }} 16 | 17 | {{ .Title }} 18 | 19 | 20 | {{ else }} 21 | 24 | {{ end }} 25 |
26 |
27 |
28 | {{ end }} 29 | {{ end }} -------------------------------------------------------------------------------- /layouts/_partials/pagination.html: -------------------------------------------------------------------------------- 1 | {{ $pag := .Paginator }} 2 | {{ $tps := $pag.TotalPages }} 3 | 4 | {{ $begin := sub $pag.PageNumber 4}} 5 | {{ $.Scratch.Set "begin" $begin }} 6 | {{ $end := add $pag.PageNumber 4}} 7 | {{ $.Scratch.Set "end" $end }} 8 | 9 | {{ if lt $begin 0}} 10 | {{ $end := sub $end $begin }} 11 | {{ $.Scratch.Set "end" $end }} 12 | {{ end}} 13 | {{ $end := $.Scratch.Get "end"}} 14 | 15 | {{ $over := sub $tps $end }} 16 | 17 | {{ if lt $over 0}} 18 | {{ $begin := add $begin $over}} 19 | {{ $.Scratch.Set "begin" $begin }} 20 | {{ end }} 21 | {{ $begin := $.Scratch.Get "begin"}} 22 | -------------------------------------------------------------------------------- /layouts/_partials/post.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {{ with .ctx }} 4 | 5 | 9 | 13 | 17 | {{ end }} 18 |
19 | {{ partial "post/header.html" (dict "ctx" .ctx "IsHome" .IsHome) }} 20 |
21 | {{ $tocEnable := .ctx.Params.toc | default .ctx.Site.Params.toc.enable }} 22 |
23 | {{ partial "post/body.html" (dict "ctx" .ctx "IsHome" .IsHome) }} 24 |
25 | 28 |
29 |
30 | -------------------------------------------------------------------------------- /layouts/_partials/post/body.html: -------------------------------------------------------------------------------- 1 | {{ with .ctx }} 2 | {{ if $.IsHome }} 3 | {{ if .Params.Expand }} 4 | {{ .Content }} 5 | {{ else }} 6 | {{ .Summary }} 7 | {{ end }} 8 | {{ else }} 9 | {{/** Post expired tip message **/}} 10 | {{ $expired := default .Site.Params.PostMeta.expired .Params.Expired }} 11 | {{ if $expired }} 12 |
13 |
14 | 15 | {{ T "PostMeta.expired.title" }} 16 |
17 |
18 |
19 | {{ end }} 20 | {{/** Post summary **/}} 21 | {{ if .Site.Params.PostMeta.summary }} 22 | {{ with .Params.Description }} 23 |
24 |
25 | 26 | {{ T "PostMeta.summary.title" }} 27 |
28 |
29 | {{ . }} 30 |
31 |
32 | {{ end }} 33 | {{ end }} 34 | {{/** Started use the read more content anchor the need 35 | Hugo framework min marjo version greater than 0.134.0 **/}} 36 | {{ .Summary }} 37 | 38 | 39 | {{ .ContentWithoutSummary }} 40 | {{ end }} 41 | {{ end }} -------------------------------------------------------------------------------- /layouts/_partials/post/footer.html: -------------------------------------------------------------------------------- 1 | {{ with .ctx }} 2 | {{ if $.IsHome }} 3 | {{ if and .Site.Params.readMoreBtn (not .Params.Expand) }} 4 |
5 | 6 | {{ T "PostMeta.more" }} » 7 | 8 |
9 | {{ end }} 10 |
11 | {{ else }} 12 | {{ partial "post/footer_meta/tags.html" . }} 13 | {{ $enable := .Params.share | default .Site.Params.share.enable }} 14 | {{ with .Site.Params.share }} 15 | {{ if $enable }} 16 |
17 |
18 | 19 |
20 | {{ if isset . "sharethis" }} 21 | {{ partial "_thirdparty/share/sharethis.html" }} 22 | {{ end }} 23 | {{ if isset . "addtoany" }} 24 | {{ partial "_thirdparty/share/addtoany.html" }} 25 | {{ end }} 26 |
27 | {{ end }} 28 | {{ end }} 29 |
30 | {{ partial "post/footer_meta/reward.html" . }} 31 | {{ if and (not (isset .Params "copyright")) (not .Params.copyright) }} 32 | {{ partial "post/footer_meta/copyright.html" . }} 33 | {{ end }} 34 | {{ if and (not (isset .Params "followme")) (not .Params.followme) }} 35 | {{ partial "post/footer_meta/followme.html" . }} 36 | {{ end }} 37 | {{ if and (not (isset .Params "nav")) (not .Params.nav) }} 38 |
39 |
40 | {{ with .NextInSection }} 41 | 44 | {{ end }} 45 |
46 |
47 | {{ with .PrevInSection }} 48 | 52 | {{ end }} 53 |
54 |
55 | {{ end }} 56 | {{ end }} 57 | {{ end }} -------------------------------------------------------------------------------- /layouts/_partials/post/footer_meta/followme.html: -------------------------------------------------------------------------------- 1 | {{ with .Site.Params.followMe }} 2 |
3 | {{ T "PostFollowMe" }} 4 |
5 | {{ range . }} 6 | {{ $vals := split . "||" }} 7 | {{ $name := trim (index $vals 0) " " }} 8 | {{ $url := trim (index $vals 1) " " }} 9 | {{ $icon := trim (index $vals 2) " " }} 10 | 18 | {{ end }} 19 |
20 |
21 | {{ end }} -------------------------------------------------------------------------------- /layouts/_partials/post/footer_meta/reward.html: -------------------------------------------------------------------------------- 1 | {{ with .Site.Params.rewardSets }} 2 | {{ if .enable }} 3 |
4 |
{{ .comment | safeHTML }}
5 | 8 |
9 | {{ range $name,$img := .reward }} 10 | {{ $payName := T (printf "Reward.%s" $name) }} 11 |
12 | {{ $.Site.Params.author }} - {{ $payName }} 13 | {{ $payName }} 14 |
15 | {{ end }} 16 |
17 |
18 | {{ end }} 19 | {{ end }} 20 | -------------------------------------------------------------------------------- /layouts/_partials/post/footer_meta/tags.html: -------------------------------------------------------------------------------- 1 | {{ with .Params.tags }} 2 |
3 | {{ range . }} 4 | 5 | {{ . }} 6 | 7 | {{ end }} 8 |
9 | {{ end }} -------------------------------------------------------------------------------- /layouts/_partials/post/header_meta/categories.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params.postMeta.categories }} 2 | {{ with .Params.categories }} 3 | 4 | 5 | 6 | 7 | 8 | {{ print (T "PostMeta.category") (T "Symbol.colon") }} 9 | 10 | 11 | 14 | 15 | 16 | {{ end }} 17 | {{ end }} -------------------------------------------------------------------------------- /layouts/_partials/post/header_meta/comments.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{ print (T "PostMeta.comments") (T "Symbol.colon") }} 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /layouts/_partials/post/header_meta/created_date.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params.postMeta.created }} 2 | {{ $createdDate := .Date.Format .Site.Params.dateFormat }} 3 | {{ $createdTime := .Date.Format .Site.Params.timeFormat }} 4 | 5 | 6 | 7 | 8 | 9 | {{ print (T "PostMeta.publish.date") (T "Symbol.colon") }} 10 | 11 | 14 | 15 | {{ end }} -------------------------------------------------------------------------------- /layouts/_partials/post/header_meta/readtime.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params.postMeta.readTime }} 2 | 3 | 4 | 5 | 6 | {{ print (T "PostMeta.reading.title") (T "Symbol.colon") }}≈ 7 | {{ T "PostMeta.reading.time" . }} 8 | 9 | {{ end }} 10 | -------------------------------------------------------------------------------- /layouts/_partials/post/header_meta/update_date.html: -------------------------------------------------------------------------------- 1 | {{ if and .Site.Params.postMeta.updated.enable .Site.Params.postMeta.updated.anotherDay }} 2 | {{ if and .Lastmod (gt .Lastmod .Date) }} 3 | {{ $modDate := .Lastmod.Format .Site.Params.dateFormat }} 4 | {{ $modTime := .Lastmod.Format .Site.Params.timeFormat }} 5 | 6 | 7 | 8 | 9 | 10 | {{ print (T "PostMeta.lastmod.date") (T "Symbol.colon") }} 11 | 12 | 15 | 16 | {{ end }} 17 | {{ end }} -------------------------------------------------------------------------------- /layouts/_partials/post/header_meta/views.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params.postMeta.views.enable }} 2 | {{ $pageViewId := "pageview-count" }} 3 | {{ if eq .Site.Params.postMeta.views.plugin "leancloud" }} 4 | {{ $pageViewId = "leancloud-visitors-count" }} 5 | {{ else if eq .Site.Params.postMeta.views.plugin "busuanzi" }} 6 | {{ $pageViewId = "busuanzi_value_page_pv" }} 7 | {{ else if eq .Site.Params.postMeta.views.plugin "twikoo" }} 8 | {{ $pageViewId = "twikoo_visitors" }} 9 | {{ end }} 10 | 11 | 12 | 13 | 14 | 15 | {{ print (T "PostMeta.views") (T "Symbol.colon") }} 16 | 17 | 18 | 19 | 20 | 21 | {{ end }} -------------------------------------------------------------------------------- /layouts/_partials/post/header_meta/words.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params.postMeta.wordCount }} 2 | 3 | 4 | 5 | 6 | {{ print (T "PostMeta.words.title") (T "Symbol.colon") }} 7 | {{ T "PostMeta.words.count" . }} 8 | 9 | {{ end }} -------------------------------------------------------------------------------- /layouts/_partials/scripts.html: -------------------------------------------------------------------------------- 1 | {{ partialCached "head/script/global.html" . }} 2 | {{ partial "head/script/plugins.html" . }} -------------------------------------------------------------------------------- /layouts/_partials/sidebar.html: -------------------------------------------------------------------------------- 1 | 6 | {{ $tocEnable := and .IsPage .Params.toc | default .Site.Params.toc.enable }} 7 | 47 | 48 | -------------------------------------------------------------------------------- /layouts/_shortcodes/bilibili.html: -------------------------------------------------------------------------------- 1 |
2 | {{ if .IsNamedParams }} 3 | 4 | {{ else }} 5 | 6 | {{ end }} 7 |
-------------------------------------------------------------------------------- /layouts/_shortcodes/mermaid.html: -------------------------------------------------------------------------------- 1 |
2 | {{ safeHTML .Inner }} 3 |
4 | 5 | {{ .Page.Store.SetInMap "scParams" "mermaid" true }} -------------------------------------------------------------------------------- /layouts/_shortcodes/music.html: -------------------------------------------------------------------------------- 1 | {{- $theme := "#448aff" -}} 2 | {{- $theme = .Get "theme" | default $theme -}} 3 | 4 | 23 | 24 | {{ .Page.Store.SetInMap "scParams" "music" true }} -------------------------------------------------------------------------------- /layouts/_shortcodes/note.html: -------------------------------------------------------------------------------- 1 |
2 | {{ .Inner | markdownify }} 3 |
-------------------------------------------------------------------------------- /layouts/_shortcodes/quote.html: -------------------------------------------------------------------------------- 1 |
2 | {{ .Inner | markdownify }} 3 |
-------------------------------------------------------------------------------- /layouts/archives/list.html: -------------------------------------------------------------------------------- 1 | {{ $paginator := (.Paginate (where .Page.Site.RegularPages "Section" "in" .Site.Params.mainSections)).Pages.GroupByDate "2006" }} 2 | {{ partial "list.html" $paginator }} -------------------------------------------------------------------------------- /layouts/archives/section.html: -------------------------------------------------------------------------------- 1 | {{ define "title" }} 2 | {{ .Params.Title | default (T .Section) | default .Section | dict "Some" | T "AllSome" }} - {{ .Site.Title }} 3 | {{ end }} 4 | {{ define "main_inner_class" }}archive posts-collapse{{ end }} 5 | {{ define "main" }} 6 |
7 |
8 |
9 | {{ $cheers := "um" }} 10 | {{ $posts := .Scratch.Get "postsCount" }} 11 | {{ if gt $posts 210 }} 12 | {{ $cheers = "excellent" }} 13 | {{ else if gt $posts 130 }} 14 | {{ $cheers = "great" }} 15 | {{ else if gt $posts 80 }} 16 | {{ $cheers = "good" }} 17 | {{ else if gt $posts 50 }} 18 | {{ $cheers = "nice" }} 19 | {{ else if gt $posts 30 }} 20 | {{ $cheers = "ok" }} 21 | {{ end }} 22 | 23 | {{ T (printf "PostArchive.cheers.%s" $cheers) }} 24 | {{ T "Symbol.comma" }} 25 | {{ T "Terms.archives" $posts | safeHTML }} 26 | {{ T "Symbol.comma" }} 27 | {{ T "PostArchive.keepOn" }} 28 | 29 |
30 | 31 | {{ .Render "list" }} 32 | 33 |
34 |
35 | {{ partial "pagination.html" . }} 36 | {{ end }} -------------------------------------------------------------------------------- /layouts/baseof.html: -------------------------------------------------------------------------------- 1 | {{ range $k, $v := (partialCached "init.html" .) }} 2 | {{ $.Scratch.Set $k $v }} 3 | {{ end }} 4 | {{ $isComment := .Params.comment.enable | default .Site.Params.comments.enable }} 5 | {{ .Scratch.Set "isComment" $isComment }} 6 | 7 | 8 | 9 | 10 | {{ partial "head.html" . }} 11 | {{ block "title" . }}{{ .Site.Title }}{{ end }} 12 | 15 | 16 | 17 | 18 |
19 |
20 |
21 |
22 | {{ partial "header.html" . }} 23 |
24 | 25 | {{ if ne .Site.Params.sidebar.display "remove" }} 26 | {{ partial "sidebar.html" . }} 27 | {{ end }} 28 |
29 | 30 | {{ partialCached "widgets.html" . }} 31 |
32 | 33 | {{ block "main" . }}{{ end }} 34 | {{ if and .IsPage $isComment }} 35 | {{ partialCached "comments.html" . }} 36 | {{ end }} 37 |
38 |
39 | 45 | {{ partial "head/config.html" . }} 46 | {{ partial "scripts.html" . }} 47 | 48 | 49 | -------------------------------------------------------------------------------- /layouts/flinks/single.html: -------------------------------------------------------------------------------- 1 | {{ define "title" }}{{ .Title }} - {{ .Site.Title }}{{ end }} 2 | 3 | {{ define "main_inner_class" }}flinks posts-expand{{ end }} 4 | 5 | {{ define "main" }} 6 | 7 | 43 | {{ end }} -------------------------------------------------------------------------------- /layouts/home.html: -------------------------------------------------------------------------------- 1 | {{ define "main_inner_class" }}index posts-expand{{ end }} 2 | 3 | {{ define "main" }} 4 | 5 | {{ $paginator := .Paginate (where .Site.RegularPages "Section" "in" .Site.Params.mainSections) }} 6 | {{ range $paginator.Pages }} 7 | {{ partial "post.html" (dict "ctx" . "IsHome" true) }} 8 | {{ end }} 9 | 10 | {{ partial "pagination.html" . }} 11 | {{ end }} -------------------------------------------------------------------------------- /layouts/list.algoliaindexes.json: -------------------------------------------------------------------------------- 1 | {{ $limit := .Site.Params.algoliaSearch.limit | default 1000 }} 2 | [ 3 | {{ range $index, $entry := where .Site.RegularPages "Kind" "page" }} 4 | {{ if $index }}, {{ end }} 5 | { 6 | "objectID": "{{ .Date.Unix }}", 7 | "permalink": "{{ .Permalink | relURL }}", 8 | "title": {{ .Title | jsonify }}, 9 | {{ if gt .WordCount $limit }} 10 | "content": {{ .Plain | truncate $limit | jsonify | safeJS }}, 11 | {{ else }} 12 | "content": {{ .Plain | jsonify | safeJS }}, 13 | {{ end }} 14 | "date": {{ .Date.Format $.Site.Params.timeFormat | jsonify }}, 15 | "updated": {{ .Lastmod.Format $.Site.Params.timeFormat | jsonify }} 16 | } 17 | {{ end }} 18 | ] -------------------------------------------------------------------------------- /layouts/list.html: -------------------------------------------------------------------------------- 1 | {{ $paginator := .Paginator.Pages.GroupByDate "2006" }} 2 | {{ partial "list.html" $paginator }} -------------------------------------------------------------------------------- /layouts/list.localindexes.xml: -------------------------------------------------------------------------------- 1 | {{ $limit := .Site.Params.localSearch.limit | default 1000 }} 2 | {{ printf "" | safeHTML }} 3 | 4 | {{range where .Site.RegularPages "Kind" "page"}} 5 | 6 | {{ .Title }} 7 | {{ .RelPermalink | relLangURL }} 8 | 9 | {{ range .Params.categories }}{{ . }}{{ end }} 10 | 11 | 12 | {{ range .Params.tags }} 13 | {{ . }} 14 | {{ end }} 15 | 16 | 17 | 18 | {{ end }} 19 | -------------------------------------------------------------------------------- /layouts/section.html: -------------------------------------------------------------------------------- 1 | {{ define "title" }} 2 | {{ .Params.Title | default (T .Section) | default .Section }} - {{ .Site.Title }} 3 | {{ end }} 4 | {{ define "main_inner_class" }}index posts-expand{{ end }} 5 | 6 | {{ define "main" }} 7 | 8 | {{ $paginator := .Paginate (where .Site.RegularPages "Section" "==" .Section) }} 9 | {{ range $paginator.Pages }} 10 | {{ partial "post.html" (dict "ctx" . "IsHome" true) }} 11 | {{ end }} 12 | 13 | {{ partial "pagination.html" . }} 14 | 15 | {{ end }} -------------------------------------------------------------------------------- /layouts/single.html: -------------------------------------------------------------------------------- 1 | {{ define "title" }}{{ .Title }} - {{ .Site.Title }}{{ end }} 2 | 3 | {{ define "main_inner_class" }}post posts-expand{{ end }} 4 | 5 | {{ define "main" }} 6 | {{ partial "post.html" (dict "ctx" . "IsHome" false) }} 7 | {{ end }} -------------------------------------------------------------------------------- /layouts/taxonomy.html: -------------------------------------------------------------------------------- 1 | {{ define "title" }} 2 | {{ .Title }} - {{ T .Data.Singular | default .Data.Singular }} - {{ .Site.Title }} 3 | {{ end }} 4 | {{ define "main_inner_class" }}{{ .Data.Plural }} posts-collapse{{ end }} 5 | {{ define "main" }} 6 |
7 |
8 |
9 | 10 |

11 | {{ .Title }} 12 | {{ T .Data.Singular | default .Data.Singular }} 13 |

14 |
15 |
16 | 17 | {{ .Render "list" }} 18 | 19 |
20 |
21 | {{ partial "pagination.html" . }} 22 | {{ end }} -------------------------------------------------------------------------------- /static/css/noscript.css: -------------------------------------------------------------------------------- 1 | body { margin-top: 2rem; } 2 | 3 | .use-motion .menu-item, 4 | .use-motion .sidebar, 5 | .use-motion .post-block, 6 | .use-motion .pagination, 7 | .use-motion .comments, 8 | .use-motion .post-header, 9 | .use-motion .post-body, 10 | .use-motion .collection-header { 11 | visibility: visible; 12 | } 13 | 14 | .use-motion header.header, 15 | .use-motion .site-brand-container .toggle, 16 | .use-motion .footer { opacity: initial; } 17 | 18 | .use-motion .site-title, 19 | .use-motion .site-subtitle, 20 | .use-motion .custom-logo-image { 21 | opacity: initial; 22 | top: initial; 23 | } 24 | 25 | .use-motion .logo-line { 26 | transform: scaleX(1); 27 | } 28 | 29 | .search-pop-overlay, .sidebar-nav { display: none; } 30 | .sidebar-panel { display: block; } -------------------------------------------------------------------------------- /static/imgs/cc/cc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/imgs/flags/en-us.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/imgs/flags/fr-fr.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /static/imgs/flags/zh-cn.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/imgs/gongan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/imgs/gongan.png -------------------------------------------------------------------------------- /static/imgs/hugo_next_avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/imgs/hugo_next_avatar.png -------------------------------------------------------------------------------- /static/imgs/hugo_next_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/imgs/hugo_next_logo.png -------------------------------------------------------------------------------- /static/imgs/icons/apple_touch_icon_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/imgs/icons/apple_touch_icon_next.png -------------------------------------------------------------------------------- /static/imgs/icons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/imgs/icons/favicon.ico -------------------------------------------------------------------------------- /static/imgs/icons/favicon_16x16_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/imgs/icons/favicon_16x16_next.png -------------------------------------------------------------------------------- /static/imgs/icons/favicon_32_32_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/imgs/icons/favicon_32_32_next.png -------------------------------------------------------------------------------- /static/imgs/img-lazy-loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/imgs/img-lazy-loading.gif -------------------------------------------------------------------------------- /static/imgs/vendors/github.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/imgs/vendors/upyun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/imgs/vendors/upyun.png -------------------------------------------------------------------------------- /static/imgs/vendors/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/js/.gitkeep: -------------------------------------------------------------------------------- 1 | // Keep the folder under git version control -------------------------------------------------------------------------------- /static/js/3rd/font-awesome/6.7.2/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/font-awesome/6.7.2/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /static/js/3rd/font-awesome/6.7.2/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/font-awesome/6.7.2/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /static/js/3rd/font-awesome/6.7.2/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/font-awesome/6.7.2/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /static/js/3rd/font-awesome/6.7.2/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/font-awesome/6.7.2/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /static/js/3rd/font-awesome/6.7.2/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/font-awesome/6.7.2/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /static/js/3rd/font-awesome/6.7.2/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/font-awesome/6.7.2/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /static/js/3rd/font-awesome/6.7.2/webfonts/fa-v4compatibility.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/font-awesome/6.7.2/webfonts/fa-v4compatibility.ttf -------------------------------------------------------------------------------- /static/js/3rd/font-awesome/6.7.2/webfonts/fa-v4compatibility.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/font-awesome/6.7.2/webfonts/fa-v4compatibility.woff2 -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_AMS-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_AMS-Regular.ttf -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_AMS-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_AMS-Regular.woff -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_AMS-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_AMS-Regular.woff2 -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Caligraphic-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Caligraphic-Bold.ttf -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Caligraphic-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Caligraphic-Bold.woff -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Caligraphic-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Caligraphic-Bold.woff2 -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Caligraphic-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Caligraphic-Regular.ttf -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Caligraphic-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Caligraphic-Regular.woff -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Caligraphic-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Caligraphic-Regular.woff2 -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Fraktur-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Fraktur-Bold.ttf -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Fraktur-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Fraktur-Bold.woff -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Fraktur-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Fraktur-Bold.woff2 -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Fraktur-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Fraktur-Regular.ttf -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Fraktur-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Fraktur-Regular.woff -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Fraktur-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Fraktur-Regular.woff2 -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-Bold.ttf -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-Bold.woff -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-Bold.woff2 -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-BoldItalic.ttf -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-BoldItalic.woff -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-BoldItalic.woff2 -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-Italic.ttf -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-Italic.woff -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-Italic.woff2 -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-Regular.ttf -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-Regular.woff -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Main-Regular.woff2 -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Math-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Math-BoldItalic.ttf -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Math-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Math-BoldItalic.woff -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Math-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Math-BoldItalic.woff2 -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Math-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Math-Italic.ttf -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Math-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Math-Italic.woff -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Math-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Math-Italic.woff2 -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_SansSerif-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_SansSerif-Bold.ttf -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_SansSerif-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_SansSerif-Bold.woff -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_SansSerif-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_SansSerif-Bold.woff2 -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_SansSerif-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_SansSerif-Italic.ttf -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_SansSerif-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_SansSerif-Italic.woff -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_SansSerif-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_SansSerif-Italic.woff2 -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_SansSerif-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_SansSerif-Regular.ttf -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_SansSerif-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_SansSerif-Regular.woff -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_SansSerif-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_SansSerif-Regular.woff2 -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Script-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Script-Regular.ttf -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Script-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Script-Regular.woff -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Script-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Script-Regular.woff2 -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Size1-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Size1-Regular.ttf -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Size1-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Size1-Regular.woff -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Size1-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Size1-Regular.woff2 -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Size2-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Size2-Regular.ttf -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Size2-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Size2-Regular.woff -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Size2-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Size2-Regular.woff2 -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Size3-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Size3-Regular.ttf -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Size3-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Size3-Regular.woff -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Size3-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Size3-Regular.woff2 -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Size4-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Size4-Regular.ttf -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Size4-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Size4-Regular.woff -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Size4-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Size4-Regular.woff2 -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Typewriter-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Typewriter-Regular.ttf -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Typewriter-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Typewriter-Regular.woff -------------------------------------------------------------------------------- /static/js/3rd/katex/0.16.15/fonts/KaTeX_Typewriter-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugo-next/hugo-theme-next/d5725ec807fcd42f0097eb0781e93951c9892cc2/static/js/3rd/katex/0.16.15/fonts/KaTeX_Typewriter-Regular.woff2 -------------------------------------------------------------------------------- /static/js/3rd/waline/2.15.8/comment.min.js: -------------------------------------------------------------------------------- 1 | !function(e,t){"function"==typeof define&&define.amd?define("Waline",["exports"],t):"undefined"!=typeof exports?t(exports):(t(t={}),e.Waline=t)}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.version=e.commentCount=void 0;const c=e=>{e=function(e){return(0{"AbortError"!==e.name&&console.error(e.message)};e.version="2.15.8",e.commentCount=e=>{let{serverURL:r,path:a=window.location.pathname,selector:t=".waline-comment-count",lang:i=navigator.language}=e;const l=new AbortController,s=document.querySelectorAll(t);return s.length&&(()=>{let{serverURL:e,lang:t,paths:n,signal:o}={serverURL:c(r),paths:Array.from(s).map(e=>(e=>{try{e=decodeURI(e)}catch(e){}return e})(e.dataset.path||e.getAttribute("id")||a)),lang:i,signal:l.signal};return fetch(`${e}/comment?type=count&url=${encodeURIComponent(n.join(","))}&lang=`+t,{signal:o}).then(e=>e.json()).then(e=>Array.isArray(e)?e:[e])})().then(n=>{s.forEach((e,t)=>{e.innerText=n[t].toString()})}).catch(n),l.abort.bind(l)}}); -------------------------------------------------------------------------------- /static/js/3rd/waline/2.15.8/pageview.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Skipped minification because the original files appears to be already minified. 3 | * Original file: /npm/@waline/client@2.15.8/dist/pageview.js 4 | * 5 | * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files 6 | */ 7 | !function(e,t){if("function"==typeof define&&define.amd)define("Waline",["exports"],t);else if("undefined"!=typeof exports)t(exports);else{var n={exports:{}};t(n.exports),e.Waline=n.exports}}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.version=e.pageviewCount=void 0;const t={"Content-Type":"application/json"},n=e=>(e=>{let{serverURL:n,lang:r,path:o,type:a,action:i}=e;return fetch(`${n}/article?lang=${r}`,{method:"POST",headers:t,body:JSON.stringify({path:o,type:a,action:i})}).then((e=>e.json()))})({...e,type:"time",action:"inc"}),r=e=>{const t=function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").replace(/\/$/u,"")}(e);return/^(https?:)?\/\//.test(t)?t:`https://${t}`},o=e=>{"AbortError"!==e.name&&console.error(e.message)},a=e=>e.dataset.path||e.getAttribute("id"),i=(e,t)=>{t.forEach(((t,n)=>{t.innerText=e[n].toString()}))};e.pageviewCount=e=>{let{serverURL:t,path:l=window.location.pathname,selector:s=".waline-pageview-count",update:p=!0,lang:c=navigator.language}=e;const g=new AbortController,h=Array.from(document.querySelectorAll(s)),f=e=>{const t=a(e);return null!==t&&l!==t},u=e=>(e=>{let{serverURL:t,lang:n,paths:r,signal:o}=e;return(e=>{let{serverURL:t,lang:n,paths:r,type:o,signal:a}=e;return fetch(`${t}/article?path=${encodeURIComponent(r.join(","))}&type=${encodeURIComponent(o.join(","))}&lang=${n}`,{signal:a}).then((e=>e.json()))})({serverURL:t,lang:n,paths:r,type:["time"],signal:o}).then((e=>Array.isArray(e)?e:[e]))})({serverURL:r(t),paths:e.map((e=>a(e)||l)),lang:c,signal:g.signal}).then((t=>i(t,e))).catch(o);if(p){const e=h.filter((e=>!f(e))),o=h.filter(f);n({serverURL:r(t),path:l,lang:c}).then((t=>i(new Array(e.length).fill(t),e))),o.length&&u(o)}else u(h);return g.abort.bind(g)},e.version="2.15.8"})); 8 | //# sourceMappingURL=pageview.js.map 9 | -------------------------------------------------------------------------------- /static/js/3rd/waline/3.5.7/comment.min.js: -------------------------------------------------------------------------------- 1 | const h=e=>`${e.replace(/\/?$/,"/")}api/`,i=(e,n="")=>{if(typeof e=="object"&&e.errno)throw new TypeError(`${n} failed with ${e.errno}: ${e.errmsg}`);return e},g=({serverURL:e,lang:n,paths:r,signal:o})=>fetch(`${h(e)}comment?type=count&url=${encodeURIComponent(r.join(","))}&lang=${n}`,{signal:o}).then(t=>t.json()).then(t=>i(t,"Get comment count").data),p=e=>{try{e=decodeURI(e)}catch{}return e},m=(e="")=>e.replace(/\/$/u,""),u=e=>/^(https?:)?\/\//.test(e),d=e=>{const n=m(e);return u(n)?n:`https://${n}`},$=e=>{e.name!=="AbortError"&&console.error(e.message)},f=e=>{const{path:n}=e.dataset;return n!=null&&n.length?n:null},v=({serverURL:e,path:n=window.location.pathname,selector:r=".waline-comment-count",lang:o=navigator.language})=>{const t=new AbortController,a=document.querySelectorAll(r);return a.length&&g({serverURL:d(e),paths:Array.from(a).map(c=>p(f(c)??n)),lang:o,signal:t.signal}).then(c=>{a.forEach((s,l)=>{s.innerText=c[l].toString()})}).catch($),t.abort.bind(t)},w="3.5.7";export{v as commentCount,w as version}; 2 | //# sourceMappingURL=comment.js.map 3 | -------------------------------------------------------------------------------- /static/js/3rd/waline/3.5.7/pageview.min.js: -------------------------------------------------------------------------------- 1 | const v="3.5.7",$={"Content-Type":"application/json"},h=e=>`${e.replace(/\/?$/,"/")}api/`,u=(e,t="")=>{if(typeof e=="object"&&e.errno)throw new TypeError(`${t} failed with ${e.errno}: ${e.errmsg}`);return e},f=({serverURL:e,lang:t,paths:r,type:o,signal:a})=>fetch(`${h(e)}article?path=${encodeURIComponent(r.join(","))}&type=${encodeURIComponent(o.join(","))}&lang=${t}`,{signal:a}).then(n=>n.json()).then(n=>u(n,"Get counter").data),R=({serverURL:e,lang:t,path:r,type:o,action:a})=>fetch(`${h(e)}article?lang=${t}`,{method:"POST",headers:$,body:JSON.stringify({path:r,type:o,action:a})}).then(n=>n.json()).then(n=>u(n,"Update counter").data),U=({serverURL:e,lang:t,paths:r,signal:o})=>f({serverURL:e,lang:t,paths:r,type:["time"],signal:o}),w=e=>R({...e,type:"time",action:"inc"}),L=(e="")=>e.replace(/\/$/u,""),b=e=>/^(https?:)?\/\//.test(e),d=e=>{const t=L(e);return b(t)?t:`https://${t}`},j=e=>{e.name!=="AbortError"&&console.error(e.message)},m=e=>{const{path:t}=e.dataset;return t!=null&&t.length?t:null},y=(e,t)=>{t.forEach((r,o)=>{const a=e[o].time;typeof a=="number"&&(r.innerText=a.toString())})},S=({serverURL:e,path:t=window.location.pathname,selector:r=".waline-pageview-count",update:o=!0,lang:a=navigator.language})=>{const n=new AbortController,i=Array.from(document.querySelectorAll(r)),p=l=>{const s=m(l);return s!==null&&t!==s},g=l=>U({serverURL:d(e),paths:l.map(s=>m(s)??t),lang:a,signal:n.signal}).then(s=>y(s,l)).catch(j);if(o){const l=i.filter(c=>!p(c)),s=i.filter(p);w({serverURL:d(e),path:t,lang:a}).then(c=>y(c,l)),s.length&&g(s)}else g(i);return n.abort.bind(n)};export{S as pageviewCount,v as version}; 2 | //# sourceMappingURL=pageview.js.map 3 | -------------------------------------------------------------------------------- /theme.toml: -------------------------------------------------------------------------------- 1 | name = "Hugo NexT" 2 | license = "MIT" 3 | licenselink = "https://github.com/hugo-next/hugo-theme-next/blob/main/LICENSE" 4 | description = "Easily & powerful theme for Hugo engine." 5 | homepage = "https://github.com/hugo-next/hugo-theme-next" 6 | tags = ["Blog", "Simple", "Personal", "Responsive", "Documentation", "Light", "Dark"] 7 | features = ["Blog", "Responsive", "Documentation", "Light", "Dark"] 8 | min_version = "0.146.0" 9 | demosite = "https://preview.hugo-next.eu.org" 10 | 11 | [author] 12 | name = "lisenhui" 13 | homepage = "https://lisenhui.cn" 14 | --------------------------------------------------------------------------------