Added missing "svrjs" theme

This commit is contained in:
Dorian Niemiec 2024-03-15 23:31:26 +01:00
parent 6521b98abf
commit 66c58fd2ff
106 changed files with 2718 additions and 4 deletions

2
.gitignore vendored
View file

@ -6,5 +6,5 @@ node_modules/
public/ public/
.deploy*/ .deploy*/
_multiconfig.yml _multiconfig.yml
svrjs/ /svrjs/
google.json google.json

6
package-lock.json generated
View file

@ -810,9 +810,9 @@
} }
}, },
"node_modules/follow-redirects": { "node_modules/follow-redirects": {
"version": "1.15.5", "version": "1.15.6",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
"integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
"funding": [ "funding": [
{ {
"type": "individual", "type": "individual",

7
themes/svrjs/LICENSE Normal file
View file

@ -0,0 +1,7 @@
Copyright (c) 2013 Tommy Chen
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

67
themes/svrjs/_config.yml Normal file
View file

@ -0,0 +1,67 @@
# Header
menu:
Home: /
Archives: /archives
rss: /atom.xml
banner: "images/banner.jpg"
# Content
excerpt_link: Read More
fancybox: true
# # Footer
# copyright: |-
# <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/88x31.png" /></a></br>
# All website licensed under <a href="https://creativecommons.org/licenses/by/4.0/" target="_blank">CC BY 4.0</a></br>
# Footer
copyright:
# Need help choosing? Please see...
# https://creativecommons.org/choose/
# https://choosealicense.com/
# You can use html like below...
# copyright: |-
# <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/88x31.png" /></a></br>
# All website licensed under <a href="https://creativecommons.org/licenses/by/4.0/" target="_blank">CC BY 4.0</a></br>
# Sidebar
sidebar: right
widgets:
- search
- category
- tagcloud
- archive
- recent_posts
# display widgets at the bottom of index pages (pagination == 2)
index_widgets:
# - category
# - tagcloud
# - archive
# Widget behavior
archive_type: 'monthly'
show_count: false
recent_posts_limits: 5
# Miscellaneous
google_analytics:
gauges_analytics:
favicon: /favicon.ico
links: true
twitter:
fb_admins:
fb_app_id:
# valine comment system. https://valine.js.org
valine:
enable: false # if you want use valine,please set this value is true
appId: # leancloud application app id
appKey: # leancloud application app key
notify: false # valine mail notify (true/false) https://github.com/xCss/Valine/wiki
verify: false # valine verify code (true/false)
pageSize: 10 # comment list page size
avatar: mm # gravatar style https://valine.js.org/#/avatar
lang: en # i18n: zh-cn/en
placeholder: Just go go # valine comment input placeholder(like: Please leave your footprints )
guest_info: nick,mail,link #valine comment header info

View file

@ -0,0 +1 @@
de.yml

View file

@ -0,0 +1,19 @@
categories: Kategorien
search: Suche
tags: Tags
tagcloud: Tag Cloud
tweets: Tweets
prev: zurück
next: weiter
comment: Kommentare
archive_a: Archiv
archive_b: "Archive: %s"
page: Seite %d
recent_posts: letzter Beitrag
newer: Neuer
older: Älter
share: Teilen
powered_by: Powered by
rss_feed: RSS Feed
category: Kategorie
tag: Tag

View file

@ -0,0 +1 @@
en.yml

View file

@ -0,0 +1 @@
en.yml

View file

@ -0,0 +1 @@
en.yml

View file

@ -0,0 +1,19 @@
categories: Categories
search: Search
tags: Tags
tagcloud: Tag Cloud
tweets: Tweets
prev: Prev
next: Next
comment: Comments
archive_a: Archives
archive_b: "Archives: %s"
page: Page %d
recent_posts: Recent Posts
newer: Newer
older: Older
share: Share
powered_by: Powered by
rss_feed: RSS Feed
category: Category
tag: Tag

View file

@ -0,0 +1 @@
es.yml

View file

@ -0,0 +1,19 @@
categories: Categorías
search: Buscar
tags: Tags
tagcloud: Nube de Tags
tweets: Tweets
prev: Previo
next: Siguiente
comment: Comentarios
archive_a: Archivos
archive_b: "Archivos: %s"
page: Página %d
recent_posts: Posts recientes
newer: Nuevo
older: Viejo
share: Compartir
powered_by: Construido por
rss_feed: RSS
category: Categoría
tag: Tag

View file

@ -0,0 +1 @@
fr.yml

View file

@ -0,0 +1,19 @@
categories: Catégories
search: Rechercher
tags: Mot-clés
tagcloud: Nuage de mot-clés
tweets: Tweets
prev: Précédent
next: Suivant
comment: Commentaires
archive_a: Archives
archive_b: "Archives: %s"
page: Page %d
recent_posts: Articles récents
newer: Récent
older: Ancien
share: Partager
powered_by: Propulsé par
rss_feed: Flux RSS
category: Catégorie
tag: Mot-clé

View file

@ -0,0 +1 @@
hu.yml

View file

@ -0,0 +1,19 @@
categories: Kategóriák
search: Keresés
tags: Címkék
tagcloud: Címkefelhő
tweets: Tweetek
prev: Előző
next: Következő
comment: Kommentek
archive_a: Archív
archive_b: "Archív: %s"
page: Oldal %d
recent_posts: Legfrissebb bejegyzések
newer: Újabb
older: Régebbi
share: Megosztás
powered_by: Powered by
rss_feed: RSS-hírfolyam
category: Kategória
tag: Címke

View file

@ -0,0 +1 @@
it.yml

View file

@ -0,0 +1,19 @@
categories: Categorie
search: Cerca
tags: Tag
tagcloud: Tag Cloud
tweets: Tweet
prev: Prec
next: Succ
comment: Commenti
archive_a: Archivio
archive_b: "Archivio: %s"
page: Pagina %d
recent_posts: Post Recenti
newer: Nuovi
older: Vecchi
share: Condividi
powered_by: Powered by
rss_feed: Feed RSS
category: Categoria
tag: Tag

View file

@ -0,0 +1 @@
ja.yml

View file

@ -0,0 +1,19 @@
categories: カテゴリ
search: 検索
tags: タグ
tagcloud: タグクラウド
tweets: ツイート
prev: 戻る
next: 次へ
comment: コメント
archive_a: アーカイブ
archive_b: "アーカイブ: %s"
page: ページ %d
recent_posts: 最近の投稿
newer: 次の記事
older: 前の記事
share: 共有
powered_by: Powered by
rss_feed: RSSフィード
category: カテゴリ
tag: タグ

View file

@ -0,0 +1 @@
ko.yml

View file

@ -0,0 +1,19 @@
categories: 카테고리
search: 검색
tags: 태그
tagcloud: 태그 클라우드
tweets: 트윗
prev: 이전
next: 다음
comment: 댓글
archive_a: 아카이브
archive_b: "아카이브: %s"
page: 페이지 %d
recent_posts: 최근 포스트
newer: 최신
older: 이전
share: 공유
powered_by: Powered by
rss_feed: RSS Feed
category: 카테고리
tag: 태그

View file

@ -0,0 +1 @@
mn.yml

View file

@ -0,0 +1,19 @@
categories: Ангилалууд
search: Хайлт
tags: Тагууд
tagcloud: Tag Cloud
tweets: Tweets
prev: Өмнөх
next: Дараах
comment: Сэтгэгдэл
archive_a: Архив
archive_b: "Архив: %s"
page: Хуудас %d
recent_posts: Сүүлд нэмэгдсэн
newer: Шинэ
older: Хуучин
share: Хуваалцах
powered_by: Powered by
rss_feed: RSS Feed
category: Ангилал
tag: Таг

View file

@ -0,0 +1 @@
nl.yml

View file

@ -0,0 +1,20 @@
categories: Categorieën
search: Zoeken
tags: Labels
tagcloud: Tag Cloud
tweets: Tweets
prev: Vorige
next: Volgende
comment: Commentaren
archive_a: Archieven
archive_b: "Archieven: %s"
page: Pagina %d
recent_posts: Recente berichten
newer: Nieuwer
older: Ouder
share: Delen
powered_by: Powered by
rss_feed: RSS Feed
category: Categorie
tag: Label

View file

@ -0,0 +1,19 @@
categories: Kategorier
search: Søk
tags: Tags
tagcloud: Tag Cloud
tweets: Tweets
prev: Forrige
next: Neste
comment: Kommentarer
archive_a: Arkiv
archive_b: "Arkiv: %s"
page: Side %d
recent_posts: Siste innlegg
newer: Newer
older: Older
share: Share
powered_by: Powered by
rss_feed: RSS Feed
category: Category
tag: Tag

View file

@ -0,0 +1 @@
pt.yml

View file

@ -0,0 +1,19 @@
categories: Categorias
search: Buscar
tags: Tags
tagcloud: Nuvem de Tags
tweets: Tweets
prev: Anterior
next: Próximo
comment: Comentários
archive_a: Arquivos
archive_b: "Arquivos: %s"
page: Página %d
recent_posts: Postagens Recentes
newer: Mais Recente
older: Mais Antigo
share: Compartilhar
powered_by: Desenvolvido por
rss_feed: Feed RSS
category: Categoria
tag: Tag

View file

@ -0,0 +1 @@
ru.yml

View file

@ -0,0 +1,19 @@
categories: Категории
search: Поиск
tags: Метки
tagcloud: Облако меток
tweets: Твиты
prev: Назад
next: Вперед
comment: Комментарии
archive_a: Архив
archive_b: "Архив: %s"
page: Страница %d
recent_posts: Недавние записи
newer: Следующий
older: Предыдущий
share: Поделиться
powered_by: Создано с помощью
rss_feed: RSS-каналы
category: Категория
tag: Метка

View file

@ -0,0 +1 @@
th.yml

View file

@ -0,0 +1,19 @@
categories: หมวดหมู่
search: ค้นหา
tags: แท็ก
tagcloud: แท็กคลาวด์
tweets: ทวีต
prev: ก่อนหน้า
next: ถัดไป
comment: ความคิดเห็น
archive_a: ที่เก็บเอกสาร
archive_b: "ที่เก็บเอกสาร: %s"
page: หน้า %d
recent_posts: โพสต์ล่าสุด
newer: ใหม่กว่า
older: เก่ากว่า
share: แชร์
powered_by: ขับเคลื่อนโดย
rss_feed: RSS Feed
category: หมวดหมู่
tag: แท็ก

View file

@ -0,0 +1,19 @@
categories: Kategoriler
search: Ara
tags: Etiketler
tagcloud: Etiket bulutu
tweets: twitler
prev: Geri
next: İleri
comment: Yorumlar
archive_a: Arşiv
archive_b: "Arşiv: %s"
page: Sayfa %d
recent_posts: Недавние записи
newer: daha yeni
older: daha eski
share: Paylaş
powered_by: Destekleriyle
rss_feed: RSS-kanalı
category: Kategori
tag: Etiket

View file

@ -0,0 +1,19 @@
categories: 分类
search: 搜索
tags: 标签
tagcloud: 标签云
tweets: 推文
prev: 上一页
next: 下一页
comment: 留言
archive_a: 归档
archive_b: 归档:%s
page: 第 %d 页
recent_posts: 最新文章
newer: 前一篇
older: 后一篇
share: 分享
powered_by: Powered by
rss_feed: RSS 订阅
category: 目录
tag: 标签

View file

@ -0,0 +1,19 @@
categories: 分類
search: 搜尋
tags: 標籤
tagcloud: 標籤雲
tweets: 推文
prev: 上一頁
next: 下一頁
comment: 留言
archive_a: 彙整
archive_b: 彙整:%s
page: 第 %d 頁
recent_posts: 最新文章
newer: Newer
older: Older
share: Share
powered_by: Powered by
rss_feed: RSS Feed
category: Category
tag: Tag

View file

@ -0,0 +1,46 @@
<% if (config.disqus_shortname){ %>
<script>
var disqus_shortname = '<%= config.disqus_shortname %>';
<% if (page.permalink){ %>
var disqus_url = '<%= page.permalink %>';
<% } %>
(function(){
var dsq = document.createElement('script');
dsq.async = true;
dsq.src = 'https://' + disqus_shortname + '.disqus.com/<% if (page.comments) { %>embed.js<% } else { %>count.js<% } %>';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<% } %>
<%- js('js/jquery-3.7.1.min.js') %>
<% if (theme.fancybox){ %>
<%- js('fancybox/jquery.fancybox.min.js') %>
<% } %>
<%- js('js/script') %>
<%- partial('gauges-analytics') %>
<% if(theme.valine.enable && theme.valine.appId && theme.valine.appKey){ %>
<%- js('https://cdn.jsdelivr.net/npm/valine@1.3.10/dist/Valine.min.js') %>
<script>
var GUEST_INFO = ['nick','mail','link'];
var guest_info = '<%= theme.valine.guest_info %>'.split(',').filter(function(item){
return GUEST_INFO.indexOf(item) > -1
});
var notify = '<%= theme.valine.notify %>' == true;
var verify = '<%= theme.valine.verify %>' == true;
new Valine({
el: '.vcomment',
notify: notify,
verify: verify,
appId: "<%= theme.valine.appId %>",
appKey: "<%= theme.valine.appKey %>",
placeholder: "<%= theme.valine.placeholder %>",
pageSize:'<%= theme.valine.pageSize %>',
avatar:'<%= theme.valine.avatar %>',
lang:'<%= theme.valine.lang %>'
});
</script>
<% } %>

View file

@ -0,0 +1,8 @@
<article class="archive-article archive-type-<%= post.layout %>">
<div class="archive-article-inner">
<header class="archive-article-header">
<%- partial('post/date', {class_name: 'archive-article-date', date_format: 'MMM D'}) %>
<%- partial('post/title', {class_name: 'archive-article-title'}) %>
</header>
</div>
</article>

View file

@ -0,0 +1,35 @@
<% if (pagination == 2){ %>
<% page.posts.each(function(post){ %>
<%- partial('article', {post: post, index: true}) %>
<% }) %>
<% } else { %>
<% var last; %>
<% page.posts.each(function(post, i){ %>
<% var year = post.date.year(); %>
<% if (last != year){ %>
<% if (last != null){ %>
</div></section>
<% } %>
<% last = year; %>
<section class="archives-wrap">
<div class="archive-year-wrap">
<a href="<%- url_for(config.archive_dir + '/' + year) %>" class="archive-year"><%= year %></a>
</div>
<div class="archives">
<% } %>
<%- partial('archive-post', {post: post, even: i % 2 == 0}) %>
<% }) %>
<% if (page.posts.length){ %>
</div></section>
<% } %>
<% } %>
<% if (page.total > 1){ %>
<nav id="page-nav">
<% var prev_text = "&laquo; " + __('prev');var next_text = __('next') + " &raquo;"%>
<%- paginator({
prev_text: prev_text,
next_text: next_text,
escape: false
}) %>
</nav>
<% } %>

View file

@ -0,0 +1,55 @@
<article id="<%= post.layout %>-<%= post.slug %>" class="h-entry article article-type-<%= post.layout %>" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
<div class="article-meta">
<%- partial('post/date', {class_name: 'article-date', date_format: null}) %>
<%- partial('post/category') %>
</div>
<div class="article-inner">
<% if (post.link || post.title){ %>
<header class="article-header">
<%- partial('post/title', {class_name: 'p-name article-title'}) %>
</header>
<% } %>
<%- partial('post/gallery') %>
<div class="e-content article-entry" itemprop="articleBody">
<% if (post.excerpt && index){ %>
<%- post.excerpt %>
<% if (theme.excerpt_link){ %>
<p class="article-more-link">
<a href="<%- url_for(post.path) %>#more"><%= theme.excerpt_link %></a>
</p>
<% } %>
<% } else { %>
<%- post.content %>
<% } %>
</div>
<footer class="article-footer">
<a data-url="<%- post.permalink %>" data-id="<%= post._id %>" data-title="<%= post.title %>" class="article-share-link"><span class="fa fa-share"></span> <%= __('share') %></a>
<% if (post.comments && config.disqus_shortname){ %>
<a href="<%- post.permalink %>#disqus_thread" class="article-comment-link"><span class="fa fa-comment"><%= __('comment') %></span></a>
<% } %>
<% if (post.comments && theme.valine.enable && theme.valine.appId && theme.valine.appKey ){ %>
<a href="<%- url_for(post.path) %>#comments" class="article-comment-link">
<span class="post-comments-count valine-comment-count fa fa-comment" data-xid="<%- url_for(post.path) %>" itemprop="commentCount"></span>
<%= __('comment') %>
</a>
<% } %>
<%- partial('post/tag') %>
</footer>
</div>
<% if (!index){ %>
<%- partial('post/nav') %>
<% } %>
</article>
<% if (!index && post.comments && config.disqus_shortname){ %>
<section id="comments">
<div id="disqus_thread">
<noscript>Please enable JavaScript to view the <a href="//disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
</div>
</section>
<% } %>
<% if (!index && post.comments && theme.valine.enable && theme.valine.appId && theme.valine.appKey){ %>
<section id="comments" class="vcomment">
</section>
<% } %>

View file

@ -0,0 +1,45 @@
<footer id="footer">
<% if (theme.sidebar === 'bottom'){ %>
<%- partial('_partial/sidebar') %>
<% } %>
<div id="footer-info">
<div class="footer-layout">
<div class="footer-column">
<span class="footer-headline">Resources and development</span>
<ul class="footer-list">
<li><a href="https://blog.svrjs.org">Blog</a> (<a href="https://blog.svrjs.org/atom.xml">Feed</a>)</li>
<li><a href="https://git.svrjs.org">Git server</a></li>
<li><a href="https://svrjs.org/contribute">Contribute</a></li>
<li><a href="https://svrjs.org/changelog">Change log</a></li>
<li><a href="https://downloads.svrjs.org">Downloads</a></li>
<li><a href="https://svrjs.org/mods">Official SVR.JS mods</a></li>
<li><a href="https://svrjs.org/branding">Branding</a></li>
</ul>
</div>
<div class="footer-column">
<span class="footer-headline">Support</span>
<ul class="footer-list">
<li><a href="https://svrjs.org/docs">Documentation</a></li>
<li><a href="https://forum.svrjs.org">Forum</a> (<a href="https://forum.svrjs.org/feed">Feed</a>)</li>
<li><a href="https://svrjs.org/contact">Contact us</a></li>
<li><a href="https://status.svrjs.org">Server uptime</a></li>
</ul>
</div>
<div class="footer-column">
<span class="footer-headline">Social</span>
<ul class="footer-list">
<li><a rel="me" href="https://mastodon.social/@svrjs">Mastodon</a></li>
<li><a rel="me" href="https://twitter.com/SVR_JS">X (Twitter)</a></li>
</ul>
<span class="footer-headline">Policies and Security</span>
<ul class="footer-list">
<li><a href="https://svrjs.org/vulnerabilities">Security</a></li>
<li><a href="https://svrjs.org/toc">Terms and Conditions</a></li>
<li><a href="https://svrjs.org/privacy">Privacy Policy</a></li>
</ul>
</div>
</div>
<hr/>
<p class="footer-copyright-text">Copyright &copy; <%= (date(new Date(), 'YYYY') == "2023" ? "" : "2023-") + date(new Date(), 'YYYY') %> SVR.JS. Content licensed under <a href="https://creativecommons.org/licenses/by/4.0/?ref=chooser-v1" target="_blank" rel="license noopener noreferrer" style="display:inline-block;">CC BY 4.0<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"><img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"></a><br/><%= __('powered_by') %> <a href="https://hexo.io/" target="_blank">Hexo</a></p>
</div>
</footer>

View file

@ -0,0 +1,17 @@
<% if (theme.gauges_analytics){ %>
<!-- Gaug.es Analytics -->
<script>
var _gauges = _gauges || [];
(function() {
var t = document.createElement('script');
t.async = true;
t.id = 'gauges-tracker';
t.setAttribute('data-site-id', '<%= theme.gauges_analytics %>');
t.setAttribute('data-track-path', 'https://track.gaug.es/track.gif');
t.src = 'https://d36ee2fcip1434.cloudfront.net/track.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(t, s);
})();
</script>
<!-- End Gaug.es Analytics -->
<% } %>

View file

@ -0,0 +1,12 @@
<% if (theme.google_analytics){ %>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=<%= theme.google_analytics %>"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '<%= theme.google_analytics %>');
</script>
<!-- End Google Analytics -->
<% } %>

View file

@ -0,0 +1,46 @@
<head>
<meta charset="utf-8">
<%- partial('google-analytics') %>
<%
var title = page.title;
if (is_archive()){
title = __('archive_a');
if (is_month()){
title += ': ' + page.year + '/' + page.month;
} else if (is_year()){
title += ': ' + page.year;
}
} else if (is_category()){
title = __('category') + ': ' + page.category;
} else if (is_tag()){
title = __('tag') + ': ' + page.tag;
}
%>
<title><% if (title){ %><%= title %> - <% } %><%= config.title %></title>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<% if (page.thumbnail) { %>
<%- open_graph({twitter_card: 'summary_large_image', twitter_id: theme.twitter, fb_admins: theme.fb_admins, fb_app_id: theme.fb_app_id, image: url_for(page.thumbnail)}) %>
<% } else { %>
<%- open_graph({twitter_card: 'summary_large_image', twitter_id: theme.twitter, fb_admins: theme.fb_admins, fb_app_id: theme.fb_app_id}) %>
<% } %>
<% if (config.feed) { %>
<%- feed_tag() %>
<% } else if (theme.rss) { %>
<%- feed_tag(theme.rss) %>
<% } %>
<% if (theme.favicon){ %>
<%- favicon_tag(theme.favicon) %>
<% } %>
<!--[if lt IE 9]><%- js('js/html5shiv.js') %><![endif]-->
<!--[if lte IE 7]><%- css('css/style-ie7.css') %><![endif]-->
<%- css('css/style') %>
<% if (theme.fancybox){ %>
<%- css('fancybox/jquery.fancybox.min.css') %>
<% } %>
<% if (theme.links) {%>
<%- css('https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css') %>
<% } %>
</head>

View file

@ -0,0 +1,19 @@
<header id="header">
<div class="header-contents">
<div class="mainlink">
<a href="https://svrjs.org" translate="no">
<span class="headlogo-container">
<img src="/css/images/navbar-logo.png" id="headlogo" alt="SVR.JS logo"><span id="headname">SVR.JS</span>
</span>
</a>
</div>
<div class="navigation">
<ul>
<li><a href="https://forum.svrjs.org">Forum</a></li>
<li><a href="https://git.svrjs.org">Git</a></li>
<li><a href="/">Blog</a></li>
<li><a href="https://svrjs.org/docs">Docs</a></li>
</ul>
</div>
</div>
</header>

View file

@ -0,0 +1,10 @@
<% if (post.categories && post.categories.length){ %>
<div class="article-category">
<%- list_categories(post.categories, {
show_count: false,
class: 'article-category',
style: 'none',
separator: '►'
}) %>
</div>
<% } %>

View file

@ -0,0 +1,3 @@
<a href="<%- url_for(post.path) %>" class="<%= class_name %>">
<time class="dt-published" datetime="<%= date_xml(post.date) %>" itemprop="datePublished"><%= date(post.date, date_format) %></time>
</a>

View file

@ -0,0 +1,29 @@
<% if (post.photos && post.photos.length){ %>
<div class="article-gallery<%= (post.link || post.title) ? "" : " article-gallery-noheader" %>">
<div class="article-gallery-photos">
<% post.photos.forEach(function(photo, i){ %>
<a class="article-gallery-img fancybox" href="<%- url_for(photo) %>" rel="gallery_<%= post._id %>">
<img src="<%- url_for(photo) %>" itemprop="image">
</a>
<% }) %>
</div>
</div>
<% } else if (post.thumbnail){ %>
<div class="article-gallery<%= (post.link || post.title) ? "" : " article-gallery-noheader" %>">
<div class="article-gallery-photos">
<% if (post.link){ %>
<a class="article-gallery-thumbnail" href="<%- url_for(post.link) %>" target="_blank" itemprop="url">
<img src="<%- url_for(post.thumbnail) %>" alt="<%= post.title %>" itemprop="thumbail">
</a>
<% } else if (post.title){ %>
<% if (index){ %>
<a class="article-gallery-thumbnail" href="<%- url_for(post.path) %>" itemprop="url">
<img src="<%- url_for(post.thumbnail) %>" alt="<%= post.title %>" itemprop="thumbnail">
</a>
<% } else { %>
<img src="<%- url_for(post.thumbnail) %>" class="article-gallery-thumbnail" alt="<%= post.title %>" itemprop="thumbnail">
<% } %>
<% } %>
</div>
</div>
<% } %>

View file

@ -0,0 +1,22 @@
<% if (post.prev || post.next){ %>
<nav id="article-nav">
<% if (post.prev){ %>
<a href="<%- url_for(post.prev.path) %>" id="article-nav-newer" class="article-nav-link-wrap">
<strong class="article-nav-caption"><%= __('newer') %></strong>
<div class="article-nav-title">
<% if (post.prev.title){ %>
<%= post.prev.title %>
<% } else { %>
(no title)
<% } %>
</div>
</a>
<% } %>
<% if (post.next){ %>
<a href="<%- url_for(post.next.path) %>" id="article-nav-older" class="article-nav-link-wrap">
<strong class="article-nav-caption"><%= __('older') %></strong>
<div class="article-nav-title"><%= post.next.title %></div>
</a>
<% } %>
</nav>
<% } %>

View file

@ -0,0 +1,6 @@
<% if (post.tags && post.tags.length){ %>
<%- list_tags(post.tags, {
show_count: false,
class: 'article-tag'
}) %>
<% } %>

View file

@ -0,0 +1,15 @@
<% if (post.link){ %>
<h1 itemprop="name">
<a class="<%= class_name %>" href="<%- url_for(post.link) %>" target="_blank" itemprop="url"><%= post.title %></a>
</h1>
<% } else if (post.title){ %>
<% if (index){ %>
<h1 itemprop="name">
<a class="<%= class_name %>" href="<%- url_for(post.path) %>"><%= post.title %></a>
</h1>
<% } else { %>
<h1 class="<%= class_name %>" itemprop="headline name">
<%= post.title %>
</h1>
<% } %>
<% } %>

View file

@ -0,0 +1,5 @@
<aside id="sidebar"<% if (theme.sidebar === 'bottom'){ %> class="outer"<% } %>>
<% theme.widgets.forEach(function(widget){ %>
<%- partial('_widget/' + widget) %>
<% }) %>
</aside>

View file

@ -0,0 +1,8 @@
<% if (site.posts.length){ %>
<div class="widget-wrap">
<h3 class="widget-title"><%= __('archive_a') %></h3>
<div class="widget">
<%- list_archives({show_count: theme.show_count, type: theme.archive_type}) %>
</div>
</div>
<% } %>

View file

@ -0,0 +1,8 @@
<% if (site.categories.length){ %>
<div class="widget-wrap">
<h3 class="widget-title"><%= __('categories') %></h3>
<div class="widget">
<%- list_categories({show_count: theme.show_count}) %>
</div>
</div>
<% } %>

View file

@ -0,0 +1,14 @@
<% if (site.posts.length){ %>
<div class="widget-wrap">
<h3 class="widget-title"><%= __('recent_posts') %></h3>
<div class="widget">
<ul>
<% site.posts.sort('date', -1).limit(theme.recent_posts_limits).each(function(post){ %>
<li>
<a href="<%- url_for(post.path) %>"><%= post.title || '(no title)' %></a>
</li>
<% }) %>
</ul>
</div>
</div>
<% } %>

View file

@ -0,0 +1,12 @@
<% if (site.posts.length){ %>
<div class="widget-wrap">
<h3 class="widget-title"><%= __('search') %></h3>
<div class="widget">
<form action="//duckduckgo.com" method="get" accept-charset="UTF-8" class="search-form">
<input type="search" name="q" class="search-form-input" placeholder="Search (through DuckDuckGo)"><button type="submit" class="search-form-submit">&#xF002;</button>
<!--Input and button on the same line to make IE9 work-->
<input type="hidden" name="sites" value="<%= config.url %>">
</form>
</div>
</div>
<% } %>

View file

@ -0,0 +1,8 @@
<% if (site.tags.length){ %>
<div class="widget-wrap">
<h3 class="widget-title"><%= __('tags') %></h3>
<div class="widget">
<%- list_tags({show_count: theme.show_count}) %>
</div>
</div>
<% } %>

View file

@ -0,0 +1,8 @@
<% if (site.tags.length){ %>
<div class="widget-wrap">
<h3 class="widget-title"><%= __('tagcloud') %></h3>
<div class="widget tagcloud">
<%- tagcloud() %>
</div>
</div>
<% } %>

View file

@ -0,0 +1 @@
<%- partial('_partial/archive', {pagination: config.archive, index: true}) %>

View file

@ -0,0 +1 @@
<%- partial('_partial/archive', {pagination: config.category, index: true}) %>

View file

@ -0,0 +1 @@
<%- partial('_partial/archive', {pagination: 2, index: true}) %>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<html lang="<%= config.language %>">
<%- partial('_partial/head') %>
<body>
<%- partial('_partial/header', null, {cache: !config.relative_link}) %>
<div class="outer">
<section id="main"><%- body %></section>
<% if (theme.sidebar && theme.sidebar !== 'bottom'){ %>
<%- partial('_partial/sidebar', null, {cache: !config.relative_link}) %>
<% } %>
</div>
<%- partial('_partial/footer', null, {cache: !config.relative_link}) %>
<%- partial('_partial/after-footer') %>
</body>
</html>

View file

@ -0,0 +1 @@
<%- partial('_partial/article', {post: page, index: false}) %>

View file

@ -0,0 +1 @@
<%- partial('_partial/article', {post: page, index: false}) %>

View file

@ -0,0 +1 @@
<%- partial('_partial/archive', {pagination: config.tag, index: true}) %>

44
themes/svrjs/package.json Normal file
View file

@ -0,0 +1,44 @@
{
"_from": "hexo-theme-landscape@^1.0.0",
"_id": "hexo-theme-landscape@1.0.0",
"_inBundle": false,
"_integrity": "sha512-bWQJWMqQI78wWiJPQZq5pJBH20TM442ShCaHGRetuEgMraxH0OKxB3NTupJzNEkzEk8DV2yrdizkXdKN6i501A==",
"_location": "/hexo-theme-landscape",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "hexo-theme-landscape@^1.0.0",
"name": "hexo-theme-landscape",
"escapedName": "hexo-theme-landscape",
"rawSpec": "^1.0.0",
"saveSpec": null,
"fetchSpec": "^1.0.0"
},
"_requiredBy": [
"/"
],
"_resolved": "https://registry.npmjs.org/hexo-theme-landscape/-/hexo-theme-landscape-1.0.0.tgz",
"_shasum": "43a549ebb2bea73196200ee4397feb764131a481",
"_spec": "hexo-theme-landscape@^1.0.0",
"_where": "/home/ubuntu/svrjs-blog",
"bugs": {
"url": "https://github.com/hexojs/hexo-theme-landscape/issues"
},
"bundleDependencies": false,
"deprecated": false,
"description": "Hexo Theme Landscape",
"homepage": "https://github.com/hexojs/hexo-theme-landscape#readme",
"keywords": [
"hexo",
"theme",
"landscape"
],
"license": "MIT",
"name": "hexo-theme-landscape",
"repository": {
"type": "git",
"url": "git+https://github.com/hexojs/hexo-theme-landscape.git"
},
"version": "1.0.0"
}

View file

@ -0,0 +1,24 @@
var rUrl = /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[.\!\/\\w]*))?)/;
/**
* Fancybox tag
*
* Syntax:
* {% fancybox /path/to/image [/path/to/thumbnail] [title] %}
*/
hexo.extend.tag.register('fancybox', function(args){
var original = args.shift(),
thumbnail = '';
if (args.length && rUrl.test(args[0])){
thumbnail = args.shift();
}
var title = args.join(' ');
return `<a data-fancybox="gallery" href="${original}" data-caption="${title}">
<img src="${thumbnail || original}" alt="${title}">
</a>
${title ? `<span class="caption">${title}</span>` : ''}`;
});

View file

@ -0,0 +1,65 @@
$block-caption
text-decoration: none
text-transform: uppercase
letter-spacing: 2px
color: color-link
margin-bottom: 1em
margin-left: 5px
line-height: 1em
font-weight: bold
@media screen and (prefers-color-scheme: dark)
color: color-link-dark
$block
background: #fff
box-shadow: 0 5px 10px 0 rgba(0, 0, 0, 0.175)
@media screen and (prefers-color-scheme: dark)
background: #000900
box-shadow: 0 5px 10px 0 rgba(127, 127, 127, 0.175)
$base-style
h1
font-size: 2em
h2
font-size: 1.5em
h3
font-size: 1.3em
h4
font-size: 1.2em
h5
font-size: 1em
h6
font-size: 1em
color: color-grey
hr
border: 1px dashed color-border
strong
font-weight: bold
em, cite
font-style: italic
sup, sub
font-size: 0.75em
line-height: 0
position: relative
vertical-align: baseline
sup
top: -0.5em
sub
bottom: -0.2em
small
font-size: 0.85em
acronym, abbr
border-bottom: 1px dotted
ul, ol, dl
margin: 0 20px
line-height: line-height
ul, ol
ul, ol
margin-top: 0
margin-bottom: 0
ul
list-style: disc
ol
list-style: decimal
dt
font-weight: bold

View file

@ -0,0 +1,47 @@
@font-face
font-family: "FreeSans"
font-display: swap
src: url("/fonts/FreeSans.woff") format("woff"), url("/fonts/FreeSans.ttf") format("truetype")
@font-face
font-family: "FreeSans"
font-weight: bold
font-display: swap
src: url("/fonts/FreeSansBold.woff") format("woff"), url("/fonts/FreeSansBold.ttf") format("truetype")
@font-face
font-family: "FreeSans"
font-style: italic
font-display: swap
src: url("/fonts/FreeSansOblique.woff") format("woff"), url("/fonts/FreeSansOblique.ttf") format("truetype")
@font-face
font-family: "FreeSans"
font-style: italic
font-weight: bold
font-display: swap
src: url("/fonts/FreeSansBoldOblique.woff") format("woff"), url("/fonts/FreeSansBoldOblique.ttf") format("truetype")
@font-face
font-family: "DejaVu Sans Mono"
font-display: swap
src: url("/fonts/DejaVuSansMono.woff") format("woff"), url("/fonts/DejaVuSansMono.ttf") format("truetype")
@font-face
font-family: "DejaVu Sans Mono"
font-weight: bold
font-display: swap
src: url("/fonts/DejaVuSansMono-Bold.woff") format("woff"), url("/fonts/DejaVuSansMono-Bold.ttf") format("truetype")
@font-face
font-family: "DejaVu Sans Mono"
font-style: italic
font-display: swap
src: url("/fonts/DejaVuSansMono-Oblique.woff") format("woff"), url("/fonts/DejaVuSansMono-Oblique.ttf") format("truetype")
@font-face
font-family: "DejaVu Sans Mono"
font-style: italic
font-weight: bold
font-display: swap
src: url("/fonts/DejaVuSansMono-BoldOblique.woff") format("woff"), url("/fonts/DejaVuSansMono-BoldOblique.ttf") format("truetype")

View file

@ -0,0 +1,87 @@
.archives-wrap
margin: block-margin 0
.archives
clearfix()
.archive-year-wrap
margin-bottom: 1em
.archive-year
@extend $block-caption
.archives
column-gap: 10px
@media mq-tablet
column-count: 2
@media mq-normal
column-count: 3
.archive-article
avoid-column-break()
.archive-article-inner
@extend $block
padding: 10px
margin-bottom: 15px
.archive-article-title
text-decoration: none
font-weight: bold
color: color-default
line-height: line-height
&:hover
color: color-link
@media screen and (prefers-color-scheme: dark)
color: color-link-dark
@media screen and (prefers-color-scheme: dark)
color: color-default-dark
.archive-article-footer
margin-top: 1em
.archive-article-date
color: color-grey
text-decoration: none
font-size: 0.85em
line-height: 1em
margin-bottom: 0.5em
display: block
#page-nav
clearfix()
margin: block-margin auto
text-align: center
color: color-link
overflow: hidden
@media screen and (prefers-color-scheme: dark)
color: color-link-dark
a, span
padding: 10px 20px
line-height: 1
height: 2ex
a
color: color-link
text-decoration: none
@media screen and (prefers-color-scheme: dark)
color: color-link-dark
&:hover
background: color-link
color: #fff
@media screen and (prefers-color-scheme: dark)
background: color-link-dark
.prev
float: left
.next
float: right
.page-number
display: inline-block
@media mq-mobile
display: none
.current
color: color-default
font-weight: bold
@media screen and (prefers-color-scheme: dark)
color: color-default-dark
.space
color: color-border

View file

@ -0,0 +1,362 @@
.article
margin: 0
margin-bottom: block-margin
margin-top: block-margin * 0.72
.article-inner
@extend $block
overflow: hidden
.article-meta
clearfix()
.article-date
@extend $block-caption
float: left
.article-category
float: left
line-height: 1em
color: #ccc
margin-left: 8px
&:before
content: "\2022"
@media screen and (prefers-color-scheme: dark)
color: #333
.article-category-link
@extend $block-caption
margin: 0 12px 1em
.article-header
padding: article-padding-tb article-padding 0
.article-title
text-decoration: none
font-size: 2em
font-weight: bold
color: color-default
line-height: line-height-title
a&:hover
color: color-link
@media screen and (prefers-color-scheme: dark)
color: color-link-dark
@media screen and (prefers-color-scheme: dark)
color: color-default-dark
.article-entry
@extend $base-style
clearfix()
color: color-default
padding: 0 article-padding
@media screen and (prefers-color-scheme: dark)
color: color-default-dark
p, table
line-height: line-height
margin: line-height 0
h1, h2, h3, h4, h5, h6
font-weight: bold
h1, h2, h3, h4, h5, h6
line-height: line-height-title
margin: line-height-title 0
a
color: color-link
text-decoration: none
@media screen and (prefers-color-scheme: dark)
color: color-link-dark
&:hover
text-decoration: underline
ul, ol, dl
margin-top: line-height
margin-bottom: line-height
img, video
max-width: 100%
height: auto
display: block
margin: auto
iframe
border: none
table
width: 100%
border-collapse: collapse
border-spacing: 0
position: relative
background-color: #ffffff
box-shadow: 1px 2px 10px rgba(0, 0, 0, 0.2)
@media screen and (prefers-color-scheme: dark)
box-shadow: 1px 2px 10px rgba(127, 127, 127, 0.2)
background-color: #000f00
th
font-weight: bold
background-color: #007000
td
padding: 10px 0
blockquote
font-family: font-sans
margin: line-height 20px
text-align: center
footer
font-size: font-size
margin: line-height 0
font-family: font-sans
cite
&:before
content: ""
padding: 0 0.5em
.pullquote
text-align: left
width: 45%
margin: 0
&.left
margin-left: 0.5em
margin-right: 1em
&.right
margin-right: 0.5em
margin-left: 1em
.caption
color: color-grey
display: block
font-size: 0.9em
margin-top: 0.5em
position: relative
text-align: center
// http://webdesignerwall.com/tutorials/css-elastic-videos
.video-container
position: relative
padding-top: (9 / 16 * 100)% // 16:9 ratio
height: 0
overflow: hidden
iframe, object, embed
position: absolute
top: 0
left: 0
width: 100%
height: 100%
margin-top: 0
.article-more-link a
display: inline-block
line-height: 1em
padding: 6px 15px
background: #00b000
color: #ffffff
text-decoration: none
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.25);
@media screen and (prefers-color-scheme: dark)
box-shadow: 0 4px 8px 0 rgba(127, 127, 127, 0.25);
&:hover
background: #007000
color: #ffffff
text-decoration: none
@media screen and (prefers-color-scheme: dark)
background: #00d000
.article-footer
clearfix()
font-size: 0.85em
line-height: line-height
border-top: 1px solid color-border
padding-top: line-height
margin: 0 article-padding article-padding-tb
a
color: color-grey
text-decoration: none
&:hover
color: color-default
@media screen and (prefers-color-scheme: dark)
color: color-default-dark
.article-tag-list-item
float: left
margin-right: 10px
.article-tag-list-link
&:before
content: "#"
.article-comment-link
float: right
&:before
padding-right: 8px
.article-share-link
cursor: pointer
float: right
margin-left: 20px
&:before
padding-right: 6px
#article-nav
clearfix()
position: relative
@media mq-normal
margin: block-margin 0
&:before
absolute-center(8px)
content: ""
border-radius: 50%
background: color-nav
box-shadow: 0 1px 2px #fff
.article-nav-link-wrap
text-decoration: none
color: color-link
box-sizing: border-box
margin-top: block-margin
text-align: center
display: block
@media screen and (prefers-color-scheme: dark)
color: color-link-dark
&:hover
color: color-default
@media screen and (prefers-color-scheme: dark)
color: color-default-dark
@media mq-normal
width: 50%
margin-top: 0
#article-nav-newer
@media mq-normal
float: left
text-align: right
padding-right: 20px
#article-nav-older
@media mq-normal
float: right
text-align: left
padding-left: 20px
.article-nav-caption
text-transform: uppercase
letter-spacing: 2px
color: color-nav
line-height: 1em
font-weight: bold
#article-nav-newer &
margin-right: -2px
.article-nav-title
font-size: 0.85em
line-height: line-height
margin-top: 0.5em
.article-share-box
position: absolute
display: none
background: #fff
box-shadow: 1px 2px 10px rgba(0, 0, 0, 0.2)
margin-left: -145px
overflow: hidden
z-index: 1
&.on
display: block
@media screen and (prefers-color-scheme: dark)
background: #000
box-shadow: 1px 2px 10px rgba(127, 127, 127, 0.2)
.article-share-input
width: 100%
background: none
box-sizing: border-box
font: 14px font-sans
padding: 0 15px
color: color-default
outline: none
border: 1px solid color-border
height: 36px
line-height: 36px
@media screen and (prefers-color-scheme: dark)
color: color-default-dark
border: 1px solid color-border-dark
.article-share-links
clearfix()
background: color-white
@media screen and (prefers-color-scheme: dark)
background: #000000
$article-share-link
width: 25%
height: 36px
line-height: 36px
display: block
float: left
position: relative
color: #999
text-shadow: 0 1px #fff
text-align: center
&:before
font-size: 20px
absolute-center(@font-size)
text-align: center
&:hover
text-shadow: 0 1px #fff
color: #fff
@media screen and (prefers-color-scheme: dark)
text-shadow: 0 1px #000
.article-share-twitter
@extend $article-share-link
&:hover
background: color-twitter
text-shadow: 0 1px darken(color-twitter, 20%)
.article-share-facebook
@extend $article-share-link
&:hover
background: color-facebook
text-shadow: 0 1px darken(color-facebook, 20%)
.article-share-pinterest
@extend $article-share-link
&:hover
background: color-pinterest
text-shadow: 0 1px darken(color-pinterest, 20%)
.article-share-linkedin
@extend $article-share-link
&:hover
background: color-linkedin
text-shadow: 0 1px darken(color-linkedin, 20%)
.article-gallery
background: #000
position: relative
margin-top: article-padding-tb * 0.66
.article-gallery-noheader
margin-top: 0
.article-gallery-photos
position: relative
overflow: hidden
a.article-gallery-thumbnail
display: block
width: 100%
&:hover
img
opacity: 66.6666%
img
display: block
width: 100%
img.article-gallery-thumbnail
background: #ffffff
display: block
width: 100%
.article-gallery-img
display: none
max-width: 100%
&:first-child
display: block
&.loaded
position: absolute
display: block
img
background: #ffffff
display: block
max-width: 100%
margin: 0 auto

View file

@ -0,0 +1,14 @@
#comments
background: #fff
color: color-default
box-shadow: 1px 2px 3px #ddd
padding: article-padding
border: 1px solid color-border
border-radius: 3px
margin: block-margin 0
a
color: color-link
@media screen and (prefers-color-scheme: dark)
background: #000900
color: color-default-dark
border: 1px solid color-border-dark

View file

@ -0,0 +1,57 @@
#footer
box-shadow: 0 -4px 8px 0 rgba(0, 0, 0, 0.2);
background: color-footer-background
padding: 1.75em 1em
color: color-white
display: block
user-select: none
a
color: #ffffff
text-decoration: underline
&:hover
color: #00ff00
text-decoration: underline
hr
border-color: white
@media screen and (prefers-color-scheme: dark)
box-shadow: 0 -4px 8px 0 rgba(127, 127, 127, 0.2)
#footer-info
max-width: 1440px
width: 100%
margin: auto
.footer-copyright-text
font-size: 1.25em
margin: 0
margin-top: 0.5em
padding-bottom: 0.5em
display: block
text-align: center
.footer-layout
display: table
table-layout: fixed
width: 100%
font-size: 1.075em
@media screen and (max-width: 768px)
display: block
.footer-column
display: table-cell
padding: 0.3em
@media screen and (max-width: 768px)
display: block
text-align: center
padding: 0
.footer-headline
display: block
font-weight: bold
font-size: 1.525em
.footer-list
margin: 0
padding: 0
margin-bottom: 1em
list-style-type: none

View file

@ -0,0 +1,122 @@
#header
position: relative
position: sticky
top: 0
z-index: 10
padding: 0.65em 0.45em
background-color: #ffffff
display: block
user-select: none
&:after
position: absolute
top: 0
bottom: 0
left: 0
right: 0
content: ' '
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2)
z-index: -1
@media screen and (prefers-color-scheme: dark)
box-shadow: 0 4px 8px 0 rgba(127, 127, 127, 0.2)
@media screen and (prefers-color-scheme: dark)
background-color: #004f00
.header-contents
display: table
width: 100%
table-layout: fixed
@media screen and (max-width: 350px)
display: block
.headlogo-container
display: inline-block
#headlogo
display: inline
height: 2.2em
padding-left: 0.2em
padding-right: 0.35em
padding-bottom: 0.03em
vertical-align: middle
@media screen and (max-width: 480px)
height: 1.8em
padding-left: 0
padding-right: 0.25em
padding-bottom: 0
#headname
font-size: 2.3em
font-weight: bold
vertical-align: middle
line-height: 0.9em
display: inline-block
@media screen and (-ms-high-contrast:active), (-ms-high-contrast:none)
margin-top: 0.06em;
@media screen and (max-width: 480px)
font-size: 1.85em
.navigation
width: 57.5%
vertical-align: middle
text-align: right
position: relative
display: table-cell
@media screen and (max-width: 350px)
width: 100%
text-align: left
display: block
ul
overflow-x: auto
overflow-y: hidden
white-space: nowrap
margin: 0
padding: 0
list-style-type: none
display: block
li
display: inline
a
text-decoration: none
font-size: 1.45em
color: #000000
user-select: none
padding: 0 0.25em
&:hover
color: #007f00
@media screen and (max-width: 480px)
font-size: 1.15em
padding: 0 0.225em
@media screen and (max-width: 372px)
font-size: 1.075em
padding: 0 0.2em
@media screen and (prefers-color-scheme: dark)
color: #ffffff
&:hover
color: #00ff00
.mainlink
width: 42.5%
white-space: nowrap
display: table-cell
vertical-align: middle
position: relative
@media screen and (max-width: 350px)
width: 100%
a
text-decoration: none
color: #000000
@media screen and (prefers-color-scheme: dark)
color: #ffffff
@-moz-document url-prefix()
.navigation
ul
li
a
display: inline-block
margin-bottom: 0.05em
.header-clearfix
clear: both
content: ''
display: table

View file

@ -0,0 +1,180 @@
// https://github.com/chriskempson/tomorrow-theme
highlight-background = #2d2d2d
highlight-current-line = #393939
highlight-selection = #515151
highlight-foreground = #cccccc
highlight-comment = #999999
highlight-red = #f2777a
highlight-orange = #f99157
highlight-yellow = #ffcc66
highlight-green = #99cc99
highlight-aqua = #66cccc
highlight-blue = #6699cc
highlight-purple = #cc99cc
$code-block
background: highlight-background
margin: 0 article-padding * -1
padding: 15px article-padding
border-style: solid
border-color: color-border
border-width: 1px 0
overflow: auto
color: highlight-foreground
line-height: font-size * 1.6
@media screen and (prefers-color-scheme: dark)
border-color: color-border-dark
$line-numbers
color: #666
font-size: 0.7225em
line-height: 1.88235em
.article-entry
pre, code
font-family: font-mono
font-size: 0.85em
code
background: color-background
text-shadow: 0 1px #fff
padding: 0 0.3em
@media screen and (prefers-color-scheme: dark)
background: color-background-dark
text-shadow: 0 1px #000
table
background: highlight-background
pre
@extend $code-block
code
background: none
text-shadow: none
padding: 0
.highlight
@extend $code-block
pre
border: none
margin: 0
padding: 0
font-size: 0.85em
table
margin: 0
width: auto
box-shadow: none
tbody
&:after
display: none
td
border: none
padding: 0
figcaption
clearfix()
font-size: 0.85em
color: highlight-comment
line-height: 1em
margin-bottom: 1em
a
float: right
.gutter
user-select: none
overflow-wrap: normal
word-wrap: normal
word-break: keep-all
pre
@extend $line-numbers
text-align: right
padding-right: 20px
.line
height: font-size * line-height
.line.marked
background: highlight-selection
.gist
margin: 0 article-padding * -1
border-style: solid
border-color: color-border
border-width: 1px 0
background: highlight-background
padding: 15px article-padding 15px 0
.gist-file
border: none
font-family: font-mono
margin: 0
.gist-data
background: none
border: none
.line-numbers
@extend $line-numbers
background: none
border: none
padding: 0 20px 0 0
.line-data
padding: 0 !important
.highlight
margin: 0
padding: 0
border: none
font-size: 0.85em
.gist-meta
background: highlight-background
color: highlight-comment
font: 0.85em font-sans
text-shadow: 0 0
padding: 0
margin-top: 1em
margin-left: article-padding
a
color: color-link
font-weight: normal
@media screen and (prefers-color-scheme: dark)
color: color-link-dark
&:hover
text-decoration: underline
pre
.comment
.title
color: highlight-comment
.variable
.attribute
.tag
.regexp
.ruby .constant
.xml .tag .title
.xml .pi
.xml .doctype
.html .doctype
.css .id
.css .class
.css .pseudo
color: highlight-red
.number
.preprocessor
.built_in
.literal
.params
.constant
color: highlight-orange
.class
.ruby .class .title
.css .rules .attribute
color: highlight-green
.string
.value
.inheritance
.header
.ruby .symbol
.xml .cdata
color: highlight-green
.css .hexcolor
color: highlight-aqua
.function
.python .decorator
.python .title
.ruby .function .title
.ruby .title .keyword
.perl .sub
.javascript .title
.coffeescript .title
color: highlight-blue
.keyword
.javascript .function
color: highlight-purple

View file

@ -0,0 +1,73 @@
#sidebar
@media mq-normal
column(sidebar-column)
.widget-wrap
margin: 0
margin-top: block-margin * 0.72
margin-bottom: block-margin
.widget-title
@extend $block-caption
.widget
color: color-sidebar-text
background: color-widget-background
box-shadow: 0 4px 8px rgba(0,0,0,0.175)
padding: 15px
@media screen and (prefers-color-scheme: dark)
background: color-widget-background-dark
box-shadow: 0 4px 8px rgba(127,127,127,0.175)
a
color: color-link
text-decoration: none
@media screen and (prefers-color-scheme: dark)
color: color-link-dark
&:hover
text-decoration: underline
ul, ol, dl
ul, ol, dl
margin-left: 15px
list-style: disc
.search-form
width: 100%
margin: auto
display: flex
position: relative
box-shadow: 0 3px 6px rgba(0, 0, 0, 0.125)
@media screen and (prefers-color-scheme: dark)
box-shadow: 0 3px 6px rgba(127, 127, 127, 0.125)
.search-form-input
padding: 0.25em
font-family: inherit
font-size: 0.925em
width: 80%
vertical-align: middle
border: 0.125em #00b000 solid
outline: none
border-radius: 0px
box-sizing: border-box
@media screen and (prefers-color-scheme: dark)
background-color: #000000
color: #ffffff
.search-form-submit
padding: 0.3125em
font-family: ForkAwesome
font-size: 0.925em
width: 20%
cursor: pointer
vertical-align: middle
background-color: #00b000
border: none
outline: none
color: #ffffff
box-sizing: border-box
&:hover
background-color: #007000
@media screen and (prefers-color-scheme: dark)
background-color: #00d000
&:focus
background-color: #007000
@media screen and (prefers-color-scheme: dark)
background-color: #00d000

View file

@ -0,0 +1,29 @@
.widget-wrap
margin-bottom: block-margin !important
@media mq-normal
column(main-column)
.widget-title
color: #ccc
text-transform: uppercase
letter-spacing: 2px
margin-bottom: .5em
line-height: 1em
font-weight: bold
@media screen and (prefers-color-scheme: dark)
color: #333
.widget
color: color-grey
ul, ol
li
display: inline-block
zoom:1
*display:inline
padding-right: .75em
/* Having problems getting balanced white space between items
li:before
content: " | "
li:first-child:before
content: none
*/

View file

@ -0,0 +1,35 @@
if sidebar is bottom
@import "sidebar-bottom"
else
@import "sidebar-aside"
.widget
@extend $base-style
line-height: line-height
word-wrap: break-word
font-size: 0.9em
ul, ol
list-style: none
margin: 0
ul, ol
margin: 0 20px
ul
list-style: disc
ol
list-style: decimal
.category-list-count
.tag-list-count
.archive-list-count
padding-left: 5px
color: color-grey
font-size: 0.85em
&:before
content: "("
&:after
content: ")"
.tagcloud
a
margin-right: 5px
display: inline-block

View file

@ -0,0 +1,38 @@
/////////////////
// Semantic.gs // for Stylus: http://learnboost.github.com/stylus/
/////////////////
// Utility function you should never need to modify this
// _gridsystem-width = (column-width + gutter-width) * columns
gridsystem-width(_columns = columns)
(column-width + gutter-width) * _columns
// Set @total-width to 100% for a fluid layout
// total-width = gridsystem-width(columns)
total-width = 100%
//////////
// GRID //
//////////
body
clearfix()
width: 100%
row(_columns = columns)
clearfix()
display: block
width: total-width * ((gutter-width + gridsystem-width(_columns)) / gridsystem-width(_columns))
margin: 0 total-width * (((gutter-width * .5) / gridsystem-width(_columns)) * -1)
column(x, _columns = columns)
display: inline
float: left
width: total-width * ((((gutter-width + column-width) * x) - gutter-width) / gridsystem-width(_columns))
margin: 0 total-width * ((gutter-width * .5) / gridsystem-width(_columns))
push(offset = 1)
margin-left: total-width * (((gutter-width + column-width) * offset) / gridsystem-width(columns))
pull(offset = 1)
margin-right: total-width * (((gutter-width + column-width) * offset) / gridsystem-width(columns))

View file

@ -0,0 +1,31 @@
// http://www.zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement/
hide-text()
text-indent: 100%
white-space: nowrap
overflow: hidden
// http://codepen.io/shshaw/full/gEiDt
absolute-center(width, height = width)
// margin: auto
// position: absolute
// top: 50%
// top: 0
// left: 0
// bottom: 0
// right: 0
// width: width
// height: height
// overflow: auto
width: width
height: height
position: absolute
top: 50%
left: 50%
margin-top: width * -0.5
margin-left: height * -0.5
avoid-column-break()
vendor("column-break-inside", avoid, only: webkit)
page-break-inside: avoid // for firefox
overflow: hidden // fix for firefox
break-inside: avoid-column

View file

@ -0,0 +1,73 @@
// Config
support-for-ie = true
vendor-prefixes = webkit moz ms o official
// Colors
color-default = #000000
color-default-dark = #ffffff
color-grey = #999999
color-white = #ffffff
color-border = #dddddd
color-border-dark = #222222
color-link = #007000
color-link-dark = #00b000
color-background = #dfffdf
color-background-dark = #002000
color-sidebar-text = #777777
color-widget-background = #ffffff
color-widget-border = #ccddcc
color-widget-background-dark = #000000
color-widget-border-dark = #223322
color-footer-background = #007000
color-mobile-nav-background = #007000
color-nav = #007000
color-twitter = #00aced
color-facebook = #3b5998
color-pinterest = #cb2027
color-linkedin = #0077B5
// Fonts
// font-sans = -apple-system, BlinkMacSystemFont,
// "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell",
// "Fira Sans", "Droid Sans", "Helvetica Neue",
// sans-serif
font-sans = FreeSans, Helvetica, Tahoma, Verdana, Arial, sans-serif
//font-serif = Georgia, "Times New Roman", serif
font-serif = FreeSerif, "Times New Roman", Times, Georgia, serif
//font-mono = "Source Code Pro", Consolas, Monaco, Menlo, Consolas, monospace
font-mono = "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Hack, Menlo, Consolas, Monaco, monospace
font-icon = ForkAwesome
font-size = 1em
line-height = 1.45em
line-height-title = 1.1em
// Header
logo-size = 40px
subtitle-size = 16px
banner-height = 300px
banner-url = hexo-config("banner")
sidebar = hexo-config("sidebar")
// Layout
block-margin = 50px
article-padding = 14px
article-padding-tb = 17px
mobile-nav-width = 280px
main-column = 9
sidebar-column = 3
if sidebar and sidebar isnt bottom
_sidebar-column = sidebar-column
else
_sidebar-column = 0
// Grids
column-width = 80px
gutter-width = 20px
columns = main-column + _sidebar-column
// Media queries
mq-mobile = "screen and (max-width: 479px)"
mq-tablet = "screen and (min-width: 480px) and (max-width: 767px)"
mq-normal = "screen and (min-width: 768px)"

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View file

@ -0,0 +1,21 @@
@import "_variables"
global-reset()
.mainlink
float: left
.headname
line-height: normal
display: inline
.navigation
float: right
padding: 10px 0
.footer-layout
display: block
text-align: center
.footer-column
display: block

View file

@ -0,0 +1,67 @@
@import "nib"
@import "_variables"
@import "_font"
@import "_util/mixin"
@import "_util/grid"
global-reset()
a
&:focus
outline: auto
outline: revert
input, button
margin: 0
padding: 0
&::-moz-focus-inner
border: 0
padding: 0
body
background: color-background
font: font-size font-sans
-webkit-text-size-adjust: 100%
@media screen and (prefers-color-scheme: dark)
background: color-background-dark
.outer
clearfix()
max-width: (column-width + gutter-width) * columns + gutter-width
margin: 0 auto
padding: 0 (gutter-width * 0.6)
@media mq-normal
padding: 0 gutter-width
.inner
column(columns)
.left, .alignleft
float: left
.right, .alignright
float: right
.clear
clear: both
if sidebar and sidebar isnt bottom
#main
@media mq-normal
column(main-column)
if sidebar is left
@media mq-normal
#main
float: right
@import "_extend"
@import "_partial/header"
@import "_partial/article"
@import "_partial/comment"
@import "_partial/archive"
@import "_partial/footer"
@import "_partial/highlight"
if sidebar
@import "_partial/sidebar"

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show more