项目初始化建立
This commit is contained in:
0
themes/.gitkeep
Normal file
0
themes/.gitkeep
Normal file
4
themes/grid/_config.yml
Normal file
4
themes/grid/_config.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
# Less
|
||||
less:
|
||||
paths: []
|
||||
options:
|
14
themes/grid/layout/archive.ejs
Normal file
14
themes/grid/layout/archive.ejs
Normal file
@@ -0,0 +1,14 @@
|
||||
<div class="uk-flex mx-2 my-2 main-content">
|
||||
<section class="uk-width-3-4 px-1">
|
||||
<% if (!is_month()) { %>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-height-1-1">
|
||||
<%- list_archives({type: 'monthly', order: '1', show_count: true, format: 'YYYY年MM月'}) %>
|
||||
</div>
|
||||
<% } else { %>
|
||||
<%- partial('partial/post/list', {start: 1}) %>
|
||||
<% } %>
|
||||
</section>
|
||||
<section class="uk-width-1-4">
|
||||
<%- partial('partial/side', {'noCategories': false, 'noTags': false}) %>
|
||||
</section>
|
||||
</div>
|
10
themes/grid/layout/categories-list.ejs
Normal file
10
themes/grid/layout/categories-list.ejs
Normal file
@@ -0,0 +1,10 @@
|
||||
<div class="uk-flex mx-2 my-2 main-content">
|
||||
<section class="uk-width-3-4 px-1">
|
||||
<div class="uk-card uk-card-default uk-card-body uk-height-1-1">
|
||||
<%- list_categories({orderby: 'name', order: '1', show_count: true, class: "categories-toc"}) %>
|
||||
</div>
|
||||
</section>
|
||||
<section class="uk-width-1-4">
|
||||
<%- partial('partial/side', {'noCategories': true, 'noTags': false}) %>
|
||||
</section>
|
||||
</div>
|
19
themes/grid/layout/category.ejs
Normal file
19
themes/grid/layout/category.ejs
Normal file
@@ -0,0 +1,19 @@
|
||||
<div class="uk-flex mx-2 my-2 main-content">
|
||||
<section class="uk-width-3-4 px-1">
|
||||
<%- partial('partial/post/list', {start: 1}) %>
|
||||
<% if (page.total> 1) { %>
|
||||
<div class="uk-flex uk-flex-between p-1">
|
||||
<a class="<% if (page.prev == 0) { %>uk-disabled<% } %>"
|
||||
href="<%- page.prev_link %>"
|
||||
uk-slidenav-previous></a>
|
||||
<a class="<% if (page.next == 0) { %>uk-disabled<% } %>"
|
||||
href="<%- page.next_link %>"
|
||||
uk-slidenav-next
|
||||
></a>
|
||||
</div>
|
||||
<% } %>
|
||||
</section>
|
||||
<section class="uk-width-1-4">
|
||||
<%- partial('partial/side', {'noCategories': true, 'noTags': false}) %>
|
||||
</section>
|
||||
</div>
|
19
themes/grid/layout/index.ejs
Normal file
19
themes/grid/layout/index.ejs
Normal file
@@ -0,0 +1,19 @@
|
||||
<div class="uk-flex mx-2 my-2 main-content">
|
||||
<section class="uk-width-3-4 px-1">
|
||||
<%- partial('partial/post/list', {start: 1}) %>
|
||||
<% if (page.total> 1) { %>
|
||||
<div class="uk-flex uk-flex-between p-1">
|
||||
<a class="<% if (page.prev == 0) { %>uk-disabled<% } %>"
|
||||
href="<%- page.prev_link %>"
|
||||
uk-slidenav-previous></a>
|
||||
<a class="<% if (page.next == 0) { %>uk-disabled<% } %>"
|
||||
href="<%- page.next_link %>"
|
||||
uk-slidenav-next
|
||||
></a>
|
||||
</div>
|
||||
<% } %>
|
||||
</section>
|
||||
<section class="uk-width-1-4">
|
||||
<%- partial('partial/side', {'noCategories': false, 'noTags': false}) %>
|
||||
</section>
|
||||
</div>
|
10
themes/grid/layout/layout.ejs
Normal file
10
themes/grid/layout/layout.ejs
Normal file
@@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="<%= page.lang %>">
|
||||
<%- partial('partial/head.ejs') %>
|
||||
<body>
|
||||
<%- partial('partial/header.ejs') %>
|
||||
<%- body %>
|
||||
<%- partial('partial/footer.ejs') %>
|
||||
<%- partial('partial/scripts.ejs') %>
|
||||
</body>
|
||||
</html>
|
0
themes/grid/layout/page.ejs
Normal file
0
themes/grid/layout/page.ejs
Normal file
14
themes/grid/layout/partial/footer.ejs
Normal file
14
themes/grid/layout/partial/footer.ejs
Normal file
@@ -0,0 +1,14 @@
|
||||
<footer class="uk-flex uk-flex-row uk-flex-between uk-flex-center py-2 px-2">
|
||||
<div class="uk-width-1-3 uk-text-small">
|
||||
<p class="m-0">Powered by <%- link_to("http://hexo.io/", "Hexo", {external: true})%></p>
|
||||
<p class="uk-text-meta m-0">Theme Grid by FarDawn.</p>
|
||||
</div>
|
||||
<div class="uk-width-1-3 uk-text-small uk-text-center">
|
||||
<p class="m-0">© ArchGrid, since 2021.</p>
|
||||
<p class="m-0">Proudly presents by FarDawn.</p>
|
||||
</div>
|
||||
<div class="uk-width-1-3 uk-text-small uk-text-right">
|
||||
<p class="m-0">备案信息位置</p>
|
||||
<p class="m-0">备案信息位置</p>
|
||||
</div>
|
||||
</footer>
|
16
themes/grid/layout/partial/head.ejs
Normal file
16
themes/grid/layout/partial/head.ejs
Normal file
@@ -0,0 +1,16 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<%- partial('partial/styles') -%>
|
||||
<title><%= config.title %> - <%= config.subtitle %></title>
|
||||
<%_ if (config.keyword) { -%>
|
||||
<meta name="keywords" content="<% config.keyword %>">
|
||||
<%_ } -%>
|
||||
<%_ if (config.description) { -%>
|
||||
<meta name="description" content="<%= config.description %>">
|
||||
<%_ } -%>
|
||||
<%_ if (config.author) { -%>
|
||||
<meta name="author" content="<%= config.author %>">
|
||||
<%_ } -%>
|
||||
</head>
|
||||
|
16
themes/grid/layout/partial/header.ejs
Normal file
16
themes/grid/layout/partial/header.ejs
Normal file
@@ -0,0 +1,16 @@
|
||||
<nav class="uk-navbar-container uk-box-shadow-medium" uk-navbar uk-sticky>
|
||||
<div class="uk-navbar-left">
|
||||
<a class="uk-navbar-item uk-logo" href="/index.html"><%= config.title %></a>
|
||||
<span class="uk-navbar-item">用碎片化的时间收集碎片化的知识</span>
|
||||
</div>
|
||||
<div class="uk-navbar-right">
|
||||
<ul class="uk-navbar-nav">
|
||||
<% if (!is_home()) { %>
|
||||
<li><a href="/index.html">返回首页</a></li>
|
||||
<% } %>
|
||||
<li<% if (is_current('/categories')) { %> class="uk-active"<% } %>><a href="/categories">知识分类</a></li>
|
||||
<li<% if (is_current('/tags')) { %> class="uk-active"<% } %>><a href="/tags">知识标签</a></li>
|
||||
<li<% if (is_archive()) { %> class="uk-active"<% } %>><a href="/archives">归档文章</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
35
themes/grid/layout/partial/post/list.ejs
Normal file
35
themes/grid/layout/partial/post/list.ejs
Normal file
@@ -0,0 +1,35 @@
|
||||
<% page.posts.sort("date", "desc" ).each(function(post, i) { %>
|
||||
<div class="uk-card uk-card-default uk-card-small uk-width-1-1 mb-2">
|
||||
<div class="uk-card-header">
|
||||
<h3 class="uk-card-title">
|
||||
<a href="<%= post.path %>"><%= post.title %></a>
|
||||
</h3>
|
||||
<div class="uk-flex uk-flex-left">
|
||||
<div class="uk-text-meta mr-1">最后更新:<%= date(post.date, "YYYY-MM-DD HH:mm") %></div>
|
||||
<% if (post.categories.length > 0) { %>
|
||||
<div class="uk-text-meta">知识分类:
|
||||
<%- list_categories(post.categories, {
|
||||
class: { a: 'uk-link-muted' },
|
||||
show_count: false,
|
||||
style: false,
|
||||
separator: ' / '
|
||||
}) %>
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
<% if (post.excerpt) { %>
|
||||
<div class="uk-card-body">
|
||||
<%- post.excerpt %>
|
||||
</div>
|
||||
<% } %>
|
||||
<% if (post.tags.length > 0) { %>
|
||||
<div class="uk-card-footer uk-flex uk-flex-left">
|
||||
<span>分类标签:</span>
|
||||
<% post.tags.each(function(tag) { %>
|
||||
<span class="uk-label ml-1 <% if (is_tag(tag.name)) { %>uk-label-warning<% } %>"><%= tag.name %></span>
|
||||
<% }) %>
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
<% }) %>
|
4
themes/grid/layout/partial/scripts.ejs
Normal file
4
themes/grid/layout/partial/scripts.ejs
Normal file
@@ -0,0 +1,4 @@
|
||||
<%- js(['https://cdn.staticfile.org/jquery/3.6.0/jquery.min.js']) %>
|
||||
<%- js(['https://cdn.staticfile.org/uikit/3.6.18/js/uikit-core.min.js']) %>
|
||||
<%- js(['https://cdn.staticfile.org/uikit/3.6.18/js/uikit-icons.min.js']) %>
|
||||
<%- js(['/js/prism.js']) %>
|
40
themes/grid/layout/partial/side.ejs
Normal file
40
themes/grid/layout/partial/side.ejs
Normal file
@@ -0,0 +1,40 @@
|
||||
<% if (is_post()) { %>
|
||||
<div class="uk-card uk-card-small uk-card-default uk-card-body mb-2">
|
||||
<div class="uk-card-title">文章目录</div>
|
||||
<div class="pt-1">
|
||||
<%- toc(page.content) %>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
<% if (!is_category() && !noCategories) { %>
|
||||
<div class="uk-card uk-card-small uk-card-default uk-card-body mb-2">
|
||||
<div class="uk-card-title">知识分类</div>
|
||||
<div class="pt-1">
|
||||
<% if (site.categories.length == 0) { %>
|
||||
<div class="uk-alert-warning" uk-alert>
|
||||
<p>当前还没有分类。</p>
|
||||
</div>
|
||||
<% } else { %>
|
||||
<%- list_categories(site.categories, {
|
||||
class: 'category',
|
||||
style: 'list',
|
||||
show_count: false,
|
||||
}) %>
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
<% if (!is_tag() && !noTags) { %>
|
||||
<div class="uk-card uk-card-small uk-card-default uk-card-body mb-2">
|
||||
<div class="uk-card-title">知识标签</div>
|
||||
<div class="pt-1">
|
||||
<% if (site.tags.length == 0) { %>
|
||||
<div class="uk-alert-warning" uk-alert>
|
||||
<p>当前还没有建立标签。</p>
|
||||
</div>
|
||||
<% } else { %>
|
||||
<%- partial('widget/tagcloud') %>
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
5
themes/grid/layout/partial/styles.ejs
Normal file
5
themes/grid/layout/partial/styles.ejs
Normal file
@@ -0,0 +1,5 @@
|
||||
<%- css(['https://cdn.staticfile.org/KaTeX/0.12.0/katex.min.css']) %>
|
||||
<%- css(['css/admonition.css']) %>
|
||||
<%- css(['css/prism.css']) %>
|
||||
<%- css(['css/theme.css']) %>
|
||||
<%- css(['css/style.css']) %>
|
39
themes/grid/layout/post.ejs
Normal file
39
themes/grid/layout/post.ejs
Normal file
@@ -0,0 +1,39 @@
|
||||
<div class="uk-flex mx-2 my-2 main-content">
|
||||
<section class="uk-width-3-4 px-1">
|
||||
<div class="uk-card uk-card-default uk-card-small uk-width-1-1 mb-2">
|
||||
<div class="uk-card-header">
|
||||
<h3 class="uk-card-title uk-flex uk-flex-left uk-flex-middle">
|
||||
<a href="javascript:history.go(-1)" uk-icon="icon: chevron-left" uk-tooltip="后退到上一个页面"></a>
|
||||
<span class="ml-1"><%= page.title %></span>
|
||||
</h3>
|
||||
<div class="uk-flex uk-flex-left">
|
||||
<div class="uk-text-meta mr-1">最后更新:<%= date(page.date, "YYYY-MM-DD HH:mm") %></div>
|
||||
<% if (page.categories.length > 0) { %>
|
||||
<div class="uk-text-meta">知识分类:
|
||||
<%- list_categories(page.categories, {
|
||||
class: { a: 'uk-link-muted' },
|
||||
show_count: false,
|
||||
style: false,
|
||||
separator: ' / '
|
||||
}) %>
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
<article class="uk-card-body">
|
||||
<%- page.content %>
|
||||
</article>
|
||||
<% if (page.tags.length > 0) { %>
|
||||
<div class="uk-card-footer uk-flex uk-flex-left">
|
||||
<span>分类标签:</span>
|
||||
<% page.tags.each(function(tag) { %>
|
||||
<span class="uk-label ml-1"><%= tag.name %></span>
|
||||
<% }) %>
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
</section>
|
||||
<section class="uk-width-1-4">
|
||||
<%- partial('partial/side', {'noCategories': false, 'noTags': false}) %>
|
||||
</section>
|
||||
</div>
|
19
themes/grid/layout/tag.ejs
Normal file
19
themes/grid/layout/tag.ejs
Normal file
@@ -0,0 +1,19 @@
|
||||
<div class="uk-flex mx-2 my-2 main-content">
|
||||
<section class="uk-width-3-4 px-1">
|
||||
<%- partial('partial/post/list', {start: 1}) %>
|
||||
<% if (page.total> 1) { %>
|
||||
<div class="uk-flex uk-flex-between p-1">
|
||||
<a class="<% if (page.prev == 0) { %>uk-disabled<% } %>"
|
||||
href="<%- page.prev_link %>"
|
||||
uk-slidenav-previous></a>
|
||||
<a class="<% if (page.next == 0) { %>uk-disabled<% } %>"
|
||||
href="<%- page.next_link %>"
|
||||
uk-slidenav-next
|
||||
></a>
|
||||
</div>
|
||||
<% } %>
|
||||
</section>
|
||||
<section class="uk-width-1-4">
|
||||
<%- partial('partial/side', {'noCategories': false, 'noTags': true}) %>
|
||||
</section>
|
||||
</div>
|
10
themes/grid/layout/tags-list.ejs
Normal file
10
themes/grid/layout/tags-list.ejs
Normal file
@@ -0,0 +1,10 @@
|
||||
<div class="uk-flex mx-2 my-2 main-content">
|
||||
<section class="uk-width-3-4 px-1">
|
||||
<div class="uk-card uk-card-default uk-card-body uk-height-1-1">
|
||||
<%- list_tags({orderby: 'name', order: '1', show_count: true, class: "tags-toc"}) %>
|
||||
</div>
|
||||
</section>
|
||||
<section class="uk-width-1-4">
|
||||
<%- partial('partial/side', {'noCategories': false, 'noTags': true}) %>
|
||||
</section>
|
||||
</div>
|
7
themes/grid/layout/widget/tagcloud.ejs
Normal file
7
themes/grid/layout/widget/tagcloud.ejs
Normal file
@@ -0,0 +1,7 @@
|
||||
<% if (site.tags.length) { %>
|
||||
<div class="widget-wrap">
|
||||
<div class="widget tagcloud">
|
||||
<%- tagcloud(site.tags, {min_font: 12, max_font: 18, amount: 90, color: true, start_color: '#8377ee', end_color: '#1b0ba8', class: 'tag-item', level: 20}) %>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
73
themes/grid/source/css/admonition.css
Normal file
73
themes/grid/source/css/admonition.css
Normal file
@@ -0,0 +1,73 @@
|
||||
.admonition {
|
||||
margin: 1.5625em 0;
|
||||
padding: .6rem;
|
||||
overflow: hidden;
|
||||
font-size: .64rem;
|
||||
page-break-inside: avoid;
|
||||
border-left: .3rem solid #42b983;
|
||||
border-radius: .3rem;
|
||||
box-shadow: 0 0.1rem 0.4rem rgba(0,0,0,.05), 0 0 0.05rem rgba(0,0,0,.1);
|
||||
background-color: #fafafa;
|
||||
}
|
||||
|
||||
p.admonition-title {
|
||||
position: relative;
|
||||
margin: -.6rem -.6rem .8em -.6rem !important;
|
||||
padding: .4rem .6rem .4rem 2.5rem;
|
||||
font-weight: 700;
|
||||
background-color:rgba(66, 185, 131, .1);
|
||||
}
|
||||
|
||||
.admonition-title::before {
|
||||
position: absolute;
|
||||
top: .9rem;
|
||||
left: 1rem;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
background-color: #42b983;
|
||||
border-radius: 50%;
|
||||
content: ' ';
|
||||
}
|
||||
|
||||
.info>.admonition-title, .todo>.admonition-title {
|
||||
background-color: rgba(0,184,212,.1);
|
||||
}
|
||||
|
||||
.warning>.admonition-title, .attention>.admonition-title, .caution>.admonition-title {
|
||||
background-color: rgba(255,145,0,.1);
|
||||
}
|
||||
|
||||
.failure>.admonition-title, .missing>.admonition-title, .fail>.admonition-title, .error>.admonition-title {
|
||||
background-color: rgba(255,82,82,.1);
|
||||
}
|
||||
|
||||
.admonition.info, .admonition.todo {
|
||||
border-color: #00b8d4;
|
||||
}
|
||||
|
||||
.admonition.warning, .admonition.attention, .admonition.caution {
|
||||
border-color: #ff9100;
|
||||
}
|
||||
|
||||
.admonition.failure, .admonition.missing, .admonition.fail, .admonition.error {
|
||||
border-color: #ff5252;
|
||||
}
|
||||
|
||||
.info>.admonition-title::before, .todo>.admonition-title::before {
|
||||
background-color: #00b8d4;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.warning>.admonition-title::before, .attention>.admonition-title::before, .caution>.admonition-title::before {
|
||||
background-color: #ff9100;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.failure>.admonition-title::before,.missing>.admonition-title::before,.fail>.admonition-title::before,.error>.admonition-title::before{
|
||||
background-color: #ff5252;;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.admonition>:last-child {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
255
themes/grid/source/css/prism.css
Normal file
255
themes/grid/source/css/prism.css
Normal file
@@ -0,0 +1,255 @@
|
||||
/* PrismJS 1.23.0
|
||||
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+abap+abnf+actionscript+ada+agda+al+antlr4+apacheconf+apex+apl+applescript+aql+arduino+arff+asciidoc+aspnet+asm6502+autohotkey+autoit+bash+basic+batch+bbcode+birb+bison+bnf+brainfuck+brightscript+bro+bsl+c+csharp+cpp+cfscript+chaiscript+cil+clojure+cmake+cobol+coffeescript+concurnas+csp+coq+crystal+css-extras+csv+cypher+d+dart+dataweave+dax+dhall+diff+django+dns-zone-file+docker+dot+ebnf+editorconfig+eiffel+ejs+elixir+elm+etlua+erb+erlang+excel-formula+fsharp+factor+false+firestore-security-rules+flow+fortran+ftl+gml+gcode+gdscript+gedcom+gherkin+git+glsl+go+graphql+groovy+haml+handlebars+haskell+haxe+hcl+hlsl+http+hpkp+hsts+ichigojam+icon+icu-message-format+idris+ignore+inform7+ini+io+j+java+javadoc+javadoclike+javastacktrace+jexl+jolie+jq+jsdoc+js-extras+json+json5+jsonp+jsstacktrace+js-templates+julia+keyman+kotlin+kumir+latex+latte+less+lilypond+liquid+lisp+livescript+llvm+log+lolcode+lua+makefile+markdown+markup-templating+matlab+mel+mizar+mongodb+monkey+moonscript+n1ql+n4js+nand2tetris-hdl+naniscript+nasm+neon+nevod+nginx+nim+nix+nsis+objectivec+ocaml+opencl+openqasm+oz+parigp+parser+pascal+pascaligo+psl+pcaxis+peoplecode+perl+php+phpdoc+php-extras+plsql+powerquery+powershell+processing+prolog+promql+properties+protobuf+pug+puppet+pure+purebasic+purescript+python+qsharp+q+qml+qore+r+racket+jsx+tsx+reason+regex+rego+renpy+rest+rip+roboconf+robotframework+ruby+rust+sas+sass+scss+scala+scheme+shell-session+smali+smalltalk+smarty+sml+solidity+solution-file+soy+sparql+splunk-spl+sqf+sql+squirrel+stan+iecst+stylus+swift+t4-templating+t4-cs+t4-vb+tap+tcl+tt2+textile+toml+turtle+twig+typescript+typoscript+unrealscript+uri+v+vala+vbnet+velocity+verilog+vhdl+vim+visual-basic+warpscript+wasm+wiki+xeora+xml-doc+xojo+xquery+yaml+yang+zig&plugins=line-highlight+line-numbers */
|
||||
/**
|
||||
* prism.js default theme for JavaScript, CSS and HTML
|
||||
* Based on dabblet (http://dabblet.com)
|
||||
* @author Lea Verou
|
||||
*/
|
||||
|
||||
code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
color: black;
|
||||
background: none;
|
||||
text-shadow: 0 1px white;
|
||||
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
|
||||
font-size: 1em;
|
||||
text-align: left;
|
||||
white-space: pre;
|
||||
word-spacing: normal;
|
||||
word-break: normal;
|
||||
word-wrap: normal;
|
||||
line-height: 1.5;
|
||||
|
||||
-moz-tab-size: 4;
|
||||
-o-tab-size: 4;
|
||||
tab-size: 4;
|
||||
|
||||
-webkit-hyphens: none;
|
||||
-moz-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
hyphens: none;
|
||||
}
|
||||
|
||||
pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
|
||||
code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
|
||||
text-shadow: none;
|
||||
background: #b3d4fc;
|
||||
}
|
||||
|
||||
pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
|
||||
code[class*="language-"]::selection, code[class*="language-"] ::selection {
|
||||
text-shadow: none;
|
||||
background: #b3d4fc;
|
||||
}
|
||||
|
||||
@media print {
|
||||
code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
text-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* Code blocks */
|
||||
pre[class*="language-"] {
|
||||
padding: 1em;
|
||||
margin: .5em 0;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
:not(pre) > code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
background: #f5f2f0;
|
||||
}
|
||||
|
||||
/* Inline code */
|
||||
:not(pre) > code[class*="language-"] {
|
||||
padding: .1em;
|
||||
border-radius: .3em;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.token.comment,
|
||||
.token.prolog,
|
||||
.token.doctype,
|
||||
.token.cdata {
|
||||
color: slategray;
|
||||
}
|
||||
|
||||
.token.punctuation {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.token.namespace {
|
||||
opacity: .7;
|
||||
}
|
||||
|
||||
.token.property,
|
||||
.token.tag,
|
||||
.token.boolean,
|
||||
.token.number,
|
||||
.token.constant,
|
||||
.token.symbol,
|
||||
.token.deleted {
|
||||
color: #905;
|
||||
}
|
||||
|
||||
.token.selector,
|
||||
.token.attr-name,
|
||||
.token.string,
|
||||
.token.char,
|
||||
.token.builtin,
|
||||
.token.inserted {
|
||||
color: #690;
|
||||
}
|
||||
|
||||
.token.operator,
|
||||
.token.entity,
|
||||
.token.url,
|
||||
.language-css .token.string,
|
||||
.style .token.string {
|
||||
color: #9a6e3a;
|
||||
/* This background color was intended by the author of this theme. */
|
||||
background: hsla(0, 0%, 100%, .5);
|
||||
}
|
||||
|
||||
.token.atrule,
|
||||
.token.attr-value,
|
||||
.token.keyword {
|
||||
color: #07a;
|
||||
}
|
||||
|
||||
.token.function,
|
||||
.token.class-name {
|
||||
color: #DD4A68;
|
||||
}
|
||||
|
||||
.token.regex,
|
||||
.token.important,
|
||||
.token.variable {
|
||||
color: #e90;
|
||||
}
|
||||
|
||||
.token.important,
|
||||
.token.bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
.token.italic {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.token.entity {
|
||||
cursor: help;
|
||||
}
|
||||
|
||||
pre[data-line] {
|
||||
position: relative;
|
||||
padding: 1em 0 1em 3em;
|
||||
}
|
||||
|
||||
.line-highlight {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
padding: inherit 0;
|
||||
margin-top: 1em; /* Same as .prism’s padding-top */
|
||||
|
||||
background: hsla(24, 20%, 50%,.08);
|
||||
background: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0));
|
||||
|
||||
pointer-events: none;
|
||||
|
||||
line-height: inherit;
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
@media print {
|
||||
.line-highlight {
|
||||
/*
|
||||
* This will prevent browsers from replacing the background color with white.
|
||||
* It's necessary because the element is layered on top of the displayed code.
|
||||
*/
|
||||
-webkit-print-color-adjust: exact;
|
||||
color-adjust: exact;
|
||||
}
|
||||
}
|
||||
|
||||
.line-highlight:before,
|
||||
.line-highlight[data-end]:after {
|
||||
content: attr(data-start);
|
||||
position: absolute;
|
||||
top: .4em;
|
||||
left: .6em;
|
||||
min-width: 1em;
|
||||
padding: 0 .5em;
|
||||
background-color: hsla(24, 20%, 50%,.4);
|
||||
color: hsl(24, 20%, 95%);
|
||||
font: bold 65%/1.5 sans-serif;
|
||||
text-align: center;
|
||||
vertical-align: .3em;
|
||||
border-radius: 999px;
|
||||
text-shadow: none;
|
||||
box-shadow: 0 1px white;
|
||||
}
|
||||
|
||||
.line-highlight[data-end]:after {
|
||||
content: attr(data-end);
|
||||
top: auto;
|
||||
bottom: .4em;
|
||||
}
|
||||
|
||||
.line-numbers .line-highlight:before,
|
||||
.line-numbers .line-highlight:after {
|
||||
content: none;
|
||||
}
|
||||
|
||||
pre[id].linkable-line-numbers span.line-numbers-rows {
|
||||
pointer-events: all;
|
||||
}
|
||||
pre[id].linkable-line-numbers span.line-numbers-rows > span:before {
|
||||
cursor: pointer;
|
||||
}
|
||||
pre[id].linkable-line-numbers span.line-numbers-rows > span:hover:before {
|
||||
background-color: rgba(128, 128, 128, .2);
|
||||
}
|
||||
|
||||
pre[class*="language-"].line-numbers {
|
||||
position: relative;
|
||||
padding-left: 3.8em;
|
||||
counter-reset: linenumber;
|
||||
}
|
||||
|
||||
pre[class*="language-"].line-numbers > code {
|
||||
position: relative;
|
||||
white-space: inherit;
|
||||
}
|
||||
|
||||
.line-numbers .line-numbers-rows {
|
||||
position: absolute;
|
||||
pointer-events: none;
|
||||
top: 0;
|
||||
font-size: 100%;
|
||||
left: -3.8em;
|
||||
width: 3em; /* works for line-numbers below 1000 lines */
|
||||
letter-spacing: -1px;
|
||||
border-right: 1px solid #999;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
}
|
||||
|
||||
.line-numbers-rows > span {
|
||||
display: block;
|
||||
counter-increment: linenumber;
|
||||
}
|
||||
|
||||
.line-numbers-rows > span:before {
|
||||
content: counter(linenumber);
|
||||
color: #999;
|
||||
display: block;
|
||||
padding-right: 0.8em;
|
||||
text-align: right;
|
||||
}
|
||||
|
142
themes/grid/source/css/style.less
Normal file
142
themes/grid/source/css/style.less
Normal file
@@ -0,0 +1,142 @@
|
||||
body {
|
||||
background: url(/img/scatterbg.svg);
|
||||
min-height: 100vh;
|
||||
height: 100%;
|
||||
}
|
||||
.main-content {
|
||||
min-height: calc(100vh - 80px - 72px - 32px);
|
||||
}
|
||||
footer {
|
||||
height: 40px;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
.primary-badge {
|
||||
box-sizing: border-box;
|
||||
min-width: 22px;
|
||||
height: 22px;
|
||||
border-radius: 500px;
|
||||
vertical-align: middle;
|
||||
background: #1e87f0;
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
display: inline-flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
.category-list, .category-list-child {
|
||||
padding-left: 8px;
|
||||
list-style-position: inside;
|
||||
list-style-type: '\25bc';
|
||||
.category-list-item {
|
||||
line-height: 1.7em;
|
||||
.category-list-link {
|
||||
text-decoration: none;
|
||||
margin-left: 8px;
|
||||
&:link {
|
||||
color: #000000;
|
||||
}
|
||||
&:visited {
|
||||
color: #000000;
|
||||
}
|
||||
&:hover {
|
||||
color: #288aed;
|
||||
}
|
||||
}
|
||||
.category-list-child {
|
||||
padding-left: 16px;
|
||||
list-style-type: '\25b7';
|
||||
}
|
||||
}
|
||||
}
|
||||
.categories-toc-list, .categories-toc-list-child {
|
||||
list-style: none;
|
||||
padding-left: 0;
|
||||
.categories-toc-list-item {
|
||||
line-height: 3em;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
.categories-toc-list-link {
|
||||
flex-grow: 1;
|
||||
}
|
||||
.categories-toc-list-count {
|
||||
.primary-badge();
|
||||
}
|
||||
.categories-toc-list-child {
|
||||
padding-left: 24px;
|
||||
width: 100%;
|
||||
border-top: 1px solid #cccccc;
|
||||
}
|
||||
&:not(:first-of-type) {
|
||||
border-top: 1px solid #cccccc;
|
||||
}
|
||||
}
|
||||
}
|
||||
.tags-toc-list {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
flex-wrap: wrap;
|
||||
.tags-toc-list-item {
|
||||
width: 25%;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 16px;
|
||||
border-bottom: 1px solid #cccccc;
|
||||
.tags-toc-list-link {
|
||||
flex-grow: 1;
|
||||
}
|
||||
.tags-toc-list-count {
|
||||
.primary-badge();
|
||||
}
|
||||
}
|
||||
}
|
||||
.toc, .toc-child {
|
||||
padding-left: 0;
|
||||
list-style-type: none;
|
||||
list-style-position: outside;
|
||||
.toc-child {
|
||||
padding-left: 16px;
|
||||
}
|
||||
.toc-link {
|
||||
text-decoration: none;
|
||||
cursor: auto;
|
||||
color: #000000;
|
||||
&:link, &:visited, &:hover {
|
||||
color: #000000;
|
||||
}
|
||||
}
|
||||
}
|
||||
.markdown-anchor {
|
||||
padding-top: 96px;
|
||||
}
|
||||
.tagcloud {
|
||||
a {
|
||||
text-decoration: none;
|
||||
&[class*=tag-item] {
|
||||
padding: 0 2px;
|
||||
break-inside: avoid;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.archive-list {
|
||||
list-style: none;
|
||||
.archive-list-item {
|
||||
line-height: 3em;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
&:not(:last-of-type) {
|
||||
border-bottom: 1px solid #cccccc;
|
||||
}
|
||||
.archive-list-count {
|
||||
.primary-badge();
|
||||
}
|
||||
}
|
||||
}
|
60
themes/grid/source/css/theme.less
Normal file
60
themes/grid/source/css/theme.less
Normal file
@@ -0,0 +1,60 @@
|
||||
@import "node_modules/uikit/src/less/uikit.theme.less";
|
||||
|
||||
@directions: {
|
||||
t: top;
|
||||
b: bottom;
|
||||
l: left;
|
||||
r: right;
|
||||
x: left, right;
|
||||
y: top, bottom;
|
||||
}
|
||||
each(range(0, 5), .(@i) {
|
||||
.m-@{i} {
|
||||
margin: @i * 8px;
|
||||
}
|
||||
each(@directions, {
|
||||
.m@{key}-@{i} {
|
||||
each(@value, .(@sv) {
|
||||
margin-@{sv}: @i * 8px;
|
||||
});
|
||||
}
|
||||
});
|
||||
.p-@{i} {
|
||||
padding: @i * 8px;
|
||||
}
|
||||
each(@directions, {
|
||||
.p@{key}-@{i} {
|
||||
each(@value, .(@sv) {
|
||||
padding-@{sv}: @i * 8px;
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
blockquote {
|
||||
border-left: 3px solid #aaaaaa;
|
||||
padding-left: 16px;
|
||||
font-size: 0.85rem;
|
||||
color: #aaaaaa;
|
||||
}
|
||||
|
||||
article table {
|
||||
margin: 16px auto;
|
||||
width: 90%;
|
||||
border-collapse: collapse;
|
||||
thead {
|
||||
th {
|
||||
line-height: 2rem;
|
||||
border-bottom: 2px solid #bbbbbb;
|
||||
}
|
||||
}
|
||||
tbody {
|
||||
tr:not(:last-of-type) {
|
||||
td {
|
||||
line-height: 2em;
|
||||
border-bottom: 1px solid #bbbbbb;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
12
themes/grid/source/img/scatterbg.svg
Normal file
12
themes/grid/source/img/scatterbg.svg
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg viewBox="0 0 50 50" width="50px" height="50px" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="50" height="50" style="fill: rgba(216, 216, 216, 0.18); stroke-miterlimit: 2; stroke-linecap: square; stroke: rgb(0, 0, 0); stroke-opacity: 0.12;"/>
|
||||
<line style="stroke-linecap: square; stroke-miterlimit: 1; stroke-dasharray: 2px; stroke: rgb(0, 0, 0); stroke-opacity: 0.1;" x1="3" y1="47" x2="18" y2="47.026"/>
|
||||
<line style="stroke-linecap: square; stroke-miterlimit: 1; stroke-dasharray: 2px; stroke: rgb(0, 0, 0); stroke-opacity: 0.1;" x1="-73.856" y1="-37.571" x2="-88.856" y2="-37.571" transform="matrix(1, 0, 0, 1, 120.855769, 84.571459)"/>
|
||||
<line style="stroke-linecap: square; stroke-miterlimit: 1; stroke-dasharray: 2px; stroke: rgb(0, 0, 0); stroke-opacity: 0.1;" x1="-47.95" y1="-4.566" x2="-47.95" y2="-19.566" transform="matrix(1, 0, 0, 1, 94.949697, 51.565754)"/>
|
||||
<line style="stroke-linecap: square; stroke-miterlimit: 1; stroke-dasharray: 2px; stroke: rgb(0, 0, 0); stroke-opacity: 0.1;" x1="-92.858" y1="-27.205" x2="-107.858" y2="-27.205" transform="matrix(1, 0, 0, 1, 139.857735, 30.204519)"/>
|
||||
<line style="stroke-linecap: square; stroke-miterlimit: 1; stroke-dasharray: 2px; stroke: rgb(0, 0, 0); stroke-opacity: 0.1;" x1="-46.354" y1="-1.595" x2="-46.354" y2="13.405" transform="matrix(1, 0, 0, 1, 93.35397, 4.595354)"/>
|
||||
<line style="stroke-linecap: square; stroke-miterlimit: 1; stroke-dasharray: 2px; stroke: rgb(0, 0, 0); stroke-opacity: 0.1;" x1="-120.305" y1="59.933" x2="-120.305" y2="44.933" transform="matrix(1, 0, 0, 1, 123.304718, -12.933499)"/>
|
||||
<line style="stroke-linecap: square; stroke-miterlimit: 1; stroke-dasharray: 2px; stroke: rgb(0, 0, 0); stroke-opacity: 0.1;" x1="-76.166" y1="34.505" x2="-76.166" y2="49.505" transform="matrix(1, 0, 0, 1, 79.166018, -31.505173)"/>
|
||||
<line style="stroke-linecap: square; stroke-miterlimit: 1; stroke-dasharray: 2px; stroke: rgb(0, 0, 0); stroke-opacity: 0.1;" x1="-37.294" y1="-21.504" x2="-22.294" y2="-21.504" transform="matrix(1, 0, 0, 1, 40.293862, 24.503882)"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.1 KiB |
262
themes/grid/source/js/prism.js
Normal file
262
themes/grid/source/js/prism.js
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user