├── settings.gradle ├── package.json ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── templates ├── assets │ ├── img │ │ ├── default-cover.jpg │ │ └── ObsidianestLogo.png │ ├── libs │ │ ├── iconfont │ │ │ ├── iconfont.ttf │ │ │ ├── iconfont.woff │ │ │ └── iconfont.woff2 │ │ ├── tocbot │ │ │ └── 4.18.2 │ │ │ │ └── tocbot.css │ │ └── prism │ │ │ └── themes │ │ │ ├── prism-dracula.css │ │ │ ├── prism-lucario.css │ │ │ ├── prism-nord.css │ │ │ ├── prism-hopscotch.css │ │ │ ├── prism-holi-theme.css │ │ │ ├── prism-atom-dark.css │ │ │ ├── prism-ghcolors.css │ │ │ ├── prism-solarized-dark-atom.css │ │ │ ├── prism-coy-without-shadows.css │ │ │ ├── prism-gruvbox-dark.css │ │ │ ├── prism-synthwave84.css │ │ │ ├── prism-gruvbox-light.css │ │ │ ├── prism-a11y-dark.css │ │ │ ├── prism-z-touch.css │ │ │ ├── prism-night-owl.css │ │ │ ├── prism-darcula.css │ │ │ ├── prism-material-dark.css │ │ │ ├── prism-material-light.css │ │ │ ├── prism-material-oceanic.css │ │ │ ├── prism-vs.css │ │ │ ├── prism-cb.css │ │ │ ├── prism-duotone-light.css │ │ │ ├── prism-base16-ateliersulphurpool.light.css │ │ │ ├── prism-duotone-dark.css │ │ │ ├── prism-duotone-space.css │ │ │ ├── prism-duotone-earth.css │ │ │ ├── prism-duotone-forest.css │ │ │ ├── prism-duotone-sea.css │ │ │ ├── prism-xonokai.css │ │ │ ├── prism-shades-of-purple.css │ │ │ └── prism-pojoaque.css │ ├── css │ │ ├── breadcrumbs.css │ │ ├── error.css │ │ └── links.css │ ├── js │ │ ├── main.js │ │ └── navigator.js │ ├── svg │ │ └── bilibili.svg │ └── html │ │ └── link-canvas.html ├── macro │ ├── breadcrumbs.html │ ├── app-banner.html │ ├── prism-code.html │ ├── post-stats.html │ ├── links-canvas.html │ ├── bangumi-item.html │ ├── post-card.html │ └── post-list.html ├── modules │ ├── common │ │ ├── code.html │ │ ├── toc-bot.html │ │ ├── bot.html │ │ └── mobile-sidebar.html │ ├── main.html │ ├── nav.html │ ├── comment.html │ ├── aside.html │ ├── comment │ │ └── twikoo.html │ ├── widgets │ │ ├── nav-menu.html │ │ ├── aside │ │ │ ├── tags.html │ │ │ ├── toc.html │ │ │ ├── profile.html │ │ │ └── comments.html │ │ ├── page.html │ │ └── nav-right.html │ └── head.html ├── index.html ├── tag.html ├── category.html ├── categories.html ├── tags.html ├── page.html ├── archives.html ├── moments.html └── error │ ├── 404.html │ └── 500.html ├── .github ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── feature_request.zh.yml │ └── bug_report.zh.yml └── workflows │ └── build.yml ├── .gitignore ├── theme.yaml ├── annotation-setting.yaml ├── .all-contributorsrc ├── LICENSE └── gradlew.bat /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'theme-aurora' 2 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "halo-theme-aurora", 3 | "version": "1.0.3", 4 | "dependencies": { 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Roozenlz/halo-theme-aurora/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /templates/assets/img/default-cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Roozenlz/halo-theme-aurora/HEAD/templates/assets/img/default-cover.jpg -------------------------------------------------------------------------------- /templates/assets/img/ObsidianestLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Roozenlz/halo-theme-aurora/HEAD/templates/assets/img/ObsidianestLogo.png -------------------------------------------------------------------------------- /templates/assets/libs/iconfont/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Roozenlz/halo-theme-aurora/HEAD/templates/assets/libs/iconfont/iconfont.ttf -------------------------------------------------------------------------------- /templates/assets/libs/iconfont/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Roozenlz/halo-theme-aurora/HEAD/templates/assets/libs/iconfont/iconfont.woff -------------------------------------------------------------------------------- /templates/assets/libs/iconfont/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Roozenlz/halo-theme-aurora/HEAD/templates/assets/libs/iconfont/iconfont.woff2 -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | contact_links: 3 | - name: 对 Aurora 有其他问题 4 | url: https://roozen.top 5 | about: 如果你还有其他疑问,可以加群沟通。 -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /templates/macro/breadcrumbs.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 7 |

8 |
9 |
-------------------------------------------------------------------------------- /templates/assets/css/breadcrumbs.css: -------------------------------------------------------------------------------- 1 | .breadcrumbs,.breadcrumbs li { 2 | position: relative; 3 | z-index: 20 4 | } 5 | 6 | .breadcrumbs li:after { 7 | content: ">"; 8 | position: absolute; 9 | top: .05rem; 10 | right: -.95rem; 11 | opacity: .65 12 | } 13 | 14 | .breadcrumbs li:last-of-type:after { 15 | content: "" 16 | } 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | .DS_Store 12 | *.local 13 | 14 | # Editor directories and files 15 | .vscode/* 16 | !.vscode/extensions.json 17 | .idea 18 | *.suo 19 | *.ntvs* 20 | *.njsproj 21 | *.sln 22 | *.sw? 23 | 24 | .gradle 25 | build 26 | -------------------------------------------------------------------------------- /templates/macro/app-banner.html: -------------------------------------------------------------------------------- 1 | 2 |
4 |
6 |
7 |
8 |
-------------------------------------------------------------------------------- /templates/modules/common/code.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /theme.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: theme.halo.run/v1alpha1 2 | kind: Theme 3 | metadata: 4 | name: theme-aurora 5 | spec: 6 | displayName: Aurora 7 | author: 8 | name: Roozen 9 | website: https://roozen.top 10 | description: 移植自hexo-theme-aurora适配Halo2.x的Aurora主题 11 | logo: https://roozen.top/upload/ObsidianestLogo-hex_hecqbw.png 12 | website: https://roozen.top/?preview-theme=theme-aurora 13 | repo: https://github.com/Roozenlz/halo-theme-aurora 14 | settingName: "theme-aurora-setting" 15 | configMapName: "theme-aurora-configMap" 16 | version: "1.0.3" 17 | require: ">=2.8.0" 18 | -------------------------------------------------------------------------------- /templates/assets/libs/tocbot/4.18.2/tocbot.css: -------------------------------------------------------------------------------- 1 | .toc{overflow-y:auto}.toc>.toc-list{overflow:hidden;position:relative}.toc>.toc-list li{list-style:none}.js-toc{overflow-y:hidden}.toc-list{margin:0;padding-left:10px}a.toc-link{color:currentColor;height:100%}.is-collapsible{max-height:1000px;overflow:hidden;transition:all 300ms ease-in-out}.is-collapsed{max-height:0}.is-position-fixed{position:fixed !important;top:0}.is-active-link{font-weight:700}.toc-link::before{background-color:#EEE;content:' ';display:inline-block;height:inherit;left:0;margin-top:-1px;position:absolute;width:2px}.is-active-link::before{background-color:#54BC4B} 2 | -------------------------------------------------------------------------------- /templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 |
7 |
8 | 9 | 10 |
11 |
12 |
13 | 14 | -------------------------------------------------------------------------------- /templates/tag.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 |
7 | 9 |
10 |
11 |
12 | -------------------------------------------------------------------------------- /templates/category.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 |
7 | 8 |
9 |
10 | 11 |
12 | 13 | -------------------------------------------------------------------------------- /templates/assets/js/main.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', function () { 2 | /** 3 | * 网页运行时间 4 | */ 5 | const addRuntime = () => { 6 | const $runtimeCount = document.getElementById('runtimeshow'); 7 | if ($runtimeCount) { 8 | var s1 = $runtimeCount.innerText;;//建站时间 9 | if (s1) { 10 | s1 = new Date(s1.replace(/-/g, "/")); 11 | s2 = new Date(); 12 | var days = s2.getTime() - s1.getTime(); 13 | var number_of_days = parseInt(days / (1000 * 60 * 60 * 24)); 14 | $runtimeCount.innerText = number_of_days + "天"; 15 | } 16 | } 17 | } 18 | window.refreshFn = function () { 19 | addRuntime(); 20 | } 21 | refreshFn() 22 | }) -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.zh.yml: -------------------------------------------------------------------------------- 1 | name: 新特性建议 2 | description: 提交新特性建议 3 | body: 4 | - type: markdown 5 | id: preface 6 | attributes: 7 | value: "你好!在开始之前,我们非常推荐阅读一遍[《开源最佳实践》](https://github.com/LinuxSuRen/open-source-best-practice),这会在很大程度上提高我们彼此的效率。" 8 | - type: markdown 9 | id: environment 10 | attributes: 11 | value: "## 环境信息" 12 | - type: input 13 | id: version 14 | attributes: 15 | label: "你当前使用的版本" 16 | description: "可以在管理后台的关于页面中找到。" 17 | - type: markdown 18 | id: details 19 | attributes: 20 | value: "## 详细信息" 21 | - type: textarea 22 | id: description 23 | attributes: 24 | label: "描述一下此特性" 25 | validations: 26 | required: true 27 | - type: textarea 28 | id: additional-information 29 | attributes: 30 | label: "附加信息" 31 | description: "如果你还有其他需要提供的信息,可以在这里填写(可以提供截图、视频等)。" -------------------------------------------------------------------------------- /annotation-setting.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1alpha1 2 | kind: AnnotationSetting 3 | metadata: 4 | generateName: annotation-setting- 5 | spec: 6 | targetRef: 7 | group: "core.halo.run" 8 | kind: LinkGroup 9 | formSchema: 10 | - $formkit: "radio" 11 | name: "displayStyle" 12 | label: "分组方式" 13 | value: default 14 | options: 15 | - label: 默认 16 | value: default 17 | - label: 美化 18 | value: beautify 19 | - $formkit: "textarea" 20 | name: "description" 21 | label: "描述" 22 | --- 23 | apiVersion: v1alpha1 24 | kind: AnnotationSetting 25 | metadata: 26 | generateName: annotation-setting- 27 | spec: 28 | targetRef: 29 | group: "core.halo.run" 30 | kind: Link 31 | formSchema: 32 | - $formkit: "attachment" 33 | name: "siteshot" 34 | label: "背景" 35 | - $formkit: "text" 36 | name: "label" 37 | label: "标签" 38 | - $formkit: "color" 39 | name: "labelColor" 40 | value: "#425AEF" 41 | label: "标签颜色" 42 | --- 43 | -------------------------------------------------------------------------------- /.all-contributorsrc: -------------------------------------------------------------------------------- 1 | { 2 | "files": [ 3 | "README.md" 4 | ], 5 | "imageSize": 100, 6 | "commit": false, 7 | "commitType": "docs", 8 | "commitConvention": "angular", 9 | "contributors": [ 10 | { 11 | "login": "Roozenlz", 12 | "name": "Roozen", 13 | "avatar_url": "https://avatars.githubusercontent.com/u/93673944?v=4", 14 | "profile": "http://roozen.top", 15 | "contributions": [ 16 | "infra", 17 | "test", 18 | "code" 19 | ] 20 | }, 21 | { 22 | "login": "chengzhongxue", 23 | "name": "困困鱼", 24 | "avatar_url": "https://avatars.githubusercontent.com/avatars/u/89380218?v=4", 25 | "profile": "https://github.com/chengzhongxue", 26 | "contributions": [ 27 | "infra", 28 | "test", 29 | "code" 30 | ] 31 | } 32 | ], 33 | "contributorsPerLine": 7, 34 | "skipCi": true, 35 | "repoType": "github", 36 | "repoHost": "https://github.com", 37 | "projectName": "halo-theme-aurora", 38 | "projectOwner": "Roozenlz" 39 | } 40 | -------------------------------------------------------------------------------- /templates/modules/main.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |

8 | 9 | 11 | 文章列表 12 | 14 |

15 |
16 |
17 | 19 |
20 |
21 |
22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Roozen 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /templates/modules/common/toc-bot.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /templates/assets/svg/bilibili.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /templates/modules/nav.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 21 | 22 | -------------------------------------------------------------------------------- /templates/macro/prism-code.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 11 | 12 | 13 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /templates/modules/comment.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 |
8 |
9 | 10 |
12 |
13 |

14 | 评论区 16 |

17 | 18 | 20 | 21 |
22 |
23 |
24 | 25 | -------------------------------------------------------------------------------- /templates/assets/html/link-canvas.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 互动友链 8 | 28 | 29 | 30 | 31 |
32 | 33 | 34 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /templates/modules/aside.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 28 | 29 | 30 |
31 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.zh.yml: -------------------------------------------------------------------------------- 1 | name: Bug 反馈 2 | description: 提交 Bug 反馈 3 | labels: [ bug ] 4 | body: 5 | - type: markdown 6 | id: preface 7 | attributes: 8 | value: | 9 | 感谢你花时间填写此错误报告!在开始之前,我们非常推荐阅读一遍[《开源最佳实践》](https://github.com/LinuxSuRen/open-source-best-practice),这会在很大程度上提高我们彼此的效率。 10 | - type: markdown 11 | id: environment 12 | attributes: 13 | value: "## 环境信息" 14 | - type: input 15 | id: version 16 | validations: 17 | required: true 18 | attributes: 19 | label: "是什么版本出现了此问题?" 20 | description: "可以在管理后台的关于页面中找到。" 21 | - type: input 22 | id: site-url 23 | attributes: 24 | label: "在线站点地址" 25 | description: "如果可以的话,请提供你的站点地址。这可能会帮助我们更好的定位问题。" 26 | placeholder: "ex. https://halo.run" 27 | validations: 28 | required: false 29 | - type: markdown 30 | id: details 31 | attributes: 32 | value: "## 详细信息" 33 | - type: textarea 34 | id: what-happened 35 | attributes: 36 | label: "发生了什么?" 37 | description: "最好还告诉我们,你预计会发生什么。" 38 | validations: 39 | required: true 40 | - type: textarea 41 | id: logs 42 | attributes: 43 | label: "相关日志输出" 44 | description: "请复制并粘贴任何相关的日志输出。 这将自动格式化为代码,因此无需反引号。" 45 | render: shell 46 | - type: textarea 47 | id: additional-information 48 | attributes: 49 | label: "附加信息" 50 | description: "如果你还有其他需要提供的信息,可以在这里填写(可以提供截图、视频等)。" 51 | -------------------------------------------------------------------------------- /templates/categories.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 |
7 |
8 | 9 | 10 |
11 | 23 |
24 |
25 |
26 |
27 | 28 | -------------------------------------------------------------------------------- /templates/tags.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 |
7 |
8 | 9 | 10 |
11 |
12 | 22 |
23 |
24 |
25 |
26 |
27 | 28 | -------------------------------------------------------------------------------- /templates/modules/comment/twikoo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |
6 |

7 | 评论区 10 |

11 |
12 |
13 | 14 | 46 | 47 |
48 | 49 | 50 | -------------------------------------------------------------------------------- /templates/page.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 |
8 | 9 |
10 | 11 | 12 |
13 |
14 | 15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | 23 | 28 |
29 |
30 |
31 | 32 |
33 | 34 |
35 |
36 | 37 | -------------------------------------------------------------------------------- /templates/modules/common/bot.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |
10 |
11 |
请您轻一点,我是很昂贵的机器人哦! 12 | O.O 13 |
14 |
15 |
16 |
17 |
19 |
21 |
22 |
23 |
24 |
25 |
26 | 38 |
39 | -------------------------------------------------------------------------------- /templates/modules/widgets/nav-menu.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 29 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /templates/modules/widgets/aside/tags.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /templates/modules/widgets/page.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 |
10 | 51 |
52 | -------------------------------------------------------------------------------- /templates/macro/post-stats.html: -------------------------------------------------------------------------------- 1 | 2 |
4 | 5 | 7 | 9 | 10 | [[${wordCount / 400}]] mins. 11 | 12 | 13 | 14 | [[${wordCount}]] 15 | 16 | 17 | 19 | 21 | 22 | 23 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |
40 |
-------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-dracula.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Dracula Theme originally by Zeno Rocha [@zenorocha] 3 | * https://draculatheme.com/ 4 | * 5 | * Ported for PrismJS by Albert Vallverdu [@byverdu] 6 | */ 7 | 8 | code[class*="language-"], 9 | pre[class*="language-"] { 10 | color: #f8f8f2; 11 | background: none; 12 | text-shadow: 0 1px rgba(0, 0, 0, 0.3); 13 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 14 | text-align: left; 15 | white-space: pre; 16 | word-spacing: normal; 17 | word-break: normal; 18 | word-wrap: normal; 19 | line-height: 1.5; 20 | -moz-tab-size: 4; 21 | -o-tab-size: 4; 22 | tab-size: 4; 23 | -webkit-hyphens: none; 24 | -moz-hyphens: none; 25 | -ms-hyphens: none; 26 | hyphens: none; 27 | } 28 | 29 | /* Code blocks */ 30 | pre[class*="language-"] { 31 | padding: 1em; 32 | margin: .5em 0; 33 | overflow: auto; 34 | border-radius: 0.3em; 35 | } 36 | 37 | :not(pre) > code[class*="language-"], 38 | pre[class*="language-"] { 39 | background: #282a36; 40 | } 41 | 42 | /* Inline code */ 43 | :not(pre) > code[class*="language-"] { 44 | padding: .1em; 45 | border-radius: .3em; 46 | white-space: normal; 47 | } 48 | 49 | .token.comment, 50 | .token.prolog, 51 | .token.doctype, 52 | .token.cdata { 53 | color: #6272a4; 54 | } 55 | 56 | .token.punctuation { 57 | color: #f8f8f2; 58 | } 59 | 60 | .namespace { 61 | opacity: .7; 62 | } 63 | 64 | .token.property, 65 | .token.tag, 66 | .token.constant, 67 | .token.symbol, 68 | .token.deleted { 69 | color: #ff79c6; 70 | } 71 | 72 | .token.boolean, 73 | .token.number { 74 | color: #bd93f9; 75 | } 76 | 77 | .token.selector, 78 | .token.attr-name, 79 | .token.string, 80 | .token.char, 81 | .token.builtin, 82 | .token.inserted { 83 | color: #50fa7b; 84 | } 85 | 86 | .token.operator, 87 | .token.entity, 88 | .token.url, 89 | .language-css .token.string, 90 | .style .token.string, 91 | .token.variable { 92 | color: #f8f8f2; 93 | } 94 | 95 | .token.atrule, 96 | .token.attr-value, 97 | .token.function, 98 | .token.class-name { 99 | color: #f1fa8c; 100 | } 101 | 102 | .token.keyword { 103 | color: #8be9fd; 104 | } 105 | 106 | .token.regex, 107 | .token.important { 108 | color: #ffb86c; 109 | } 110 | 111 | .token.important, 112 | .token.bold { 113 | font-weight: bold; 114 | } 115 | 116 | .token.italic { 117 | font-style: italic; 118 | } 119 | 120 | .token.entity { 121 | cursor: help; 122 | } 123 | -------------------------------------------------------------------------------- /templates/modules/widgets/nav-right.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 45 | 46 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-lucario.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Lucario Theme originally by Raphael Amorim [@raphamorim] 3 | * https://github.com/raphamorim/lucario 4 | * 5 | * Ported for PrismJS by Christopher Kapic [@christopher-kapic] 6 | */ 7 | 8 | code[class*="language-"], 9 | pre[class*="language-"] { 10 | color: #f8f8f2; 11 | background: none; 12 | text-shadow: 0 1px rgba(0, 0, 0, 0.3); 13 | font-family: Monaco, Consolas, 'Andale Mono', 'Ubuntu Mono', monospace; 14 | text-align: left; 15 | white-space: pre; 16 | word-spacing: normal; 17 | word-break: normal; 18 | word-wrap: normal; 19 | line-height: 1.5; 20 | -moz-tab-size: 4; 21 | -o-tab-size: 4; 22 | tab-size: 4; 23 | -webkit-hyphens: none; 24 | -moz-hyphens: none; 25 | -ms-hyphens: none; 26 | hyphens: none; 27 | } 28 | 29 | /* Code blocks */ 30 | pre[class*="language-"] { 31 | padding: 1em; 32 | margin: .5em 0; 33 | overflow: auto; 34 | border-radius: 0.3em; 35 | } 36 | 37 | :not(pre) > code[class*="language-"], 38 | pre[class*="language-"] { 39 | background: #263E52; 40 | } 41 | 42 | /* Inline code */ 43 | :not(pre) > code[class*="language-"] { 44 | padding: .1em; 45 | border-radius: .3em; 46 | white-space: normal; 47 | } 48 | 49 | .token.comment, 50 | .token.prolog, 51 | .token.doctype, 52 | .token.cdata { 53 | color: #5c98cd; 54 | } 55 | 56 | .token.punctuation { 57 | color: #f8f8f2; 58 | } 59 | 60 | .namespace { 61 | opacity: .7; 62 | } 63 | 64 | .token.property, 65 | .token.tag, 66 | .token.constant, 67 | .token.symbol, 68 | .token.deleted { 69 | color: #F05E5D; 70 | } 71 | 72 | .token.boolean, 73 | .token.number { 74 | color: #BC94F9; 75 | } 76 | 77 | .token.selector, 78 | .token.attr-name, 79 | .token.string, 80 | .token.char, 81 | .token.builtin, 82 | .token.inserted { 83 | color: #FCFCD6; 84 | } 85 | 86 | .token.operator, 87 | .token.entity, 88 | .token.url, 89 | .language-css .token.string, 90 | .style .token.string, 91 | .token.variable { 92 | color: #f8f8f2; 93 | } 94 | 95 | .token.atrule, 96 | .token.attr-value, 97 | .token.function, 98 | .token.class-name { 99 | color: #66D8EF; 100 | } 101 | 102 | .token.keyword { 103 | color: #6EB26E; 104 | } 105 | 106 | .token.regex, 107 | .token.important { 108 | color: #F05E5D; 109 | } 110 | 111 | .token.important, 112 | .token.bold { 113 | font-weight: bold; 114 | } 115 | 116 | .token.italic { 117 | font-style: italic; 118 | } 119 | 120 | .token.entity { 121 | cursor: help; 122 | } 123 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-nord.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Nord Theme Originally by Arctic Ice Studio 3 | * https://nordtheme.com 4 | * 5 | * Ported for PrismJS by Zane Hitchcoxc (@zwhitchcox) and Gabriel Ramos (@gabrieluizramos) 6 | */ 7 | 8 | code[class*="language-"], 9 | pre[class*="language-"] { 10 | color: #f8f8f2; 11 | background: none; 12 | font-family: "Fira Code", Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 13 | text-align: left; 14 | white-space: pre; 15 | word-spacing: normal; 16 | word-break: normal; 17 | word-wrap: normal; 18 | line-height: 1.5; 19 | -moz-tab-size: 4; 20 | -o-tab-size: 4; 21 | tab-size: 4; 22 | -webkit-hyphens: none; 23 | -moz-hyphens: none; 24 | -ms-hyphens: none; 25 | hyphens: none; 26 | } 27 | 28 | /* Code blocks */ 29 | pre[class*="language-"] { 30 | padding: 1em; 31 | margin: .5em 0; 32 | overflow: auto; 33 | border-radius: 0.3em; 34 | } 35 | 36 | :not(pre) > code[class*="language-"], 37 | pre[class*="language-"] { 38 | background: #2E3440; 39 | } 40 | 41 | /* Inline code */ 42 | :not(pre) > code[class*="language-"] { 43 | padding: .1em; 44 | border-radius: .3em; 45 | white-space: normal; 46 | } 47 | 48 | .token.comment, 49 | .token.prolog, 50 | .token.doctype, 51 | .token.cdata { 52 | color: #636f88; 53 | } 54 | 55 | .token.punctuation { 56 | color: #81A1C1; 57 | } 58 | 59 | .namespace { 60 | opacity: .7; 61 | } 62 | 63 | .token.property, 64 | .token.tag, 65 | .token.constant, 66 | .token.symbol, 67 | .token.deleted { 68 | color: #81A1C1; 69 | } 70 | 71 | .token.number { 72 | color: #B48EAD; 73 | } 74 | 75 | .token.boolean { 76 | color: #81A1C1; 77 | } 78 | 79 | .token.selector, 80 | .token.attr-name, 81 | .token.string, 82 | .token.char, 83 | .token.builtin, 84 | .token.inserted { 85 | color: #A3BE8C; 86 | } 87 | 88 | .token.operator, 89 | .token.entity, 90 | .token.url, 91 | .language-css .token.string, 92 | .style .token.string, 93 | .token.variable { 94 | color: #81A1C1; 95 | } 96 | 97 | .token.atrule, 98 | .token.attr-value, 99 | .token.function, 100 | .token.class-name { 101 | color: #88C0D0; 102 | } 103 | 104 | .token.keyword { 105 | color: #81A1C1; 106 | } 107 | 108 | .token.regex, 109 | .token.important { 110 | color: #EBCB8B; 111 | } 112 | 113 | .token.important, 114 | .token.bold { 115 | font-weight: bold; 116 | } 117 | 118 | .token.italic { 119 | font-style: italic; 120 | } 121 | 122 | .token.entity { 123 | cursor: help; 124 | } 125 | -------------------------------------------------------------------------------- /templates/macro/links-canvas.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 53 | 67 | 80 | 81 | -------------------------------------------------------------------------------- /templates/archives.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 |
8 |
9 | 10 | 11 |
12 |
    13 | 14 | 15 |
  • 16 |
    17 |
    18 |
    19 |

    [[${month.month}]] [[${archive.year}]]

    20 |
    21 |
  • 22 |
  • 24 |
    25 |
    26 |
    27 |
    28 | 32 |

    33 |

    34 |
    35 |
  • 36 | 37 |
    38 | 39 |
    40 | 41 |
42 | 43 |
44 |
45 |
46 |
47 |
48 | 49 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-hopscotch.css: -------------------------------------------------------------------------------- 1 | @import url(https://fonts.googleapis.com/css?family=Fira+Mono); 2 | 3 | /* 4 | * Hopscotch 5 | * by Jan T. Sott 6 | * https://github.com/idleberg/Hopscotch 7 | * 8 | * This work is licensed under the Creative Commons CC0 1.0 Universal License 9 | */ 10 | 11 | code[class*="language-"], 12 | pre[class*="language-"] { 13 | font-family: "Fira Mono", Menlo, Monaco, "Lucida Console", "Courier New", Courier, monospace; 14 | font-size: 16px; 15 | line-height: 1.375; 16 | direction: ltr; 17 | text-align: left; 18 | word-spacing: normal; 19 | 20 | -moz-tab-size: 4; 21 | -o-tab-size: 4; 22 | tab-size: 4; 23 | 24 | -webkit-hyphens: none; 25 | -moz-hyphens: none; 26 | -ms-hyphens: none; 27 | hyphens: none; 28 | white-space: pre; 29 | white-space: pre-wrap; 30 | word-break: break-all; 31 | word-wrap: break-word; 32 | background: #322931; 33 | color: #b9b5b8; 34 | } 35 | 36 | pre > code[class*="language-"] { 37 | font-size: 1em; 38 | } 39 | 40 | /* Code blocks */ 41 | pre[class*="language-"] { 42 | padding: 1em; 43 | margin: .5em 0; 44 | overflow: auto; 45 | } 46 | 47 | /* Inline code */ 48 | :not(pre) > code[class*="language-"] { 49 | padding: .1em; 50 | border-radius: .3em; 51 | } 52 | 53 | .token.comment, 54 | .token.prolog, 55 | .token.doctype, 56 | .token.cdata { 57 | color: #797379; 58 | } 59 | 60 | .token.punctuation { 61 | color: #b9b5b8; 62 | } 63 | 64 | .namespace { 65 | opacity: .7; 66 | } 67 | 68 | .token.null, 69 | .token.operator, 70 | .token.boolean, 71 | .token.number { 72 | color: #fd8b19; 73 | } 74 | 75 | .token.property { 76 | color: #fdcc59; 77 | } 78 | 79 | .token.tag { 80 | color: #1290bf; 81 | } 82 | 83 | .token.string { 84 | color: #149b93; 85 | } 86 | 87 | .token.selector { 88 | color: #c85e7c; 89 | } 90 | 91 | .token.attr-name { 92 | color: #fd8b19; 93 | } 94 | 95 | .token.entity, 96 | .token.url, 97 | .language-css .token.string, 98 | .style .token.string { 99 | color: #149b93; 100 | } 101 | 102 | .token.attr-value, 103 | .token.keyword, 104 | .token.control, 105 | .token.directive, 106 | .token.unit { 107 | color: #8fc13e; 108 | } 109 | 110 | .token.statement, 111 | .token.regex, 112 | .token.atrule { 113 | color: #149b93; 114 | } 115 | 116 | .token.placeholder, 117 | .token.variable { 118 | color: #1290bf; 119 | } 120 | 121 | .token.important { 122 | color: #dd464c; 123 | font-weight: bold; 124 | } 125 | 126 | .token.entity { 127 | cursor: help; 128 | } 129 | 130 | pre > code.highlight { 131 | outline: .4em solid red; 132 | outline-offset: .4em; 133 | } 134 | -------------------------------------------------------------------------------- /templates/modules/widgets/aside/toc.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 20 | 51 |
52 | 53 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-holi-theme.css: -------------------------------------------------------------------------------- 1 | /** 2 | * MIT License 3 | * Copyright (c) 2021 Ayush Saini 4 | * Holi Theme for prism.js 5 | * @author Ayush Saini <@AyushCodes on Twitter> 6 | */ 7 | 8 | code[class*='language-'], 9 | pre[class*='language-'] { 10 | color: #d6e7ff; 11 | background: #030314; 12 | text-shadow: none; 13 | font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; 14 | font-size: 1em; 15 | line-height: 1.5; 16 | letter-spacing: .2px; 17 | white-space: pre; 18 | word-spacing: normal; 19 | word-break: normal; 20 | word-wrap: normal; 21 | text-align: left; 22 | 23 | -moz-tab-size: 4; 24 | -o-tab-size: 4; 25 | tab-size: 4; 26 | 27 | -webkit-hyphens: none; 28 | -moz-hyphens: none; 29 | -ms-hyphens: none; 30 | hyphens: none; 31 | } 32 | 33 | pre[class*='language-']::-moz-selection, 34 | pre[class*='language-'] ::-moz-selection, 35 | code[class*='language-']::-moz-selection, 36 | code[class*='language-'] ::-moz-selection, 37 | pre[class*='language-']::selection, 38 | pre[class*='language-'] ::selection, 39 | code[class*='language-']::selection, 40 | code[class*='language-'] ::selection { 41 | color: inherit; 42 | background: #1d3b54; 43 | text-shadow: none; 44 | } 45 | 46 | pre[class*='language-'] { 47 | border: 1px solid #2a4555; 48 | border-radius: 5px; 49 | padding: 1.5em 1em; 50 | margin: 1em 0; 51 | overflow: auto; 52 | } 53 | 54 | :not(pre) > code[class*='language-'] { 55 | color: #f0f6f6; 56 | background: #2a4555; 57 | padding: 0.2em 0.3em; 58 | border-radius: 0.2em; 59 | box-decoration-break: clone; 60 | } 61 | 62 | .token.comment, 63 | .token.prolog, 64 | .token.doctype, 65 | .token.cdata { 66 | color: #446e69; 67 | } 68 | 69 | .token.punctuation { 70 | color: #d6b007; 71 | } 72 | 73 | .token.property, 74 | .token.tag, 75 | .token.boolean, 76 | .token.number, 77 | .token.constant, 78 | .token.symbol, 79 | .token.deleted { 80 | color: #d6e7ff; 81 | } 82 | 83 | .token.selector, 84 | .token.attr-name, 85 | .token.builtin, 86 | .token.inserted { 87 | color: #e60067; 88 | } 89 | 90 | .token.string, 91 | .token.char { 92 | color: #49c6ec; 93 | } 94 | 95 | .token.operator, 96 | .token.entity, 97 | .token.url, 98 | .language-css .token.string, 99 | .style .token.string { 100 | color: #ec8e01; 101 | background: transparent; 102 | } 103 | 104 | .token.atrule, 105 | .token.attr-value, 106 | .token.keyword { 107 | color: #0fe468; 108 | } 109 | 110 | .token.function, 111 | .token.class-name { 112 | color: #78f3e9; 113 | } 114 | 115 | .token.regex, 116 | .token.important, 117 | .token.variable { 118 | color: #d6e7ff; 119 | } 120 | -------------------------------------------------------------------------------- /templates/moments.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 |
8 |
9 | 10 | 11 |
12 |
    13 |
  • 14 |
    15 |
    16 |
    17 |

    18 |
    19 |
  • 20 |
  • 23 |
    24 |
    25 |
    26 |
    27 |
    30 |
    31 | 33 | 34 | 36 | 37 |
    38 |
    39 |
  • 40 |
41 | 42 |
43 |
44 |
45 |
46 |
47 | 48 | -------------------------------------------------------------------------------- /templates/macro/bangumi-item.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |
6 | 10 |
11 |
12 |
13 | [[${spec.title}]] 14 |
15 |
16 | 17 | 18 | [[${spec.totalCount}]] 19 | 0 20 | 21 | 22 | [[${spec.type}]] 23 | 24 | 25 | 26 | 总播放 27 | 28 | 29 | 30 | 追番人数 31 | 32 | 33 | 34 | 硬币数 35 | 36 | 37 | 38 | 弹幕总数 39 | 40 | 41 | 42 | 评分 43 | 44 | 45 | 46 |
47 |
48 |

[[${spec.des}]]

49 |
50 |
51 |
52 |
53 | 54 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-atom-dark.css: -------------------------------------------------------------------------------- 1 | /** 2 | * atom-dark theme for `prism.js` 3 | * Based on Atom's `atom-dark` theme: https://github.com/atom/atom-dark-syntax 4 | * @author Joe Gibson (@gibsjose) 5 | */ 6 | 7 | code[class*="language-"], 8 | pre[class*="language-"] { 9 | color: #c5c8c6; 10 | text-shadow: 0 1px rgba(0, 0, 0, 0.3); 11 | font-family: Inconsolata, Monaco, Consolas, 'Courier New', Courier, monospace; 12 | direction: ltr; 13 | text-align: left; 14 | white-space: pre; 15 | word-spacing: normal; 16 | word-break: normal; 17 | line-height: 1.5; 18 | 19 | -moz-tab-size: 4; 20 | -o-tab-size: 4; 21 | tab-size: 4; 22 | 23 | -webkit-hyphens: none; 24 | -moz-hyphens: none; 25 | -ms-hyphens: none; 26 | hyphens: none; 27 | } 28 | 29 | /* Code blocks */ 30 | pre[class*="language-"] { 31 | padding: 1em; 32 | margin: .5em 0; 33 | overflow: auto; 34 | border-radius: 0.3em; 35 | } 36 | 37 | :not(pre) > code[class*="language-"], 38 | pre[class*="language-"] { 39 | background: #1d1f21; 40 | } 41 | 42 | /* Inline code */ 43 | :not(pre) > code[class*="language-"] { 44 | padding: .1em; 45 | border-radius: .3em; 46 | } 47 | 48 | .token.comment, 49 | .token.prolog, 50 | .token.doctype, 51 | .token.cdata { 52 | color: #7C7C7C; 53 | } 54 | 55 | .token.punctuation { 56 | color: #c5c8c6; 57 | } 58 | 59 | .namespace { 60 | opacity: .7; 61 | } 62 | 63 | .token.property, 64 | .token.keyword, 65 | .token.tag { 66 | color: #96CBFE; 67 | } 68 | 69 | .token.class-name { 70 | color: #FFFFB6; 71 | text-decoration: underline; 72 | } 73 | 74 | .token.boolean, 75 | .token.constant { 76 | color: #99CC99; 77 | } 78 | 79 | .token.symbol, 80 | .token.deleted { 81 | color: #f92672; 82 | } 83 | 84 | .token.number { 85 | color: #FF73FD; 86 | } 87 | 88 | .token.selector, 89 | .token.attr-name, 90 | .token.string, 91 | .token.char, 92 | .token.builtin, 93 | .token.inserted { 94 | color: #A8FF60; 95 | } 96 | 97 | .token.variable { 98 | color: #C6C5FE; 99 | } 100 | 101 | .token.operator { 102 | color: #EDEDED; 103 | } 104 | 105 | .token.entity { 106 | color: #FFFFB6; 107 | cursor: help; 108 | } 109 | 110 | .token.url { 111 | color: #96CBFE; 112 | } 113 | 114 | .language-css .token.string, 115 | .style .token.string { 116 | color: #87C38A; 117 | } 118 | 119 | .token.atrule, 120 | .token.attr-value { 121 | color: #F9EE98; 122 | } 123 | 124 | .token.function { 125 | color: #DAD085; 126 | } 127 | 128 | .token.regex { 129 | color: #E9C062; 130 | } 131 | 132 | .token.important { 133 | color: #fd971f; 134 | } 135 | 136 | .token.important, 137 | .token.bold { 138 | font-weight: bold; 139 | } 140 | 141 | .token.italic { 142 | font-style: italic; 143 | } 144 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-ghcolors.css: -------------------------------------------------------------------------------- 1 | /** 2 | * GHColors theme by Avi Aryan (http://aviaryan.in) 3 | * Inspired by Github syntax coloring 4 | */ 5 | 6 | code[class*="language-"], 7 | pre[class*="language-"] { 8 | color: #393A34; 9 | font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; 10 | direction: ltr; 11 | text-align: left; 12 | white-space: pre; 13 | word-spacing: normal; 14 | word-break: normal; 15 | font-size: .9em; 16 | line-height: 1.2em; 17 | 18 | -moz-tab-size: 4; 19 | -o-tab-size: 4; 20 | tab-size: 4; 21 | 22 | -webkit-hyphens: none; 23 | -moz-hyphens: none; 24 | -ms-hyphens: none; 25 | hyphens: none; 26 | } 27 | 28 | pre > code[class*="language-"] { 29 | font-size: 1em; 30 | } 31 | 32 | pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, 33 | code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { 34 | background: #b3d4fc; 35 | } 36 | 37 | pre[class*="language-"]::selection, pre[class*="language-"] ::selection, 38 | code[class*="language-"]::selection, code[class*="language-"] ::selection { 39 | background: #b3d4fc; 40 | } 41 | 42 | /* Code blocks */ 43 | pre[class*="language-"] { 44 | padding: 1em; 45 | margin: .5em 0; 46 | overflow: auto; 47 | border: 1px solid #dddddd; 48 | background-color: white; 49 | } 50 | 51 | /* Inline code */ 52 | :not(pre) > code[class*="language-"] { 53 | padding: .2em; 54 | padding-top: 1px; 55 | padding-bottom: 1px; 56 | background: #f8f8f8; 57 | border: 1px solid #dddddd; 58 | } 59 | 60 | .token.comment, 61 | .token.prolog, 62 | .token.doctype, 63 | .token.cdata { 64 | color: #999988; 65 | font-style: italic; 66 | } 67 | 68 | .token.namespace { 69 | opacity: .7; 70 | } 71 | 72 | .token.string, 73 | .token.attr-value { 74 | color: #e3116c; 75 | } 76 | 77 | .token.punctuation, 78 | .token.operator { 79 | color: #393A34; /* no highlight */ 80 | } 81 | 82 | .token.entity, 83 | .token.url, 84 | .token.symbol, 85 | .token.number, 86 | .token.boolean, 87 | .token.variable, 88 | .token.constant, 89 | .token.property, 90 | .token.regex, 91 | .token.inserted { 92 | color: #36acaa; 93 | } 94 | 95 | .token.atrule, 96 | .token.keyword, 97 | .token.attr-name, 98 | .language-autohotkey .token.selector { 99 | color: #00a4db; 100 | } 101 | 102 | .token.function, 103 | .token.deleted, 104 | .language-autohotkey .token.tag { 105 | color: #9a050f; 106 | } 107 | 108 | .token.tag, 109 | .token.selector, 110 | .language-autohotkey .token.keyword { 111 | color: #00009f; 112 | } 113 | 114 | .token.important, 115 | .token.function, 116 | .token.bold { 117 | font-weight: bold; 118 | } 119 | 120 | .token.italic { 121 | font-style: italic; 122 | } 123 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-solarized-dark-atom.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Solarized dark atom theme for `prism.js` 3 | * Based on Atom's `atom-dark` theme: https://github.com/atom/atom-dark-syntax 4 | * @author Pranay Chauhan (@PranayChauhan2516) 5 | */ 6 | 7 | code[class*="language-"], 8 | pre[class*="language-"] { 9 | color: #839496; 10 | text-shadow: 0 1px rgba(0, 0, 0, 0.3); 11 | font-family: Inconsolata, Monaco, Consolas, 'Courier New', Courier, monospace; 12 | direction: ltr; 13 | text-align: left; 14 | white-space: pre; 15 | word-spacing: normal; 16 | word-break: normal; 17 | line-height: 1.5; 18 | 19 | -moz-tab-size: 4; 20 | -o-tab-size: 4; 21 | tab-size: 4; 22 | 23 | -webkit-hyphens: none; 24 | -moz-hyphens: none; 25 | -ms-hyphens: none; 26 | hyphens: none; 27 | } 28 | 29 | /* Code blocks */ 30 | pre[class*="language-"] { 31 | padding: 1em; 32 | margin: .5em 0; 33 | overflow: auto; 34 | border-radius: 0.3em; 35 | } 36 | 37 | :not(pre) > code[class*="language-"], 38 | pre[class*="language-"] { 39 | background: #002b36; 40 | } 41 | 42 | /* Inline code */ 43 | :not(pre) > code[class*="language-"] { 44 | padding: .1em; 45 | border-radius: .3em; 46 | } 47 | 48 | .token.comment, 49 | .token.prolog, 50 | .token.doctype, 51 | .token.cdata { 52 | color: #586e75; 53 | } 54 | 55 | .token.punctuation { 56 | color: #93a1a1; 57 | } 58 | 59 | .namespace { 60 | opacity: .7; 61 | } 62 | 63 | .token.property, 64 | .token.keyword, 65 | .token.tag { 66 | color: #268bd2; 67 | } 68 | 69 | .token.class-name { 70 | color: #FFFFB6; 71 | text-decoration: underline; 72 | } 73 | 74 | .token.boolean, 75 | .token.constant { 76 | color: #b58900; 77 | } 78 | 79 | .token.symbol, 80 | .token.deleted { 81 | color: #dc322f; 82 | } 83 | 84 | .token.number { 85 | color: #859900; 86 | } 87 | 88 | .token.selector, 89 | .token.attr-name, 90 | .token.string, 91 | .token.char, 92 | .token.builtin, 93 | .token.inserted { 94 | color: #859900; 95 | } 96 | 97 | .token.variable { 98 | color: #268bd2; 99 | } 100 | 101 | .token.operator { 102 | color: #EDEDED; 103 | } 104 | 105 | .token.function { 106 | color: #268bd2; 107 | } 108 | 109 | .token.regex { 110 | color: #E9C062; 111 | } 112 | 113 | .token.important { 114 | color: #fd971f; 115 | } 116 | 117 | .token.entity { 118 | color: #FFFFB6; 119 | cursor: help; 120 | } 121 | 122 | .token.url { 123 | color: #96CBFE; 124 | } 125 | 126 | .language-css .token.string, 127 | .style .token.string { 128 | color: #87C38A; 129 | } 130 | 131 | .token.important, 132 | .token.bold { 133 | font-weight: bold; 134 | } 135 | 136 | .token.italic { 137 | font-style: italic; 138 | } 139 | 140 | .token.atrule, 141 | .token.attr-value { 142 | color: #F9EE98; 143 | } 144 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%" == "" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%" == "" set DIRNAME=. 29 | set APP_BASE_NAME=%~n0 30 | set APP_HOME=%DIRNAME% 31 | 32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 34 | 35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 37 | 38 | @rem Find java.exe 39 | if defined JAVA_HOME goto findJavaFromJavaHome 40 | 41 | set JAVA_EXE=java.exe 42 | %JAVA_EXE% -version >NUL 2>&1 43 | if "%ERRORLEVEL%" == "0" goto execute 44 | 45 | echo. 46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 47 | echo. 48 | echo Please set the JAVA_HOME variable in your environment to match the 49 | echo location of your Java installation. 50 | 51 | goto fail 52 | 53 | :findJavaFromJavaHome 54 | set JAVA_HOME=%JAVA_HOME:"=% 55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 56 | 57 | if exist "%JAVA_EXE%" goto execute 58 | 59 | echo. 60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 61 | echo. 62 | echo Please set the JAVA_HOME variable in your environment to match the 63 | echo location of your Java installation. 64 | 65 | goto fail 66 | 67 | :execute 68 | @rem Setup the command line 69 | 70 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 71 | 72 | 73 | @rem Execute Gradle 74 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 75 | 76 | :end 77 | @rem End local scope for the variables with windows NT shell 78 | if "%ERRORLEVEL%"=="0" goto mainEnd 79 | 80 | :fail 81 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 82 | rem the _cmd.exe /c_ return code! 83 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 84 | exit /b 1 85 | 86 | :mainEnd 87 | if "%OS%"=="Windows_NT" endlocal 88 | 89 | :omega 90 | -------------------------------------------------------------------------------- /templates/macro/post-card.html: -------------------------------------------------------------------------------- 1 | 2 |
  • 3 | 10 |
    11 |
    12 | 14 | 16 |
    17 |
    18 | 19 | 21 | 22 | [[${category.spec.displayName}]] 23 | 24 | 25 | 33 | 34 | 35 |

    37 |
    38 |

    39 | 49 |
    50 |
    51 |
  • 52 |
    -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-coy-without-shadows.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Coy without shadows 3 | * Based on Tim Shedor's Coy theme for prism.js 4 | * Author: RunDevelopment 5 | */ 6 | 7 | code[class*="language-"], 8 | pre[class*="language-"] { 9 | color: black; 10 | background: none; 11 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 12 | font-size: 1em; 13 | text-align: left; 14 | white-space: pre; 15 | word-spacing: normal; 16 | word-break: normal; 17 | word-wrap: normal; 18 | line-height: 1.5; 19 | 20 | -moz-tab-size: 4; 21 | -o-tab-size: 4; 22 | tab-size: 4; 23 | 24 | -webkit-hyphens: none; 25 | -moz-hyphens: none; 26 | -ms-hyphens: none; 27 | hyphens: none; 28 | } 29 | 30 | /* Code blocks */ 31 | pre[class*="language-"] { 32 | position: relative; 33 | border-left: 10px solid #358ccb; 34 | box-shadow: -1px 0 0 0 #358ccb, 0 0 0 1px #dfdfdf; 35 | background-color: #fdfdfd; 36 | background-image: linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%); 37 | background-size: 3em 3em; 38 | background-origin: content-box; 39 | background-attachment: local; 40 | margin: .5em 0; 41 | padding: 0 1em; 42 | } 43 | 44 | pre[class*="language-"] > code { 45 | display: block; 46 | } 47 | 48 | /* Inline code */ 49 | :not(pre) > code[class*="language-"] { 50 | position: relative; 51 | padding: .2em; 52 | border-radius: 0.3em; 53 | color: #c92c2c; 54 | border: 1px solid rgba(0, 0, 0, 0.1); 55 | display: inline; 56 | white-space: normal; 57 | background-color: #fdfdfd; 58 | -webkit-box-sizing: border-box; 59 | -moz-box-sizing: border-box; 60 | box-sizing: border-box; 61 | } 62 | 63 | .token.comment, 64 | .token.block-comment, 65 | .token.prolog, 66 | .token.doctype, 67 | .token.cdata { 68 | color: #7D8B99; 69 | } 70 | 71 | .token.punctuation { 72 | color: #5F6364; 73 | } 74 | 75 | .token.property, 76 | .token.tag, 77 | .token.boolean, 78 | .token.number, 79 | .token.function-name, 80 | .token.constant, 81 | .token.symbol, 82 | .token.deleted { 83 | color: #c92c2c; 84 | } 85 | 86 | .token.selector, 87 | .token.attr-name, 88 | .token.string, 89 | .token.char, 90 | .token.function, 91 | .token.builtin, 92 | .token.inserted { 93 | color: #2f9c0a; 94 | } 95 | 96 | .token.operator, 97 | .token.entity, 98 | .token.url, 99 | .token.variable { 100 | color: #a67f59; 101 | background: rgba(255, 255, 255, 0.5); 102 | } 103 | 104 | .token.atrule, 105 | .token.attr-value, 106 | .token.keyword, 107 | .token.class-name { 108 | color: #1990b8; 109 | } 110 | 111 | .token.regex, 112 | .token.important { 113 | color: #e90; 114 | } 115 | 116 | .language-css .token.string, 117 | .style .token.string { 118 | color: #a67f59; 119 | background: rgba(255, 255, 255, 0.5); 120 | } 121 | 122 | .token.important { 123 | font-weight: normal; 124 | } 125 | 126 | .token.bold { 127 | font-weight: bold; 128 | } 129 | 130 | .token.italic { 131 | font-style: italic; 132 | } 133 | 134 | .token.entity { 135 | cursor: help; 136 | } 137 | 138 | .token.namespace { 139 | opacity: .7; 140 | } 141 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-gruvbox-dark.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Gruvbox dark theme 3 | * 4 | * Adapted from a theme based on: 5 | * Vim Gruvbox dark Theme (https://github.com/morhetz/gruvbox) 6 | * 7 | * @author Azat S. 8 | * @version 1.0 9 | */ 10 | 11 | code[class*="language-"], 12 | pre[class*="language-"] { 13 | color: #ebdbb2; /* fg1 / fg */ 14 | font-family: Consolas, Monaco, "Andale Mono", monospace; 15 | direction: ltr; 16 | text-align: left; 17 | white-space: pre; 18 | word-spacing: normal; 19 | word-break: normal; 20 | line-height: 1.5; 21 | 22 | -moz-tab-size: 4; 23 | -o-tab-size: 4; 24 | tab-size: 4; 25 | 26 | -webkit-hyphens: none; 27 | -moz-hyphens: none; 28 | -ms-hyphens: none; 29 | hyphens: none; 30 | } 31 | 32 | pre[class*="language-"]::-moz-selection, 33 | pre[class*="language-"] ::-moz-selection, 34 | code[class*="language-"]::-moz-selection, 35 | code[class*="language-"] ::-moz-selection { 36 | color: #fbf1c7; /* fg0 */ 37 | background: #7c6f64; /* bg4 */ 38 | } 39 | 40 | pre[class*="language-"]::selection, 41 | pre[class*="language-"] ::selection, 42 | code[class*="language-"]::selection, 43 | code[class*="language-"] ::selection { 44 | color: #fbf1c7; /* fg0 */ 45 | background: #7c6f64; /* bg4 */ 46 | } 47 | 48 | /* Code blocks */ 49 | pre[class*="language-"] { 50 | padding: 1em; 51 | margin: 0.5em 0; 52 | overflow: auto; 53 | } 54 | 55 | :not(pre) > code[class*="language-"], 56 | pre[class*="language-"] { 57 | background: #1d2021; /* bg0_h */ 58 | } 59 | 60 | /* Inline code */ 61 | :not(pre) > code[class*="language-"] { 62 | padding: 0.1em; 63 | border-radius: 0.3em; 64 | } 65 | 66 | .token.comment, 67 | .token.prolog, 68 | .token.cdata { 69 | color: #a89984; /* fg4 / gray1 */ 70 | } 71 | 72 | .token.delimiter, 73 | .token.boolean, 74 | .token.keyword, 75 | .token.selector, 76 | .token.important, 77 | .token.atrule { 78 | color: #fb4934; /* red2 */ 79 | } 80 | 81 | .token.operator, 82 | .token.punctuation, 83 | .token.attr-name { 84 | color: #a89984; /* fg4 / gray1 */ 85 | } 86 | 87 | .token.tag, 88 | .token.tag .punctuation, 89 | .token.doctype, 90 | .token.builtin { 91 | color: #fabd2f; /* yellow2 */ 92 | } 93 | 94 | .token.entity, 95 | .token.number, 96 | .token.symbol { 97 | color: #d3869b; /* purple2 */ 98 | } 99 | 100 | .token.property, 101 | .token.constant, 102 | .token.variable { 103 | color: #fb4934; /* red2 */ 104 | } 105 | 106 | .token.string, 107 | .token.char { 108 | color: #b8bb26; /* green2 */ 109 | } 110 | 111 | .token.attr-value, 112 | .token.attr-value .punctuation { 113 | color: #a89984; /* fg4 / gray1 */ 114 | } 115 | 116 | .token.url { 117 | color: #b8bb26; /* green2 */ 118 | text-decoration: underline; 119 | } 120 | 121 | .token.function { 122 | color: #fabd2f; /* yellow2 */ 123 | } 124 | 125 | .token.regex { 126 | background: #b8bb26; /* green2 */ 127 | } 128 | 129 | .token.bold { 130 | font-weight: bold; 131 | } 132 | 133 | .token.italic { 134 | font-style: italic; 135 | } 136 | 137 | .token.inserted { 138 | background: #a89984; /* fg4 / gray1 */ 139 | } 140 | 141 | .token.deleted { 142 | background: #fb4934; /* red2 */ 143 | } 144 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-synthwave84.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Synthwave '84 Theme originally by Robb Owen [@Robb0wen] for Visual Studio Code 3 | * Demo: https://marc.dev/demo/prism-synthwave84 4 | * 5 | * Ported for PrismJS by Marc Backes [@themarcba] 6 | */ 7 | 8 | code[class*="language-"], 9 | pre[class*="language-"] { 10 | color: #f92aad; 11 | text-shadow: 0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3; 12 | background: none; 13 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 14 | font-size: 1em; 15 | text-align: left; 16 | white-space: pre; 17 | word-spacing: normal; 18 | word-break: normal; 19 | word-wrap: normal; 20 | line-height: 1.5; 21 | 22 | -moz-tab-size: 4; 23 | -o-tab-size: 4; 24 | tab-size: 4; 25 | 26 | -webkit-hyphens: none; 27 | -moz-hyphens: none; 28 | -ms-hyphens: none; 29 | hyphens: none; 30 | } 31 | 32 | /* Code blocks */ 33 | pre[class*="language-"] { 34 | padding: 1em; 35 | margin: .5em 0; 36 | overflow: auto; 37 | } 38 | 39 | :not(pre) > code[class*="language-"], 40 | pre[class*="language-"] { 41 | background-color: transparent !important; 42 | background-image: linear-gradient(to bottom, #2a2139 75%, #34294f); 43 | } 44 | 45 | /* Inline code */ 46 | :not(pre) > code[class*="language-"] { 47 | padding: .1em; 48 | border-radius: .3em; 49 | white-space: normal; 50 | } 51 | 52 | .token.comment, 53 | .token.block-comment, 54 | .token.prolog, 55 | .token.doctype, 56 | .token.cdata { 57 | color: #8e8e8e; 58 | } 59 | 60 | .token.punctuation { 61 | color: #ccc; 62 | } 63 | 64 | .token.tag, 65 | .token.attr-name, 66 | .token.namespace, 67 | .token.number, 68 | .token.unit, 69 | .token.hexcode, 70 | .token.deleted { 71 | color: #e2777a; 72 | } 73 | 74 | .token.property, 75 | .token.selector { 76 | color: #72f1b8; 77 | text-shadow: 0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475; 78 | } 79 | 80 | .token.function-name { 81 | color: #6196cc; 82 | } 83 | 84 | .token.boolean, 85 | .token.selector .token.id, 86 | .token.function { 87 | color: #fdfdfd; 88 | text-shadow: 0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975; 89 | } 90 | 91 | .token.class-name { 92 | color: #fff5f6; 93 | text-shadow: 0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75; 94 | } 95 | 96 | .token.constant, 97 | .token.symbol { 98 | color: #f92aad; 99 | text-shadow: 0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3; 100 | } 101 | 102 | .token.important, 103 | .token.atrule, 104 | .token.keyword, 105 | .token.selector .token.class, 106 | .token.builtin { 107 | color: #f4eee4; 108 | text-shadow: 0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575; 109 | } 110 | 111 | .token.string, 112 | .token.char, 113 | .token.attr-value, 114 | .token.regex, 115 | .token.variable { 116 | color: #f87c32; 117 | } 118 | 119 | .token.operator, 120 | .token.entity, 121 | .token.url { 122 | color: #67cdcc; 123 | } 124 | 125 | .token.important, 126 | .token.bold { 127 | font-weight: bold; 128 | } 129 | 130 | .token.italic { 131 | font-style: italic; 132 | } 133 | 134 | .token.entity { 135 | cursor: help; 136 | } 137 | 138 | .token.inserted { 139 | color: green; 140 | } 141 | -------------------------------------------------------------------------------- /templates/macro/post-list.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 | 8 |
      10 |
    • 11 | 全部 12 |
    • 13 |
    • 16 | 18 |
    • 19 |
    20 |
      22 |
    • 24 | 全部 25 |
    • 26 |
    • 29 | 31 |
    • 32 |
    33 | 34 | 35 | 37 | 38 | 39 | 60 |
      61 | 62 | 63 | 64 | 65 |
    66 | 67 |
    68 |
    69 |
    -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-gruvbox-light.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Gruvbox light theme 3 | * 4 | * Based on Gruvbox: https://github.com/morhetz/gruvbox 5 | * Adapted from PrismJS gruvbox-dark theme: https://github.com/schnerring/prism-themes/blob/master/themes/prism-gruvbox-dark.css 6 | * 7 | * @author Michael Schnerring (https://schnerring.net) 8 | * @version 1.0 9 | */ 10 | 11 | code[class*="language-"], 12 | pre[class*="language-"] { 13 | color: #3c3836; /* fg1 / fg */ 14 | font-family: Consolas, Monaco, "Andale Mono", monospace; 15 | direction: ltr; 16 | text-align: left; 17 | white-space: pre; 18 | word-spacing: normal; 19 | word-break: normal; 20 | line-height: 1.5; 21 | 22 | -moz-tab-size: 4; 23 | -o-tab-size: 4; 24 | tab-size: 4; 25 | 26 | -webkit-hyphens: none; 27 | -moz-hyphens: none; 28 | -ms-hyphens: none; 29 | hyphens: none; 30 | } 31 | 32 | pre[class*="language-"]::-moz-selection, 33 | pre[class*="language-"] ::-moz-selection, 34 | code[class*="language-"]::-moz-selection, 35 | code[class*="language-"] ::-moz-selection { 36 | color: #282828; /* fg0 */ 37 | background: #a89984; /* bg4 */ 38 | } 39 | 40 | pre[class*="language-"]::selection, 41 | pre[class*="language-"] ::selection, 42 | code[class*="language-"]::selection, 43 | code[class*="language-"] ::selection { 44 | color: #282828; /* fg0 */ 45 | background: #a89984; /* bg4 */ 46 | } 47 | 48 | /* Code blocks */ 49 | pre[class*="language-"] { 50 | padding: 1em; 51 | margin: 0.5em 0; 52 | overflow: auto; 53 | } 54 | 55 | :not(pre) > code[class*="language-"], 56 | pre[class*="language-"] { 57 | background: #f9f5d7; /* bg0_h */ 58 | } 59 | 60 | /* Inline code */ 61 | :not(pre) > code[class*="language-"] { 62 | padding: 0.1em; 63 | border-radius: 0.3em; 64 | } 65 | 66 | .token.comment, 67 | .token.prolog, 68 | .token.cdata { 69 | color: #7c6f64; /* fg4 / gray1 */ 70 | } 71 | 72 | .token.delimiter, 73 | .token.boolean, 74 | .token.keyword, 75 | .token.selector, 76 | .token.important, 77 | .token.atrule { 78 | color: #9d0006; /* red2 */ 79 | } 80 | 81 | .token.operator, 82 | .token.punctuation, 83 | .token.attr-name { 84 | color: #7c6f64; /* fg4 / gray1 */ 85 | } 86 | 87 | .token.tag, 88 | .token.tag .punctuation, 89 | .token.doctype, 90 | .token.builtin { 91 | color: #b57614; /* yellow2 */ 92 | } 93 | 94 | .token.entity, 95 | .token.number, 96 | .token.symbol { 97 | color: #8f3f71; /* purple2 */ 98 | } 99 | 100 | .token.property, 101 | .token.constant, 102 | .token.variable { 103 | color: #9d0006; /* red2 */ 104 | } 105 | 106 | .token.string, 107 | .token.char { 108 | color: #797403; /* green2 */ 109 | } 110 | 111 | .token.attr-value, 112 | .token.attr-value .punctuation { 113 | color: #7c6f64; /* fg4 / gray1 */ 114 | } 115 | 116 | .token.url { 117 | color: #797403; /* green2 */ 118 | text-decoration: underline; 119 | } 120 | 121 | .token.function { 122 | color: #b57614; /* yellow2 */ 123 | } 124 | 125 | .token.regex { 126 | background: #797403; /* green2 */ 127 | } 128 | 129 | .token.bold { 130 | font-weight: bold; 131 | } 132 | 133 | .token.italic { 134 | font-style: italic; 135 | } 136 | 137 | .token.inserted { 138 | background: #7c6f64; /* fg4 / gray1 */ 139 | } 140 | 141 | .token.deleted { 142 | background: #9d0006; /* red2 */ 143 | } 144 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-a11y-dark.css: -------------------------------------------------------------------------------- 1 | /** 2 | * a11y-dark theme for JavaScript, CSS, and HTML 3 | * Based on the okaidia theme: https://github.com/PrismJS/prism/blob/gh-pages/themes/prism-okaidia.css 4 | * @author ericwbailey 5 | */ 6 | 7 | code[class*="language-"], 8 | pre[class*="language-"] { 9 | color: #f8f8f2; 10 | background: none; 11 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 12 | text-align: left; 13 | white-space: pre; 14 | word-spacing: normal; 15 | word-break: normal; 16 | word-wrap: normal; 17 | line-height: 1.5; 18 | 19 | -moz-tab-size: 4; 20 | -o-tab-size: 4; 21 | tab-size: 4; 22 | 23 | -webkit-hyphens: none; 24 | -moz-hyphens: none; 25 | -ms-hyphens: none; 26 | hyphens: none; 27 | } 28 | 29 | /* Code blocks */ 30 | pre[class*="language-"] { 31 | padding: 1em; 32 | margin: 0.5em 0; 33 | overflow: auto; 34 | border-radius: 0.3em; 35 | } 36 | 37 | :not(pre) > code[class*="language-"], 38 | pre[class*="language-"] { 39 | background: #2b2b2b; 40 | } 41 | 42 | /* Inline code */ 43 | :not(pre) > code[class*="language-"] { 44 | padding: 0.1em; 45 | border-radius: 0.3em; 46 | white-space: normal; 47 | } 48 | 49 | .token.comment, 50 | .token.prolog, 51 | .token.doctype, 52 | .token.cdata { 53 | color: #d4d0ab; 54 | } 55 | 56 | .token.punctuation { 57 | color: #fefefe; 58 | } 59 | 60 | .token.property, 61 | .token.tag, 62 | .token.constant, 63 | .token.symbol, 64 | .token.deleted { 65 | color: #ffa07a; 66 | } 67 | 68 | .token.boolean, 69 | .token.number { 70 | color: #00e0e0; 71 | } 72 | 73 | .token.selector, 74 | .token.attr-name, 75 | .token.string, 76 | .token.char, 77 | .token.builtin, 78 | .token.inserted { 79 | color: #abe338; 80 | } 81 | 82 | .token.operator, 83 | .token.entity, 84 | .token.url, 85 | .language-css .token.string, 86 | .style .token.string, 87 | .token.variable { 88 | color: #00e0e0; 89 | } 90 | 91 | .token.atrule, 92 | .token.attr-value, 93 | .token.function { 94 | color: #ffd700; 95 | } 96 | 97 | .token.keyword { 98 | color: #00e0e0; 99 | } 100 | 101 | .token.regex, 102 | .token.important { 103 | color: #ffd700; 104 | } 105 | 106 | .token.important, 107 | .token.bold { 108 | font-weight: bold; 109 | } 110 | 111 | .token.italic { 112 | font-style: italic; 113 | } 114 | 115 | .token.entity { 116 | cursor: help; 117 | } 118 | 119 | @media screen and (-ms-high-contrast: active) { 120 | code[class*="language-"], 121 | pre[class*="language-"] { 122 | color: windowText; 123 | background: window; 124 | } 125 | 126 | :not(pre) > code[class*="language-"], 127 | pre[class*="language-"] { 128 | background: window; 129 | } 130 | 131 | .token.important { 132 | background: highlight; 133 | color: window; 134 | font-weight: normal; 135 | } 136 | 137 | .token.atrule, 138 | .token.attr-value, 139 | .token.function, 140 | .token.keyword, 141 | .token.operator, 142 | .token.selector { 143 | font-weight: bold; 144 | } 145 | 146 | .token.attr-value, 147 | .token.comment, 148 | .token.doctype, 149 | .token.function, 150 | .token.keyword, 151 | .token.operator, 152 | .token.property, 153 | .token.string { 154 | color: highlight; 155 | } 156 | 157 | .token.attr-value, 158 | .token.url { 159 | font-weight: normal; 160 | } 161 | } 162 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-z-touch.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Z-Toch 3 | * by Zeel Codder 4 | * https://github.com/zeel-codder 5 | * 6 | */ 7 | code[class*="language-"], 8 | pre[class*="language-"] { 9 | color: #22da17; 10 | font-family: monospace; 11 | text-align: left; 12 | white-space: pre; 13 | word-spacing: normal; 14 | word-break: normal; 15 | word-wrap: normal; 16 | -moz-tab-size: 4; 17 | -o-tab-size: 4; 18 | tab-size: 4; 19 | -webkit-hyphens: none; 20 | -moz-hyphens: none; 21 | -ms-hyphens: none; 22 | hyphens: none; 23 | line-height: 25px; 24 | font-size: 18px; 25 | margin: 5px 0; 26 | } 27 | 28 | pre[class*="language-"] * { 29 | font-family: monospace; 30 | } 31 | 32 | :not(pre) > code[class*="language-"], 33 | pre[class*="language-"] { 34 | color: white; 35 | background: #0a143c; 36 | padding: 22px; 37 | } 38 | 39 | /* Code blocks */ 40 | pre[class*="language-"] { 41 | padding: 1em; 42 | margin: 0.5em 0; 43 | overflow: auto; 44 | } 45 | 46 | pre[class*="language-"]::-moz-selection, 47 | pre[class*="language-"] ::-moz-selection, 48 | code[class*="language-"]::-moz-selection, 49 | code[class*="language-"] ::-moz-selection { 50 | text-shadow: none; 51 | background: rgba(29, 59, 83, 0.99); 52 | } 53 | 54 | pre[class*="language-"]::selection, 55 | pre[class*="language-"] ::selection, 56 | code[class*="language-"]::selection, 57 | code[class*="language-"] ::selection { 58 | text-shadow: none; 59 | background: rgba(29, 59, 83, 0.99); 60 | } 61 | 62 | @media print { 63 | code[class*="language-"], 64 | pre[class*="language-"] { 65 | text-shadow: none; 66 | } 67 | } 68 | 69 | :not(pre) > code[class*="language-"] { 70 | padding: 0.1em; 71 | border-radius: 0.3em; 72 | white-space: normal; 73 | } 74 | 75 | .token.comment, 76 | .token.prolog, 77 | .token.cdata { 78 | color: rgb(99, 119, 119); 79 | font-style: italic; 80 | } 81 | 82 | .token.punctuation { 83 | color: rgb(199, 146, 234); 84 | } 85 | 86 | .namespace { 87 | color: rgb(178, 204, 214); 88 | } 89 | 90 | .token.deleted { 91 | color: rgba(239, 83, 80, 0.56); 92 | font-style: italic; 93 | } 94 | 95 | .token.symbol, 96 | .token.property { 97 | color: rgb(128, 203, 196); 98 | } 99 | 100 | .token.tag, 101 | .token.operator, 102 | .token.keyword { 103 | color: rgb(127, 219, 202); 104 | } 105 | 106 | .token.boolean { 107 | color: rgb(255, 88, 116); 108 | } 109 | 110 | .token.number { 111 | color: rgb(247, 140, 108); 112 | } 113 | 114 | .token.constant, 115 | .token.function, 116 | .token.builtin, 117 | .token.char { 118 | color: rgb(34 183 199); 119 | } 120 | 121 | .token.selector, 122 | .token.doctype { 123 | color: rgb(199, 146, 234); 124 | font-style: italic; 125 | } 126 | 127 | .token.attr-name, 128 | .token.inserted { 129 | color: rgb(173, 219, 103); 130 | font-style: italic; 131 | } 132 | 133 | .token.string, 134 | .token.url, 135 | .token.entity, 136 | .language-css .token.string, 137 | .style .token.string { 138 | color: rgb(173, 219, 103); 139 | } 140 | 141 | .token.class-name, 142 | .token.atrule, 143 | .token.attr-value { 144 | color: rgb(255, 203, 139); 145 | } 146 | 147 | .token.regex, 148 | .token.important, 149 | .token.variable { 150 | color: rgb(214, 222, 235); 151 | } 152 | 153 | .token.important, 154 | .token.bold { 155 | font-weight: bold; 156 | } 157 | 158 | .token.italic { 159 | font-style: italic; 160 | } 161 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-night-owl.css: -------------------------------------------------------------------------------- 1 | /** 2 | * MIT License 3 | * Copyright (c) 2018 Sarah Drasner 4 | * Sarah Drasner's[@sdras] Night Owl 5 | * Ported by Sara vieria [@SaraVieira] 6 | * Added by Souvik Mandal [@SimpleIndian] 7 | */ 8 | 9 | code[class*="language-"], 10 | pre[class*="language-"] { 11 | color: #d6deeb; 12 | font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; 13 | text-align: left; 14 | white-space: pre; 15 | word-spacing: normal; 16 | word-break: normal; 17 | word-wrap: normal; 18 | line-height: 1.5; 19 | font-size: 1em; 20 | 21 | -moz-tab-size: 4; 22 | -o-tab-size: 4; 23 | tab-size: 4; 24 | 25 | -webkit-hyphens: none; 26 | -moz-hyphens: none; 27 | -ms-hyphens: none; 28 | hyphens: none; 29 | } 30 | 31 | pre[class*="language-"]::-moz-selection, 32 | pre[class*="language-"] ::-moz-selection, 33 | code[class*="language-"]::-moz-selection, 34 | code[class*="language-"] ::-moz-selection { 35 | text-shadow: none; 36 | background: rgba(29, 59, 83, 0.99); 37 | } 38 | 39 | pre[class*="language-"]::selection, 40 | pre[class*="language-"] ::selection, 41 | code[class*="language-"]::selection, 42 | code[class*="language-"] ::selection { 43 | text-shadow: none; 44 | background: rgba(29, 59, 83, 0.99); 45 | } 46 | 47 | @media print { 48 | code[class*="language-"], 49 | pre[class*="language-"] { 50 | text-shadow: none; 51 | } 52 | } 53 | 54 | /* Code blocks */ 55 | pre[class*="language-"] { 56 | padding: 1em; 57 | margin: 0.5em 0; 58 | overflow: auto; 59 | } 60 | 61 | :not(pre) > code[class*="language-"], 62 | pre[class*="language-"] { 63 | color: white; 64 | background: #011627; 65 | } 66 | 67 | :not(pre) > code[class*="language-"] { 68 | padding: 0.1em; 69 | border-radius: 0.3em; 70 | white-space: normal; 71 | } 72 | 73 | .token.comment, 74 | .token.prolog, 75 | .token.cdata { 76 | color: rgb(99, 119, 119); 77 | font-style: italic; 78 | } 79 | 80 | .token.punctuation { 81 | color: rgb(199, 146, 234); 82 | } 83 | 84 | .namespace { 85 | color: rgb(178, 204, 214); 86 | } 87 | 88 | .token.deleted { 89 | color: rgba(239, 83, 80, 0.56); 90 | font-style: italic; 91 | } 92 | 93 | .token.symbol, 94 | .token.property { 95 | color: rgb(128, 203, 196); 96 | } 97 | 98 | .token.tag, 99 | .token.operator, 100 | .token.keyword { 101 | color: rgb(127, 219, 202); 102 | } 103 | 104 | .token.boolean { 105 | color: rgb(255, 88, 116); 106 | } 107 | 108 | .token.number { 109 | color: rgb(247, 140, 108); 110 | } 111 | 112 | .token.constant, 113 | .token.function, 114 | .token.builtin, 115 | .token.char { 116 | color: rgb(130, 170, 255); 117 | } 118 | 119 | .token.selector, 120 | .token.doctype { 121 | color: rgb(199, 146, 234); 122 | font-style: italic; 123 | } 124 | 125 | .token.attr-name, 126 | .token.inserted { 127 | color: rgb(173, 219, 103); 128 | font-style: italic; 129 | } 130 | 131 | .token.string, 132 | .token.url, 133 | .token.entity, 134 | .language-css .token.string, 135 | .style .token.string { 136 | color: rgb(173, 219, 103); 137 | } 138 | 139 | .token.class-name, 140 | .token.atrule, 141 | .token.attr-value { 142 | color: rgb(255, 203, 139); 143 | } 144 | 145 | .token.regex, 146 | .token.important, 147 | .token.variable { 148 | color: rgb(214, 222, 235); 149 | } 150 | 151 | .token.important, 152 | .token.bold { 153 | font-weight: bold; 154 | } 155 | 156 | .token.italic { 157 | font-style: italic; 158 | } 159 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-darcula.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Darcula theme 3 | * 4 | * Adapted from a theme based on: 5 | * IntelliJ Darcula Theme (https://github.com/bulenkov/Darcula) 6 | * 7 | * @author Alexandre Paradis 8 | * @version 1.0 9 | */ 10 | 11 | code[class*="language-"], 12 | pre[class*="language-"] { 13 | color: #a9b7c6; 14 | font-family: Consolas, Monaco, 'Andale Mono', monospace; 15 | direction: ltr; 16 | text-align: left; 17 | white-space: pre; 18 | word-spacing: normal; 19 | word-break: normal; 20 | line-height: 1.5; 21 | 22 | -moz-tab-size: 4; 23 | -o-tab-size: 4; 24 | tab-size: 4; 25 | 26 | -webkit-hyphens: none; 27 | -moz-hyphens: none; 28 | -ms-hyphens: none; 29 | hyphens: none; 30 | } 31 | 32 | pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, 33 | code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { 34 | color: inherit; 35 | background: rgba(33, 66, 131, .85); 36 | } 37 | 38 | pre[class*="language-"]::selection, pre[class*="language-"] ::selection, 39 | code[class*="language-"]::selection, code[class*="language-"] ::selection { 40 | color: inherit; 41 | background: rgba(33, 66, 131, .85); 42 | } 43 | 44 | /* Code blocks */ 45 | pre[class*="language-"] { 46 | padding: 1em; 47 | margin: .5em 0; 48 | overflow: auto; 49 | } 50 | 51 | :not(pre) > code[class*="language-"], 52 | pre[class*="language-"] { 53 | background: #2b2b2b; 54 | } 55 | 56 | /* Inline code */ 57 | :not(pre) > code[class*="language-"] { 58 | padding: .1em; 59 | border-radius: .3em; 60 | } 61 | 62 | .token.comment, 63 | .token.prolog, 64 | .token.cdata { 65 | color: #808080; 66 | } 67 | 68 | .token.delimiter, 69 | .token.boolean, 70 | .token.keyword, 71 | .token.selector, 72 | .token.important, 73 | .token.atrule { 74 | color: #cc7832; 75 | } 76 | 77 | .token.operator, 78 | .token.punctuation, 79 | .token.attr-name { 80 | color: #a9b7c6; 81 | } 82 | 83 | .token.tag, 84 | .token.tag .punctuation, 85 | .token.doctype, 86 | .token.builtin { 87 | color: #e8bf6a; 88 | } 89 | 90 | .token.entity, 91 | .token.number, 92 | .token.symbol { 93 | color: #6897bb; 94 | } 95 | 96 | .token.property, 97 | .token.constant, 98 | .token.variable { 99 | color: #9876aa; 100 | } 101 | 102 | .token.string, 103 | .token.char { 104 | color: #6a8759; 105 | } 106 | 107 | .token.attr-value, 108 | .token.attr-value .punctuation { 109 | color: #a5c261; 110 | } 111 | 112 | .token.attr-value .punctuation:first-child { 113 | color: #a9b7c6; 114 | } 115 | 116 | .token.url { 117 | color: #287bde; 118 | text-decoration: underline; 119 | } 120 | 121 | .token.function { 122 | color: #ffc66d; 123 | } 124 | 125 | .token.regex { 126 | background: #364135; 127 | } 128 | 129 | .token.bold { 130 | font-weight: bold; 131 | } 132 | 133 | .token.italic { 134 | font-style: italic; 135 | } 136 | 137 | .token.inserted { 138 | background: #294436; 139 | } 140 | 141 | .token.deleted { 142 | background: #484a4a; 143 | } 144 | 145 | code.language-css .token.property, 146 | code.language-css .token.property + .token.punctuation { 147 | color: #a9b7c6; 148 | } 149 | 150 | code.language-css .token.id { 151 | color: #ffc66d; 152 | } 153 | 154 | code.language-css .token.selector > .token.class, 155 | code.language-css .token.selector > .token.attribute, 156 | code.language-css .token.selector > .token.pseudo-class, 157 | code.language-css .token.selector > .token.pseudo-element { 158 | color: #ffc66d; 159 | } 160 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build distribution theme 2 | 3 | on: 4 | release: 5 | types: 6 | - created 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v3 13 | - name: Set up Node.js 14 | uses: actions/setup-node@v3 15 | with: 16 | node-version: 16 17 | - name: Compress zip 18 | run: | 19 | PACKAGE_VERSION=$(sed -nE 's/^\s*"version": "(.*?)",$/\1/p' package.json) 20 | PRE_ZIP_FOLDER=halo-theme-aurora-${PACKAGE_VERSION} 21 | ARTIFACT_NAME=${PRE_ZIP_FOLDER}.zip 22 | ARTIFACT_PATHNAME=dist/${ARTIFACT_NAME} 23 | echo "halo-theme-aurora version $PACKAGE_VERSION" 24 | echo "Artifact name: ${ARTIFACT_NAME}" 25 | echo "Artifact pathname: ${ARTIFACT_PATHNAME}" 26 | echo "PACKAGE_VERSION=${PACKAGE_VERSION}" >> $GITHUB_ENV 27 | echo "ARTIFACT_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV 28 | echo "ARTIFACT_PATHNAME=${ARTIFACT_PATHNAME}" >> $GITHUB_ENV 29 | echo "RELEASE_ID=${{ github.event.release.id }}" >> $GITHUB_ENV 30 | mkdir $PRE_ZIP_FOLDER 31 | mkdir dist 32 | cp -r theme.yaml settings.yaml annotation-setting.yaml templates $PRE_ZIP_FOLDER/ 33 | zip -r $ARTIFACT_PATHNAME $PRE_ZIP_FOLDER 34 | - name: Upload artifact 35 | uses: actions/upload-artifact@v3 36 | with: 37 | name: halo-theme-aurora 38 | path: | 39 | dist/*.zip 40 | retention-days: 7 41 | 42 | github-release: 43 | runs-on: ubuntu-latest 44 | if: github.event_name == 'release' 45 | steps: 46 | - uses: actions/checkout@v3 47 | with: 48 | submodules: false 49 | - name: Set up Node.js 50 | uses: actions/setup-node@v3 51 | with: 52 | node-version: 16 53 | - name: Compress zip 54 | run: | 55 | PACKAGE_VERSION=$(sed -nE 's/^\s*"version": "(.*?)",$/\1/p' package.json) 56 | PRE_ZIP_FOLDER=halo-theme-aurora-${PACKAGE_VERSION} 57 | ARTIFACT_NAME=${PRE_ZIP_FOLDER}.zip 58 | ARTIFACT_PATHNAME=dist/${ARTIFACT_NAME} 59 | echo "halo-theme-aurora version $PACKAGE_VERSION" 60 | echo "Artifact name: ${ARTIFACT_NAME}" 61 | echo "Artifact pathname: ${ARTIFACT_PATHNAME}" 62 | echo "PACKAGE_VERSION=${PACKAGE_VERSION}" >> $GITHUB_ENV 63 | echo "ARTIFACT_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV 64 | echo "ARTIFACT_PATHNAME=${ARTIFACT_PATHNAME}" >> $GITHUB_ENV 65 | echo "RELEASE_ID=${{ github.event.release.id }}" >> $GITHUB_ENV 66 | mkdir $PRE_ZIP_FOLDER 67 | mkdir dist 68 | cp -r theme.yaml settings.yaml annotation-setting.yaml templates $PRE_ZIP_FOLDER/ 69 | zip -r $ARTIFACT_PATHNAME $PRE_ZIP_FOLDER 70 | - name: Upload a release asset 71 | uses: actions/github-script@v2 72 | with: 73 | github-token: ${{secrets.GITHUB_TOKEN}} 74 | script: | 75 | const fs = require('fs').promises; 76 | const { repo: { owner, repo }, sha } = context; 77 | console.log({ owner, repo, sha }); 78 | const releaseId = process.env.RELEASE_ID 79 | const artifactPathName = process.env.ARTIFACT_PATHNAME 80 | const artifactName = process.env.ARTIFACT_NAME 81 | console.log('Releasing', releaseId, artifactPathName, artifactName) 82 | await github.repos.uploadReleaseAsset({ 83 | owner, repo, 84 | release_id: releaseId, 85 | name: artifactName, 86 | data: await fs.readFile(artifactPathName) 87 | }); 88 | -------------------------------------------------------------------------------- /templates/modules/widgets/aside/profile.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
    8 |
    10 |
    11 |
    12 | avatar 15 |

    18 |

    21 | 23 |

    25 |

    26 |
    27 |
    28 | 39 |
      40 |
    • [[${stats.post}]] 41 |

      文章

      42 |
    • 43 |
    • [[${stats.category}]] 44 |

      分类

      45 |
    • 46 |
    • [[${stats.visit}]] 47 |

      访问量

      48 |
    • 49 |
    • 50 | 51 |

      建站天数

      52 |
    • 53 |
    54 |
    55 |
    56 |
    57 |
    58 | 59 | 60 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-material-dark.css: -------------------------------------------------------------------------------- 1 | code[class*="language-"], 2 | pre[class*="language-"] { 3 | text-align: left; 4 | white-space: pre; 5 | word-spacing: normal; 6 | word-break: normal; 7 | word-wrap: normal; 8 | color: #eee; 9 | background: #2f2f2f; 10 | font-family: Roboto Mono, monospace; 11 | font-size: 1em; 12 | line-height: 1.5em; 13 | 14 | -moz-tab-size: 4; 15 | -o-tab-size: 4; 16 | tab-size: 4; 17 | 18 | -webkit-hyphens: none; 19 | -moz-hyphens: none; 20 | -ms-hyphens: none; 21 | hyphens: none; 22 | } 23 | 24 | code[class*="language-"]::-moz-selection, 25 | pre[class*="language-"]::-moz-selection, 26 | code[class*="language-"] ::-moz-selection, 27 | pre[class*="language-"] ::-moz-selection { 28 | background: #363636; 29 | } 30 | 31 | code[class*="language-"]::selection, 32 | pre[class*="language-"]::selection, 33 | code[class*="language-"] ::selection, 34 | pre[class*="language-"] ::selection { 35 | background: #363636; 36 | } 37 | 38 | :not(pre) > code[class*="language-"] { 39 | white-space: normal; 40 | border-radius: 0.2em; 41 | padding: 0.1em; 42 | } 43 | 44 | pre[class*="language-"] { 45 | overflow: auto; 46 | position: relative; 47 | margin: 0.5em 0; 48 | padding: 1.25em 1em; 49 | } 50 | 51 | .language-css > code, 52 | .language-sass > code, 53 | .language-scss > code { 54 | color: #fd9170; 55 | } 56 | 57 | [class*="language-"] .namespace { 58 | opacity: 0.7; 59 | } 60 | 61 | .token.atrule { 62 | color: #c792ea; 63 | } 64 | 65 | .token.attr-name { 66 | color: #ffcb6b; 67 | } 68 | 69 | .token.attr-value { 70 | color: #a5e844; 71 | } 72 | 73 | .token.attribute { 74 | color: #a5e844; 75 | } 76 | 77 | .token.boolean { 78 | color: #c792ea; 79 | } 80 | 81 | .token.builtin { 82 | color: #ffcb6b; 83 | } 84 | 85 | .token.cdata { 86 | color: #80cbc4; 87 | } 88 | 89 | .token.char { 90 | color: #80cbc4; 91 | } 92 | 93 | .token.class { 94 | color: #ffcb6b; 95 | } 96 | 97 | .token.class-name { 98 | color: #f2ff00; 99 | } 100 | 101 | .token.comment { 102 | color: #616161; 103 | } 104 | 105 | .token.constant { 106 | color: #c792ea; 107 | } 108 | 109 | .token.deleted { 110 | color: #ff6666; 111 | } 112 | 113 | .token.doctype { 114 | color: #616161; 115 | } 116 | 117 | .token.entity { 118 | color: #ff6666; 119 | } 120 | 121 | .token.function { 122 | color: #c792ea; 123 | } 124 | 125 | .token.hexcode { 126 | color: #f2ff00; 127 | } 128 | 129 | .token.id { 130 | color: #c792ea; 131 | font-weight: bold; 132 | } 133 | 134 | .token.important { 135 | color: #c792ea; 136 | font-weight: bold; 137 | } 138 | 139 | .token.inserted { 140 | color: #80cbc4; 141 | } 142 | 143 | .token.keyword { 144 | color: #c792ea; 145 | } 146 | 147 | .token.number { 148 | color: #fd9170; 149 | } 150 | 151 | .token.operator { 152 | color: #89ddff; 153 | } 154 | 155 | .token.prolog { 156 | color: #616161; 157 | } 158 | 159 | .token.property { 160 | color: #80cbc4; 161 | } 162 | 163 | .token.pseudo-class { 164 | color: #a5e844; 165 | } 166 | 167 | .token.pseudo-element { 168 | color: #a5e844; 169 | } 170 | 171 | .token.punctuation { 172 | color: #89ddff; 173 | } 174 | 175 | .token.regex { 176 | color: #f2ff00; 177 | } 178 | 179 | .token.selector { 180 | color: #ff6666; 181 | } 182 | 183 | .token.string { 184 | color: #a5e844; 185 | } 186 | 187 | .token.symbol { 188 | color: #c792ea; 189 | } 190 | 191 | .token.tag { 192 | color: #ff6666; 193 | } 194 | 195 | .token.unit { 196 | color: #fd9170; 197 | } 198 | 199 | .token.url { 200 | color: #ff6666; 201 | } 202 | 203 | .token.variable { 204 | color: #ff6666; 205 | } 206 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-material-light.css: -------------------------------------------------------------------------------- 1 | code[class*="language-"], 2 | pre[class*="language-"] { 3 | text-align: left; 4 | white-space: pre; 5 | word-spacing: normal; 6 | word-break: normal; 7 | word-wrap: normal; 8 | color: #90a4ae; 9 | background: #fafafa; 10 | font-family: Roboto Mono, monospace; 11 | font-size: 1em; 12 | line-height: 1.5em; 13 | 14 | -moz-tab-size: 4; 15 | -o-tab-size: 4; 16 | tab-size: 4; 17 | 18 | -webkit-hyphens: none; 19 | -moz-hyphens: none; 20 | -ms-hyphens: none; 21 | hyphens: none; 22 | } 23 | 24 | code[class*="language-"]::-moz-selection, 25 | pre[class*="language-"]::-moz-selection, 26 | code[class*="language-"] ::-moz-selection, 27 | pre[class*="language-"] ::-moz-selection { 28 | background: #cceae7; 29 | color: #263238; 30 | } 31 | 32 | code[class*="language-"]::selection, 33 | pre[class*="language-"]::selection, 34 | code[class*="language-"] ::selection, 35 | pre[class*="language-"] ::selection { 36 | background: #cceae7; 37 | color: #263238; 38 | } 39 | 40 | :not(pre) > code[class*="language-"] { 41 | white-space: normal; 42 | border-radius: 0.2em; 43 | padding: 0.1em; 44 | } 45 | 46 | pre[class*="language-"] { 47 | overflow: auto; 48 | position: relative; 49 | margin: 0.5em 0; 50 | padding: 1.25em 1em; 51 | } 52 | 53 | .language-css > code, 54 | .language-sass > code, 55 | .language-scss > code { 56 | color: #f76d47; 57 | } 58 | 59 | [class*="language-"] .namespace { 60 | opacity: 0.7; 61 | } 62 | 63 | .token.atrule { 64 | color: #7c4dff; 65 | } 66 | 67 | .token.attr-name { 68 | color: #39adb5; 69 | } 70 | 71 | .token.attr-value { 72 | color: #f6a434; 73 | } 74 | 75 | .token.attribute { 76 | color: #f6a434; 77 | } 78 | 79 | .token.boolean { 80 | color: #7c4dff; 81 | } 82 | 83 | .token.builtin { 84 | color: #39adb5; 85 | } 86 | 87 | .token.cdata { 88 | color: #39adb5; 89 | } 90 | 91 | .token.char { 92 | color: #39adb5; 93 | } 94 | 95 | .token.class { 96 | color: #39adb5; 97 | } 98 | 99 | .token.class-name { 100 | color: #6182b8; 101 | } 102 | 103 | .token.comment { 104 | color: #aabfc9; 105 | } 106 | 107 | .token.constant { 108 | color: #7c4dff; 109 | } 110 | 111 | .token.deleted { 112 | color: #e53935; 113 | } 114 | 115 | .token.doctype { 116 | color: #aabfc9; 117 | } 118 | 119 | .token.entity { 120 | color: #e53935; 121 | } 122 | 123 | .token.function { 124 | color: #7c4dff; 125 | } 126 | 127 | .token.hexcode { 128 | color: #f76d47; 129 | } 130 | 131 | .token.id { 132 | color: #7c4dff; 133 | font-weight: bold; 134 | } 135 | 136 | .token.important { 137 | color: #7c4dff; 138 | font-weight: bold; 139 | } 140 | 141 | .token.inserted { 142 | color: #39adb5; 143 | } 144 | 145 | .token.keyword { 146 | color: #7c4dff; 147 | } 148 | 149 | .token.number { 150 | color: #f76d47; 151 | } 152 | 153 | .token.operator { 154 | color: #39adb5; 155 | } 156 | 157 | .token.prolog { 158 | color: #aabfc9; 159 | } 160 | 161 | .token.property { 162 | color: #39adb5; 163 | } 164 | 165 | .token.pseudo-class { 166 | color: #f6a434; 167 | } 168 | 169 | .token.pseudo-element { 170 | color: #f6a434; 171 | } 172 | 173 | .token.punctuation { 174 | color: #39adb5; 175 | } 176 | 177 | .token.regex { 178 | color: #6182b8; 179 | } 180 | 181 | .token.selector { 182 | color: #e53935; 183 | } 184 | 185 | .token.string { 186 | color: #f6a434; 187 | } 188 | 189 | .token.symbol { 190 | color: #7c4dff; 191 | } 192 | 193 | .token.tag { 194 | color: #e53935; 195 | } 196 | 197 | .token.unit { 198 | color: #f76d47; 199 | } 200 | 201 | .token.url { 202 | color: #e53935; 203 | } 204 | 205 | .token.variable { 206 | color: #e53935; 207 | } 208 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-material-oceanic.css: -------------------------------------------------------------------------------- 1 | code[class*="language-"], 2 | pre[class*="language-"] { 3 | text-align: left; 4 | white-space: pre; 5 | word-spacing: normal; 6 | word-break: normal; 7 | word-wrap: normal; 8 | color: #c3cee3; 9 | background: #263238; 10 | font-family: Roboto Mono, monospace; 11 | font-size: 1em; 12 | line-height: 1.5em; 13 | 14 | -moz-tab-size: 4; 15 | -o-tab-size: 4; 16 | tab-size: 4; 17 | 18 | -webkit-hyphens: none; 19 | -moz-hyphens: none; 20 | -ms-hyphens: none; 21 | hyphens: none; 22 | } 23 | 24 | code[class*="language-"]::-moz-selection, 25 | pre[class*="language-"]::-moz-selection, 26 | code[class*="language-"] ::-moz-selection, 27 | pre[class*="language-"] ::-moz-selection { 28 | background: #363636; 29 | } 30 | 31 | code[class*="language-"]::selection, 32 | pre[class*="language-"]::selection, 33 | code[class*="language-"] ::selection, 34 | pre[class*="language-"] ::selection { 35 | background: #363636; 36 | } 37 | 38 | :not(pre) > code[class*="language-"] { 39 | white-space: normal; 40 | border-radius: 0.2em; 41 | padding: 0.1em; 42 | } 43 | 44 | pre[class*="language-"] { 45 | overflow: auto; 46 | position: relative; 47 | margin: 0.5em 0; 48 | padding: 1.25em 1em; 49 | } 50 | 51 | .language-css > code, 52 | .language-sass > code, 53 | .language-scss > code { 54 | color: #fd9170; 55 | } 56 | 57 | [class*="language-"] .namespace { 58 | opacity: 0.7; 59 | } 60 | 61 | .token.atrule { 62 | color: #c792ea; 63 | } 64 | 65 | .token.attr-name { 66 | color: #ffcb6b; 67 | } 68 | 69 | .token.attr-value { 70 | color: #c3e88d; 71 | } 72 | 73 | .token.attribute { 74 | color: #c3e88d; 75 | } 76 | 77 | .token.boolean { 78 | color: #c792ea; 79 | } 80 | 81 | .token.builtin { 82 | color: #ffcb6b; 83 | } 84 | 85 | .token.cdata { 86 | color: #80cbc4; 87 | } 88 | 89 | .token.char { 90 | color: #80cbc4; 91 | } 92 | 93 | .token.class { 94 | color: #ffcb6b; 95 | } 96 | 97 | .token.class-name { 98 | color: #f2ff00; 99 | } 100 | 101 | .token.color { 102 | color: #f2ff00; 103 | } 104 | 105 | .token.comment { 106 | color: #546e7a; 107 | } 108 | 109 | .token.constant { 110 | color: #c792ea; 111 | } 112 | 113 | .token.deleted { 114 | color: #f07178; 115 | } 116 | 117 | .token.doctype { 118 | color: #546e7a; 119 | } 120 | 121 | .token.entity { 122 | color: #f07178; 123 | } 124 | 125 | .token.function { 126 | color: #c792ea; 127 | } 128 | 129 | .token.hexcode { 130 | color: #f2ff00; 131 | } 132 | 133 | .token.id { 134 | color: #c792ea; 135 | font-weight: bold; 136 | } 137 | 138 | .token.important { 139 | color: #c792ea; 140 | font-weight: bold; 141 | } 142 | 143 | .token.inserted { 144 | color: #80cbc4; 145 | } 146 | 147 | .token.keyword { 148 | color: #c792ea; 149 | font-style: italic; 150 | } 151 | 152 | .token.number { 153 | color: #fd9170; 154 | } 155 | 156 | .token.operator { 157 | color: #89ddff; 158 | } 159 | 160 | .token.prolog { 161 | color: #546e7a; 162 | } 163 | 164 | .token.property { 165 | color: #80cbc4; 166 | } 167 | 168 | .token.pseudo-class { 169 | color: #c3e88d; 170 | } 171 | 172 | .token.pseudo-element { 173 | color: #c3e88d; 174 | } 175 | 176 | .token.punctuation { 177 | color: #89ddff; 178 | } 179 | 180 | .token.regex { 181 | color: #f2ff00; 182 | } 183 | 184 | .token.selector { 185 | color: #f07178; 186 | } 187 | 188 | .token.string { 189 | color: #c3e88d; 190 | } 191 | 192 | .token.symbol { 193 | color: #c792ea; 194 | } 195 | 196 | .token.tag { 197 | color: #f07178; 198 | } 199 | 200 | .token.unit { 201 | color: #f07178; 202 | } 203 | 204 | .token.url { 205 | color: #fd9170; 206 | } 207 | 208 | .token.variable { 209 | color: #f07178; 210 | } 211 | -------------------------------------------------------------------------------- /templates/assets/js/navigator.js: -------------------------------------------------------------------------------- 1 | let scrollTimer; 2 | document.addEventListener("scroll", () => { 3 | let navigator_class = document.getElementById('Ob-Navigator').classList; 4 | navigator_class.remove('Ob-Navigator--open') 5 | navigator_class.add('Ob-Navigator--scrolling') 6 | let returnTop = document.getElementById('returnTop') 7 | let scrollPercent = document.getElementById('scrollPercent') 8 | let scrollSvg1 = document.getElementById('scrollSvg1') 9 | let scrollSvg2 = document.getElementById('scrollSvg2') 10 | scrollSvg2.style.display = 'none' 11 | let e = document.documentElement.scrollTop || window.pageYOffset 12 | let t = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight, document.body.offsetHeight, document.documentElement.offsetHeight, document.body.clientHeight, document.documentElement.clientHeight) - document.documentElement.clientHeight 13 | let o = Math.round(e / t * 100); 14 | if (o > 0.16) { 15 | scrollPercent.style.display = 'block' 16 | scrollSvg1.style.display = 'none' 17 | returnTop.style.display = 'block' 18 | scrollPercent.innerText = o + '%' 19 | } else { 20 | returnTop.style.display = 'none' 21 | scrollPercent.style.display = 'none' 22 | scrollSvg1.style.display = 'block' 23 | } 24 | clearTimeout(scrollTimer); 25 | scrollTimer = setTimeout(() => { 26 | navigator_class.remove('Ob-Navigator--scrolling') 27 | }, 300); 28 | }); 29 | 30 | function returnTop() { 31 | scrollToDest(0, 500) 32 | } 33 | 34 | function scrollToDest(e, t) { 35 | if (e < 0 || t < 0) 36 | return; 37 | const n = window.scrollY || window.screenTop; 38 | if (e -= 70, 39 | "CSS" in window && CSS.supports("scroll-behavior", "smooth")) 40 | return void window.scrollTo({ 41 | top: e, 42 | behavior: "smooth" 43 | }); 44 | let o = null; 45 | t = t || 500, 46 | window.requestAnimationFrame((function i(s) { 47 | if (o = o || s, 48 | n < e) { 49 | const r = s - o; 50 | window.scrollTo(0, (e - n) * r / t + n), 51 | r < t ? window.requestAnimationFrame(i) : window.scrollTo(0, e) 52 | } else { 53 | const r = s - o; 54 | window.scrollTo(0, n - (n - e) * r / t), 55 | r < t ? window.requestAnimationFrame(i) : window.scrollTo(0, e) 56 | } 57 | } 58 | )) 59 | } 60 | 61 | function navigatorClickHandler() { 62 | let navigator_class = document.getElementById("Ob-Navigator").classList 63 | let scrollSvg2 = document.getElementById('scrollSvg2'); 64 | let scrollPercent = document.getElementById('scrollPercent'); 65 | let scrollSvg1 = document.getElementById('scrollSvg1'); 66 | let returnTop = document.getElementById('returnTop'); 67 | if (navigator_class.contains('Ob-Navigator--open')) { 68 | scrollSvg2.style.display = 'none' 69 | let e = document.documentElement.scrollTop || window.pageYOffset 70 | let t = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight, document.body.offsetHeight, document.documentElement.offsetHeight, document.body.clientHeight, document.documentElement.clientHeight) - document.documentElement.clientHeight 71 | let o = Math.round(e / t * 100); 72 | if (o > 0.16) { 73 | returnTop.style.display = 'block' 74 | scrollPercent.style.display = 'block' 75 | scrollPercent.innerText = o + '%' 76 | } else { 77 | scrollSvg1.style.display = 'block' 78 | } 79 | navigator_class.remove('Ob-Navigator--open') 80 | } else { 81 | returnTop.style.display = 'none' 82 | scrollSvg1.style.display = 'none' 83 | scrollSvg2.style.display = 'block' 84 | scrollPercent.style.display = 'none' 85 | navigator_class.add('Ob-Navigator--open') 86 | } 87 | } -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-vs.css: -------------------------------------------------------------------------------- 1 | /** 2 | * VS theme by Andrew Lock (https://andrewlock.net) 3 | * Inspired by Visual Studio syntax coloring 4 | */ 5 | 6 | code[class*="language-"], 7 | pre[class*="language-"] { 8 | color: #393A34; 9 | font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; 10 | direction: ltr; 11 | text-align: left; 12 | white-space: pre; 13 | word-spacing: normal; 14 | word-break: normal; 15 | font-size: .9em; 16 | line-height: 1.2em; 17 | 18 | -moz-tab-size: 4; 19 | -o-tab-size: 4; 20 | tab-size: 4; 21 | 22 | -webkit-hyphens: none; 23 | -moz-hyphens: none; 24 | -ms-hyphens: none; 25 | hyphens: none; 26 | } 27 | 28 | pre > code[class*="language-"] { 29 | font-size: 1em; 30 | } 31 | 32 | pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, 33 | code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { 34 | background: #C1DEF1; 35 | } 36 | 37 | pre[class*="language-"]::selection, pre[class*="language-"] ::selection, 38 | code[class*="language-"]::selection, code[class*="language-"] ::selection { 39 | background: #C1DEF1; 40 | } 41 | 42 | /* Code blocks */ 43 | pre[class*="language-"] { 44 | padding: 1em; 45 | margin: .5em 0; 46 | overflow: auto; 47 | border: 1px solid #dddddd; 48 | background-color: white; 49 | } 50 | 51 | /* Inline code */ 52 | :not(pre) > code[class*="language-"] { 53 | padding: .2em; 54 | padding-top: 1px; 55 | padding-bottom: 1px; 56 | background: #f8f8f8; 57 | border: 1px solid #dddddd; 58 | } 59 | 60 | .token.comment, 61 | .token.prolog, 62 | .token.doctype, 63 | .token.cdata { 64 | color: #008000; 65 | font-style: italic; 66 | } 67 | 68 | .token.namespace { 69 | opacity: .7; 70 | } 71 | 72 | .token.string { 73 | color: #A31515; 74 | } 75 | 76 | .token.punctuation, 77 | .token.operator { 78 | color: #393A34; /* no highlight */ 79 | } 80 | 81 | .token.url, 82 | .token.symbol, 83 | .token.number, 84 | .token.boolean, 85 | .token.variable, 86 | .token.constant, 87 | .token.inserted { 88 | color: #36acaa; 89 | } 90 | 91 | .token.atrule, 92 | .token.keyword, 93 | .token.attr-value, 94 | .language-autohotkey .token.selector, 95 | .language-json .token.boolean, 96 | .language-json .token.number, 97 | code[class*="language-css"] { 98 | color: #0000ff; 99 | } 100 | 101 | .token.function { 102 | color: #393A34; 103 | } 104 | 105 | .token.deleted, 106 | .language-autohotkey .token.tag { 107 | color: #9a050f; 108 | } 109 | 110 | .token.selector, 111 | .language-autohotkey .token.keyword { 112 | color: #00009f; 113 | } 114 | 115 | .token.important { 116 | color: #e90; 117 | } 118 | 119 | .token.important, 120 | .token.bold { 121 | font-weight: bold; 122 | } 123 | 124 | .token.italic { 125 | font-style: italic; 126 | } 127 | 128 | .token.class-name, 129 | .language-json .token.property { 130 | color: #2B91AF; 131 | } 132 | 133 | .token.tag, 134 | .token.selector { 135 | color: #800000; 136 | } 137 | 138 | .token.attr-name, 139 | .token.property, 140 | .token.regex, 141 | .token.entity { 142 | color: #ff0000; 143 | } 144 | 145 | .token.directive.tag .tag { 146 | background: #ffff00; 147 | color: #393A34; 148 | } 149 | 150 | /* overrides color-values for the Line Numbers plugin 151 | * http://prismjs.com/plugins/line-numbers/ 152 | */ 153 | .line-numbers .line-numbers-rows { 154 | border-right-color: #a5a5a5; 155 | } 156 | 157 | .line-numbers-rows > span:before { 158 | color: #2B91AF; 159 | } 160 | 161 | /* overrides color-values for the Line Highlight plugin 162 | * http://prismjs.com/plugins/line-highlight/ 163 | */ 164 | .line-highlight { 165 | background: rgba(193, 222, 241, 0.2); 166 | background: -webkit-linear-gradient(left, rgba(193, 222, 241, 0.2) 70%, rgba(221, 222, 241, 0)); 167 | background: linear-gradient(to right, rgba(193, 222, 241, 0.2) 70%, rgba(221, 222, 241, 0)); 168 | } 169 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-cb.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Based on Plugin: Syntax Highlighter CB 3 | * Plugin URI: http://wp.tutsplus.com/tutorials/plugins/adding-a-syntax-highlighter-shortcode-using-prism-js 4 | * Description: Highlight your code snippets with an easy to use shortcode based on Lea Verou's Prism.js. 5 | * Version: 1.0.0 6 | * Author: c.bavota 7 | * Author URI: http://bavotasan.comhttp://wp.tutsplus.com/tutorials/plugins/adding-a-syntax-highlighter-shortcode-using-prism-js/ */ 8 | /* http://cbavota.bitbucket.org/syntax-highlighter/ */ 9 | 10 | /* ===== ===== */ 11 | code[class*="language-"], 12 | pre[class*="language-"] { 13 | color: #fff; 14 | text-shadow: 0 1px 1px #000; 15 | font-family: Menlo, Monaco, "Courier New", monospace; 16 | direction: ltr; 17 | text-align: left; 18 | word-spacing: normal; 19 | white-space: pre; 20 | word-wrap: normal; 21 | line-height: 1.4; 22 | background: none; 23 | border: 0; 24 | 25 | -moz-tab-size: 4; 26 | -o-tab-size: 4; 27 | tab-size: 4; 28 | 29 | -webkit-hyphens: none; 30 | -moz-hyphens: none; 31 | -ms-hyphens: none; 32 | hyphens: none; 33 | } 34 | 35 | pre[class*="language-"] code { 36 | float: left; 37 | padding: 0 15px 0 0; 38 | } 39 | 40 | pre[class*="language-"], 41 | :not(pre) > code[class*="language-"] { 42 | background: #222; 43 | } 44 | 45 | /* Code blocks */ 46 | pre[class*="language-"] { 47 | padding: 15px; 48 | margin: 1em 0; 49 | overflow: auto; 50 | -moz-border-radius: 8px; 51 | -webkit-border-radius: 8px; 52 | border-radius: 8px; 53 | } 54 | 55 | /* Inline code */ 56 | :not(pre) > code[class*="language-"] { 57 | padding: 5px 10px; 58 | line-height: 1; 59 | -moz-border-radius: 3px; 60 | -webkit-border-radius: 3px; 61 | border-radius: 3px; 62 | } 63 | 64 | .token.comment, 65 | .token.prolog, 66 | .token.doctype, 67 | .token.cdata { 68 | color: #797979; 69 | } 70 | 71 | .token.selector, 72 | .token.operator, 73 | .token.punctuation { 74 | color: #fff; 75 | } 76 | 77 | .token.namespace { 78 | opacity: .7; 79 | } 80 | 81 | .token.tag, 82 | .token.boolean { 83 | color: #ffd893; 84 | } 85 | 86 | .token.atrule, 87 | .token.attr-value, 88 | .token.hex, 89 | .token.string { 90 | color: #B0C975; 91 | } 92 | 93 | .token.property, 94 | .token.entity, 95 | .token.url, 96 | .token.attr-name, 97 | .token.keyword { 98 | color: #c27628; 99 | } 100 | 101 | .token.regex { 102 | color: #9B71C6; 103 | } 104 | 105 | .token.entity { 106 | cursor: help; 107 | } 108 | 109 | .token.function, 110 | .token.constant { 111 | color: #e5a638; 112 | } 113 | 114 | .token.variable { 115 | color: #fdfba8; 116 | } 117 | 118 | .token.number { 119 | color: #8799B0; 120 | } 121 | 122 | .token.important, 123 | .token.deliminator { 124 | color: #E45734; 125 | } 126 | 127 | /* Line highlight plugin */ 128 | pre[data-line] { 129 | position: relative; 130 | padding: 1em 0 1em 3em; 131 | } 132 | 133 | .line-highlight { 134 | position: absolute; 135 | left: 0; 136 | right: 0; 137 | margin-top: 1em; /* Same as .prism's padding-top */ 138 | background: rgba(255, 255, 255, .2); 139 | pointer-events: none; 140 | line-height: inherit; 141 | white-space: pre; 142 | } 143 | 144 | .line-highlight:before, 145 | .line-highlight[data-end]:after { 146 | content: attr(data-start); 147 | position: absolute; 148 | top: .3em; 149 | left: .6em; 150 | min-width: 1em; 151 | padding: 0 .5em; 152 | background-color: rgba(255, 255, 255, .3); 153 | color: #fff; 154 | font: bold 65%/1.5 sans-serif; 155 | text-align: center; 156 | -moz-border-radius: 8px; 157 | -webkit-border-radius: 8px; 158 | border-radius: 8px; 159 | text-shadow: none; 160 | } 161 | 162 | .line-highlight[data-end]:after { 163 | content: attr(data-end); 164 | top: auto; 165 | bottom: .4em; 166 | } 167 | 168 | /* for line numbers */ 169 | .line-numbers-rows { 170 | margin: 0; 171 | } 172 | 173 | .line-numbers-rows span { 174 | padding-right: 10px; 175 | border-right: 3px #d9d336 solid; 176 | } 177 | -------------------------------------------------------------------------------- /templates/modules/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 14 | 16 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 66 | 67 | 68 | 69 | 70 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /templates/assets/css/error.css: -------------------------------------------------------------------------------- 1 | @import "https://fonts.googleapis.com/css?family=Fira+Sans"; 2 | 3 | .left-section .inner-content { 4 | position: absolute; 5 | top: 50%; 6 | transform: translateY(-50%) 7 | } 8 | 9 | #not-found-page { 10 | margin: 0; 11 | padding: 0; 12 | color: var(--text-noraml) 13 | } 14 | 15 | .background { 16 | position: absolute; 17 | top: 0; 18 | left: 0; 19 | width: 100%; 20 | height: 100%; 21 | background: linear-gradient(var(--background-primary), var(--background-secondary)); 22 | border-radius: 18px 23 | } 24 | 25 | .background .ground { 26 | --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1); 27 | --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color); 28 | box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); 29 | position: absolute; 30 | bottom: 0; 31 | width: 100%; 32 | height: 25vh; 33 | background: #0c0e10; 34 | border-bottom-left-radius: 18px; 35 | border-bottom-right-radius: 18px 36 | } 37 | 38 | @media (max-width: 770px) { 39 | .background .ground { 40 | height: 0 41 | } 42 | } 43 | 44 | .container { 45 | position: relative; 46 | margin: 0 auto; 47 | width: 85%; 48 | height: 100vh; 49 | padding-bottom: 25vh; 50 | display: flex; 51 | flex-direction: row; 52 | justify-content: space-around; 53 | border-radius: 18px 54 | } 55 | 56 | @media (max-width: 770px) { 57 | .container { 58 | flex-direction: column; 59 | padding-bottom: 0 60 | } 61 | } 62 | 63 | .left-section, .right-section { 64 | position: relative 65 | } 66 | 67 | .left-section { 68 | width: 40% 69 | } 70 | 71 | @media (max-width: 770px) { 72 | .left-section { 73 | width: 100%; 74 | height: 40%; 75 | position: absolute; 76 | top: 0 77 | } 78 | 79 | .left-section .inner-content { 80 | position: relative; 81 | padding: 1rem 0 82 | } 83 | } 84 | 85 | .heading { 86 | text-align: center; 87 | font-size: 9em; 88 | line-height: 1.3em; 89 | margin: 2rem 0 .5rem; 90 | padding: 0; 91 | text-shadow: 0 0 1rem #fefefe 92 | } 93 | 94 | @media (max-width: 770px) { 95 | .heading { 96 | font-size: 7em; 97 | line-height: 1.15; 98 | margin: 0 99 | } 100 | } 101 | 102 | .subheading { 103 | text-align: center; 104 | max-width: 480px; 105 | font-size: 1.5em; 106 | line-height: 1.15em; 107 | padding: 0 1rem; 108 | margin: 0 auto 109 | } 110 | 111 | @media (max-width: 770px) { 112 | .subheading { 113 | font-size: 1.3em; 114 | line-height: 1.15; 115 | max-width: 100% 116 | } 117 | } 118 | 119 | .right-section { 120 | width: 50% 121 | } 122 | 123 | @media (max-width: 770px) { 124 | .right-section { 125 | width: 100%; 126 | height: 60%; 127 | position: absolute; 128 | bottom: 0 129 | } 130 | } 131 | 132 | .svgimg { 133 | position: absolute; 134 | bottom: 0; 135 | padding-top: 10vh; 136 | padding-left: 1vh; 137 | max-width: 100%; 138 | max-height: 100% 139 | } 140 | 141 | @media (max-width: 770px) { 142 | .svgimg { 143 | padding: 0 144 | } 145 | } 146 | 147 | .svgimg .bench-legs { 148 | fill: #0c0e10 149 | } 150 | 151 | .svgimg .top-bench, .svgimg .bottom-bench { 152 | stroke: #0c0e10; 153 | stroke-width: 1px; 154 | fill: #5b3e2b 155 | } 156 | 157 | .svgimg .bottom-bench path:nth-child(1) { 158 | fill: #432d20 159 | } 160 | 161 | .svgimg .lamp-details { 162 | fill: #202425 163 | } 164 | 165 | .svgimg .lamp-accent { 166 | fill: #2c3133 167 | } 168 | 169 | .svgimg .lamp-bottom { 170 | fill: linear-gradient(#202425, #0c0e10) 171 | } 172 | 173 | .svgimg .lamp-light { 174 | fill: #efefef 175 | } 176 | 177 | @keyframes glow-777b95ee { 178 | 0% { 179 | text-shadow: 0 0 1rem #fefefe 180 | } 181 | 182 | 50% { 183 | text-shadow: 0 0 1.85rem #ededed 184 | } 185 | 186 | to { 187 | text-shadow: 0 0 1rem #fefefe 188 | } 189 | } 190 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-duotone-light.css: -------------------------------------------------------------------------------- 1 | /* 2 | Name: Duotone Light 3 | Author: Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/duotone-themes) 4 | 5 | Conversion: Bram de Haan (http://atelierbram.github.io/Base2Tone-prism/output/prism/prism-base2tone-morning-light.css) 6 | Generated with Base16 Builder (https://github.com/base16-builder/base16-builder) 7 | */ 8 | 9 | code[class*="language-"], 10 | pre[class*="language-"] { 11 | font-family: Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace; 12 | font-size: 14px; 13 | line-height: 1.375; 14 | direction: ltr; 15 | text-align: left; 16 | white-space: pre; 17 | word-spacing: normal; 18 | word-break: normal; 19 | 20 | -moz-tab-size: 4; 21 | -o-tab-size: 4; 22 | tab-size: 4; 23 | 24 | -webkit-hyphens: none; 25 | -moz-hyphens: none; 26 | -ms-hyphens: none; 27 | hyphens: none; 28 | background: #faf8f5; 29 | color: #728fcb; 30 | } 31 | 32 | pre > code[class*="language-"] { 33 | font-size: 1em; 34 | } 35 | 36 | pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, 37 | code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { 38 | text-shadow: none; 39 | background: #faf8f5; 40 | } 41 | 42 | pre[class*="language-"]::selection, pre[class*="language-"] ::selection, 43 | code[class*="language-"]::selection, code[class*="language-"] ::selection { 44 | text-shadow: none; 45 | background: #faf8f5; 46 | } 47 | 48 | /* Code blocks */ 49 | pre[class*="language-"] { 50 | padding: 1em; 51 | margin: .5em 0; 52 | overflow: auto; 53 | } 54 | 55 | /* Inline code */ 56 | :not(pre) > code[class*="language-"] { 57 | padding: .1em; 58 | border-radius: .3em; 59 | } 60 | 61 | .token.comment, 62 | .token.prolog, 63 | .token.doctype, 64 | .token.cdata { 65 | color: #b6ad9a; 66 | } 67 | 68 | .token.punctuation { 69 | color: #b6ad9a; 70 | } 71 | 72 | .token.namespace { 73 | opacity: .7; 74 | } 75 | 76 | .token.tag, 77 | .token.operator, 78 | .token.number { 79 | color: #063289; 80 | } 81 | 82 | .token.property, 83 | .token.function { 84 | color: #b29762; 85 | } 86 | 87 | .token.tag-id, 88 | .token.selector, 89 | .token.atrule-id { 90 | color: #2d2006; 91 | } 92 | 93 | code.language-javascript, 94 | .token.attr-name { 95 | color: #896724; 96 | } 97 | 98 | code.language-css, 99 | code.language-scss, 100 | .token.boolean, 101 | .token.string, 102 | .token.entity, 103 | .token.url, 104 | .language-css .token.string, 105 | .language-scss .token.string, 106 | .style .token.string, 107 | .token.attr-value, 108 | .token.keyword, 109 | .token.control, 110 | .token.directive, 111 | .token.unit, 112 | .token.statement, 113 | .token.regex, 114 | .token.atrule { 115 | color: #728fcb; 116 | } 117 | 118 | .token.placeholder, 119 | .token.variable { 120 | color: #93abdc; 121 | } 122 | 123 | .token.deleted { 124 | text-decoration: line-through; 125 | } 126 | 127 | .token.inserted { 128 | border-bottom: 1px dotted #2d2006; 129 | text-decoration: none; 130 | } 131 | 132 | .token.italic { 133 | font-style: italic; 134 | } 135 | 136 | .token.important, 137 | .token.bold { 138 | font-weight: bold; 139 | } 140 | 141 | .token.important { 142 | color: #896724; 143 | } 144 | 145 | .token.entity { 146 | cursor: help; 147 | } 148 | 149 | pre > code.highlight { 150 | outline: .4em solid #896724; 151 | outline-offset: .4em; 152 | } 153 | 154 | /* overrides color-values for the Line Numbers plugin 155 | * http://prismjs.com/plugins/line-numbers/ 156 | */ 157 | .line-numbers .line-numbers-rows { 158 | border-right-color: #ece8de; 159 | } 160 | 161 | .line-numbers-rows > span:before { 162 | color: #cdc4b1; 163 | } 164 | 165 | /* overrides color-values for the Line Highlight plugin 166 | * http://prismjs.com/plugins/line-highlight/ 167 | */ 168 | .line-highlight { 169 | background: rgba(45, 32, 6, 0.2); 170 | background: -webkit-linear-gradient(left, rgba(45, 32, 6, 0.2) 70%, rgba(45, 32, 6, 0)); 171 | background: linear-gradient(to right, rgba(45, 32, 6, 0.2) 70%, rgba(45, 32, 6, 0)); 172 | } 173 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-base16-ateliersulphurpool.light.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: Base16 Atelier Sulphurpool Light 4 | Author: Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) 5 | 6 | Prism template by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/prism/) 7 | Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) 8 | 9 | */ 10 | code[class*="language-"], 11 | pre[class*="language-"] { 12 | font-family: Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace; 13 | font-size: 14px; 14 | line-height: 1.375; 15 | direction: ltr; 16 | text-align: left; 17 | white-space: pre; 18 | word-spacing: normal; 19 | word-break: normal; 20 | -moz-tab-size: 4; 21 | -o-tab-size: 4; 22 | tab-size: 4; 23 | -webkit-hyphens: none; 24 | -moz-hyphens: none; 25 | -ms-hyphens: none; 26 | hyphens: none; 27 | background: #f5f7ff; 28 | color: #5e6687; 29 | } 30 | 31 | pre > code[class*="language-"] { 32 | font-size: 1em; 33 | } 34 | 35 | pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, 36 | code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { 37 | text-shadow: none; 38 | background: #dfe2f1; 39 | } 40 | 41 | pre[class*="language-"]::selection, pre[class*="language-"] ::selection, 42 | code[class*="language-"]::selection, code[class*="language-"] ::selection { 43 | text-shadow: none; 44 | background: #dfe2f1; 45 | } 46 | 47 | /* Code blocks */ 48 | pre[class*="language-"] { 49 | padding: 1em; 50 | margin: .5em 0; 51 | overflow: auto; 52 | } 53 | 54 | /* Inline code */ 55 | :not(pre) > code[class*="language-"] { 56 | padding: .1em; 57 | border-radius: .3em; 58 | } 59 | 60 | .token.comment, 61 | .token.prolog, 62 | .token.doctype, 63 | .token.cdata { 64 | color: #898ea4; 65 | } 66 | 67 | .token.punctuation { 68 | color: #5e6687; 69 | } 70 | 71 | .token.namespace { 72 | opacity: .7; 73 | } 74 | 75 | .token.operator, 76 | .token.boolean, 77 | .token.number { 78 | color: #c76b29; 79 | } 80 | 81 | .token.property { 82 | color: #c08b30; 83 | } 84 | 85 | .token.tag { 86 | color: #3d8fd1; 87 | } 88 | 89 | .token.string { 90 | color: #22a2c9; 91 | } 92 | 93 | .token.selector { 94 | color: #6679cc; 95 | } 96 | 97 | .token.attr-name { 98 | color: #c76b29; 99 | } 100 | 101 | .token.entity, 102 | .token.url, 103 | .language-css .token.string, 104 | .style .token.string { 105 | color: #22a2c9; 106 | } 107 | 108 | .token.attr-value, 109 | .token.keyword, 110 | .token.control, 111 | .token.directive, 112 | .token.unit { 113 | color: #ac9739; 114 | } 115 | 116 | .token.statement, 117 | .token.regex, 118 | .token.atrule { 119 | color: #22a2c9; 120 | } 121 | 122 | .token.placeholder, 123 | .token.variable { 124 | color: #3d8fd1; 125 | } 126 | 127 | .token.deleted { 128 | text-decoration: line-through; 129 | } 130 | 131 | .token.inserted { 132 | border-bottom: 1px dotted #202746; 133 | text-decoration: none; 134 | } 135 | 136 | .token.italic { 137 | font-style: italic; 138 | } 139 | 140 | .token.important, 141 | .token.bold { 142 | font-weight: bold; 143 | } 144 | 145 | .token.important { 146 | color: #c94922; 147 | } 148 | 149 | .token.entity { 150 | cursor: help; 151 | } 152 | 153 | pre > code.highlight { 154 | outline: 0.4em solid #c94922; 155 | outline-offset: .4em; 156 | } 157 | 158 | /* overrides color-values for the Line Numbers plugin 159 | * http://prismjs.com/plugins/line-numbers/ 160 | */ 161 | .line-numbers .line-numbers-rows { 162 | border-right-color: #dfe2f1; 163 | } 164 | 165 | .line-numbers-rows > span:before { 166 | color: #979db4; 167 | } 168 | 169 | /* overrides color-values for the Line Highlight plugin 170 | * http://prismjs.com/plugins/line-highlight/ 171 | */ 172 | .line-highlight { 173 | background: rgba(107, 115, 148, 0.2); 174 | background: -webkit-linear-gradient(left, rgba(107, 115, 148, 0.2) 70%, rgba(107, 115, 148, 0)); 175 | background: linear-gradient(to right, rgba(107, 115, 148, 0.2) 70%, rgba(107, 115, 148, 0)); 176 | } 177 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-duotone-dark.css: -------------------------------------------------------------------------------- 1 | /* 2 | Name: Duotone Dark 3 | Author: Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/duotone-themes) 4 | 5 | Conversion: Bram de Haan (http://atelierbram.github.io/Base2Tone-prism/output/prism/prism-base2tone-evening-dark.css) 6 | Generated with Base16 Builder (https://github.com/base16-builder/base16-builder) 7 | */ 8 | 9 | code[class*="language-"], 10 | pre[class*="language-"] { 11 | font-family: Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace; 12 | font-size: 14px; 13 | line-height: 1.375; 14 | direction: ltr; 15 | text-align: left; 16 | white-space: pre; 17 | word-spacing: normal; 18 | word-break: normal; 19 | 20 | -moz-tab-size: 4; 21 | -o-tab-size: 4; 22 | tab-size: 4; 23 | 24 | -webkit-hyphens: none; 25 | -moz-hyphens: none; 26 | -ms-hyphens: none; 27 | hyphens: none; 28 | background: #2a2734; 29 | color: #9a86fd; 30 | } 31 | 32 | pre > code[class*="language-"] { 33 | font-size: 1em; 34 | } 35 | 36 | pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, 37 | code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { 38 | text-shadow: none; 39 | background: #6a51e6; 40 | } 41 | 42 | pre[class*="language-"]::selection, pre[class*="language-"] ::selection, 43 | code[class*="language-"]::selection, code[class*="language-"] ::selection { 44 | text-shadow: none; 45 | background: #6a51e6; 46 | } 47 | 48 | /* Code blocks */ 49 | pre[class*="language-"] { 50 | padding: 1em; 51 | margin: .5em 0; 52 | overflow: auto; 53 | } 54 | 55 | /* Inline code */ 56 | :not(pre) > code[class*="language-"] { 57 | padding: .1em; 58 | border-radius: .3em; 59 | } 60 | 61 | .token.comment, 62 | .token.prolog, 63 | .token.doctype, 64 | .token.cdata { 65 | color: #6c6783; 66 | } 67 | 68 | .token.punctuation { 69 | color: #6c6783; 70 | } 71 | 72 | .token.namespace { 73 | opacity: .7; 74 | } 75 | 76 | .token.tag, 77 | .token.operator, 78 | .token.number { 79 | color: #e09142; 80 | } 81 | 82 | .token.property, 83 | .token.function { 84 | color: #9a86fd; 85 | } 86 | 87 | .token.tag-id, 88 | .token.selector, 89 | .token.atrule-id { 90 | color: #eeebff; 91 | } 92 | 93 | code.language-javascript, 94 | .token.attr-name { 95 | color: #c4b9fe; 96 | } 97 | 98 | code.language-css, 99 | code.language-scss, 100 | .token.boolean, 101 | .token.string, 102 | .token.entity, 103 | .token.url, 104 | .language-css .token.string, 105 | .language-scss .token.string, 106 | .style .token.string, 107 | .token.attr-value, 108 | .token.keyword, 109 | .token.control, 110 | .token.directive, 111 | .token.unit, 112 | .token.statement, 113 | .token.regex, 114 | .token.atrule { 115 | color: #ffcc99; 116 | } 117 | 118 | .token.placeholder, 119 | .token.variable { 120 | color: #ffcc99; 121 | } 122 | 123 | .token.deleted { 124 | text-decoration: line-through; 125 | } 126 | 127 | .token.inserted { 128 | border-bottom: 1px dotted #eeebff; 129 | text-decoration: none; 130 | } 131 | 132 | .token.italic { 133 | font-style: italic; 134 | } 135 | 136 | .token.important, 137 | .token.bold { 138 | font-weight: bold; 139 | } 140 | 141 | .token.important { 142 | color: #c4b9fe; 143 | } 144 | 145 | .token.entity { 146 | cursor: help; 147 | } 148 | 149 | pre > code.highlight { 150 | outline: .4em solid #8a75f5; 151 | outline-offset: .4em; 152 | } 153 | 154 | /* overrides color-values for the Line Numbers plugin 155 | * http://prismjs.com/plugins/line-numbers/ 156 | */ 157 | .line-numbers .line-numbers-rows { 158 | border-right-color: #2c2937; 159 | } 160 | 161 | .line-numbers-rows > span:before { 162 | color: #3c3949; 163 | } 164 | 165 | /* overrides color-values for the Line Highlight plugin 166 | * http://prismjs.com/plugins/line-highlight/ 167 | */ 168 | .line-highlight { 169 | background: rgba(224, 145, 66, 0.2); 170 | background: -webkit-linear-gradient(left, rgba(224, 145, 66, 0.2) 70%, rgba(224, 145, 66, 0)); 171 | background: linear-gradient(to right, rgba(224, 145, 66, 0.2) 70%, rgba(224, 145, 66, 0)); 172 | } 173 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-duotone-space.css: -------------------------------------------------------------------------------- 1 | /* 2 | Name: Duotone Space 3 | Author: Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/duotone-themes) 4 | 5 | Conversion: Bram de Haan (http://atelierbram.github.io/Base2Tone-prism/output/prism/prism-base2tone-space-dark.css) 6 | Generated with Base16 Builder (https://github.com/base16-builder/base16-builder) 7 | */ 8 | 9 | code[class*="language-"], 10 | pre[class*="language-"] { 11 | font-family: Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace; 12 | font-size: 14px; 13 | line-height: 1.375; 14 | direction: ltr; 15 | text-align: left; 16 | white-space: pre; 17 | word-spacing: normal; 18 | word-break: normal; 19 | 20 | -moz-tab-size: 4; 21 | -o-tab-size: 4; 22 | tab-size: 4; 23 | 24 | -webkit-hyphens: none; 25 | -moz-hyphens: none; 26 | -ms-hyphens: none; 27 | hyphens: none; 28 | background: #24242e; 29 | color: #767693; 30 | } 31 | 32 | pre > code[class*="language-"] { 33 | font-size: 1em; 34 | } 35 | 36 | pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, 37 | code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { 38 | text-shadow: none; 39 | background: #5151e6; 40 | } 41 | 42 | pre[class*="language-"]::selection, pre[class*="language-"] ::selection, 43 | code[class*="language-"]::selection, code[class*="language-"] ::selection { 44 | text-shadow: none; 45 | background: #5151e6; 46 | } 47 | 48 | /* Code blocks */ 49 | pre[class*="language-"] { 50 | padding: 1em; 51 | margin: .5em 0; 52 | overflow: auto; 53 | } 54 | 55 | /* Inline code */ 56 | :not(pre) > code[class*="language-"] { 57 | padding: .1em; 58 | border-radius: .3em; 59 | } 60 | 61 | .token.comment, 62 | .token.prolog, 63 | .token.doctype, 64 | .token.cdata { 65 | color: #5b5b76; 66 | } 67 | 68 | .token.punctuation { 69 | color: #5b5b76; 70 | } 71 | 72 | .token.namespace { 73 | opacity: .7; 74 | } 75 | 76 | .token.tag, 77 | .token.operator, 78 | .token.number { 79 | color: #dd672c; 80 | } 81 | 82 | .token.property, 83 | .token.function { 84 | color: #767693; 85 | } 86 | 87 | .token.tag-id, 88 | .token.selector, 89 | .token.atrule-id { 90 | color: #ebebff; 91 | } 92 | 93 | code.language-javascript, 94 | .token.attr-name { 95 | color: #aaaaca; 96 | } 97 | 98 | code.language-css, 99 | code.language-scss, 100 | .token.boolean, 101 | .token.string, 102 | .token.entity, 103 | .token.url, 104 | .language-css .token.string, 105 | .language-scss .token.string, 106 | .style .token.string, 107 | .token.attr-value, 108 | .token.keyword, 109 | .token.control, 110 | .token.directive, 111 | .token.unit, 112 | .token.statement, 113 | .token.regex, 114 | .token.atrule { 115 | color: #fe8c52; 116 | } 117 | 118 | .token.placeholder, 119 | .token.variable { 120 | color: #fe8c52; 121 | } 122 | 123 | .token.deleted { 124 | text-decoration: line-through; 125 | } 126 | 127 | .token.inserted { 128 | border-bottom: 1px dotted #ebebff; 129 | text-decoration: none; 130 | } 131 | 132 | .token.italic { 133 | font-style: italic; 134 | } 135 | 136 | .token.important, 137 | .token.bold { 138 | font-weight: bold; 139 | } 140 | 141 | .token.important { 142 | color: #aaaaca; 143 | } 144 | 145 | .token.entity { 146 | cursor: help; 147 | } 148 | 149 | pre > code.highlight { 150 | outline: .4em solid #7676f4; 151 | outline-offset: .4em; 152 | } 153 | 154 | /* overrides color-values for the Line Numbers plugin 155 | * http://prismjs.com/plugins/line-numbers/ 156 | */ 157 | .line-numbers .line-numbers-rows { 158 | border-right-color: #262631; 159 | } 160 | 161 | .line-numbers-rows > span:before { 162 | color: #393949; 163 | } 164 | 165 | /* overrides color-values for the Line Highlight plugin 166 | * http://prismjs.com/plugins/line-highlight/ 167 | */ 168 | .line-highlight { 169 | background: rgba(221, 103, 44, 0.2); 170 | background: -webkit-linear-gradient(left, rgba(221, 103, 44, 0.2) 70%, rgba(221, 103, 44, 0)); 171 | background: linear-gradient(to right, rgba(221, 103, 44, 0.2) 70%, rgba(221, 103, 44, 0)); 172 | } 173 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-duotone-earth.css: -------------------------------------------------------------------------------- 1 | /* 2 | Name: Duotone Earth 3 | Author: Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/duotone-themes) 4 | 5 | Conversion: Bram de Haan (http://atelierbram.github.io/Base2Tone-prism/output/prism/prism-base2tone-earth-dark.css) 6 | Generated with Base16 Builder (https://github.com/base16-builder/base16-builder) 7 | */ 8 | 9 | code[class*="language-"], 10 | pre[class*="language-"] { 11 | font-family: Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace; 12 | font-size: 14px; 13 | line-height: 1.375; 14 | direction: ltr; 15 | text-align: left; 16 | white-space: pre; 17 | word-spacing: normal; 18 | word-break: normal; 19 | 20 | -moz-tab-size: 4; 21 | -o-tab-size: 4; 22 | tab-size: 4; 23 | 24 | -webkit-hyphens: none; 25 | -moz-hyphens: none; 26 | -ms-hyphens: none; 27 | hyphens: none; 28 | background: #322d29; 29 | color: #88786d; 30 | } 31 | 32 | pre > code[class*="language-"] { 33 | font-size: 1em; 34 | } 35 | 36 | pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, 37 | code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { 38 | text-shadow: none; 39 | background: #6f5849; 40 | } 41 | 42 | pre[class*="language-"]::selection, pre[class*="language-"] ::selection, 43 | code[class*="language-"]::selection, code[class*="language-"] ::selection { 44 | text-shadow: none; 45 | background: #6f5849; 46 | } 47 | 48 | /* Code blocks */ 49 | pre[class*="language-"] { 50 | padding: 1em; 51 | margin: .5em 0; 52 | overflow: auto; 53 | } 54 | 55 | /* Inline code */ 56 | :not(pre) > code[class*="language-"] { 57 | padding: .1em; 58 | border-radius: .3em; 59 | } 60 | 61 | .token.comment, 62 | .token.prolog, 63 | .token.doctype, 64 | .token.cdata { 65 | color: #6a5f58; 66 | } 67 | 68 | .token.punctuation { 69 | color: #6a5f58; 70 | } 71 | 72 | .token.namespace { 73 | opacity: .7; 74 | } 75 | 76 | .token.tag, 77 | .token.operator, 78 | .token.number { 79 | color: #bfa05a; 80 | } 81 | 82 | .token.property, 83 | .token.function { 84 | color: #88786d; 85 | } 86 | 87 | .token.tag-id, 88 | .token.selector, 89 | .token.atrule-id { 90 | color: #fff3eb; 91 | } 92 | 93 | code.language-javascript, 94 | .token.attr-name { 95 | color: #a48774; 96 | } 97 | 98 | code.language-css, 99 | code.language-scss, 100 | .token.boolean, 101 | .token.string, 102 | .token.entity, 103 | .token.url, 104 | .language-css .token.string, 105 | .language-scss .token.string, 106 | .style .token.string, 107 | .token.attr-value, 108 | .token.keyword, 109 | .token.control, 110 | .token.directive, 111 | .token.unit, 112 | .token.statement, 113 | .token.regex, 114 | .token.atrule { 115 | color: #fcc440; 116 | } 117 | 118 | .token.placeholder, 119 | .token.variable { 120 | color: #fcc440; 121 | } 122 | 123 | .token.deleted { 124 | text-decoration: line-through; 125 | } 126 | 127 | .token.inserted { 128 | border-bottom: 1px dotted #fff3eb; 129 | text-decoration: none; 130 | } 131 | 132 | .token.italic { 133 | font-style: italic; 134 | } 135 | 136 | .token.important, 137 | .token.bold { 138 | font-weight: bold; 139 | } 140 | 141 | .token.important { 142 | color: #a48774; 143 | } 144 | 145 | .token.entity { 146 | cursor: help; 147 | } 148 | 149 | pre > code.highlight { 150 | outline: .4em solid #816d5f; 151 | outline-offset: .4em; 152 | } 153 | 154 | /* overrides color-values for the Line Numbers plugin 155 | * http://prismjs.com/plugins/line-numbers/ 156 | */ 157 | .line-numbers .line-numbers-rows { 158 | border-right-color: #35302b; 159 | } 160 | 161 | .line-numbers-rows > span:before { 162 | color: #46403d; 163 | } 164 | 165 | /* overrides color-values for the Line Highlight plugin 166 | * http://prismjs.com/plugins/line-highlight/ 167 | */ 168 | .line-highlight { 169 | background: rgba(191, 160, 90, 0.2); 170 | background: -webkit-linear-gradient(left, rgba(191, 160, 90, 0.2) 70%, rgba(191, 160, 90, 0)); 171 | background: linear-gradient(to right, rgba(191, 160, 90, 0.2) 70%, rgba(191, 160, 90, 0)); 172 | } 173 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-duotone-forest.css: -------------------------------------------------------------------------------- 1 | /* 2 | Name: Duotone Forest 3 | Author: by Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/duotone-themes) 4 | 5 | Conversion: Bram de Haan (http://atelierbram.github.io/Base2Tone-prism/output/prism/prism-base2tone-forest-dark.css) 6 | Generated with Base16 Builder (https://github.com/base16-builder/base16-builder) 7 | */ 8 | 9 | code[class*="language-"], 10 | pre[class*="language-"] { 11 | font-family: Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace; 12 | font-size: 14px; 13 | line-height: 1.375; 14 | direction: ltr; 15 | text-align: left; 16 | white-space: pre; 17 | word-spacing: normal; 18 | word-break: normal; 19 | 20 | -moz-tab-size: 4; 21 | -o-tab-size: 4; 22 | tab-size: 4; 23 | 24 | -webkit-hyphens: none; 25 | -moz-hyphens: none; 26 | -ms-hyphens: none; 27 | hyphens: none; 28 | background: #2a2d2a; 29 | color: #687d68; 30 | } 31 | 32 | pre > code[class*="language-"] { 33 | font-size: 1em; 34 | } 35 | 36 | pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, 37 | code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { 38 | text-shadow: none; 39 | background: #435643; 40 | } 41 | 42 | pre[class*="language-"]::selection, pre[class*="language-"] ::selection, 43 | code[class*="language-"]::selection, code[class*="language-"] ::selection { 44 | text-shadow: none; 45 | background: #435643; 46 | } 47 | 48 | /* Code blocks */ 49 | pre[class*="language-"] { 50 | padding: 1em; 51 | margin: .5em 0; 52 | overflow: auto; 53 | } 54 | 55 | /* Inline code */ 56 | :not(pre) > code[class*="language-"] { 57 | padding: .1em; 58 | border-radius: .3em; 59 | } 60 | 61 | .token.comment, 62 | .token.prolog, 63 | .token.doctype, 64 | .token.cdata { 65 | color: #535f53; 66 | } 67 | 68 | .token.punctuation { 69 | color: #535f53; 70 | } 71 | 72 | .token.namespace { 73 | opacity: .7; 74 | } 75 | 76 | .token.tag, 77 | .token.operator, 78 | .token.number { 79 | color: #a2b34d; 80 | } 81 | 82 | .token.property, 83 | .token.function { 84 | color: #687d68; 85 | } 86 | 87 | .token.tag-id, 88 | .token.selector, 89 | .token.atrule-id { 90 | color: #f0fff0; 91 | } 92 | 93 | code.language-javascript, 94 | .token.attr-name { 95 | color: #b3d6b3; 96 | } 97 | 98 | code.language-css, 99 | code.language-scss, 100 | .token.boolean, 101 | .token.string, 102 | .token.entity, 103 | .token.url, 104 | .language-css .token.string, 105 | .language-scss .token.string, 106 | .style .token.string, 107 | .token.attr-value, 108 | .token.keyword, 109 | .token.control, 110 | .token.directive, 111 | .token.unit, 112 | .token.statement, 113 | .token.regex, 114 | .token.atrule { 115 | color: #e5fb79; 116 | } 117 | 118 | .token.placeholder, 119 | .token.variable { 120 | color: #e5fb79; 121 | } 122 | 123 | .token.deleted { 124 | text-decoration: line-through; 125 | } 126 | 127 | .token.inserted { 128 | border-bottom: 1px dotted #f0fff0; 129 | text-decoration: none; 130 | } 131 | 132 | .token.italic { 133 | font-style: italic; 134 | } 135 | 136 | .token.important, 137 | .token.bold { 138 | font-weight: bold; 139 | } 140 | 141 | .token.important { 142 | color: #b3d6b3; 143 | } 144 | 145 | .token.entity { 146 | cursor: help; 147 | } 148 | 149 | pre > code.highlight { 150 | outline: .4em solid #5c705c; 151 | outline-offset: .4em; 152 | } 153 | 154 | /* overrides color-values for the Line Numbers plugin 155 | * http://prismjs.com/plugins/line-numbers/ 156 | */ 157 | .line-numbers .line-numbers-rows { 158 | border-right-color: #2c302c; 159 | } 160 | 161 | .line-numbers-rows > span:before { 162 | color: #3b423b; 163 | } 164 | 165 | /* overrides color-values for the Line Highlight plugin 166 | * http://prismjs.com/plugins/line-highlight/ 167 | */ 168 | .line-highlight { 169 | background: rgba(162, 179, 77, 0.2); 170 | background: -webkit-linear-gradient(left, rgba(162, 179, 77, 0.2) 70%, rgba(162, 179, 77, 0)); 171 | background: linear-gradient(to right, rgba(162, 179, 77, 0.2) 70%, rgba(162, 179, 77, 0)); 172 | } 173 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-duotone-sea.css: -------------------------------------------------------------------------------- 1 | /* 2 | Name: Duotone Sea 3 | Author: by Simurai, adapted from DuoTone themes by Simurai for Atom (http://simurai.com/projects/2016/01/01/duotone-themes) 4 | 5 | Conversion: Bram de Haan (http://atelierbram.github.io/Base2Tone-prism/output/prism/prism-base2tone-sea-dark.css) 6 | Generated with Base16 Builder (https://github.com/base16-builder/base16-builder) 7 | */ 8 | 9 | code[class*="language-"], 10 | pre[class*="language-"] { 11 | font-family: Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace; 12 | font-size: 14px; 13 | line-height: 1.375; 14 | direction: ltr; 15 | text-align: left; 16 | white-space: pre; 17 | word-spacing: normal; 18 | word-break: normal; 19 | 20 | -moz-tab-size: 4; 21 | -o-tab-size: 4; 22 | tab-size: 4; 23 | 24 | -webkit-hyphens: none; 25 | -moz-hyphens: none; 26 | -ms-hyphens: none; 27 | hyphens: none; 28 | background: #1d262f; 29 | color: #57718e; 30 | } 31 | 32 | pre > code[class*="language-"] { 33 | font-size: 1em; 34 | } 35 | 36 | pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, 37 | code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { 38 | text-shadow: none; 39 | background: #004a9e; 40 | } 41 | 42 | pre[class*="language-"]::selection, pre[class*="language-"] ::selection, 43 | code[class*="language-"]::selection, code[class*="language-"] ::selection { 44 | text-shadow: none; 45 | background: #004a9e; 46 | } 47 | 48 | /* Code blocks */ 49 | pre[class*="language-"] { 50 | padding: 1em; 51 | margin: .5em 0; 52 | overflow: auto; 53 | } 54 | 55 | /* Inline code */ 56 | :not(pre) > code[class*="language-"] { 57 | padding: .1em; 58 | border-radius: .3em; 59 | } 60 | 61 | .token.comment, 62 | .token.prolog, 63 | .token.doctype, 64 | .token.cdata { 65 | color: #4a5f78; 66 | } 67 | 68 | .token.punctuation { 69 | color: #4a5f78; 70 | } 71 | 72 | .token.namespace { 73 | opacity: .7; 74 | } 75 | 76 | .token.tag, 77 | .token.operator, 78 | .token.number { 79 | color: #0aa370; 80 | } 81 | 82 | .token.property, 83 | .token.function { 84 | color: #57718e; 85 | } 86 | 87 | .token.tag-id, 88 | .token.selector, 89 | .token.atrule-id { 90 | color: #ebf4ff; 91 | } 92 | 93 | code.language-javascript, 94 | .token.attr-name { 95 | color: #7eb6f6; 96 | } 97 | 98 | code.language-css, 99 | code.language-scss, 100 | .token.boolean, 101 | .token.string, 102 | .token.entity, 103 | .token.url, 104 | .language-css .token.string, 105 | .language-scss .token.string, 106 | .style .token.string, 107 | .token.attr-value, 108 | .token.keyword, 109 | .token.control, 110 | .token.directive, 111 | .token.unit, 112 | .token.statement, 113 | .token.regex, 114 | .token.atrule { 115 | color: #47ebb4; 116 | } 117 | 118 | .token.placeholder, 119 | .token.variable { 120 | color: #47ebb4; 121 | } 122 | 123 | .token.deleted { 124 | text-decoration: line-through; 125 | } 126 | 127 | .token.inserted { 128 | border-bottom: 1px dotted #ebf4ff; 129 | text-decoration: none; 130 | } 131 | 132 | .token.italic { 133 | font-style: italic; 134 | } 135 | 136 | .token.important, 137 | .token.bold { 138 | font-weight: bold; 139 | } 140 | 141 | .token.important { 142 | color: #7eb6f6; 143 | } 144 | 145 | .token.entity { 146 | cursor: help; 147 | } 148 | 149 | pre > code.highlight { 150 | outline: .4em solid #34659d; 151 | outline-offset: .4em; 152 | } 153 | 154 | /* overrides color-values for the Line Numbers plugin 155 | * http://prismjs.com/plugins/line-numbers/ 156 | */ 157 | .line-numbers .line-numbers-rows { 158 | border-right-color: #1f2932; 159 | } 160 | 161 | .line-numbers-rows > span:before { 162 | color: #2c3847; 163 | } 164 | 165 | /* overrides color-values for the Line Highlight plugin 166 | * http://prismjs.com/plugins/line-highlight/ 167 | */ 168 | .line-highlight { 169 | background: rgba(10, 163, 112, 0.2); 170 | background: -webkit-linear-gradient(left, rgba(10, 163, 112, 0.2) 70%, rgba(10, 163, 112, 0)); 171 | background: linear-gradient(to right, rgba(10, 163, 112, 0.2) 70%, rgba(10, 163, 112, 0)); 172 | } 173 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-xonokai.css: -------------------------------------------------------------------------------- 1 | /** 2 | * xonokai theme for JavaScript, CSS and HTML 3 | * based on: https://github.com/MoOx/sass-prism-theme-base by Maxime Thirouin ~ MoOx --> http://moox.fr/ , which is Loosely based on Monokai textmate theme by http://www.monokai.nl/ 4 | * license: MIT; http://moox.mit-license.org/ 5 | */ 6 | code[class*="language-"], 7 | pre[class*="language-"] { 8 | -moz-tab-size: 2; 9 | -o-tab-size: 2; 10 | tab-size: 2; 11 | -webkit-hyphens: none; 12 | -moz-hyphens: none; 13 | -ms-hyphens: none; 14 | hyphens: none; 15 | white-space: pre; 16 | white-space: pre-wrap; 17 | word-wrap: normal; 18 | font-family: Menlo, Monaco, "Courier New", monospace; 19 | font-size: 14px; 20 | color: #76d9e6; 21 | text-shadow: none; 22 | } 23 | 24 | pre > code[class*="language-"] { 25 | font-size: 1em; 26 | } 27 | 28 | pre[class*="language-"], 29 | :not(pre) > code[class*="language-"] { 30 | background: #2a2a2a; 31 | } 32 | 33 | pre[class*="language-"] { 34 | padding: 15px; 35 | border-radius: 4px; 36 | border: 1px solid #e1e1e8; 37 | overflow: auto; 38 | position: relative; 39 | } 40 | 41 | pre[class*="language-"] code { 42 | white-space: pre; 43 | display: block; 44 | } 45 | 46 | :not(pre) > code[class*="language-"] { 47 | padding: 0.15em 0.2em 0.05em; 48 | border-radius: .3em; 49 | border: 0.13em solid #7a6652; 50 | box-shadow: 1px 1px 0.3em -0.1em #000 inset; 51 | } 52 | 53 | .token.namespace { 54 | opacity: .7; 55 | } 56 | 57 | .token.comment, 58 | .token.prolog, 59 | .token.doctype, 60 | .token.cdata { 61 | color: #6f705e; 62 | } 63 | 64 | .token.operator, 65 | .token.boolean, 66 | .token.number { 67 | color: #a77afe; 68 | } 69 | 70 | .token.attr-name, 71 | .token.string { 72 | color: #e6d06c; 73 | } 74 | 75 | .token.entity, 76 | .token.url, 77 | .language-css .token.string, 78 | .style .token.string { 79 | color: #e6d06c; 80 | } 81 | 82 | .token.selector, 83 | .token.inserted { 84 | color: #a6e22d; 85 | } 86 | 87 | .token.atrule, 88 | .token.attr-value, 89 | .token.keyword, 90 | .token.important, 91 | .token.deleted { 92 | color: #ef3b7d; 93 | } 94 | 95 | .token.regex, 96 | .token.statement { 97 | color: #76d9e6; 98 | } 99 | 100 | .token.placeholder, 101 | .token.variable { 102 | color: #fff; 103 | } 104 | 105 | .token.important, 106 | .token.statement, 107 | .token.bold { 108 | font-weight: bold; 109 | } 110 | 111 | .token.punctuation { 112 | color: #bebec5; 113 | } 114 | 115 | .token.entity { 116 | cursor: help; 117 | } 118 | 119 | .token.italic { 120 | font-style: italic; 121 | } 122 | 123 | code.language-markup { 124 | color: #f9f9f9; 125 | } 126 | 127 | code.language-markup .token.tag { 128 | color: #ef3b7d; 129 | } 130 | 131 | code.language-markup .token.attr-name { 132 | color: #a6e22d; 133 | } 134 | 135 | code.language-markup .token.attr-value { 136 | color: #e6d06c; 137 | } 138 | 139 | code.language-markup .token.style, 140 | code.language-markup .token.script { 141 | color: #76d9e6; 142 | } 143 | 144 | code.language-markup .token.script .token.keyword { 145 | color: #76d9e6; 146 | } 147 | 148 | /* Line highlight plugin */ 149 | pre[class*="language-"][data-line] { 150 | position: relative; 151 | padding: 1em 0 1em 3em; 152 | } 153 | 154 | pre[data-line] .line-highlight { 155 | position: absolute; 156 | left: 0; 157 | right: 0; 158 | padding: 0; 159 | margin-top: 1em; 160 | background: rgba(255, 255, 255, 0.08); 161 | pointer-events: none; 162 | line-height: inherit; 163 | white-space: pre; 164 | } 165 | 166 | pre[data-line] .line-highlight:before, 167 | pre[data-line] .line-highlight[data-end]:after { 168 | content: attr(data-start); 169 | position: absolute; 170 | top: .4em; 171 | left: .6em; 172 | min-width: 1em; 173 | padding: 0.2em 0.5em; 174 | background-color: rgba(255, 255, 255, 0.4); 175 | color: black; 176 | font: bold 65%/1 sans-serif; 177 | height: 1em; 178 | line-height: 1em; 179 | text-align: center; 180 | border-radius: 999px; 181 | text-shadow: none; 182 | box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7); 183 | } 184 | 185 | pre[data-line] .line-highlight[data-end]:after { 186 | content: attr(data-end); 187 | top: auto; 188 | bottom: .4em; 189 | } 190 | -------------------------------------------------------------------------------- /templates/modules/common/mobile-sidebar.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
    5 |
    6 |
    7 | avatar 10 |

    11 | 13 | 14 |

    15 | 25 |
      26 |
    • [[${stats.post}]] 27 |

      文章

    • 28 |
    • [[${stats.category}]] 29 |

      分类

    • 30 |
    • [[${stats.visit}]] 31 |

      访问量

    • 32 |
    33 |
    34 | 49 | 64 |
    65 |
    66 |
    67 | -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-shades-of-purple.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Shades of Purple Theme for Prism.js 3 | * 4 | * @author Ahmad Awais 5 | * @support Follow/tweet at https://twitter.com/MrAhmadAwais/ 6 | */ 7 | 8 | code[class*='language-'], 9 | pre[class*='language-'] { 10 | color: #9efeff; 11 | direction: ltr; 12 | text-align: left; 13 | white-space: pre; 14 | word-spacing: normal; 15 | word-break: normal; 16 | 17 | -moz-tab-size: 4; 18 | -o-tab-size: 4; 19 | tab-size: 4; 20 | 21 | -webkit-hyphens: none; 22 | -moz-hyphens: none; 23 | -ms-hyphens: none; 24 | hyphens: none; 25 | 26 | font-family: 'Operator Mono', 'Fira Code', Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 27 | font-weight: 400; 28 | font-size: 17px; 29 | line-height: 25px; 30 | letter-spacing: 0.5px; 31 | text-shadow: 0 1px #222245; 32 | } 33 | 34 | pre[class*='language-']::-moz-selection, 35 | pre[class*='language-'] ::-moz-selection, 36 | code[class*='language-']::-moz-selection, 37 | code[class*='language-'] ::-moz-selection, 38 | pre[class*='language-']::selection, 39 | pre[class*='language-'] ::selection, 40 | code[class*='language-']::selection, 41 | code[class*='language-'] ::selection { 42 | color: inherit; 43 | background: #a599e9; 44 | } 45 | 46 | /* Code blocks. */ 47 | pre[class*='language-'] { 48 | padding: 2em; 49 | margin: 0.5em 0; 50 | overflow: auto; 51 | } 52 | 53 | :not(pre) > code[class*='language-'], 54 | pre[class*='language-'] { 55 | background: #1e1e3f; 56 | } 57 | 58 | /* Inline code */ 59 | :not(pre) > code[class*='language-'] { 60 | padding: 0.1em; 61 | border-radius: 0.3em; 62 | } 63 | 64 | .token { 65 | font-weight: 400; 66 | } 67 | 68 | .token.comment, 69 | .token.prolog, 70 | .token.cdata { 71 | color: #b362ff; 72 | } 73 | 74 | .token.delimiter, 75 | .token.keyword, 76 | .token.selector, 77 | .token.important, 78 | .token.atrule { 79 | color: #ff9d00; 80 | } 81 | 82 | .token.operator, 83 | .token.attr-name { 84 | color: rgb(255, 180, 84); 85 | } 86 | 87 | .token.punctuation { 88 | color: #ffffff; 89 | } 90 | 91 | .token.boolean { 92 | color: rgb(255, 98, 140); 93 | } 94 | 95 | .token.tag, 96 | .token.tag .punctuation, 97 | .token.doctype, 98 | .token.builtin { 99 | color: rgb(255, 157, 0); 100 | } 101 | 102 | .token.entity, 103 | .token.symbol { 104 | color: #6897bb; 105 | } 106 | 107 | .token.number { 108 | color: #ff628c; 109 | } 110 | 111 | .token.property, 112 | .token.constant, 113 | .token.variable { 114 | color: #ff628c; 115 | } 116 | 117 | .token.string, 118 | .token.char { 119 | color: #a5ff90; 120 | } 121 | 122 | .token.attr-value, 123 | .token.attr-value .punctuation { 124 | color: #a5c261; 125 | } 126 | 127 | .token.attr-value .punctuation:first-child { 128 | color: #a9b7c6; 129 | } 130 | 131 | .token.url { 132 | color: #287bde; 133 | text-decoration: underline; 134 | } 135 | 136 | .token.function { 137 | color: rgb(250, 208, 0); 138 | } 139 | 140 | .token.regex { 141 | background: #364135; 142 | } 143 | 144 | .token.bold { 145 | font-weight: bold; 146 | } 147 | 148 | .token.italic { 149 | font-style: italic; 150 | } 151 | 152 | .token.inserted { 153 | background: #00ff00; 154 | } 155 | 156 | .token.deleted { 157 | background: #ff000d; 158 | } 159 | 160 | code.language-css .token.property, 161 | code.language-css .token.property + .token.punctuation { 162 | color: #a9b7c6; 163 | } 164 | 165 | code.language-css .token.id { 166 | color: #ffc66d; 167 | } 168 | 169 | code.language-css .token.selector > .token.class, 170 | code.language-css .token.selector > .token.attribute, 171 | code.language-css .token.selector > .token.pseudo-class, 172 | code.language-css .token.selector > .token.pseudo-element { 173 | color: #ffc66d; 174 | } 175 | 176 | .token.class-name { 177 | color: #fb94ff; 178 | } 179 | 180 | .token.operator, 181 | .token.entity, 182 | .token.url, 183 | .language-css .token.string, 184 | .style .token.string { 185 | background: none; 186 | } 187 | 188 | pre .line-highlight, 189 | pre .line-highlight.line-highlight, 190 | pre > code.line-highlight { 191 | margin-top: 36px; 192 | background: linear-gradient(to right, rgba(179, 98, 255, 0.17), transparent); 193 | } 194 | 195 | pre .line-highlight:before, 196 | pre > code.line-highlight:before, 197 | pre .line-highlight[data-end]:after, 198 | pre > code.line-highlight[data-end]:after { 199 | content: ''; 200 | } 201 | -------------------------------------------------------------------------------- /templates/assets/css/links.css: -------------------------------------------------------------------------------- 1 | .btn { 2 | padding: 8px 12px; 3 | background: var(--heo-fontcolor); 4 | border-radius: 12px; 5 | color: var(--heo-card-bg); 6 | display: flex; 7 | align-items: center; 8 | z-index: 1; 9 | transition: .3s; 10 | cursor: pointer 11 | } 12 | 13 | .link-group-wrapper { 14 | transform: translate3d(var(--tw-translate-x),var(--tw-translate-y),0) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); 15 | animation: rowup 60s linear infinite 16 | } 17 | 18 | .link-group-wrapper:hover { 19 | animation-play-state: paused 20 | } 21 | 22 | .links-group-avatar-pair .links-group-avatar:nth-child(even) { 23 | margin-top: 1rem; 24 | transform: translate3d(var(--tw-translate-x),var(--tw-translate-y),0) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); 25 | transform: translate(-60px) 26 | } 27 | 28 | .link-box-btn-group { 29 | position: absolute; 30 | right: 2rem; 31 | top: 2rem; 32 | display: flex 33 | } 34 | 35 | @keyframes rowup { 36 | 0% { 37 | transform: translate(0) 38 | } 39 | 40 | to { 41 | transform: translate(-66.6666%) 42 | } 43 | } 44 | 45 | #link-card { 46 | position: relative 47 | } 48 | 49 | #link-card.highlighted { 50 | border-style: solid; 51 | border-width: 1px; 52 | border-color: var(--bg-sub-accent-55) 53 | } 54 | 55 | #link-card.highlighted:before { 56 | content: ""; 57 | z-index: -1; 58 | position: absolute; 59 | top: 0; 60 | right: 0; 61 | bottom: 0; 62 | left: 0; 63 | background: linear-gradient(130deg,rgba(36,198,220,.5),rgba(84,51,255,.5) 41.07%,rgba(255,0,153,.5) 76.05%); 64 | transform: translate3d(0,25px,0) scale(.85); 65 | filter: blur(20px); 66 | opacity: var(.7); 67 | transition: opacity .3s; 68 | border-radius: inherit 69 | } 70 | 71 | #link-card.highlighted:after { 72 | content: ""; 73 | z-index: -1; 74 | position: absolute; 75 | top: 0; 76 | right: 0; 77 | bottom: 0; 78 | left: 0; 79 | background: inherit; 80 | border-radius: inherit 81 | } 82 | 83 | #link-card.highlighted.category-mode .article .article-content p { 84 | height: 3rem 85 | } 86 | 87 | @media (min-width: 640px) { 88 | #link-card.highlighted.category-mode .article .article-content p { 89 | height:3.5rem 90 | } 91 | } 92 | 93 | @media (min-width: 1024px) { 94 | #link-card.highlighted.category-mode .article .article-content p { 95 | height:4.6rem 96 | } 97 | } 98 | 99 | #link-card.highlighted.category-mode .article .article-content p { 100 | -webkit-line-clamp: 3 101 | } 102 | 103 | #link-card.article-container { 104 | height: auto 105 | } 106 | 107 | #link-card .article .article-content span b { 108 | border-radius: .375rem; 109 | background-color: var(--background-trans); 110 | padding: .25rem .5rem; 111 | color: var(--text-bright) 112 | } 113 | 114 | #link-card .article .article-content span b.vip { 115 | border-radius: .375rem; 116 | --tw-bg-opacity: 1; 117 | background-color: rgb(249 115 22 / var(--tw-bg-opacity)); 118 | padding: .25rem .5rem; 119 | --tw-text-opacity: 1; 120 | color: rgb(255 255 255 / var(--tw-text-opacity)) 121 | } 122 | 123 | #link-card .article .article-content h1 { 124 | margin-bottom: .5rem; 125 | font-size: 1.125rem; 126 | line-height: 1.75rem 127 | } 128 | 129 | #link-card .article .article-content h1.vip-text { 130 | --tw-text-opacity: 1; 131 | color: rgb(251 146 60 / var(--tw-text-opacity)) 132 | } 133 | 134 | #link-card .article .article-content p { 135 | height: 2.5rem 136 | } 137 | 138 | @media (min-width: 640px) { 139 | #link-card .article .article-content p { 140 | height:2.5rem 141 | } 142 | } 143 | 144 | @media (min-width: 1024px) { 145 | #link-card .article .article-content p { 146 | height:3rem 147 | } 148 | } 149 | 150 | #link-card .article .article-content p { 151 | display: -webkit-box; 152 | margin: 0 auto; 153 | -webkit-line-clamp: 2; 154 | -webkit-box-orient: vertical; 155 | overflow: hidden; 156 | text-overflow: ellipsis 157 | } 158 | 159 | #link-card .article .article-content .link-logo-image{ 160 | height: 100px; 161 | width: 100px; 162 | max-width: 200px; 163 | top: 75px; 164 | left: -25px; 165 | opacity: .15; 166 | position: absolute; 167 | margin-right: .5rem; 168 | border-radius: 9999px; 169 | } -------------------------------------------------------------------------------- /templates/assets/libs/prism/themes/prism-pojoaque.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Pojoaque Style by Jason Tate 3 | * http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html 4 | * Based on Solarized Style from http://ethanschoonover.com/solarized 5 | * http://softwaremaniacs.org/media/soft/highlight/test.html 6 | */ 7 | 8 | code[class*="language-"], 9 | pre[class*="language-"] { 10 | -moz-tab-size: 4; 11 | -o-tab-size: 4; 12 | tab-size: 4; 13 | -webkit-hyphens: none; 14 | -moz-hyphens: none; 15 | -ms-hyphens: none; 16 | hyphens: none; 17 | white-space: pre; 18 | white-space: pre-wrap; 19 | word-break: break-all; 20 | word-wrap: break-word; 21 | font-family: Menlo, Monaco, "Courier New", monospace; 22 | font-size: 15px; 23 | line-height: 1.5; 24 | color: #dccf8f; 25 | text-shadow: 0; 26 | } 27 | 28 | pre > code[class*="language-"] { 29 | font-size: 1em; 30 | } 31 | 32 | pre[class*="language-"], 33 | :not(pre) > code[class*="language-"] { 34 | border-radius: 5px; 35 | border: 1px solid #000; 36 | color: #DCCF8F; 37 | background: #181914 url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAMAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQACQYGBgcGCQcHCQ0IBwgNDwsJCQsPEQ4ODw4OERENDg4ODg0RERQUFhQUERoaHBwaGiYmJiYmKysrKysrKysrKwEJCAgJCgkMCgoMDwwODA8TDg4ODhMVDg4PDg4VGhMRERERExoXGhYWFhoXHR0aGh0dJCQjJCQrKysrKysrKysr/8AAEQgAjACMAwEiAAIRAQMRAf/EAF4AAQEBAAAAAAAAAAAAAAAAAAABBwEBAQAAAAAAAAAAAAAAAAAAAAIQAAEDAwIHAQEAAAAAAAAAAADwAREhYaExkUFRcYGxwdHh8REBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AyGFEjHaBS2fDDs2zkhKmBKktb7km+ZwwCnXPkLVmCTMItj6AXFxRS465/BTnkAJvkLkJe+7AKKoi2AtRS2zuAWsCb5GOlBN8gKfmuGHZ8MFqIth3ALmFoFwbwKWyAlTAp17uKqBvgBD8sM4fTjhvAhkzhaRkBMKBrfs7jGPIpzy7gFrAqnC0C0gB0EWwBDW2cBVQwm+QtPpa3wBO3sVvszCnLAhkzgL5/RLf13cLQd8/AGlu0Cb5HTx9KuAEieGJEdcehS3eRTp2ATdt3CpIm+QtZwAhROXFeb7swp/ahaM3kBE/jSIUBc/AWrgBN8uNFAl+b7sAXFxFn2YLUU5Ns7gFX8C4ib+hN8gFWXwK3bZglxEJm+gKdciLPsFV/TClsgJUwKJ5FVA7tvIFrfZhVfGJDcsCKaYgAqv6YRbE+RWOWBtu7+AL3yRalXLyKqAIIfk+zARbDgFyEsncYwJvlgFRW+GEWntIi2P0BooyFxcNr8Ep3+ANLbMO+QyhvbiqdgC0kVvgUUiLYgBS2QtPbiVI1/sgOmG9uO+Y8DW+7jS2zAOnj6O2BndwuIAUtkdRN8gFoK3wwXMQyZwHVbClsuNLd4E3yAUR6FVDBR+BafQGt93LVMxJTv8ABts4CVLhcfYWsCb5kC9/BHdU8CLYFY5bMAd+eX9MGthhpbA1vu4B7+RKkaW2Yq4AQtVBBFsAJU/AuIXBhN8gGWnstefhiZyWvLAEnbYS1uzSFP6Jvn4Baxx70JKkQojLib5AVTey1jjgkKJGO0AKWyOm7N7cSpgSpAdPH0Tfd/gp1z5C1ZgKqN9J2wFxcUUuAFLZAm+QC0Fb4YUVRFsAOvj4KW2dwtYE3yAWk/wS/PLMKfmuGHZ8MAXF/Ja32Yi5haAKWz4Ydm2cSpgU693Atb7km+Zwwh+WGcPpxw3gAkzCLY+iYUDW/Z3Adc/gpzyFrAqnALkJe+7DoItgAtRS2zuKqGE3yAx0oJvkdvYrfZmALURbDuL5/RLf13cAuDeBS2RpbtAm+QFVA3wR+3fUtFHoBDJnC0jIXH0HWsgMY8inPLuOkd9chp4z20ALQLSA8cI9jYAIa2zjzjBd8gRafS1vgiUho/kAKcsCGTOGWvoOpkAtB3z8Hm8x2Ff5ADp4+lXAlIvcmwH/2Q==') repeat left top; 38 | } 39 | 40 | pre[class*="language-"] { 41 | padding: 12px; 42 | overflow: auto; 43 | } 44 | 45 | :not(pre) > code[class*="language-"] { 46 | padding: 2px 6px; 47 | } 48 | 49 | .token.namespace { 50 | opacity: .7; 51 | } 52 | 53 | .token.comment, 54 | .token.prolog, 55 | .token.doctype, 56 | .token.cdata { 57 | color: #586e75; 58 | font-style: italic; 59 | } 60 | 61 | .token.number, 62 | .token.string, 63 | .token.char, 64 | .token.builtin, 65 | .token.inserted { 66 | color: #468966; 67 | } 68 | 69 | .token.attr-name { 70 | color: #b89859; 71 | } 72 | 73 | .token.operator, 74 | .token.entity, 75 | .token.url, 76 | .language-css .token.string, 77 | .style .token.string { 78 | color: #dccf8f; 79 | } 80 | 81 | .token.selector, 82 | .token.regex { 83 | color: #859900; 84 | } 85 | 86 | .token.atrule, 87 | .token.keyword { 88 | color: #cb4b16; 89 | } 90 | 91 | .token.attr-value { 92 | color: #468966; 93 | } 94 | 95 | .token.function, 96 | .token.variable, 97 | .token.placeholder { 98 | color: #b58900; 99 | } 100 | 101 | .token.property, 102 | .token.tag, 103 | .token.boolean, 104 | .token.number, 105 | .token.constant, 106 | .token.symbol { 107 | color: #b89859; 108 | } 109 | 110 | .token.tag { 111 | color: #ffb03b; 112 | } 113 | 114 | .token.important, 115 | .token.statement, 116 | .token.deleted { 117 | color: #dc322f; 118 | } 119 | 120 | .token.punctuation { 121 | color: #dccf8f; 122 | } 123 | 124 | .token.entity { 125 | cursor: help; 126 | } 127 | 128 | .token.bold { 129 | font-weight: bold; 130 | } 131 | 132 | .token.italic { 133 | font-style: italic; 134 | } 135 | 136 | /* 137 | .pojoaque-colors { 138 | color: #586e75; 139 | color: #b64926; 140 | color: #468966; 141 | color: #ffb03b; 142 | color: #b58900; 143 | color: #b89859; 144 | color: #dccf8f; 145 | color: #d3a60c; 146 | color: #cb4b16; 147 | color: #dc322f; 148 | color: #073642; 149 | color: #181914; 150 | } 151 | */ 152 | -------------------------------------------------------------------------------- /templates/error/404.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 |
    7 |
    8 |
    9 |
    10 |
    11 |
    12 |
    13 |
    14 |

    404

    15 |

    16 |
    17 |
    18 | 19 | 20 | 22 | 23 | 24 | 30 | 31 | 32 | 34 | 36 | 37 | 38 | 40 | 42 | 43 | 45 | 47 | 48 | 49 | 51 | 52 | 53 | 54 | 56 | 58 | 59 | 60 |
    61 |
    62 |
    63 |
    64 | 65 |
    66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /templates/error/500.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 |
    7 |
    8 |
    9 |
    10 |
    11 |
    12 |
    13 |
    14 |

    500

    15 |

    16 |
    17 |
    18 | 19 | 20 | 22 | 23 | 24 | 30 | 31 | 32 | 34 | 36 | 37 | 38 | 40 | 42 | 43 | 45 | 47 | 48 | 49 | 51 | 52 | 53 | 54 | 56 | 58 | 59 | 60 |
    61 |
    62 |
    63 |
    64 | 65 |
    66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /templates/modules/widgets/aside/comments.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 85 | 86 | --------------------------------------------------------------------------------