Initial commit

This commit is contained in:
Spencer Pincott
2024-07-15 22:20:13 -04:00
commit 97737ca1ae
16618 changed files with 934131 additions and 0 deletions

5
archetypes/default.md Normal file
View File

@@ -0,0 +1,5 @@
+++
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
date = {{ .Date }}
draft = true
+++

BIN
assets/images/avatar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 MiB

453
config.toml Normal file
View File

@@ -0,0 +1,453 @@
[module]
[module.hugoVersion]
extended = true
min = "0.62.0"
# Menu config
[menu]
[[menu.main]]
weight = 1
identifier = "posts"
# you can add extra information before the name (HTML format is supported), such as icons
pre = ""
# you can add extra information after the name (HTML format is supported), such as icons
post = ""
name = "Posts"
url = "/posts/"
# title will be shown when you hover on this menu link
title = ""
[[menu.main]]
weight = 2
identifier = "tags"
pre = ""
post = ""
name = "Tags"
url = "/tags/"
title = ""
[[menu.main]]
weight = 3
identifier = "categories"
pre = ""
post = ""
name = "Categories"
url = "/categories/"
title = ""
[params]
# site default theme ["auto", "light", "dark"]
defaultTheme = "auto"
# public git repo url only then enableGitInfo is true
gitRepo = ""
# which hash function used for SRI, when empty, no SRI is used
# ["sha256", "sha384", "sha512", "md5"]
fingerprint = ""
# date format
dateFormat = "2006-01-02"
# website title for Open Graph and Twitter Cards
title = "KeepIt"
# website description for RSS, SEO, Open Graph and Twitter Cards
description = "This is my KeepIt site"
# website images for Open Graph and Twitter Cards
images = []
# Header config
[params.header]
# desktop header mode ["fixed", "normal", "auto"]
desktopMode = "fixed"
# mobile header mode ["fixed", "normal", "auto"]
mobileMode = "auto"
# Header title config
[params.header.title]
# URL of the LOGO
logo = ""
# title name
name = "My KeepIt site"
# you can add extra information before the name (HTML format is supported), such as icons
pre = ""
# you can add extra information after the name (HTML format is supported), such as icons
post = ""
# whether to use typeit animation for title name
typeit = false
# Footer config
[params.footer]
enable = true
# Custom content (HTML format is supported)
custom = ""
# whether to show Hugo and theme info
hugo = true
# whether to show copyright info
copyright = true
# whether to show the author
author = true
# site creation time
since = 2022
# ICP info only in China (HTML format is supported)
icp = ""
# license info (HTML format is supported)
license= ""
# Section (all posts) page config
[params.section]
# special amount of posts in each section page
paginate = 20
# date format (month and day)
dateFormat = "01-02"
# amount of RSS pages
rss = 10
# List (category or tag) page config
[params.list]
# special amount of posts in each list page
paginate = 20
# date format (month and day)
dateFormat = "01-02"
# amount of RSS pages
rss = 10
# App icon config
[params.app]
# optional site title override for the app when added to an iOS home screen or Android launcher
title = "My KeepIt site"
# whether to omit favicon resource links
noFavicon = false
# modern SVG favicon to use in place of older style .png and .ico files
svgFavicon = ""
# Android browser theme color
themeColor = "#ffffff"
# Safari mask icon color
iconColor = "#5bbad5"
# Windows v8-11 tile color
tileColor = "#da532c"
# Search config
[params.search]
enable = true
# type of search engine ["lunr", "algolia"]
type = "lunr"
# max index length of the chunked content
contentLength = 4000
# placeholder of the search bar
placeholder = ""
# max number of results length
maxResultLength = 10
# snippet length of the result
snippetLength = 30
# HTML tag name of the highlight part in results
highlightTag = "em"
# whether to use the absolute URL based on the baseURL in search index
absoluteURL = false
[params.search.algolia]
index = ""
appID = ""
searchKey = ""
# Home page config
[params.home]
# amount of RSS pages
rss = 10
# Home page profile
[params.home.profile]
enable = true
# Gravatar Email for preferred avatar in home page
gravatarEmail = "test1@example.com"
# URL of avatar shown in home page
avatarURL = ""
# title shown in home page (HTML format is supported)
title = ""
# subtitle shown in home page
subtitle = "This is my KeepIt site"
# whether to use typeit animation for subtitle
typeit = true
# whether to show social links
social = true
# disclaimer (HTML format is supported)
disclaimer = ""
# Home page posts
[params.home.posts]
enable = true
# special amount of posts in each home posts page
paginate = 6
# Social config in home page
[params.social]
GitHub = "xxx"
Linkedin = "xxx"
Twitter = "xxx"
Instagram = "xxx"
Facebook = "xxx"
Telegram = "xxx"
Medium = "xxx"
Gitlab = "xxx"
Youtubelegacy = "xxx"
Youtubecustom = "xxx"
Youtubechannel = "xxx"
Tumblr = "xxx"
Quora = "xxx"
Keybase = "xxx"
Pinterest = "xxx"
Reddit = "xxx"
Codepen = "xxx"
FreeCodeCamp = "xxx"
Bitbucket = "xxx"
Stackoverflow = "xxx"
Weibo = "xxx"
Odnoklassniki = "xxx"
VK = "xxx"
Flickr = "xxx"
Xing = "xxx"
Snapchat = "xxx"
Soundcloud = "xxx"
Spotify = "xxx"
Bandcamp = "xxx"
Paypal = "xxx"
Fivehundredpx = "xxx"
Mix = "xxx"
Goodreads = "xxx"
Lastfm = "xxx"
Steam = "xxx"
Thingiverse = "xxx"
Gitea = "xxx"
Email = "xxx"
# Page global config
[params.page]
# whether to hide a page from home page
hiddenFromHomePage = false
# whether to hide a page from search results
hiddenFromSearch = false
# whether to enable twemoji
twemoji = false
# whether to enable lightgallery
lightgallery = false
# whether to enable the ruby extended syntax
ruby = true
# whether to enable the fraction extended syntax
fraction = true
# whether to enable the fontawesome extended syntax
fontawesome = true
# whether to show link to Raw Markdown content of the content
linkToMarkdown = true
# whether to show the full text content in RSS
rssFullText = false
# Table of the contents config
[params.page.toc]
# whether to enable the table of the contents
enable = true
# whether to keep the static table of the contents in front of the post
keepStatic = false
# whether to make the table of the contents in the sidebar automatically collapsed
auto = true
# Code config
[params.page.code]
# whether to show the copy button of the code block
copy = true
# the maximum number of lines of displayed code by default
maxShownLines = 50
# KaTeX mathematical formulas config (KaTeX https://katex.org/)
[params.page.math]
enable = false
# default inline delimiter is $ ... $ and \( ... \)
inlineLeftDelimiter = ""
inlineRightDelimiter = ""
# default block delimiter is $$ ... $$, \[ ... \], \begin{equation} ... \end{equation} and some other functions
blockLeftDelimiter = ""
blockRightDelimiter = ""
# KaTeX extension copy_tex
copyTex = true
# KaTeX extension mhchem
mhchem = true
# Mapbox GL JS config (Mapbox GL JS https://docs.mapbox.com/mapbox-gl-js)
[params.page.mapbox]
# access token of Mapbox GL JS
# Mapbox GL JS 的 access token
accessToken = ""
# style for the light theme
lightStyle = "mapbox://styles/mapbox/light-v10?optimize=true"
# style for the dark theme
darkStyle = "mapbox://styles/mapbox/dark-v10?optimize=true"
# whether to add NavigationControl (https://docs.mapbox.com/mapbox-gl-js/api/#navigationcontrol)
navigation = true
# whether to add GeolocateControl (https://docs.mapbox.com/mapbox-gl-js/api/#geolocatecontrol)
geolocate = true
# whether to add ScaleControl (https://docs.mapbox.com/mapbox-gl-js/api/#scalecontrol)
scale = true
# whether to add FullscreenControl (https://docs.mapbox.com/mapbox-gl-js/api/#fullscreencontrol)
fullscreen = true
# Social share links in post page
[params.page.share]
enable = true
Twitter = false
Facebook = true
Linkedin = false
Whatsapp = false
Pinterest = false
Tumblr = false
HackerNews = false
Reddit = false
VK = false
Buffer = false
Xing = false
Line = false
Instapaper = false
Pocket = false
Flipboard = false
Weibo = false
Blogger = false
Baidu = false
Odnoklassniki = false
Evernote = false
Skype = false
Trello = false
Mix = false
# Comment config
[params.page.comment]
enable = false
# Disqus comment config (https://disqus.com/)
# Disqus 评论系统设置 (https://disqus.com/)
[params.page.comment.disqus]
enable = false
# Disqus shortname to use Disqus in posts
# Disqus 的 shortname用来在文章中启用 Disqus 评论系统
shortname = ""
# Gitalk comment config (https://github.com/gitalk/gitalk)
[params.page.comment.gitalk]
enable = false
owner = ""
repo = ""
clientId = ""
clientSecret = ""
# Valine comment config (https://github.com/xCss/Valine)
[params.page.comment.valine]
enable = false
appId = ""
appKey = ""
placeholder = ""
avatar = "mp"
meta= ""
pageSize = 10
lang = ""
visitor = true
recordIP = true
highlight = true
enableQQ = false
serverURLs = ""
# emoji data file name, default is "google.yml"
# ["apple.yml", "google.yml", "facebook.yml", "twitter.yml"]
# located in "themes/KeepIt/assets/data/emoji/" directory
# you can store your own data files in the same path under your project:
# "assets/data/emoji/"
emoji = ""
# Facebook comment config (https://developers.facebook.com/docs/plugins/comments)
[params.page.comment.facebook]
enable = false
width = "100%"
numPosts = 10
appId = ""
languageCode = ""
# Telegram comments config (https://comments.app/)
[params.page.comment.telegram]
enable = false
siteID = ""
limit = 5
height = ""
color = ""
colorful = true
dislikes = false
outlined = false
# Commento comment config (https://commento.io/)
[params.page.comment.commento]
enable = false
# Utterances comment config (https://utteranc.es/)
[params.page.comment.utterances]
enable = false
# owner/repo
repo = ""
issueTerm = "pathname"
label = ""
lightTheme = "github-light"
darkTheme = "github-dark"
# Third-party library config
[params.page.library]
[params.page.library.css]
# someCSS = "some.css"
# located in "assets/"
# Or
# someCSS = "https://cdn.example.com/some.css"
[params.page.library.js]
# someJavascript = "some.js"
# located in "assets/"
# Or
# someJavascript = "https://cdn.example.com/some.js"
# Page SEO config
[params.page.seo]
# image URL
images = []
# Publisher info
[params.page.seo.publisher]
name = ""
logoUrl = ""
# TypeIt config
[params.typeit]
# typing speed between each step (measured in milliseconds)
speed = 100
# blinking speed of the cursor (measured in milliseconds)
cursorSpeed = 1000
# character used for the cursor (HTML format is supported)
cursorChar = "|"
# cursor duration after typing finishing (measured in milliseconds, "-1" means unlimited)
duration = -1
# Site verification code for Google/Bing/Yandex/Pinterest/Baidu
[params.verification]
google = ""
bing = ""
yandex = ""
pinterest = ""
baidu = ""
# Site SEO config
[params.seo]
# image URL
image = ""
# thumbnail URL
thumbnailUrl = ""
# Analytics config
[params.analytics]
enable = false
# Google Analytics
[params.analytics.google]
id = ""
# whether to anonymize IP
anonymizeIP = true
# Fathom Analytics
[params.analytics.fathom]
id = ""
# server url for your tracker if you're self hosting
server = ""
# Cookie consent config
[params.cookieconsent]
enable = false
# text strings used for Cookie consent banner
[params.cookieconsent.content]
message = ""
dismiss = ""
link = ""
# CDN config for third-party library files
[params.cdn]
# CDN data file name, disabled by default
# ["jsdelivr.yml"]
# located in "themes/KeepIt/assets/data/cdn/" directory
# you can store your own data files in the same path under your project:
# "assets/data/cdn/"
data = "jsdelivr.yml"
# Compatibility config
[params.compatibility]
# whether to use Polyfill.io to be compatible with older browsers
polyfill = false
# whether to use object-fit-images to be compatible with older browsers
objectFit = false

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

View File

@@ -0,0 +1,60 @@
---
weight: 1
title: "Windows 10 LE on Freenas"
date: "2020-05-12T00:00:00Z"
lastmod: "2020-05-12T00:00:00Z"
draft: false
author: "Spencer"
description: "A guide for running Windows 10 LE in a Freenas VM"
images: []
resources:
- name: "featured-image"
src: "featured.png"
tags: ["Freenas"]
categories: [""]
lightgallery: true
toc:
auto: false
---
FreeNAS' virtual machine utilites are still very limited and while additions are being made most will find that getting a VM setup and running can be tricky when compared to say Virtualbox. This tutorial is just a quick overview of what I needed to do to get Windows 10 LE up an running on FreeNAS.
### Creating the install image
Windows 10 LE is a lightweight version of Windows 10. I downloaded my copy [here](https://archive.org/download/Windows.10.Lite.Edition.v6.x64.2018).
Next we need to be able to boot from this image in UEFI. I found that I was unable to do this with the downloaded image however after a lot of research I came accross this post [here](https://forum.imgburn.com/index.php?/topic/24193-problem-i-can-not-create-a-uefi-bootable-iso-image/). The process while clunky did produce an image that was UEFI bootable on FreeNAS.
All that is required to perform this conversion is [Rufus](https://rufus.ie/), [mkisofs](http://reboot.pro/index.php?app=core&module=attach&section=attach&attach_id=15214) and a thumb drive large enough for the Windows 10 image.
1. Using Rufus create a bootable usb drive using the Window 10 image.
![png](./rufus.png)
2. Using mkisofs create a UEFI bootable Windows 10 LE image. **inputdir** will be the drive letter corresponding to your usb drive and **outputiso** will be the save name and location of the created iso
```
set inputdir=D:\
set outputiso=C:\WINDOWS10LE.iso
set label="WINDOWS10_LE_UEFI"
set biosboot=Boot/etfsboot.com
set efiboot=efi/microsoft/boot/efisys.bin
mkisofs -iso-level 4 -l -R -UDF -D -volid %label% -b %biosboot% -no-emul-boot \
-boot-load-size 8 -hide boot.catalog -eltorito-alt-boot -eltorito-platform efi \
-no-emul-boot -b %efiboot% -o %outputiso% %inputdir%
```
Congratulations! You now have a Windows 10 LE image that is bootable in a FreeNAS virtual machine. Next lets get to installing it.
### Setting up the virtual machine
This part is pretty streamlined in newer versions of FreeNAS with everything being done from the GUI.
The details of my VM configuration are listed here.
![png](./FreenasWin10LE7.png)
I wouldn't recommend using a disk smaller than 17GB.

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1,36 @@
---
weight: 1
title: "Using Check Digits for Better UX"
date: "2020-06-20T00:00:00Z"
lastmod: "2020-06-20T00:00:00Z"
draft: false
author: "Spencer"
description: "How using a check digit can make for a better user experience in key entry scenarios."
images: []
resources:
- name: "featured-image"
src: "featured.jpg"
tags: []
categories: ["wedding-project"]
lightgallery: true
toc:
auto: false
---
Recently I was tasked with creating a website for my sister wedding, historically hosted here (try 123456789 as an RSVP code). One of the features required was an RSVP system so guests could easily inform us if they were coming and if they were bringing a plus one. A code system seemed to be the simplest approach including each guest's unique code in the invitation which they could then use to RSVP preventing just anyone from RSVP'in to the event. The first problem to solve was knowing whether to prompt them to input plus one information since I wanted to keep the whole process down to a single network request for simplicity. Using a check digit ended up being the perfect solution for this while also including the benefit of reducing the chance of a guest accidentally inputting the wrong code and becoming frustrated when the request wouldn't go through.
## How do check digits work?
For those that don't know how check digits work the process is pretty simple. You simply include 1 extra digit to the end of any code or id that is generated using some formula. Usually a modulus is used to reduce the result to a single digit.
## How I used check digits
In my application I leveraged check digits in 2 ways.
The first is by not presenting the RSVP form until a possible RSVP code is inputted. This stops the user from entering the rest of their information until they get to code correct without of the need of an additional network request. A single mistake will result in the form not opening and them being required to recheck their input. Multiple mistakes could result in the form opening if they happen to be particularly unlucky however the server does validate if the code later and will reject the request if it is not correct.
The other way I used a check digit was to solve my original problem of when to present the plus one form. By using a secondary check digit I could actually run 2 checks on the code and if they both passed then the user would be presented with the plus one section.
The best part about this solution is that it doesn't require a timely request to a server and the additional infrastructure and security considerations that go along with that. There may be other security concerns however.
## Security concerns
Obviously there may be some security concerns with using a check digit the fact that it reduces the overall number of possible codes for a given code length. This is of course true because you can't take the check digit in account when calculating the total possible codes. So if before adding a check digit your code was 6 digits long and therefor had a million possibilities then after adding a check digits this would be the same. In my application I was using it for a small wedding on a non critical system and I used Re-Captcha as a second set of security so that possible codes couldn't be brute forced.
Overall using check digits ended up being a simple solution to my problem and the whole system ended up working flawlessly.

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

View File

@@ -0,0 +1,26 @@
---
weight: 1
title: "Pinscott Wedding"
date: "2019-12-03T00:00:00Z"
lastmod: "2019-12-03T00:00:00Z"
external_link: "https://spencassemble.com/wedding"
url_code: "https://gitlab.spencassemble.com/spencerpincott/pinscott-wedding"
draft: false
author: "Spencer"
description: "Website for my sister's wedding"
images: []
resources:
- name: "featured-image"
src: "featured.jpg"
tags: []
categories: ["wedding-project"]
lightgallery: true
toc:
auto: false
---
This project was just a little something I threw together for my sister's wedding. It includes an about page, some Q&A, links to a registry and a clever RSVP system. It was built using the hugo framework using the [Dimensions theme](https://html5up.net/dimension).

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

View File

@@ -0,0 +1,26 @@
---
weight: 1
title: "University Project Finder"
date: "2019-12-03T00:00:00Z"
lastmod: "2019-12-03T00:00:00Z"
external_link: "https://spencassemble.com/upf"
url_code: "https://gitlab.spencassemble.com/spencerpincott/upf"
draft: false
author: "Spencer"
description: "Queen's university final project"
images: []
resources:
- name: "featured-image"
src: "featured.jpg"
tags: ["PHP"]
categories: []
lightgallery: true
toc:
auto: false
---
This was my final undergrad project for university. The requirements were to create a website to aid biology students find their undergraduate project. It included the ability to search by keyword or phrase on all posted project, filter them and then message professors about them. It would leverage the Queen's SSO for student and professor sign up as well as sending out notificaton emails about new posting and message requests. The project never got a chance to be hosted however because of security reasons. This being my first big site there were obvious gaps in the security and the end of my degree had come and gone.

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 KiB

View File

@@ -0,0 +1,26 @@
---
weight: 1
title: "Search Mapper"
date: "2019-12-03T00:00:00Z"
lastmod: "2019-12-03T00:00:00Z"
external_link: "https://spencassemble.com/search-mapper"
url_code: "https://gitlab.spencassemble.com/spencerpincott/search-mapper"
draft: false
author: "Spencer"
description: "Maps housing searches"
images: []
resources:
- name: "featured-image"
src: "featured.jpg"
tags: ["node.js"]
categories: []
lightgallery: true
toc:
auto: false
---
This is a simple project a threw together out of necessity when I was looking at renting a new place and was later expanded upon when I started looking for a place to buy. It first allows Kijiji searches to be mapped out, a feature Kijiji themselves does not offer. It does this through page scrapping and is extremly inefficient. I later added support for using Remax and Realtor. While these sites do offer the ability to map search results I didn't enjoy how they were grouped and instead decided to expand this project leveraging their APIs and data.

5
hugo.toml Normal file
View File

@@ -0,0 +1,5 @@
baseURL = 'https://spencassemble.com/'
languageCode = 'en-us'
title = 'SpencAssemble'
theme = 'keepit'

View File

@@ -0,0 +1 @@
#id-1{text-align:right}#id-1 strong{color:#00b1ff}

View File

@@ -0,0 +1 @@
{"Target":"css/2f1ef0.min.css","MediaType":"text/css","Data":{}}

View File

@@ -0,0 +1 @@
#id-1{text-align:right}

View File

@@ -0,0 +1 @@
{"Target":"css/790698.min.css","MediaType":"text/css","Data":{}}

View File

@@ -0,0 +1 @@
#id-1 img{height:1.25rem}

View File

@@ -0,0 +1 @@
{"Target":"css/f79aa6.min.css","MediaType":"text/css","Data":{}}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"Target":"css/style.min.css","MediaType":"text/css","Data":{}}

View File

@@ -0,0 +1,3 @@
[theme=dark] .aplayer{background:#212121}[theme=dark] .aplayer.aplayer-withlist .aplayer-info{border-bottom-color:#5c5c5c}[theme=dark] .aplayer.aplayer-fixed .aplayer-list{border-color:#5c5c5c}[theme=dark] .aplayer .aplayer-body{background-color:#212121}[theme=dark] .aplayer .aplayer-info{border-top-color:#212121}[theme=dark] .aplayer .aplayer-info .aplayer-music .aplayer-title{color:#fff}[theme=dark] .aplayer .aplayer-info .aplayer-music .aplayer-author{color:#fff}[theme=dark] .aplayer .aplayer-info .aplayer-controller .aplayer-time{color:#eee}[theme=dark] .aplayer .aplayer-info .aplayer-controller .aplayer-time .aplayer-icon path{fill:#eee}[theme=dark] .aplayer .aplayer-list{background-color:#212121}[theme=dark] .aplayer .aplayer-list::-webkit-scrollbar-thumb{background-color:#999}[theme=dark] .aplayer .aplayer-list::-webkit-scrollbar-thumb:hover{background-color:#bbb}[theme=dark] .aplayer .aplayer-list li{color:#fff;border-top-color:#666}[theme=dark] .aplayer .aplayer-list li:hover{background:#4e4e4e}[theme=dark] .aplayer .aplayer-list li.aplayer-list-light{background:#6c6c6c}[theme=dark] .aplayer .aplayer-list li .aplayer-list-index{color:#ddd}[theme=dark] .aplayer .aplayer-list li .aplayer-list-author{color:#ddd}[theme=dark] .aplayer .aplayer-lrc{text-shadow:-1px -1px 0 #666}[theme=dark] .aplayer .aplayer-lrc:before{background:-moz-linear-gradient(top, #212121 0%, rgba(33,33,33,0) 100%);background:-webkit-linear-gradient(top, #212121 0%, rgba(33,33,33,0) 100%);background:linear-gradient(to bottom, #212121 0%, rgba(33,33,33,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#212121', endColorstr='#00212121',GradientType=0 )}[theme=dark] .aplayer .aplayer-lrc:after{background:-moz-linear-gradient(top, rgba(33,33,33,0) 0%, rgba(33,33,33,0.8) 100%);background:-webkit-linear-gradient(top, rgba(33,33,33,0) 0%, rgba(33,33,33,0.8) 100%);background:linear-gradient(to bottom, rgba(33,33,33,0) 0%, rgba(33,33,33,0.8) 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#00212121', endColorstr='#cc212121',GradientType=0 )}[theme=dark] .aplayer .aplayer-lrc p{color:#fff}[theme=dark] .aplayer .aplayer-miniswitcher{background:#484848}[theme=dark] .aplayer .aplayer-miniswitcher .aplayer-icon path{fill:#eee}
/*# sourceMappingURL=dark.min.css.map */

View File

@@ -0,0 +1 @@
{"Target":"lib/aplayer/dark.min.css","MediaType":"text/css","Data":{}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square150x150logo src="/images/fav/mstile-150x150.png"/>
<TileColor>#ff46e6</TileColor>
</tile>
</msapplication>
</browserconfig>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="220.000000pt" height="220.000000pt" viewBox="0 0 220.000000 220.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.14, written by Peter Selinger 2001-2017
</metadata>
<g transform="translate(0.000000,220.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M215 1923 c-54 -4 -186 -24 -202 -30 -11 -4 -13 -144 -13 -753 l0
-748 113 -7 c109 -7 463 13 616 35 35 5 68 7 73 4 4 -3 8 -19 8 -35 0 -44 20
-117 36 -130 8 -6 14 -20 14 -30 0 -47 44 -25 142 69 47 46 108 81 140 82 4 0
20 -18 35 -41 l28 -40 73 -2 c82 -3 80 -7 57 88 -26 110 -21 151 30 230 25 39
45 73 45 76 0 22 -55 111 -80 129 -62 44 -39 61 124 90 181 32 287 72 450 172
123 74 179 126 211 195 34 70 26 100 -37 152 -96 78 -259 104 -390 63 -35 -11
-82 -25 -105 -31 -23 -6 -66 -32 -95 -57 -29 -24 -59 -43 -68 -42 -8 2 -57 67
-110 146 -68 101 -112 156 -155 192 -33 28 -61 55 -63 60 -2 6 -9 10 -16 10
-7 0 -21 9 -30 19 -10 11 -45 29 -79 42 -34 12 -68 27 -74 32 -7 5 -13 7 -13
4 0 -3 -28 4 -62 14 -125 39 -404 58 -603 42z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,14 @@
{
"name": "SpencAssemble",
"short_name": "SpencAssemble",
"icons": [
{
"src": "/images/fav/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
}
],
"theme_color": "#ffffff",
"background_color": "#ffffff",
"display": "standalone"
}

View File

@@ -0,0 +1,82 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ "master" ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ "master" ]
schedule:
- cron: '45 19 * * 4'
jobs:
analyze:
name: Analyze
# Runner size impacts CodeQL analysis time. To learn more, please see:
# - https://gh.io/recommended-hardware-resources-for-running-codeql
# - https://gh.io/supported-runners-and-hardware-resources
# - https://gh.io/using-larger-runners
# Consider using larger runners for possible analysis time improvements.
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }}
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'javascript-typescript' ]
# CodeQL supports [ 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift' ]
# Use only 'java-kotlin' to analyze code written in Java, Kotlin or both
# Use only 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps:
- name: Checkout repository
uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2
# Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
# If the Autobuild fails above, remove it and uncomment the following three lines.
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
# - run: |
# echo "Run, Build Application using script"
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
with:
category: "/language:${{matrix.language}}"

15
themes/keepit/.gitignore vendored Normal file
View File

@@ -0,0 +1,15 @@
# Hugo default output directory
/public
## OS Files
# Windows
Thumbs.db
ehthumbs.db
Desktop.ini
$RECYCLE.BIN/
# OSX
.DS_Store
# Linux
.directory

View File

21
themes/keepit/LICENSE Normal file
View File

@@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2018 LIUZHICHAO.COM
Copyright (c) 2019 DILLONZQ.COM
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.

203
themes/keepit/README.md Normal file
View File

@@ -0,0 +1,203 @@
# KeepIt Theme | Hugo [![Netlify Status](https://api.netlify.com/api/v1/badges/e60303f2-862c-4342-bf59-7c9adb10812e/deploy-status)](https://app.netlify.com/sites/hugo-keepit/deploys)
[![GitHub release (latest by date)](https://img.shields.io/github/v/release/dillonzq/KeepIt?style=flat-square)](https://github.com/Fastbyte01/KeepIt/releases)
[![Hugo](https://img.shields.io/badge/Hugo-%5E0.62.0-ff4088?style=flat-square&logo=hugo)](https://gohugo.io/)
[![License](https://img.shields.io/github/license/dillonzq/KeepIt?style=flat-square)](https://github.com/Fastbyte01/KeepIt/blob/master/LICENSE)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=dillonzq_KeepIt&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=dillonzq_KeepIt)
[![CircleCI](https://circleci.com/gh/dillonzq/KeepIt/tree/master.svg?style=svg)](https://circleci.com/gh/dillonzq/KeepIt/tree/master)
English README | [简体中文说明](https://github.com/Fastbyte01/KeepIt/blob/master/README.zh-cn.md)
> **KeepIt** is a **clean**, **elegant** but **advanced** blog theme for [Hugo](https://gohugo.io/).
It is based on the original [LeaveIt Theme](https://github.com/liuzc/LeaveIt) and [KeepIt Theme](https://github.com/Fastbyte01/KeepIt).
Since the three themes have a similar look, if you have questions about their differences,
read [Why choose KeepIt](#why-choose-keepit) so that you can choose the one that works best for you.
![Hugo Theme KeepIt](https://github.com/Fastbyte01/KeepIt/raw/master/images/Apple-Devices-Preview.png)
## [Demo Site](https://suspicious-archimedes-ab369d.netlify.app/)
To see this theme in action, here is a live [demo site](https://suspicious-archimedes-ab369d.netlify.app/) which is rendered with **KeepIt** theme.
## Why choose KeepIt
Compared to the original LeaveIt theme and the KeepIt theme, the KeepIt theme has the following modifications.
* Custom **Header**
* Custom **CSS Style**
* A new **home page**, compatible with the latest version of Hugo
* A lot of **style detail adjustments,** including color, font size, margins, code preview style
* More readable **dark mode**
* Some beautiful **CSS animations**
* Easy-to-use and self-expanding **table of contents**
* More **social links**, **share sites** and **comment system**
* **Search** supported by [Lunr.js](https://lunrjs.com/) or [algolia](https://www.algolia.com/)
* **Copy code** to clipboard with one click
* Extended Markdown syntax for **[Font Awesome](https://fontawesome.com/) icons**
* Extended Markdown syntax for **ruby annotation**
* Extended Markdown syntax for **fraction**
* **Mathematical formula** supported by [KaTeX](https://katex.org/)
* **Diagram syntax** shortcode supported by [mermaid](https://github.com/mermaid-js/mermaid)
* **Interactive data visualization** shortcode supported by [ECharts](https://echarts.apache.org/)
* **Mapbox** shortcode supported by [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
* Embedded **music player** supported by [APlayer](https://github.com/MoePlayer/APlayer) and [MetingJS](https://github.com/metowolf/MetingJS)
* **Bilibili** player supported
* Kinds of **admonitions** shortcode supported
* Custom style shortcodes supported
* **CDN** for all third-party libraries supported
* ...
In short,
if you prefer the design language and freedom of the KeepIt theme,
if you want to use the extended Font Awesome icons conveniently,
if you want to embed mathematical formulas, flowcharts, music or Bilibili videos in your posts,
the KeepIt theme may be more suitable for you.
I hope you will KeepIt ❤️!
## Features
### Performance and SEO
* Optimized for **performance**: 99/100 on mobile and 100/100 on desktop in [Google PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights)
* Optimized SEO performance with a correct **SEO SCHEMA** based on JSON-LD
* **[Google Analytics](https://analytics.google.com/analytics)** supported
* **[Fathom Analytics](https://usefathom.com/)** supported
* Search engine **verification** supported (Google, Bind, Yandex and Baidu)
* **CDN** for third-party libraries supported
* Automatically converted images with **Lazy Load** by [lazysizes](https://github.com/aFarkas/lazysizes)
### Appearance and Layout
* **Desktop/Mobile Responsive** layout
* **Light/Dark** mode
* Globally consistent **design language**
* **Pagination** supported
* Easy-to-use and self-expanding **table of contents**
* **Multilanguage** supported and i18n ready
* Beautiful **CSS animation**
### Social and Comment Systems
* **Gravatar** supported by [Gravatar](https://gravatar.com)
* Local **Avatar** supported
* Up to **64** social links supported
* Up to **24** share sites supported
* **Disqus** comment system supported by [Disqus](https://disqus.com)
* **Gitalk** comment system supported by [Gitalk](https://github.com/gitalk/gitalk)
* **Valine** comment system supported by [Valine](https://valine.js.org/)
* **Facebook comments** system supported by [Facebook](https://developers.facebook.com/docs/plugins/comments/)
* **Telegram comments** system supported by [Telegram Comments](https://comments.app/)
* **Commento** comment system supported by [Commento](https://commento.io/)
* **Utterances** comment system supported by [Utterances](https://utteranc.es/)
### Extended Features
* **Search** supported by [Lunr.js](https://lunrjs.com/) or [algolia](https://www.algolia.com/)
* **Twemoji** supported
* Automatically **highlighting** code
* **Copy code** to clipboard with one click
* **Images gallery** supported by [lightGallery](https://github.com/sachinchoolur/lightgallery)
* Extended Markdown syntax for **[Font Awesome](https://fontawesome.com/) icons**
* Extended Markdown syntax for **ruby annotation**
* Extended Markdown syntax for **fraction**
* **Mathematical formula** supported by [KaTeX](https://katex.org/)
* **Diagrams** shortcode supported by [mermaid](https://github.com/mermaid-js/mermaid)
* **Interactive data visualization** shortcode supported by [ECharts](https://echarts.apache.org/)
* **Mapbox** shortcode supported by [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
* **Music player** shortcode supported by [APlayer](https://github.com/MoePlayer/APlayer) and [MetingJS](https://github.com/metowolf/MetingJS)
* **Bilibili player** shortcode
* Kinds of **admonitions** shortcode
* **Custom style** shortcode
* **Custom script** shortcode
* **Animated typing** supported by [TypeIt](https://typeitjs.com/)
* **Cookie consent banner** supported by [cookieconsent](https://github.com/osano/cookieconsent)
* ...
## [Documentation](https://suspicious-archimedes-ab369d.netlify.app/categories/documentation/)
Build Documentation Locally:
```bash
hugo server --source=exampleSite
```
## Multilingual and i18n
KeepIt supports the following languages:
* English
* Simplified Chinese
* Traditional Chinese
* French
* Polish
* Brazilian Portuguese
* Italian
* Spanish
* German
* Serbian
* Russian
* Romanian
* Vietnamese
* [Contribute with a new language](https://github.com/Fastbyte01/KeepIt/pulls)
[Languages Compatibility](https://suspicious-archimedes-ab369d.netlify.app/theme-documentation-basics/#language-compatibility)
## [Roadmap](https://github.com/Fastbyte01/KeepIt/projects/1)
## Questions, ideas, bugs, pull requests
All feedback is welcome! Head over to the [issue tracker](https://github.com/Fastbyte01/KeepIt/issues).
## License
KeepIt is licensed under the **MIT** license. Check the [LICENSE file](https://github.com/Fastbyte01/KeepIt/blob/master/LICENSE) for details.
## Special Thanks
Thanks to the authors of following resources included in the theme:
* [normalize.css](https://github.com/necolas/normalize.css)
* [Font Awesome](https://fontawesome.com/)
* [Simple Icons](https://github.com/simple-icons/simple-icons)
* [Animate.css](https://daneden.github.io/animate.css/)
* [autocomplete](https://github.com/algolia/autocomplete)
* [Lunr.js](https://lunrjs.com/)
* [algoliasearch](https://github.com/algolia/algoliasearch-client-javascript)
* [lazysizes](https://github.com/aFarkas/lazysizes)
* [object-fit-images](https://github.com/fregante/object-fit-images)
* [Twemoji](https://github.com/twitter/twemoji)
* [emoji-data](https://github.com/iamcal/emoji-data)
* [lightGallery](https://github.com/sachinchoolur/lightgallery)
* [clipboard.js](https://github.com/zenorocha/clipboard.js)
* [Sharer.js](https://github.com/ellisonleao/sharer.js)
* [TypeIt](https://typeitjs.com/)
* [KaTeX](https://katex.org/)
* [mermaid](https://github.com/mermaid-js/mermaid)
* [ECharts](https://echarts.apache.org/)
* [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
* [APlayer](https://github.com/MoePlayer/APlayer)
* [MetingJS](https://github.com/metowolf/MetingJS)
* [Gitalk](https://github.com/gitalk/gitalk)
* [Valine](https://valine.js.org/)
* [cookieconsent](https://github.com/osano/cookieconsent)
## Author
[Dillon](https://dillonzq.com)
## Sponsor
If you enjoy the theme, please consider buying me a coffee ☕️.
* [PayPal](https://paypal.me/dillonzq)
* [Alipay](https://github.com/Fastbyte01/KeepIt/raw/master/images/Alipay.jpg)
* [Wechat](https://github.com/Fastbyte01/KeepIt/raw/master/images/Wechat.jpg)
Thanks! ❤️
## Stargazers over time
[![Stargazers over time](https://starchart.cc/dillonzq/KeepIt.svg)](https://starchart.cc/dillonzq/KeepIt)

View File

@@ -0,0 +1,62 @@
---
title: "{{ replace .TranslationBaseName "-" " " | title }}"
subtitle: ""
date: {{ .Date }}
lastmod: {{ .Date }}
draft: true
author: ""
authorLink: ""
description: ""
license: ""
images: []
tags: []
categories: []
featuredImage: ""
featuredImagePreview: ""
hiddenFromHomePage: false
hiddenFromSearch: false
twemoji: false
lightgallery: true
ruby: true
fraction: true
fontawesome: true
linkToMarkdown: true
rssFullText: false
toc:
enable: true
auto: true
code:
copy: true
maxShownLines: 50
math:
enable: false
# ...
mapbox:
# ...
share:
enable: true
# ...
comment:
enable: true
# ...
library:
css:
# someCSS = "some.css"
# located in "assets/"
# Or
# someCSS = "https://cdn.example.com/some.css"
js:
# someJS = "some.js"
# located in "assets/"
# Or
# someJS = "https://cdn.example.com/some.js"
seo:
images: []
# ...
---
<!--more-->

View File

@@ -0,0 +1,61 @@
html {
font-family: $global-font-family;
font-weight: $global-font-weight;
font-display: swap;
font-size: $global-font-size;
line-height: $global-line-height;
width:100%;
scroll-behavior: smooth;
main [id] {
scroll-margin-top: $header-height + .5rem;
}
}
/* scrollbar, only support webkit */
::-webkit-scrollbar {
width: .5rem;
height: .5rem;
}
::-webkit-scrollbar-thumb {
background-color: $scrollbar-color;
&:hover {
background-color: $scrollbar-hover-color;
}
}
::selection {
background-color: $selection-color;
[theme=dark] & {
background-color: $selection-color-dark;
}
}
body {
background-color: $global-background-color;
color: $global-font-color;
@include overflow-wrap(break-word);
scrollbar-color: auto;
&[theme=dark] {
color: $global-font-color-dark;
background-color: $global-background-color-dark;
}
}
@include ms;
@include link(true, true);
@import "../_partial/mask";
@import "../_partial/icon";
@import "../_partial/details";
@import "../_partial/fixed-button";
@import "../_partial/cookieconsent";
img {
@include object-fit(contain);
}

View File

@@ -0,0 +1,15 @@
/** Layout **/
.wrapper {
display: flex;
flex-direction: column;
min-height: 100vh;
width: 100%;
main {
flex: 1 0 auto;
.container {
padding: 0 1rem;
}
}
}

View File

@@ -0,0 +1,80 @@
@media only screen and (max-width: 1440px) {
.page {
width: 56%;
}
}
@media only screen and (max-width: 1200px) {
.page {
width: 52%;
}
#header-desktop .header-wrapper {
padding-right: 1rem;
}
.search-dropdown.desktop {
right: 1rem;
}
}
@media only screen and (max-width: 960px) {
#toc-auto {
display: none;
}
#toc-static {
display: block;
}
.page {
width: 80%;
}
#header-desktop .header-wrapper {
padding-left: 1rem;
}
}
@media only screen and (max-width: 680px) {
#header-desktop {
display: none;
}
#header-mobile {
display: block;
}
body.blur {
overflow: hidden;
}
.page {
width: 100%;
[data-header-mobile] & {
padding-top: $header-height;
}
[data-header-mobile=normal] & {
padding-top: 0;
}
.categories-card {
.card-item {
width: 100%;
}
}
}
.copyright {
.copyright-line {
.icp-splitter {
display: none;
}
.icp-br {
display: block;
}
}
}
}

View File

@@ -0,0 +1,4 @@
// ==============================
// Custom style
// 自定义样式
// ==============================

View File

@@ -0,0 +1,5 @@
@mixin blur {
.blur & {
@include filter(blur(1.5px));
}
}

View File

@@ -0,0 +1,110 @@
@mixin border-radius($value) {
-webkit-border-radius: $value;
-moz-border-radius: $value;
border-radius: $value;
}
@mixin box-shadow($values...) {
-webkit-box-shadow: $values;
box-shadow: $values;
}
@mixin transition($values...) {
-webkit-transition: $values;
-moz-transition: $values;
-o-transition: $values;
transition: $values;
}
@mixin transform($value) {
-webkit-transform: $value;
-moz-transform: $value;
-ms-transform: $value;
-o-transform: $value;
transform: $value;
}
@mixin filter($value) {
-webkit-filter: $value;
-moz-filter: $value;
-ms-filter: $value;
filter: $value;
}
@mixin flex($value) {
-webkit-flex: $value;
flex: $value;
}
@mixin box($orient) {
display: -moz-box;
display: -webkit-box;
display: box;
-webkit-box-orient: $orient;
-moz-box-orient: $orient;
// box-orient: $orient;
}
@mixin placeholder($color) {
input::-webkit-input-placeholder{
color: $color;
}
input:-moz-placeholder{
color: $color;
}
input::-moz-placeholder{
color: $color;
}
input:-ms-input-placeholder{
color: $color;
}
input::placeholder {
color: $color;
}
}
@mixin max-content($property) {
#{$property}: -webkit-max-content;
#{$property}: -moz-max-content;
#{$property}: intrinsic;
#{$property}: max-content;
}
@mixin tab-size($value) {
-moz-tab-size: $value;
-o-tab-size: $value;
tab-size: $value;
}
@mixin appearance($value) {
-moz-appearance: $value;
-webkit-appearance: $value;
}
@mixin overflow-wrap($value) {
word-wrap: $value;
overflow-wrap: $value;
}
@mixin line-break($value) {
-webkit-line-break: $value;
-ms-line-break: $value;
line-break: $value;
}
@mixin ms {
input::-ms-clear {
display: none;
}
}
@mixin object-fit($value) {
-o-object-fit: $value;
object-fit: $value;
font-family: 'object-fit: #{$value};';
}

View File

@@ -0,0 +1,7 @@
@mixin details-transition-open {
@include transition(max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s);
}
@mixin details-transition-close {
@include transition(max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s);
}

View File

@@ -0,0 +1,4 @@
@import "_compatibility";
@import "_link";
@import "_blur";
@import "_details";

View File

@@ -0,0 +1,20 @@
@mixin link($light, $dark) {
a, a::before, a::after {
text-decoration: none;
color: if($light, $global-link-color, $single-link-color);
[theme=dark] & {
color: if($dark, $global-link-color-dark, $single-link-color-dark);
}
}
a:active,
a:hover {
color: if($light, $global-link-hover-color, $single-link-hover-color);
[theme=dark] & {
color: if($dark, $global-link-hover-color-dark, $single-link-hover-color-dark);
}
}
}

View File

@@ -0,0 +1,4 @@
// ==============================
// Override Variables
// 覆盖变量
// ==============================

View File

@@ -0,0 +1,6 @@
#content-404 {
font-size: 1.8rem;
line-height: 3rem;
@include transform(translateY(30vh));
text-align: center;
}

View File

@@ -0,0 +1,13 @@
.archive {
.single-title {
text-align: right;
}
.group-title {
margin-top: 1.5rem;
margin-bottom: 1rem;
}
@import "../_partial/_archive/terms";
@import "../_partial/_archive/tags";
}

View File

@@ -0,0 +1,182 @@
.home {
.home-profile {
@include transform(translateY( 16vh));
padding: 0 0 .5rem;
text-align: center;
.home-avatar {
padding: .5rem;
img {
display: inline-block;
width: 15rem;
height: auto;
margin: 0 auto;
@include border-radius(100%);
@include box-shadow(0 0 0 .3618em rgba(0, 0, 0, .05));
@include transition(all 0.4s ease);
&:hover {
position: relative;
@include transform(translateY(-.75rem));
}
}
}
.home-title {
font-size: 1.25rem;
font-weight: bold;
margin: 0;
padding: .5rem;
}
.home-subtitle {
font-size: 1rem;
font-weight: normal;
margin: 0;
padding: .5rem;
}
.links {
padding: .5rem;
font-size: 1.5rem;
a * {
vertical-align: text-bottom;
}
img {
height: 1.5rem;
padding: 0 .25rem;
}
}
.home-disclaimer {
font-size: 1rem;
line-height: 1.5rem;
font-weight: normal;
margin: 0;
padding: .5rem;
color: $global-font-secondary-color;
[theme=dark] & {
color: $global-font-secondary-color-dark;
}
}
}
}
.home[data-home=posts] {
.home-profile {
@include transform(translateY(0));
padding-top: 2rem;
}
.home-avatar img {
width: 15rem;
}
.summary {
padding-top: 1rem;
padding-bottom: .8rem;
color: $global-font-color;
border-bottom: 1px dashed $global-border-color;
[theme=dark] & {
color: $global-font-color-dark;
border-bottom: 1px dashed $global-border-color-dark;
}
.featured-image-preview {
width: 100%;
padding: 30% 0 0;
position: relative;
margin: 0.6rem auto;
@include transition(transform 0.4s ease);
img {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
@include object-fit(none);
}
img.lazyloaded {
@include object-fit(cover);
}
&:hover {
@include transform(scale(1.01));
}
}
.single-title {
font-size: 1.25rem;
line-height: 140%;
margin: 0.4rem 0;
}
.content {
@include box(vertical);
-webkit-line-clamp: 3;
margin-top: .3rem;
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
@include overflow-wrap(break-word);
color: $global-font-secondary-color;
[theme=dark] & {
color: $global-font-secondary-color-dark;
}
h2,
h3,
h4,
h5,
h6,
p {
font-size: 1rem;
line-height: 1.5;
display: inline;
&::after {
content: "\A";
white-space: pre;
}
}
h2 {
font-size: 1.125rem;
}
@include link(false, true);
b, strong {
color: $global-font-secondary-color;
[theme=dark] & {
color: $global-font-secondary-color-dark;
}
}
}
.post-footer {
margin-top: .4rem;
display: flex;
justify-content: space-between;
align-items: center;
font-size: .875rem;
@include link(false, false);
.post-tags {
padding: 0;
@include link(true, true);
}
}
}
}

View File

@@ -0,0 +1,22 @@
.page {
position: relative;
max-width: 800px;
width: 60%;
margin: 0 auto;
[data-header-desktop] & {
padding-top: $header-height;
}
[data-header-desktop=normal] & {
padding-top: 0;
}
@include blur;
}
@import "_single";
@import "_special";
@import "_archive";
@import "_home";
@import "_404";

View File

@@ -0,0 +1,347 @@
@import "../_partial/_single/toc";
.single {
.single-title {
margin: 2rem 0 .5rem;
font-size: 1.6rem;
font-weight: bold;
line-height: 140%;
}
.single-subtitle {
margin: .5rem 0;
font-size: 1.2rem;
font-weight: normal;
line-height: 100%;
}
.post-meta {
font-size: .875rem;
color: $global-font-secondary-color;
span {
display: inline-block;
}
[theme=dark] & {
color: $global-font-secondary-color-dark;
}
@include link(false, true);
.author {
font-size: 1.05rem;
}
}
.featured-image {
margin: .5rem 0 1rem 0;
img {
display: block;
max-width: 100%;
height: auto;
margin: 0 auto;
overflow: hidden;
}
img.lazyloaded {
width: 100%;
}
}
.content {
> h2 {
font-size: 1.5rem;
& code {
font-size: 1.25rem;
}
}
> h3 {
font-size: 1.375rem;
& code {
font-size: 1.125rem;
}
}
> h4 {
font-size: 1.25rem;
& code {
font-size: 1rem;
}
}
> h5 {
font-size: 1.125rem;
}
> h6 {
font-size: 1rem;
}
h2,
h3,
h4,
h5,
h6 {
font-weight: bold;
margin: 1.2rem 0;
[theme=dark] & {
font-weight: bolder;
}
}
> h2,
> h3,
> h4,
> h5,
> h6 {
> .header-mark::before {
content: "|";
margin-right: .3125rem;
color: $single-link-color;
[theme=dark] & {
color: $single-link-color-dark;
}
}
}
> h2 > .header-mark::before {
content: "#";
}
p {
margin: .5rem 0;
}
b, strong {
font-weight: bold;
[theme=dark] & {
color: #ddd;
}
}
@include link(false, false);
a {
@include overflow-wrap(break-word);
[theme=dark] & b, [theme=dark] & strong {
color: $single-link-color-dark;
}
}
[theme=dark] a:hover b, [theme=dark] a:hover strong {
color: $single-link-hover-color-dark;
}
ul, ol {
margin: .5rem 0;
padding-left: 2.5rem;
}
ul {
list-style-type: disc;
}
ruby {
background: $code-background-color;
rt {
color: $global-font-secondary-color;
}
[theme=dark] & {
background: $code-background-color-dark;
rt {
color: $global-font-secondary-color-dark;
}
}
}
.table-wrapper {
overflow-x: auto;
&::-webkit-scrollbar {
background-color: $table-background-color;
[theme=dark] & {
background-color: $table-background-color-dark;
}
}
> table {
width: 100%;
max-width: 100%;
margin: .625rem 0;
border-spacing: 0;
background: $table-background-color;
border-collapse: collapse;
[theme=dark] & {
background: $table-background-color-dark;
}
thead {
background: $table-thead-color;
[theme=dark] & {
background-color: $table-thead-color-dark;
}
}
th, td {
padding: .3rem 1rem;
border: 1px solid darken($table-thead-color, 2%);
[theme=dark] & {
border-color: darken($table-thead-color-dark, 2%);
}
}
}
}
img {
max-width: 100%;
min-height: 1em;
}
figure {
margin: .5rem;
text-align: center;
.image-caption:not(:empty) {
min-width: 20%;
max-width: 80%;
display: inline-block;
padding: .5rem;
margin: 0 auto;
font-size: .875rem;
color: #969696;
}
img {
display: block;
width: 100%;
height: auto;
margin: 0 auto;
overflow: hidden;
}
}
.lazyload, .lazyloading {
@include object-fit(scale-down);
}
.lazyloaded {
@include object-fit(fill);
}
blockquote {
display: block;
border-left: .5rem solid $blockquote-color;
background-color: rgba($blockquote-color, .2);
padding: .25rem .75rem;
margin: 1rem 0;
[theme=dark] & {
border-left-color: $blockquote-color-dark;
background-color: rgba($blockquote-color-dark, .2);
}
}
.footnotes {
color: $global-font-secondary-color;
[theme=dark] & {
color: $global-font-secondary-color-dark;
}
p {
margin: .25rem 0;
}
}
@import "../_partial/_single/code";
@import "../_partial/_single/instagram";
@import "../_partial/_single/admonition";
@import "../_partial/_single/echarts";
@import "../_partial/_single/mapbox";
@import "../_partial/_single/music";
@import "../_partial/_single/bilibili";
hr {
margin: 1rem 0;
position: relative;
border-top: 1px dashed $global-border-color;
border-bottom: none;
[theme=dark] & {
border-top: 1px dashed $global-border-color-dark;
}
}
kbd {
display: inline-block;
padding: .25rem;
background-color: $global-background-color;
border: 1px solid $global-border-color;
border-bottom-color: $global-border-color;
@include border-radius(3px);
@include box-shadow(inset 0 -1px 0 $global-border-color);
font-size: .8rem;
font-family: $code-font-family;
color: $code-color;
[theme=dark] & {
background-color: $global-background-color-dark;
border: 1px solid $global-border-color-dark;
border-bottom-color: $global-border-color-dark;
@include box-shadow(inset 0 -1px 0 $global-border-color-dark);
color: $code-color-dark;
}
}
.version {
height: 1.25em;
vertical-align: text-bottom;
}
}
@import "../_partial/_single/footer";
@import "../_partial/_single/comment";
}
.typeit {
.highlight {
padding: .375rem;
font-size: .875rem;
font-family: $code-font-family;
font-weight: bold;
word-break: break-all;
white-space: pre-wrap;
}
--ti-cursor-font-family: $global-font-family;
--ti-cursor-font-size: $global-font-size;
--ti-cursor-font-weight: $global-font-weight;
--ti-cursor-line-height: $global-line-height;
--ti-cursor-color: $global-font-secondary-color;
--ti-cursor-margin-left: 0;
[theme=dark] & {
--ti-cursor-color: $global-font-secondary-color-dark;
}
}
.lg-toolbar .lg-icon::after {
color: #999;
}

View File

@@ -0,0 +1,5 @@
.special {
.single-title, .single-subtitle {
text-align: right;
}
}

View File

@@ -0,0 +1,27 @@
.tag-cloud-tags {
margin: 10px 0;
@include link(true, true);
a {
display: inline-block;
position: relative;
margin: 5px 10px;
@include overflow-wrap(break-word);
@include transition(all ease-out 0.3s);
&:active,
&:focus,
&:hover {
@include transform(scale(1.2));
}
sup {
color: $global-font-secondary-color;
[theme=dark] & {
color: $global-font-secondary-color-dark;
}
}
}
}

View File

@@ -0,0 +1,82 @@
.categories-card {
margin: 0 auto;
margin-top: 3rem;
display: flex;
align-items: center;
justify-content: space-between;
flex-direction: row;
flex-wrap: wrap;
line-height: 1.6rem;
.card-item {
font-size: .875rem;
text-align: left;
width: 45%;
display: flex;
align-items: flex-start;
margin-top: 2rem;
min-height: 10rem;
padding: 0 2%;
position: relative;
.card-item-wrapper {
width: 100%;
overflow: hidden;
.card-item-title {
font-size: 1.2rem;
font-weight: bold;
display: inline-block;
margin-top: 1rem;
margin-bottom: .75rem;
}
span {
float: right;
padding-right: 1rem;
}
}
}
}
.archive-item {
display: flex;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
margin: .25rem 0 .25rem 1.5rem;
}
.archive-item-link {
min-width: 10%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
&:hover {
color: $global-link-hover-color;
background-color: transparent;
}
[theme=dark] & {
color: $global-link-color-dark;
&:hover {
color: $global-link-hover-color-dark;
}
}
}
.archive-item-date {
width: 5em;
text-align: right;
color: $global-font-secondary-color;
[theme=dark] & {
color: $global-font-secondary-color-dark;
}
}
.more-post {
text-align: right;
}

View File

@@ -0,0 +1,17 @@
.cc-window.cc-banner {
.cc-btn {
color: $global-font-color;
&:hover, &:focus {
background-color: #ccc;
}
[theme=dark] & {
color: $global-font-color;
&:hover, &:focus {
background-color: #fff;
}
}
}
}

View File

@@ -0,0 +1,33 @@
.details {
.details-summary {
&:hover {
cursor: pointer;
}
}
i.details-icon {
color: $global-font-secondary-color;
@include transition(transform 0.2s ease);
[theme=dark] & {
color: $global-font-secondary-color-dark;
}
}
.details-content {
max-height: 0;
overflow-y: hidden;
@include details-transition-open;
}
&.open {
i.details-icon {
@include transform(rotate(90deg));
}
.details-content {
max-height: $MAX_LENGTH;
@include details-transition-close;
}
}
}

View File

@@ -0,0 +1,46 @@
#fixed-buttons {
display: none;
}
.fixed-button {
display: none;
z-index: 100;
position: fixed;
right: 1.5rem;
font-size: 1rem;
line-height: 1.3rem;
padding: .6rem .6rem;
color: $global-font-secondary-color;
background: $header-background-color;
@include border-radius(2rem);
@include transition(color 0.4s ease);
@include blur;
&:hover, &:active {
color: $global-font-color;
cursor: pointer;
}
&:active, &:focus, &:hover {
outline: none;
}
[theme=dark] & {
color: $global-font-secondary-color-dark;
background: $header-background-color-dark;
&:hover, &:active {
color: $global-font-color-dark;
}
}
}
#back-to-top {
display: block;
bottom: 1.5rem;
}
#view-comments {
bottom: 4.5rem;
}

View File

@@ -0,0 +1,21 @@
footer {
height: 2rem;
width: 100%;
text-align: center;
line-height: 1.25rem;
padding: 1rem 0;
.footer-container {
font-size: .875rem;
.footer-line {
width: 100%;
.icp-br {
display: none;
}
}
}
@include blur;
}

View File

@@ -0,0 +1,468 @@
header {
width: 100%;
z-index: 150;
background-color: $header-background-color;
@include transition(box-shadow 0.3s ease);
[theme=dark] & {
background-color: $header-background-color-dark;
}
.logo {
min-height: 1.5em;
height: 1.5em;
vertical-align: text-bottom;
}
.logo, .header-title-pre {
padding-right: .25rem;
}
.header-title-post {
padding-left: .25rem;
}
&:hover {
@include box-shadow(0 0 1.5rem 0 rgba(0, 0, 0, .1));
}
}
.header-wrapper {
display: flex;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
width: 100%;
}
.header-title {
font-family: $header-title-font-family;
font-weight: bold;
margin-right: .5rem;
min-width: 10%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
@include flex(10);
}
.menu .menu-item {
position: relative;
}
.language-select {
position: absolute;
opacity: 0;
left: 0;
top: 0;
width: 100%;
height: 100%;
&:hover {
cursor: pointer;
}
}
.search {
position: relative;
input {
color: transparent;
box-sizing: border-box;
height: 2.5rem;
width: 2.5rem;
@include border-radius(.5rem);
border: none;
outline: none;
background-color: $header-background-color;
vertical-align: baseline !important;
@include transition(width 0.3s ease);
[theme=dark] & {
background-color: $header-background-color-dark;
}
}
@include placeholder(transparent);
.search-button {
margin: 0;
position: absolute;
left: auto;
right: 1rem;
}
.search-toggle {
left: .5rem;
right: auto;
}
.search-loading {
display: none;
}
.search-clear {
display: none;
}
.open &, &.mobile {
input {
color: $global-font-color;
background-color: $search-background-color;
padding: 0 2rem 0 2rem;
}
[theme=dark] & {
input {
color: $global-font-color-dark;
background-color: $search-background-color-dark;
}
@include placeholder($global-font-secondary-color-dark);
}
@include placeholder($global-font-secondary-color);
.search-button {
color: $global-font-secondary-color;
[theme=dark] & {
color: $global-font-secondary-color-dark;
}
}
.search-clear:hover {
color: #ff6b6b;
}
.search-toggle:hover {
cursor: default;
}
}
}
.theme-switch i {
@include transform(rotate(225deg));
}
#header-desktop {
display: block;
position: fixed;
height: $header-height;
line-height: $header-height;
[data-header-desktop=normal] & {
position: static;
}
.header-wrapper {
padding: 0 2rem 0 10vh;
.header-title {
font-size: $header-title-font-size;
}
.menu {
overflow: hidden;
white-space: nowrap;
.menu-inner {
float: right;
}
.menu-item {
margin: 0 .5rem;
&.delimiter {
border-left: 1.5px solid $global-font-color;
[theme=dark] & {
border-left-color: $global-border-color-dark;
}
}
&.language {
margin-right: 0;
}
&.search {
margin: 0 -.5rem 0 0;
}
}
a.active {
font-weight: 900;
color: $header-hover-color;
[theme=dark] & {
color: $header-hover-color-dark;
}
}
}
}
&.open .header-wrapper .menu .menu-item.search {
margin: 0 .25rem 0 .5rem;
input {
width: 24rem;
}
}
}
#header-mobile {
display: none;
position: fixed;
height: $header-height;
line-height: $header-height;
[data-header-mobile=normal] & {
position: static;
}
.header-container {
padding: 0;
margin: 0;
.header-wrapper {
padding: 0 1rem;
font-size: 1.125rem;
@include transition(margin-top 0.3s ease);
.header-title {
font-size: $header-title-font-size;
max-width: 80%;
}
.menu-toggle {
line-height: 4rem;
cursor: pointer;
@include transition(width 0.3s ease);
span {
display: block;
background: $global-font-color;
width: 1.5rem;
height: 2px;
@include border-radius(3px);
@include transition(all 0.3s ease-in-out);
[theme=dark] & {
background: $global-font-color-dark;
}
}
span:nth-child(1) {
margin-bottom: .5rem;
}
span:nth-child(3) {
margin-top: .5rem;
}
&.active {
span:nth-child(1) {
@include transform(rotate(45deg) translate(.4rem, .5rem));
}
span:nth-child(2) {
opacity: 0
}
span:nth-child(3) {
@include transform(rotate(-45deg) translate(.4rem, -.5rem));
}
}
}
}
.menu {
text-align: center;
background: $header-background-color;
border-top: 2px solid $global-border-color;
display: none;
padding-top: .5rem;
@include box-shadow(0 .125rem .25rem rgba(0, 0, 0, .1));
.search-wrapper {
display: flex;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
padding: ($header-height - 2.5rem) / 2 1rem;
line-height: 2.5rem;
}
.search {
flex-grow: 10;
.algolia-autocomplete, input {
width: 100%;
}
}
.search-button {
top: 0;
}
.search-cancel {
display: none;
margin-left: .75rem;
}
.menu-item {
display: block;
line-height: 2.5rem;
}
&.active {
display: block;
}
[theme=dark] & {
background: $header-background-color-dark;
border-top-color: $global-border-color-dark;
}
}
}
&.open {
.header-wrapper {
margin-top: -$header-height;
}
.menu {
padding-top: 0;
border-top: none;
.menu-item {
display: none;
}
.search-cancel {
display: inline;
}
}
}
}
.search-dropdown {
position: fixed;
z-index: 200;
top: $header-height;
@include box-shadow(0 .125rem .25rem rgba(0, 0, 0, .1));
&.desktop {
right: 2rem;
width: 30rem;
}
&.mobile {
right: 0;
width: 100%;
}
.dropdown-menu {
right: 0 !important;
background-color: $global-background-color;
[theme=dark] & {
background-color: $global-background-color-dark;
}
.suggestions {
overflow-y: auto;
max-height: calc(100vh - #{$header-height});
.suggestion {
padding: .75rem 1rem;
.suggestion-title {
display: inline-block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 1rem;
font-weight: bold;
max-width: 75%;
}
.suggestion-date {
font-size: .875rem;
float: right;
text-align: right;
color: $global-font-secondary-color;
[theme=dark] & {
color: $global-font-secondary-color-dark;
}
}
.suggestion-context {
line-height: 1.25rem;
@include box(vertical);
-webkit-line-clamp: 2;
overflow: hidden;
text-overflow: ellipsis;
@include overflow-wrap(break-word);
color: $global-font-secondary-color;
[theme=dark] & {
color: $global-font-secondary-color-dark;
}
}
em {
font-style: normal;
background-color: $selection-color;
[theme=dark] & {
background-color: $selection-color-dark;
}
}
&.cursor {
background: darken($code-background-color, 5%);
[theme=dark] & {
background: lighten($code-background-color-dark, 5%);
}
}
&:hover {
cursor: pointer;
}
}
}
.search-empty {
padding: 1rem;
text-align: center;
.search-query {
font-weight: bold;
[theme=dark] & {
color: #ddd;
}
}
}
.search-footer {
padding: .5rem 1rem;
float: right;
font-size: .8rem;
color: $global-font-secondary-color;
[theme=dark] {
color: $global-font-secondary-color-dark;
}
@include link(false, false);
a {
font-size: 1rem;
}
}
}
}

View File

@@ -0,0 +1,17 @@
svg.icon {
display: inline-block;
width: 1.25em;
height: 1em;
text-align: center;
path {
fill: currentColor;
}
}
img.emoji {
height: 1em;
width: 1em;
margin: 0 .05em 0 .1em;
vertical-align: -.1em;
}

View File

@@ -0,0 +1,16 @@
#mask {
background-repeat: no-repeat;
background-position: center;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
background-color: rgba(0, 0, 0, 0);
.blur & {
z-index: 100;
background-color: rgba(0, 0, 0, .25);
}
}

View File

@@ -0,0 +1,91 @@
.pagination {
display: flex;
flex-direction: row;
justify-content: center;
list-style: none;
white-space: nowrap;
width: 100%;
padding: 1rem 0 0;
a {
font-size: .8rem;
color: #bfbfbf;
letter-spacing: .1rem;
font-weight: 700;
padding: 5px 5px;
text-decoration: none;
@include transition(0.3s);
}
li {
padding-bottom: 3px;
margin: 0 20px;
box-sizing: border-box;
position: relative;
display: inline;
&.disabled {
display: none;
}
&:hover a {
color: $pagination-link-hover-color;
}
[theme=dark] &:hover a {
color: $pagination-link-hover-color-dark;
}
&:before,
&:after {
position: absolute;
content: "";
width: 0;
height: 3px;
background: $pagination-link-hover-color;
@include transition(0.3s);
bottom: 0px;
}
[theme=dark] &:before,
[theme=dark] &:after {
background: $pagination-link-hover-color-dark;
}
&:before .active,
&:after .active {
width: 100%;
}
&:before {
left: 50%;
}
&:after {
right: 50%;
}
&:hover {
&:before,
&:after {
width: 50%;
}
}
&.active {
a {
color: $pagination-link-hover-color;
}
[theme=dark] & a {
color: $pagination-link-hover-color-dark;
}
&:before,
&:after {
width: 60%;
}
}
}
}

View File

@@ -0,0 +1,67 @@
.admonition {
position: relative;
margin: 1rem 0;
padding: 0 .75rem;
background-color: map-get($admonition-background-color-map, 'note');
border-left: .25rem solid map-get($admonition-color-map, 'note');
overflow: auto;
.admonition-title {
font-weight: bold;
margin: 0 -0.75rem;
padding: .25rem 1.8rem;
border-bottom: 1px solid map-get($admonition-background-color-map, 'note');
background-color: opacify(map-get($admonition-background-color-map, 'note'), 0.15);
}
&.open .admonition-title {
background-color: map-get($admonition-background-color-map, 'note');
}
.admonition-content {
padding: .5rem 0;
}
i.icon {
font-size: 0.85rem;
color: map-get($admonition-color-map, 'note');
position: absolute;
top: .6rem;
left: .4rem;
}
i.details-icon {
position: absolute;
top: .6rem;
right: .3rem;
}
@each $type, $color in $admonition-color-map {
&.#{$type} {
border-left-color: $color;
i.icon {
color: $color;
}
}
}
@each $type, $color in $admonition-background-color-map {
&.#{$type} {
background-color: $color;
.admonition-title {
border-bottom-color: $color;
background-color: opacify($color, 0.15);
}
&.open .admonition-title {
background-color: $color;
}
}
}
&:last-child {
margin-bottom: .75rem;
}
}

View File

@@ -0,0 +1,16 @@
.bilibili {
position: relative;
width: 100%;
height: 0;
padding-bottom: 75%;
margin: 3% auto;
text-align: center;
iframe {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
}
}

View File

@@ -0,0 +1,399 @@
code {
display:inline-block;
max-width: 100%;
padding: 0 .4rem;
@include overflow-wrap(break-word);
@include line-break(anywhere);
font-size: $code-font-size;
font-family: $code-font-family;
color: $code-color;
[theme=dark] & {
color: $code-color-dark;
}
}
pre {
margin: 0;
padding: .25rem 0 .25rem .5rem;
@include tab-size(4);
code {
padding: 0;
}
img {
min-height: 1em;
max-height: 1.2em;
vertical-align: text-bottom;
}
}
code, pre, .highlight table, .highlight tr, .highlight td {
background: $code-background-color;
[theme=dark] & {
background: $code-background-color-dark;
}
}
.highlight {
font-family: $code-font-family;
font-size: $code-font-size;
line-height: 1.4em;
margin: .5rem 0;
.table-wrapper {
> table,
> table thead,
> table tr,
> table td {
margin: 0;
padding: 0;
border: none !important;
span.c {
white-space: nowrap;
}
}
}
> .chroma {
position: relative;
.code-header {
display: flex;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
width: 100%;
font-family: $global-font-family;
font-weight: bold;
color: $code-info-color;
background: darken($code-background-color, 8%);
[theme=dark] & {
color: $code-info-color-dark;
background: darken($code-background-color-dark, 6%);
}
&:hover {
cursor: pointer;
}
.code-title {
width: 100%;
padding: .4rem;
}
.code-title::after {
padding-left: .2rem;
content: 'Code';
}
@each $type, $text in $code-type-map {
&.#{$type} .code-title::after {
content: $text;
}
}
}
.lntd:first-child {
min-width: 1.6rem;
text-align: right;
}
.lntd:last-child {
width: 100%;
pre {
@include max-content(min-width);
}
}
.ln {
padding-right: .75rem;
}
.hl {
display: block;
background-color: darken($code-background-color, 10%);
[theme=dark] & {
background-color: darken($code-background-color-dark, 5%);
}
}
.ln, .lnt {
color: $global-font-secondary-color;
[theme=dark] & {
color: $global-font-secondary-color-dark;
}
}
.arrow {
padding: 0 .2rem;
@include transition(transform 0.2s ease);
}
.ellipses {
padding: .4rem;
}
.copy {
display: none;
padding: .4rem;
&:hover {
cursor: pointer;
color: $global-link-hover-color;
[theme=dark] & {
color: $global-link-hover-color-dark;
}
}
}
.table-wrapper {
max-height: 0;
overflow-y: hidden;
@include details-transition-open;
}
&.open {
.code-header {
background: darken($code-background-color, 3%);
[theme=dark] & {
background: darken($code-background-color-dark, 3%);
}
}
.table-wrapper {
max-height: $MAX_LENGTH;
@include details-transition-close;
}
.arrow {
@include transform(rotate(90deg));
}
.ellipses {
display: none;
}
.copy {
display: inline;
}
}
}
/* Comment */ .c,
/* CommentHashbang */ .ch,
/* CommentMultiline */ .cm,
/* CommentSingle */ .c1,
/* CommentSpecial */ .cs,
/* CommentPreproc */ .cp,
/* CommentPreprocFile */ .cpf { font-style: italic }
/* GenericUnderline */ .gl { text-decoration: underline }
@each $class, $color in $code-highlight-color-map {
.#{$class} { color: $color; }
}
[theme=dark] & {
@each $class, $color in $code-highlight-color-map-dark {
.#{$class} { color: $color; }
}
}
}
.gist {
font-family: $code-font-family;
font-size: $code-font-size;
.table-wrapper {
> table,
> table thead,
> table tr,
> table td {
margin: 0;
padding: 0;
border: none !important;
}
}
.gist-file, .gist-data, .gist-meta {
border: none;
}
.gist-meta {
padding: .4rem .8rem;
background-color: darken($code-background-color, 5%);
@include link(false, false);
[theme=dark] & {
background-color: darken($code-background-color-dark, 5%);
}
}
[theme=dark] & {
// imported from https://github.com/lonekorean/gist-syntax-themes/blob/master/stylesheets/one-dark.css
.highlight {
background: #141414;
}
.blob-num,
.blob-code-inner,
.highlight,
.pl-enm,
.pl-ko,
.pl-mo,
.pl-mp1 .pl-sf,
.pl-ms,
.pl-pdc1,
.pl-scp,
.pl-smc,
.pl-som,
.pl-va,
.pl-vpf,
.pl-vpu,
.pl-mdr {
color: #aab1bf;
}
.pl-mb,
.pl-pdb {
font-weight: 700;
}
.pl-c,
.pl-c span,
.pl-pdc {
color: #5b6270;
font-style: italic;
}
.pl-sr .pl-cce {
color: #56b5c2;
font-weight: 400;
}
.pl-ef,
.pl-en,
.pl-enf,
.pl-eoai,
.pl-kos,
.pl-mh .pl-pdh,
.pl-mr {
color: #61afef;
}
.pl-ens,
.pl-vi {
color: #be5046;
}
.pl-enti,
.pl-mai .pl-sf,
.pl-ml,
.pl-sf,
.pl-sr,
.pl-sr .pl-sra,
.pl-src,
.pl-st,
.pl-vo {
color: #56b5c2;
}
.pl-eoi,
.pl-mri,
.pl-pds,
.pl-pse .pl-s1,
.pl-s,
.pl-s1 {
color: #97c279;
}
.pl-k,
.pl-kolp,
.pl-mc,
.pl-pde {
color: #c578dd;
}
.pl-mi,
.pl-pdi {
color: #c578dd;
font-style: italic;
}
.pl-mp,
.pl-stp {
color: #818896;
}
.pl-mdh,
.pl-mdi,
.pl-mdr {
font-weight: 400;
}
.pl-mdht,
.pl-mi1 {
color: #97c279;
background: #020;
}
.pl-md,
.pl-mdhf {
color: #df6b75;
background: #200;
}
.pl-corl {
color: #df6b75;
text-decoration: underline;
}
.pl-ib {
background: #df6b75;
}
.pl-ii {
background: #e0c184;
color: #fff;
}
.pl-iu {
background: #e05151;
}
.pl-ms1 {
color: #aab1bf;
background: #373b41;
}
.pl-c1,
.pl-cn,
.pl-e,
.pl-eoa,
.pl-eoac,
.pl-eoac .pl-pde,
.pl-kou,
.pl-mm,
.pl-mp .pl-s3,
.pl-mq,
.pl-s3,
.pl-sok,
.pl-sv,
.pl-mb {
color: #d19965;
}
.pl-enc,
.pl-entc,
.pl-pse .pl-s2,
.pl-s2,
.pl-sc,
.pl-smp,
.pl-sr .pl-sre,
.pl-stj,
.pl-v,
.pl-pdb {
color: #e4bf7a;
}
.pl-ent,
.pl-entl,
.pl-entm,
.pl-mh,
.pl-pdv,
.pl-smi,
.pl-sol,
.pl-mdh,
.pl-mdi {
color: #df6b75;
}
}
}

View File

@@ -0,0 +1,3 @@
#comments {
padding: 8rem 0 2rem;
}

View File

@@ -0,0 +1,4 @@
.echarts {
margin: .5rem 0;
text-align: center;
}

View File

@@ -0,0 +1,98 @@
.post-footer {
margin-top: 3rem;
.post-info {
border-bottom: 1px solid $global-border-color;
padding: 1rem 0 0.3rem;
[theme=dark] & {
border-bottom: 1px solid $global-border-color-dark;
}
.post-info-line {
display: flex;
justify-content: space-between;
.post-info-mod {
font-size: 0.8em;
color: $global-font-secondary-color;
[theme=dark] & {
color: $global-font-secondary-color-dark;
}
@include link(false, false);
}
.post-info-license {
font-size: 0.8em;
color: $global-font-secondary-color;
[theme=dark] & {
color: $global-font-secondary-color-dark;
}
@include link(false, false);
}
.post-info-md {
font-size: 0.8rem;
width: 8rem;
@include link(false, false);
}
.post-info-share {
a * {
vertical-align: text-bottom;
}
}
}
}
.post-info-more {
padding: 0.3rem 0 1rem;
display: flex;
justify-content: space-between;
font-size: 0.9rem;
}
.post-tags {
max-width: 65%;
* {
display: inline;
}
}
.post-nav {
&::before,
&::after {
content: ' ';
display: table;
}
& a.prev,
& a.next {
font-size: 1rem;
font-weight: 600;
@include transition(all 0.3s ease-out);
}
& a.prev {
float: left;
}
& a.prev:hover {
@include transform(translateX(-4px));
}
& a.next {
float: right;
}
& a.next:hover {
@include transform(translateX(4px));
}
}
}

View File

@@ -0,0 +1,5 @@
iframe.instagram-media {
[theme=dark] & {
border: none !important;
}
}

View File

@@ -0,0 +1,4 @@
.mapbox {
margin: .5rem 0;
padding: .5rem 0;
}

View File

@@ -0,0 +1,3 @@
meting-js {
margin: .5rem 0;
}

View File

@@ -0,0 +1,157 @@
.toc {
.toc-title {
font-size: $toc-title-font-size;
font-weight: bold;
text-transform: uppercase;
}
.toc-content {
font-size: $toc-content-font-size;
ul {
text-indent: -0.85rem;
padding-left: .8rem;
list-style: none;
a:first-child::before {
content: "|";
font-weight: bolder;
margin-right: .5rem;
color: $single-link-color;
[theme=dark] & {
color: $single-link-color-dark;
}
}
ul {
padding-left: 1.5rem;
}
}
}
ruby {
background: $code-background-color;
rt {
color: $global-font-secondary-color;
}
[theme=dark] & {
background: $code-background-color-dark;
rt {
color: $global-font-secondary-color-dark;
}
}
}
}
#toc-auto {
display: block;
position: absolute;
width: $MAX_LENGTH;
max-width: 0;
padding: 0 .8rem;
border-left: 4px solid $global-border-color;
@include overflow-wrap(break-word);
box-sizing: border-box;
top: 10rem;
left: 0;
visibility: hidden;
[data-header-desktop=normal] & {
top: 5rem;
}
@include blur;
[theme=dark] & {
border-left-color: $global-border-color-dark;
}
.toc-title {
margin: .8rem 0;
}
.toc-content {
&.always-active ul {
display: block;
}
> nav > ul {
margin: .625rem 0;
}
ul {
ul {
display: none;
}
.has-active > ul {
display: block;
}
}
a.active {
font-weight: bold;
color: $single-link-color;
[theme=dark] & {
color: $single-link-color-dark;
}
&::before {
color: $single-link-hover-color;
[theme=dark] & {
color: $single-link-hover-color-dark;
}
}
}
}
}
#toc-static {
display: none;
margin: .8rem 0;
&[data-kept=true] {
display: block;
}
.toc-title {
display: flex;
justify-content: space-between;
line-height: 2em;
padding: 0 .75rem;
background: darken($code-background-color, 6%);
[theme=dark] & {
background: darken($code-background-color-dark, 6%);
}
}
.toc-content {
background-color: $code-background-color;
> nav > ul {
margin: 0;
padding: .4rem 1rem .4rem 1.8rem;
}
[theme=dark] & {
background-color: $code-background-color-dark;
}
}
&.open {
.toc-title {
background: darken($code-background-color, 3%);
[theme=dark] & {
background: darken($code-background-color-dark, 3%);
}
}
}
}

View File

@@ -0,0 +1,369 @@
// ==============================
// Variables
// ==============================
// ========== Global ========== //
// Font and Line Height
$global-font-family: system-ui, -apple-system, BlinkMacSystemFont, PingFang SC, Microsoft YaHei UI, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Helvetica, Arial, sans-serif !default;
$global-font-size: 16px;
$global-font-weight: 400;
$global-line-height: 1.5rem;
// Color of the background
$global-background-color: #fff !default;
$global-background-color-dark: #292a2d !default;
// Color of the text
$global-font-color: #161209 !default;
$global-font-color-dark: #a9a9b3 !default;
// Color of the secondary text
$global-font-secondary-color: #a9a9b3 !default;
$global-font-secondary-color-dark: #5d5d5f !default;
// Color of the link
$global-link-color: #161209 !default;
$global-link-color-dark: #a9a9b3 !default;
// Color of the hover link
$global-link-hover-color: #2d96bd !default;
$global-link-hover-color-dark: #fff !default;
// Color of the border
$global-border-color: #f0f0f0 !default;
$global-border-color-dark: #363636 !default;
// ========== Global ========== //
// ========== Scrollbar ========== //
// Color of the scrollbar
$scrollbar-color: #87878d !default;
// Color of the hover scrollbar
$scrollbar-hover-color: #a9a9b3 !default;
// ========== Scrollbar ========== //
// ========== Selection ========== //
// Color of the selected text
$selection-color: rgba(53, 166, 247, 0.25) !default;
$selection-color-dark: rgba(50, 112, 194, 0.4) !default;
// ========== Selection ========== //
// ========== Header ========== //
// Height of the header
$header-height: 3.5rem !default;
// Color of the header background
$header-background-color: #f8f8f8 !default;
$header-background-color-dark: #252627 !default;
// Font style of the header title
$header-title-font-family: $global-font-family !default;
$header-title-font-size: 1.5rem !default;
// Color of the hover header item
$header-hover-color: #161209 !default;
$header-hover-color-dark: #fff !default;
// Color of the search background
$search-background-color: #e9e9e9 !default;
$search-background-color-dark: #363636 !default;
// ========== Header ========== //
// ========== Single Content ========== //
// Font size of the TOC
$toc-title-font-size: 1.2rem !default;
$toc-content-font-size: 1rem !default;
// Color of the single link
$single-link-color: #2d96bd !default;
$single-link-color-dark: #55bde2 !default;
// Color of the hover single link
$single-link-hover-color: #ef3982 !default;
$single-link-hover-color-dark: #bdebfc !default;
// Color of the table background
$table-background-color: #fff !default;
$table-background-color-dark: #272c34 !default;
// Color of the table thead
$table-thead-color: #ededed !default;
$table-thead-color-dark: #20252b !default;
// Color of the blockquote
$blockquote-color: #6bd6fd !default;
$blockquote-color-dark: #59c5ec !default;
// ========== Single Content ========== //
// ========== Pagination ========== //
// Color of the link in pagination
$pagination-link-color: #2d96bd !default;
$pagination-link-color-dark: #a9a9b3 !default;
// Color of the hover link in pagination
$pagination-link-hover-color: #000 !default;
$pagination-link-hover-color-dark: #fff !default;
// ========== Pagination ========== //
// ========== Code ========== //
// Color of the code
$code-color: #E74C3C !default;
$code-color-dark: #E5BF78 !default;
// Color of the code background
$code-background-color: #f5f5f5 !default;
$code-background-color-dark: #272C34 !default;
$code-info-color: #9c9c9c !default;
$code-info-color-dark: #b1b0b0 !default;
// Font size of the code
$code-font-size: .875rem !default;
// Font family of the code
$code-font-family: Source Code Pro, Menlo, Consolas, Monaco, monospace, $global-font-family !default;
// Code type map
$code-type-map: (
// Custom code type
language-bash: 'Bash',
language-c: 'C',
language-cs: 'C#',
language-cpp: 'C++',
language-clojure: 'Clojure',
language-coffeescript: 'CoffeeScript',
language-css: 'CSS',
language-dart: 'Dart',
language-diff: 'Diff',
language-erlang: 'Erlang',
language-go: 'Go',
language-go-html-template: 'Go HTML Template',
language-groovy: 'Groovy',
language-haskell: 'Haskell',
language-html: 'HTML',
language-http: 'HTTP',
language-xml: 'XML',
language-java: 'Java',
language-js: 'JavaScript',
language-javascript: 'JavaScript',
language-json: 'JSON',
language-kotlin: 'Kotlin',
language-latex: 'LaTeX',
language-less: 'Less',
language-lisp: 'Lisp',
language-lua: 'Lua',
language-makefile: 'Makefile',
language-markdown: 'Markdown',
language-matlab: 'Matlab',
language-objectivec: 'Objective-C',
language-php: 'PHP',
language-perl: 'Perl',
language-powershell: 'PowerShell',
language-posh: 'PowerShell',
language-pwsh: 'PowerShell',
language-python: 'Python',
language-r: 'R',
language-ruby: 'Ruby',
language-rust: 'Rust',
language-scala: 'Scala',
language-scss: 'Scss',
language-shell: 'Shell',
language-sql: 'SQL',
language-swift: 'Swift',
language-tex: 'TeX',
language-toml: 'TOML',
language-ts: 'TypeScript',
language-typescript: 'TypeScript',
language-vue: 'Vue',
language-yml: 'YAML',
language-yaml: 'YAML',
) !default;
// Color map of the code highlight
$code-highlight-color-map: (
/* Parentheses */ 'p': #a9a9b3,
/* Keyword */ 'k': #b501a9,
/* KeywordConstant */ 'kc': #b501a9,
/* KeywordDeclaration */ 'kd': #b501a9,
/* KeywordNamespace */ 'kn': #b501a9,
/* KeywordPseudo */ 'kp': #b501a9,
/* KeywordReserved */ 'kr': #b501a9,
/* KeywordType */ 'kt': #b501a9,
/* Name */ 'n': #333333,
/* NameAttribute */ 'na': #2b77fa,
/* NameBuiltin */ 'nb': #f74840,
/* NameBuiltinPseudo */ 'bp': #f74840,
/* NameClass */ 'nc': #cb8100,
/* NameConstant */ 'no': #2b77fa,
/* NameDecorator */ 'nd': #0086c1,
/* NameEntity */ 'ni': #2b77fa,
/* NameException */ 'ne': #2b77fa,
/* NameFunction */ 'nf': #2b77fa,
/* NameFunctionMagic */ 'fm': #1ccad6,
/* NameLabel */ 'nl': #2b77fa,
/* NameNamespace */ 'nn': #2b77fa,
/* NameOther */ 'nx': #333333,
/* NameProperty */ 'py': #2b77fa,
/* NameTag */ 'nt': #2b77fa,
/* NameVariable */ 'nv': #2b77fa,
/* NameVariableClass */ 'vc': #2b77fa,
/* NameVariableGlobal */ 'vg': #2b77fa,
/* NameVariableInstance */ 'vi': #2b77fa,
/* NameVariableMagic */ 'vm': #2b77fa,
/* Literal */ 'l': #2aa198,
/* LiteralDate */ 'ld': #2aa198,
/* LiteralString */ 's': #24a443,
/* LiteralStringAffix */ 'sa': #24a443,
/* LiteralStringBacktick */ 'sb': #24a443,
/* LiteralStringChar */ 'sc': #24a443,
/* LiteralStringDelimiter */ 'dl': #24a443,
/* LiteralStringDoc */ 'sd': #24a443,
/* LiteralStringDouble */ 's2': #24a443,
/* LiteralStringEscape */ 'se': #24a443,
/* LiteralStringHeredoc */ 'sh': #24a443,
/* LiteralStringInterpol */ 'si': #24a443,
/* LiteralStringOther */ 'sx': #24a443,
/* LiteralStringRegex */ 'sr': #24a443,
/* LiteralStringSingle */ 's1': #24a443,
/* LiteralStringSymbol */ 'ss': #24a443,
/* LiteralNumber */ 'm': #e2893c,
/* LiteralNumberBin */ 'mb': #e2893c,
/* LiteralNumberFloat */ 'mf': #e2893c,
/* LiteralNumberHex */ 'mh': #e2893c,
/* LiteralNumberInteger */ 'mi': #e2893c,
/* LiteralNumberIntegerLong */ 'il': #e2893c,
/* LiteralNumberOct */ 'mo': #e2893c,
/* Operator */ 'o': #f19b04,
/* OperatorWord */ 'ow': #b501a9,
/* Comment */ 'c': #a0a1a8,
/* CommentHashbang */ 'ch': #a0a1a8,
/* CommentMultiline */ 'cm': #a0a1a8,
/* CommentSingle */ 'c1': #a0a1a8,
/* CommentSpecial */ 'cs': #a0a1a8,
/* CommentPreproc */ 'cp': #a0a1a8,
/* CommentPreprocFile */ 'cpf': #a0a1a8,
/* Generic */ 'g': #e72d40,
/* GenericDeleted */ 'gd': #e72d40,
/* GenericEmph */ 'ge': #e72d40,
/* GenericError */ 'gr': #e72d40,
/* GenericHeading */ 'gh': #e72d40,
/* GenericInserted */ 'gi': #e72d40,
/* GenericOutput */ 'go': #e72d40,
/* GenericPrompt */ 'gp': #e72d40,
/* GenericStrong */ 'gs': #e72d40,
/* GenericSubheading */ 'gu': #e72d40,
/* GenericTraceback */ 'gt': #e72d40,
/* TextWhitespace */ 'w': #bbbbbb,
) !default;
$code-highlight-color-map-dark: (
/* Parentheses */ 'p': #a9a9b3,
/* Keyword */ 'k': #d371e3,
/* KeywordConstant */ 'kc': #d371e3,
/* KeywordDeclaration */ 'kd': #d371e3,
/* KeywordNamespace */ 'kn': #d371e3,
/* KeywordPseudo */ 'kp': #d371e3,
/* KeywordReserved */ 'kr': #d371e3,
/* KeywordType */ 'kt': #d371e3,
/* Name */ 'n': #a9b2c0,
/* NameAttribute */ 'na': #41b0f5,
/* NameBuiltin */ 'nb': #19b9c4,
/* NameBuiltinPseudo */ 'bp': #ecbf6f,
/* NameClass */ 'nc': #ecbf6f,
/* NameConstant */ 'no': #41b0f5,
/* NameDecorator */ 'nd': #ecbf6f,
/* NameEntity */ 'ni': #41b0f5,
/* NameException */ 'ne': #41b0f5,
/* NameFunction */ 'nf': #41b0f5,
/* NameFunctionMagic */ 'fm': #19b9c4,
/* NameLabel */ 'nl': #41b0f5,
/* NameNamespace */ 'nn': #41b0f5,
/* NameOther */ 'nx': #a9a9b3,
/* NameProperty */ 'py': #41b0f5,
/* NameTag */ 'nt': #41b0f5,
/* NameVariable */ 'nv': #41b0f5,
/* NameVariableClass */ 'vc': #41b0f5,
/* NameVariableGlobal */ 'vg': #41b0f5,
/* NameVariableInstance */ 'vi': #41b0f5,
/* NameVariableMagic */ 'vm': #41b0f5,
/* Literal */ 'l': #2aa198,
/* LiteralDate */ 'ld': #2aa198,
/* LiteralString */ 's': #8cc570,
/* LiteralStringAffix */ 'sa': #8cc570,
/* LiteralStringBacktick */ 'sb': #8cc570,
/* LiteralStringChar */ 'sc': #8cc570,
/* LiteralStringDelimiter */ 'dl': #8cc570,
/* LiteralStringDoc */ 'sd': #8cc570,
/* LiteralStringDouble */ 's2': #8cc570,
/* LiteralStringEscape */ 'se': #8cc570,
/* LiteralStringHeredoc */ 'sh': #8cc570,
/* LiteralStringInterpol */ 'si': #8cc570,
/* LiteralStringOther */ 'sx': #8cc570,
/* LiteralStringRegex */ 'sr': #8cc570,
/* LiteralStringSingle */ 's1': #8cc570,
/* LiteralStringSymbol */ 'ss': #8cc570,
/* LiteralNumber */ 'm': #db985c,
/* LiteralNumberBin */ 'mb': #db985c,
/* LiteralNumberFloat */ 'mf': #db985c,
/* LiteralNumberHex */ 'mh': #db985c,
/* LiteralNumberInteger */ 'mi': #db985c,
/* LiteralNumberIntegerLong */ 'il': #db985c,
/* LiteralNumberOct */ 'mo': #db985c,
/* Operator */ 'o': #ecbf6f,
/* OperatorWord */ 'ow': #d371e3,
/* Comment */ 'c': #7e848f,
/* CommentHashbang */ 'ch': #7e848f,
/* CommentMultiline */ 'cm': #7e848f,
/* CommentSingle */ 'c1': #7e848f,
/* CommentSpecial */ 'cs': #7e848f,
/* CommentPreproc */ 'cp': #7e848f,
/* CommentPreprocFile */ 'cpf': #7e848f,
/* Generic */ 'g': #f16372,
/* GenericDeleted */ 'gd': #f16372,
/* GenericEmph */ 'ge': #f16372,
/* GenericError */ 'gr': #f16372,
/* GenericHeading */ 'gh': #f16372,
/* GenericInserted */ 'gi': #f16372,
/* GenericOutput */ 'go': #f16372,
/* GenericPrompt */ 'gp': #f16372,
/* GenericStrong */ 'gs': #f16372,
/* GenericSubheading */ 'gu': #f16372,
/* GenericTraceback */ 'gt': #f16372,
/* TextWhitespace */ 'w': #bbbbbb,
) !default;
// ========== Code ========== //
// ========== Admonition ========== //
// Color map of the admonition
$admonition-color-map: (
'note': #448aff,
'abstract': #00b0ff,
'info': #00b8d4,
'tip': #00bfa5,
'success': #00c853,
'question': #64dd17,
'warning': #ff9100,
'failure': #ff5252,
'danger': #ff1744,
'bug': #f50057,
'example': #651fff,
'quote': #9e9e9e,
) !default;
// Color map of the admonition background
$admonition-background-color-map: (
'note': rgba(68, 138, 255, 0.1),
'abstract': rgba(0, 176, 255, 0.1),
'info': rgba(0, 184, 212, 0.1),
'tip': rgba(0, 191, 165, 0.1),
'success': rgba(0, 200, 83, 0.1),
'question': rgba(100, 221, 23, 0.1),
'warning': rgba(255, 145, 0, 0.1),
'failure': rgba(255, 82, 82, 0.1),
'danger': rgba(255, 23, 68, 0.1),
'bug': rgba(245, 0, 87, 0.1),
'example': rgba(101, 31, 255, 0.1),
'quote': rgba(159, 159, 159, 0.1),
) !default;
// ========== Admonition ========== //
$MAX_LENGTH: 12000px;

View File

@@ -0,0 +1,19 @@
@charset "utf-8";
@import "_variables";
@import "_override";
@import "_mixin/index";
@import "_core/base";
@import "_core/layout";
@import "_page/index";
@import "_partial/header";
@import "_partial/footer";
@import "_partial/pagination";
@import "_core/media";
@import "_custom";

View File

@@ -0,0 +1,61 @@
prefix:
libFiles: https://cdn.jsdelivr.net/npm/
# simple-icons@6.20.0 https://github.com/simple-icons/simple-icons
simpleIcons: https://cdn.jsdelivr.net/npm/simple-icons@6.20.0/icons/
libFiles:
# normalize.css@8.0.1 https://github.com/necolas/normalize.css
normalizeCSS: normalize.css@8.0.1/normalize.min.css
# fontawesome-free@6.1.1 https://fontawesome.com/
fontawesomeFreeCSS: '@fortawesome/fontawesome-free@6.1.1/css/all.min.css'
# animate.css@4.1.1 https://github.com/daneden/animate.css
animateCSS: animate.css@4.1.1/animate.min.css
# autocomplete.js@0.38.1 https://github.com/algolia/autocomplete.js
autocompleteJS: autocomplete.js@0.38.1/dist/autocomplete.min.js
# lunr.js@2.3.9 https://lunrjs.com/
lunrJS: lunr@2.3.9/lunr.min.js
# algoliasearch@4.13.0 https://github.com/algolia/algoliasearch-client-javascript
algoliasearchJS: algoliasearch@4.13.0/dist/algoliasearch-lite.umd.min.js
# lazysizes@5.3.1 https://github.com/aFarkas/lazysizes
lazysizesJS: lazysizes@5.3.1/lazysizes.min.js
# object-fit-images@3.2.4 https://github.com/fregante/object-fit-images
objectFitImagesJS: object-fit-images@3.2.4/dist/ofi.min.js
# twemoji@14.0.2 https://github.com/twitter/twemoji
twemojiJS: twemoji@14.0.2/dist/twemoji.min.js
# lightgallery@2.4.0 https://github.com/sachinchoolur/lightgallery
lightgalleryCSS: lightgallery@2.4.0/css/lightgallery-bundle.min.css
lightgalleryJS: lightgallery@2.4.0/lightgallery.min.js
lightgalleryThumbnailJS: lightgallery@2.4.0/plugins/thumbnail/lg-thumbnail.min.js
lightgalleryZoomJS: lightgallery@2.4.0/plugins/zoom/lg-zoom.min.js
# clipboard.js@2.0.11 https://github.com/zenorocha/clipboard.js
clipboardJS: clipboard@2.0.11/dist/clipboard.min.js
# sharer.js@0.5.1 https://github.com/ellisonleao/sharer.js
sharerJS: sharer.js@0.5.1/sharer.min.js
# typeit@8.5.4 https://github.com/alexmacarthur/typeit
typeitJS: typeit@8.5.4/dist/index.umd.js
# katex@0.15.3 https://katex.org/
katexCSS: katex@0.15.3/dist/katex.min.css
katexJS: katex@0.15.3/dist/katex.min.js
katexAutoRenderJS: katex@0.15.3/dist/contrib/auto-render.min.js
katexCopyTexCSS: katex@0.15.3/dist/contrib/copy-tex.min.css
katexCopyTexJS: katex@0.15.3/dist/contrib/copy-tex.min.js
katexMhchemJS: katex@0.15.3/dist/contrib/mhchem.min.js
# mermaid@9.1.0 https://github.com/mermaid-js/mermaid
mermaidJS: mermaid@9.1.0/dist/mermaid.min.js
# echarts@5.3.2 https://echarts.apache.org/
echartsJS: echarts@5.3.2/dist/echarts.min.js
# mapbox-gl@2.8.2 https://docs.mapbox.com/mapbox-gl-js
mapboxGLCSS: mapbox-gl@2.8.2/dist/mapbox-gl.min.css
mapboxGLJS: mapbox-gl@2.8.2/dist/mapbox-gl.min.js
# aplayer@1.10.1 https://github.com/MoePlayer/APlayer
aplayerCSS: aplayer@1.10.1/dist/APlayer.min.css
aplayerJS: aplayer@1.10.1/dist/APlayer.min.js
# meting@2.0.1 https://github.com/metowolf/MetingJS
metingJS: meting@2.0.1/dist/Meting.min.js
# gitalk@1.7.2 https://github.com/gitalk/gitalk
gitalkCSS: gitalk@1.7.2/dist/gitalk.min.css
gitalkJS: gitalk@1.7.2/dist/gitalk.min.js
# valine@1.4.18 https://valine.js.org/
valineJS: valine@1.4.18/dist/Valine.min.js
# cookieconsent@3.1.1 https://github.com/osano/cookieconsent
cookieconsentCSS: cookieconsent@3.1.1/build/cookieconsent.min.css
cookieconsentJS: cookieconsent@3.1.1/build/cookieconsent.min.js

View File

@@ -0,0 +1,150 @@
emojiCDN: 'https://cdn.jsdelivr.net/npm/emoji-datasource-apple@14.0.0/img/apple/64/'
emojiMaps:
'100': 1f4af.png
grinning: 1f600.png
smiley: 1f603.png
smile: 1f604.png
grin: 1f601.png
laughing: 1f606.png
sweat_smile: 1f605.png
rolling_on_the_floor_laughing: 1f923.png
joy: 1f602.png
slightly_smiling_face: 1f642.png
upside_down_face: 1f643.png
wink: 1f609.png
blush: 1f60a.png
innocent: 1f607.png
smiling_face_with_3_hearts: 1f970.png
heart_eyes: 1f60d.png
star-struck: 1f929.png
kissing_heart: 1f618.png
kissing: 1f617.png
relaxed: 263a-fe0f.png
kissing_closed_eyes: 1f61a.png
kissing_smiling_eyes: 1f619.png
yum: 1f60b.png
stuck_out_tongue: 1f61b.png
stuck_out_tongue_winking_eye: 1f61c.png
zany_face: 1f92a.png
stuck_out_tongue_closed_eyes: 1f61d.png
money_mouth_face: 1f911.png
hugging_face: 1f917.png
face_with_hand_over_mouth: 1f92d.png
shushing_face: 1f92b.png
thinking_face: 1f914.png
zipper_mouth_face: 1f910.png
face_with_raised_eyebrow: 1f928.png
neutral_face: 1f610.png
expressionless: 1f611.png
no_mouth: 1f636.png
smirk: 1f60f.png
unamused: 1f612.png
face_with_rolling_eyes: 1f644.png
grimacing: 1f62c.png
lying_face: 1f925.png
relieved: 1f60c.png
pensive: 1f614.png
sleepy: 1f62a.png
drooling_face: 1f924.png
sleeping: 1f634.png
mask: 1f637.png
face_with_thermometer: 1f912.png
face_with_head_bandage: 1f915.png
nauseated_face: 1f922.png
face_vomiting: 1f92e.png
sneezing_face: 1f927.png
hot_face: 1f975.png
cold_face: 1f976.png
woozy_face: 1f974.png
dizzy_face: 1f635.png
exploding_head: 1f92f.png
face_with_cowboy_hat: 1f920.png
partying_face: 1f973.png
sunglasses: 1f60e.png
nerd_face: 1f913.png
face_with_monocle: 1f9d0.png
confused: 1f615.png
worried: 1f61f.png
slightly_frowning_face: 1f641.png
white_frowning_face: 2639-fe0f.png
open_mouth: 1f62e.png
hushed: 1f62f.png
astonished: 1f632.png
flushed: 1f633.png
pleading_face: 1f97a.png
frowning: 1f626.png
anguished: 1f627.png
fearful: 1f628.png
cold_sweat: 1f630.png
disappointed_relieved: 1f625.png
cry: 1f622.png
sob: 1f62d.png
scream: 1f631.png
confounded: 1f616.png
persevere: 1f623.png
disappointed: 1f61e.png
sweat: 1f613.png
weary: 1f629.png
tired_face: 1f62b.png
yawning_face: 1f971.png
triumph: 1f624.png
rage: 1f621.png
angry: 1f620.png
face_with_symbols_on_mouth: 1f92c.png
smiling_imp: 1f608.png
imp: 1f47f.png
skull: 1f480.png
skull_and_crossbones: 2620-fe0f.png
hankey: 1f4a9.png
clown_face: 1f921.png
japanese_ogre: 1f479.png
japanese_goblin: 1f47a.png
ghost: 1f47b.png
alien: 1f47d.png
space_invader: 1f47e.png
robot_face: 1f916.png
smiley_cat: 1f63a.png
smile_cat: 1f638.png
joy_cat: 1f639.png
heart_eyes_cat: 1f63b.png
smirk_cat: 1f63c.png
kissing_cat: 1f63d.png
scream_cat: 1f640.png
crying_cat_face: 1f63f.png
pouting_cat: 1f63e.png
see_no_evil: 1f648.png
hear_no_evil: 1f649.png
speak_no_evil: 1f64a.png
kiss: 1f48b.png
love_letter: 1f48c.png
cupid: 1f498.png
gift_heart: 1f49d.png
sparkling_heart: 1f496.png
heartpulse: 1f497.png
heartbeat: 1f493.png
revolving_hearts: 1f49e.png
two_hearts: 1f495.png
heart_decoration: 1f49f.png
heavy_heart_exclamation_mark_ornament: 2763-fe0f.png
broken_heart: 1f494.png
heart: 2764-fe0f.png
orange_heart: 1f9e1.png
yellow_heart: 1f49b.png
green_heart: 1f49a.png
blue_heart: 1f499.png
purple_heart: 1f49c.png
brown_heart: 1f90e.png
black_heart: 1f5a4.png
white_heart: 1f90d.png
anger: 1f4a2.png
boom: 1f4a5.png
dizzy: 1f4ab.png
sweat_drops: 1f4a6.png
dash: 1f4a8.png
hole: 1f573-fe0f.png
bomb: 1f4a3.png
speech_balloon: 1f4ac.png
left_speech_bubble: 1f5e8-fe0f.png
right_anger_bubble: 1f5ef-fe0f.png
thought_balloon: 1f4ad.png
zzz: 1f4a4.png

View File

@@ -0,0 +1,150 @@
emojiCDN: 'https://cdn.jsdelivr.net/npm/emoji-datasource-facebook@14.0.0/img/facebook/64/'
emojiMaps:
'100': 1f4af.png
grinning: 1f600.png
smiley: 1f603.png
smile: 1f604.png
grin: 1f601.png
laughing: 1f606.png
sweat_smile: 1f605.png
rolling_on_the_floor_laughing: 1f923.png
joy: 1f602.png
slightly_smiling_face: 1f642.png
upside_down_face: 1f643.png
wink: 1f609.png
blush: 1f60a.png
innocent: 1f607.png
smiling_face_with_3_hearts: 1f970.png
heart_eyes: 1f60d.png
star-struck: 1f929.png
kissing_heart: 1f618.png
kissing: 1f617.png
relaxed: 263a-fe0f.png
kissing_closed_eyes: 1f61a.png
kissing_smiling_eyes: 1f619.png
yum: 1f60b.png
stuck_out_tongue: 1f61b.png
stuck_out_tongue_winking_eye: 1f61c.png
zany_face: 1f92a.png
stuck_out_tongue_closed_eyes: 1f61d.png
money_mouth_face: 1f911.png
hugging_face: 1f917.png
face_with_hand_over_mouth: 1f92d.png
shushing_face: 1f92b.png
thinking_face: 1f914.png
zipper_mouth_face: 1f910.png
face_with_raised_eyebrow: 1f928.png
neutral_face: 1f610.png
expressionless: 1f611.png
no_mouth: 1f636.png
smirk: 1f60f.png
unamused: 1f612.png
face_with_rolling_eyes: 1f644.png
grimacing: 1f62c.png
lying_face: 1f925.png
relieved: 1f60c.png
pensive: 1f614.png
sleepy: 1f62a.png
drooling_face: 1f924.png
sleeping: 1f634.png
mask: 1f637.png
face_with_thermometer: 1f912.png
face_with_head_bandage: 1f915.png
nauseated_face: 1f922.png
face_vomiting: 1f92e.png
sneezing_face: 1f927.png
hot_face: 1f975.png
cold_face: 1f976.png
woozy_face: 1f974.png
dizzy_face: 1f635.png
exploding_head: 1f92f.png
face_with_cowboy_hat: 1f920.png
partying_face: 1f973.png
sunglasses: 1f60e.png
nerd_face: 1f913.png
face_with_monocle: 1f9d0.png
confused: 1f615.png
worried: 1f61f.png
slightly_frowning_face: 1f641.png
white_frowning_face: 2639-fe0f.png
open_mouth: 1f62e.png
hushed: 1f62f.png
astonished: 1f632.png
flushed: 1f633.png
pleading_face: 1f97a.png
frowning: 1f626.png
anguished: 1f627.png
fearful: 1f628.png
cold_sweat: 1f630.png
disappointed_relieved: 1f625.png
cry: 1f622.png
sob: 1f62d.png
scream: 1f631.png
confounded: 1f616.png
persevere: 1f623.png
disappointed: 1f61e.png
sweat: 1f613.png
weary: 1f629.png
tired_face: 1f62b.png
yawning_face: 1f971.png
triumph: 1f624.png
rage: 1f621.png
angry: 1f620.png
face_with_symbols_on_mouth: 1f92c.png
smiling_imp: 1f608.png
imp: 1f47f.png
skull: 1f480.png
skull_and_crossbones: 2620-fe0f.png
hankey: 1f4a9.png
clown_face: 1f921.png
japanese_ogre: 1f479.png
japanese_goblin: 1f47a.png
ghost: 1f47b.png
alien: 1f47d.png
space_invader: 1f47e.png
robot_face: 1f916.png
smiley_cat: 1f63a.png
smile_cat: 1f638.png
joy_cat: 1f639.png
heart_eyes_cat: 1f63b.png
smirk_cat: 1f63c.png
kissing_cat: 1f63d.png
scream_cat: 1f640.png
crying_cat_face: 1f63f.png
pouting_cat: 1f63e.png
see_no_evil: 1f648.png
hear_no_evil: 1f649.png
speak_no_evil: 1f64a.png
kiss: 1f48b.png
love_letter: 1f48c.png
cupid: 1f498.png
gift_heart: 1f49d.png
sparkling_heart: 1f496.png
heartpulse: 1f497.png
heartbeat: 1f493.png
revolving_hearts: 1f49e.png
two_hearts: 1f495.png
heart_decoration: 1f49f.png
heavy_heart_exclamation_mark_ornament: 2763-fe0f.png
broken_heart: 1f494.png
heart: 2764-fe0f.png
orange_heart: 1f9e1.png
yellow_heart: 1f49b.png
green_heart: 1f49a.png
blue_heart: 1f499.png
purple_heart: 1f49c.png
brown_heart: 1f90e.png
black_heart: 1f5a4.png
white_heart: 1f90d.png
anger: 1f4a2.png
boom: 1f4a5.png
dizzy: 1f4ab.png
sweat_drops: 1f4a6.png
dash: 1f4a8.png
hole: 1f573-fe0f.png
bomb: 1f4a3.png
speech_balloon: 1f4ac.png
left_speech_bubble: 1f5e8-fe0f.png
right_anger_bubble: 1f5ef-fe0f.png
thought_balloon: 1f4ad.png
zzz: 1f4a4.png

View File

@@ -0,0 +1,150 @@
emojiCDN: 'https://cdn.jsdelivr.net/npm/emoji-datasource-google@14.0.0/img/google/64/'
emojiMaps:
'100': 1f4af.png
grinning: 1f600.png
smiley: 1f603.png
smile: 1f604.png
grin: 1f601.png
laughing: 1f606.png
sweat_smile: 1f605.png
rolling_on_the_floor_laughing: 1f923.png
joy: 1f602.png
slightly_smiling_face: 1f642.png
upside_down_face: 1f643.png
wink: 1f609.png
blush: 1f60a.png
innocent: 1f607.png
smiling_face_with_3_hearts: 1f970.png
heart_eyes: 1f60d.png
star-struck: 1f929.png
kissing_heart: 1f618.png
kissing: 1f617.png
relaxed: 263a-fe0f.png
kissing_closed_eyes: 1f61a.png
kissing_smiling_eyes: 1f619.png
yum: 1f60b.png
stuck_out_tongue: 1f61b.png
stuck_out_tongue_winking_eye: 1f61c.png
zany_face: 1f92a.png
stuck_out_tongue_closed_eyes: 1f61d.png
money_mouth_face: 1f911.png
hugging_face: 1f917.png
face_with_hand_over_mouth: 1f92d.png
shushing_face: 1f92b.png
thinking_face: 1f914.png
zipper_mouth_face: 1f910.png
face_with_raised_eyebrow: 1f928.png
neutral_face: 1f610.png
expressionless: 1f611.png
no_mouth: 1f636.png
smirk: 1f60f.png
unamused: 1f612.png
face_with_rolling_eyes: 1f644.png
grimacing: 1f62c.png
lying_face: 1f925.png
relieved: 1f60c.png
pensive: 1f614.png
sleepy: 1f62a.png
drooling_face: 1f924.png
sleeping: 1f634.png
mask: 1f637.png
face_with_thermometer: 1f912.png
face_with_head_bandage: 1f915.png
nauseated_face: 1f922.png
face_vomiting: 1f92e.png
sneezing_face: 1f927.png
hot_face: 1f975.png
cold_face: 1f976.png
woozy_face: 1f974.png
dizzy_face: 1f635.png
exploding_head: 1f92f.png
face_with_cowboy_hat: 1f920.png
partying_face: 1f973.png
sunglasses: 1f60e.png
nerd_face: 1f913.png
face_with_monocle: 1f9d0.png
confused: 1f615.png
worried: 1f61f.png
slightly_frowning_face: 1f641.png
white_frowning_face: 2639-fe0f.png
open_mouth: 1f62e.png
hushed: 1f62f.png
astonished: 1f632.png
flushed: 1f633.png
pleading_face: 1f97a.png
frowning: 1f626.png
anguished: 1f627.png
fearful: 1f628.png
cold_sweat: 1f630.png
disappointed_relieved: 1f625.png
cry: 1f622.png
sob: 1f62d.png
scream: 1f631.png
confounded: 1f616.png
persevere: 1f623.png
disappointed: 1f61e.png
sweat: 1f613.png
weary: 1f629.png
tired_face: 1f62b.png
yawning_face: 1f971.png
triumph: 1f624.png
rage: 1f621.png
angry: 1f620.png
face_with_symbols_on_mouth: 1f92c.png
smiling_imp: 1f608.png
imp: 1f47f.png
skull: 1f480.png
skull_and_crossbones: 2620-fe0f.png
hankey: 1f4a9.png
clown_face: 1f921.png
japanese_ogre: 1f479.png
japanese_goblin: 1f47a.png
ghost: 1f47b.png
alien: 1f47d.png
space_invader: 1f47e.png
robot_face: 1f916.png
smiley_cat: 1f63a.png
smile_cat: 1f638.png
joy_cat: 1f639.png
heart_eyes_cat: 1f63b.png
smirk_cat: 1f63c.png
kissing_cat: 1f63d.png
scream_cat: 1f640.png
crying_cat_face: 1f63f.png
pouting_cat: 1f63e.png
see_no_evil: 1f648.png
hear_no_evil: 1f649.png
speak_no_evil: 1f64a.png
kiss: 1f48b.png
love_letter: 1f48c.png
cupid: 1f498.png
gift_heart: 1f49d.png
sparkling_heart: 1f496.png
heartpulse: 1f497.png
heartbeat: 1f493.png
revolving_hearts: 1f49e.png
two_hearts: 1f495.png
heart_decoration: 1f49f.png
heavy_heart_exclamation_mark_ornament: 2763-fe0f.png
broken_heart: 1f494.png
heart: 2764-fe0f.png
orange_heart: 1f9e1.png
yellow_heart: 1f49b.png
green_heart: 1f49a.png
blue_heart: 1f499.png
purple_heart: 1f49c.png
brown_heart: 1f90e.png
black_heart: 1f5a4.png
white_heart: 1f90d.png
anger: 1f4a2.png
boom: 1f4a5.png
dizzy: 1f4ab.png
sweat_drops: 1f4a6.png
dash: 1f4a8.png
hole: 1f573-fe0f.png
bomb: 1f4a3.png
speech_balloon: 1f4ac.png
left_speech_bubble: 1f5e8-fe0f.png
right_anger_bubble: 1f5ef-fe0f.png
thought_balloon: 1f4ad.png
zzz: 1f4a4.png

View File

@@ -0,0 +1,150 @@
emojiCDN: 'https://cdn.jsdelivr.net/npm/emoji-datasource-twitter@14.0.0/img/twitter/64/'
emojiMaps:
'100': 1f4af.png
grinning: 1f600.png
smiley: 1f603.png
smile: 1f604.png
grin: 1f601.png
laughing: 1f606.png
sweat_smile: 1f605.png
rolling_on_the_floor_laughing: 1f923.png
joy: 1f602.png
slightly_smiling_face: 1f642.png
upside_down_face: 1f643.png
wink: 1f609.png
blush: 1f60a.png
innocent: 1f607.png
smiling_face_with_3_hearts: 1f970.png
heart_eyes: 1f60d.png
star-struck: 1f929.png
kissing_heart: 1f618.png
kissing: 1f617.png
relaxed: 263a-fe0f.png
kissing_closed_eyes: 1f61a.png
kissing_smiling_eyes: 1f619.png
yum: 1f60b.png
stuck_out_tongue: 1f61b.png
stuck_out_tongue_winking_eye: 1f61c.png
zany_face: 1f92a.png
stuck_out_tongue_closed_eyes: 1f61d.png
money_mouth_face: 1f911.png
hugging_face: 1f917.png
face_with_hand_over_mouth: 1f92d.png
shushing_face: 1f92b.png
thinking_face: 1f914.png
zipper_mouth_face: 1f910.png
face_with_raised_eyebrow: 1f928.png
neutral_face: 1f610.png
expressionless: 1f611.png
no_mouth: 1f636.png
smirk: 1f60f.png
unamused: 1f612.png
face_with_rolling_eyes: 1f644.png
grimacing: 1f62c.png
lying_face: 1f925.png
relieved: 1f60c.png
pensive: 1f614.png
sleepy: 1f62a.png
drooling_face: 1f924.png
sleeping: 1f634.png
mask: 1f637.png
face_with_thermometer: 1f912.png
face_with_head_bandage: 1f915.png
nauseated_face: 1f922.png
face_vomiting: 1f92e.png
sneezing_face: 1f927.png
hot_face: 1f975.png
cold_face: 1f976.png
woozy_face: 1f974.png
dizzy_face: 1f635.png
exploding_head: 1f92f.png
face_with_cowboy_hat: 1f920.png
partying_face: 1f973.png
sunglasses: 1f60e.png
nerd_face: 1f913.png
face_with_monocle: 1f9d0.png
confused: 1f615.png
worried: 1f61f.png
slightly_frowning_face: 1f641.png
white_frowning_face: 2639-fe0f.png
open_mouth: 1f62e.png
hushed: 1f62f.png
astonished: 1f632.png
flushed: 1f633.png
pleading_face: 1f97a.png
frowning: 1f626.png
anguished: 1f627.png
fearful: 1f628.png
cold_sweat: 1f630.png
disappointed_relieved: 1f625.png
cry: 1f622.png
sob: 1f62d.png
scream: 1f631.png
confounded: 1f616.png
persevere: 1f623.png
disappointed: 1f61e.png
sweat: 1f613.png
weary: 1f629.png
tired_face: 1f62b.png
yawning_face: 1f971.png
triumph: 1f624.png
rage: 1f621.png
angry: 1f620.png
face_with_symbols_on_mouth: 1f92c.png
smiling_imp: 1f608.png
imp: 1f47f.png
skull: 1f480.png
skull_and_crossbones: 2620-fe0f.png
hankey: 1f4a9.png
clown_face: 1f921.png
japanese_ogre: 1f479.png
japanese_goblin: 1f47a.png
ghost: 1f47b.png
alien: 1f47d.png
space_invader: 1f47e.png
robot_face: 1f916.png
smiley_cat: 1f63a.png
smile_cat: 1f638.png
joy_cat: 1f639.png
heart_eyes_cat: 1f63b.png
smirk_cat: 1f63c.png
kissing_cat: 1f63d.png
scream_cat: 1f640.png
crying_cat_face: 1f63f.png
pouting_cat: 1f63e.png
see_no_evil: 1f648.png
hear_no_evil: 1f649.png
speak_no_evil: 1f64a.png
kiss: 1f48b.png
love_letter: 1f48c.png
cupid: 1f498.png
gift_heart: 1f49d.png
sparkling_heart: 1f496.png
heartpulse: 1f497.png
heartbeat: 1f493.png
revolving_hearts: 1f49e.png
two_hearts: 1f495.png
heart_decoration: 1f49f.png
heavy_heart_exclamation_mark_ornament: 2763-fe0f.png
broken_heart: 1f494.png
heart: 2764-fe0f.png
orange_heart: 1f9e1.png
yellow_heart: 1f49b.png
green_heart: 1f49a.png
blue_heart: 1f499.png
purple_heart: 1f49c.png
brown_heart: 1f90e.png
black_heart: 1f5a4.png
white_heart: 1f90d.png
anger: 1f4a2.png
boom: 1f4a5.png
dizzy: 1f4ab.png
sweat_drops: 1f4a6.png
dash: 1f4a8.png
hole: 1f573-fe0f.png
bomb: 1f4a3.png
speech_balloon: 1f4ac.png
left_speech_bubble: 1f5e8-fe0f.png
right_anger_bubble: 1f5ef-fe0f.png
thought_balloon: 1f4ad.png
zzz: 1f4a4.png

View File

@@ -0,0 +1,18 @@
theme:
- html5shiv
- Object.values
- Promise
- fetch
- Element.prototype.after
algoliasearch:
- Promise
- Object.entries
- Object.assign
TypeIt:
- Array.prototype.fill
- Array.prototype.find
- Array.from
- IntersectionObserver
- Math.sign
- Object.assign
- Promise

View File

@@ -0,0 +1,511 @@
# 001: Github
github:
Weight: 60
Prefix: https://github.com/
Title: GitHub
Icon:
Class: fab fa-github-alt fa-fw
# 002: LinkedIn
linkedin:
Weight: 2
Prefix: https://linkedin.com/in/
Title: LinkedIn
Icon:
Class: fab fa-linkedin fa-fw
# 003: Twitter
twitter:
Weight: 3
Prefix: https://twitter.com/
Title: Twitter
Icon:
Class: fab fa-twitter fa-fw
# 004: Instagram
instagram:
Weight: 4
Prefix: https://www.instagram.com/
Title: Instagram
Icon:
Class: fab fa-instagram fa-fw
# 005: facebook
facebook:
Weight: 5
Prefix: https://facebook.com/
Title: facebook
Icon:
Class: fab fa-facebook fa-fw
# 006: Telegram
telegram:
Weight: 6
Prefix: https://t.me/
Title: Telegram
Icon:
Class: fab fa-telegram-plane fa-fw
# 007: Medium
medium:
Weight: 7
Prefix: https://medium.com/
Title: Medium
Icon:
Class: fab fa-medium fa-fw
# 008: GitLab
gitlab:
Weight: 8
Prefix: https://gitlab.spencassemble.com/
Title: GitLab
Icon:
Class: fab fa-gitlab fa-fw
# 009: YouTube Legacy
youtubelegacy:
Weight: 9
Prefix: https://www.youtube.com/user/
Title: YouTube
Icon:
Class: fab fa-youtube fa-fw
# 010: YouTube Custom
youtubecustom:
Weight: 10
Prefix: https://www.youtube.com/c/
Title: YouTube
Icon:
Class: fab fa-youtube fa-fw
# 011: YouTube Channel
youtubechannel:
Weight: 11
Prefix: https://www.youtube.com/channel/
Title: YouTube
Icon:
Class: fab fa-youtube fa-fw
# 012: Tumblr
tumblr:
Weight: 12
Template: https://%v.tumblr.com/
Title: Tumblr
Icon:
Class: fab fa-tumblr fa-fw
# 013: Quora
quora:
Weight: 13
Prefix: https://www.quora.com/profile/
Title: Quora
Icon:
Class: fab fa-quora fa-fw
# 014: Keybase
keybase:
Weight: 14
Prefix: https://keybase.io/
Title: Keybase
Icon:
Class: fab fa-keybase fa-fw
# 015: Pinterest
pinterest:
Weight: 15
Prefix: https://www.pinterest.com/
Title: Pinterest
Icon:
Class: fab fa-pinterest fa-fw
# 016: Reddit
reddit:
Weight: 16
Prefix: https://www.reddit.com/user/
Title: Reddit
Icon:
Class: fab fa-reddit fa-fw
# 017: CodePen
codepen:
Weight: 17
Prefix: https://codepen.io/
Title: CodePen
Icon:
Class: fab fa-codepen fa-fw
# 018: freeCodeCamp
freecodecamp:
Weight: 18
Prefix: https://freecodecamp.org/
Title: freeCodeCamp
Icon:
Class: fab fa-free-code-camp fa-fw
# 019: Bitbucket
bitbucket:
Weight: 19
Prefix: https://bitbucket.org/
Title: Bitbucket
Icon:
Class: fab fa-bitbucket fa-fw
# 020: Stack Overflow
stackoverflow:
Weight: 20
Prefix: https://stackoverflow.com/users/
Title: Stack Overflow
Icon:
Class: fab fa-stack-overflow fa-fw
# 021: 微博
weibo:
Weight: 21
Prefix: https://weibo.com/
Title: 微博
Icon:
Class: fab fa-weibo fa-fw
# 022: OK.RU
odnoklassniki:
Weight: 22
Prefix: https://ok.ru/
Title: OK.RU
Icon:
Class: fab fa-odnoklassniki fa-fw
# 023: VK
vk:
Weight: 23
Prefix: https://vk.com/
Title: VK
Icon:
Class: fab fa-vk fa-fw
# 024: Flickr
flickr:
Weight: 24
Prefix: https://www.flickr.com/photos/
Title: Flickr
Icon:
Class: fab fa-flickr fa-fw
# 025: Xing
xing:
Weight: 25
Prefix: https://www.xing.com/profile/
Title: Xing
Icon:
Class: fab fa-xing fa-fw
# 026: Snapchat
snapchat:
Weight: 26
Prefix: https://www.snapchat.com/add/
Title: Snapchat
Icon:
Class: fab fa-snapchat fa-fw
# 027: SoundCloud
soundcloud:
Weight: 27
Prefix: https://soundcloud.com/
Title: SoundCloud
Icon:
Class: fab fa-soundcloud fa-fw
# 028: Spotify
spotify:
Weight: 28
Prefix: https://open.spotify.com/user/
Title: Spotify
Icon:
Class: fab fa-spotify fa-fw
# 029: Bandcamp
bandcamp:
Weight: 29
Template: https://%v.bandcamp.com/
Title: Bandcamp
Icon:
Class: fab fa-bandcamp fa-fw
# 030: PayPal
paypal:
Weight: 30
Prefix: https://paypal.me/
Title: PayPal
Icon:
Class: fab fa-paypal fa-fw
# 031: 500px
fivehundredpx:
Weight: 31
Prefix: https://500px.com/
Title: 500px
Icon:
Class: fab fa-500px fa-fw
# 032: Mix
mix:
Weight: 32
Prefix: https://mix.com/
Title: Mix
Icon:
Class: fab fa-mix fa-fw
# 033: Goodreads
goodreads:
Weight: 33
Prefix: https://www.goodreads.com/user/show/
Title: Goodreads
Icon:
Class: fab fa-goodreads fa-fw
# 034: Last.fm
lastfm:
Weight: 34
Prefix: https://www.last.fm/user/
Title: Last.fm
Icon:
Class: fab fa-lastfm fa-fw
# 035: Foursquare
foursquare:
Weight: 35
Prefix: https://foursquare.com/
Title: Foursquare
Icon:
Class: fab fa-foursquare fa-fw
# 036: Hacker News
hackernews:
Weight: 36
Template: https://news.ycombinator.com/user?id=%v
Title: Hacker News
Icon:
Class: fab fa-hacker-news fa-fw
# 037: Kickstarter
kickstarter:
Weight: 37
Prefix: https://kickstarter.com/profile/
Title: Kickstarter
Icon:
Class: fab fa-kickstarter fa-fw
# 038: Patreon
patreon:
Weight: 38
Prefix: https://patreon.com/
Title: Patreon
Icon:
Class: fab fa-patreon fa-fw
# 039: Steam
steam:
Weight: 39
Prefix: https://steamcommunity.com/id/
Title: Steam
Icon:
Class: fab fa-steam fa-fw
# 040: Twitch
twitch:
Weight: 40
Prefix: https://www.twitch.tv/
Title: Twitch
Icon:
Class: fab fa-twitch fa-fw
# 041: Strava
strava:
Weight: 41
Prefix: https://www.strava.com/athletes/
Title: Strava
Icon:
Class: fab fa-strava fa-fw
# 042: Skype
skype:
Weight: 42
Template: "skype:"
Title: Skype
Icon:
Class: fab fa-skype fa-fw
# 043: WhatsApp
whatsapp:
Weight: 43
Prefix: https://wa.me/
Title: WhatsApp
Icon:
Class: fab fa-whatsapp fa-fw
# 044: 知乎
zhihu:
Weight: 44
Prefix: https://www.zhihu.com/people/
Title: 知乎
Icon:
Simpleicons: zhihu
# 045: 豆瓣
douban:
Weight: 45
Prefix: https://www.douban.com/people/
Title: 豆瓣
Icon:
Simpleicons: douban
# 046: Angellist
angellist:
Weight: 46
Prefix: https://angel.co/
Title: Angellist
Icon:
Class: fab fa-angellist fa-fw
# 047: SlideShare
slideshare:
Weight: 47
Prefix: https://slideshare.com/
Title: SlideShare
Icon:
Class: fab fa-slideshare fa-fw
# 048: JSFiddle
jsfiddle:
Weight: 48
Prefix: https://jsfiddle.com/
Title: JSFiddle
Icon:
Class: fab fa-jsfiddle fa-fw
# 049: DeviantArt
deviantart:
Weight: 49
Template: https://%v.deviantart.com/
Title: DeviantArt
Icon:
Class: fab fa-deviantart fa-fw
# 050: Behance
behance:
Weight: 50
Prefix: https://behance.net/
Title: Behance
Icon:
Class: fab fa-behance fa-fw
# 051: Dribbble
dribbble:
Weight: 51
Prefix: https://dribbble.com/
Title: Dribbble
Icon:
Class: fab fa-dribbble fa-fw
# 052: WordPress
wordpress:
Weight: 52
Template: https://%v.wordpress.com/
Title: WordPress
Icon:
Class: fab fa-wordpress fa-fw
# 053: Vine
vine:
Weight: 53
Prefix: https://vine.co/
Title: Vine
Icon:
Class: fab fa-vine fa-fw
# 054: Google Scholar
googlescholar:
Weight: 54
Template: https://scholar.google.com/citations?%v
Title: Google Scholar
Icon:
Simpleicons: googlescholar
# 055: ResearchGate
researchgate:
Weight: 55
Prefix: https://www.researchgate.net/profile/
Title: ResearchGate
Icon:
Class: fab fa-researchgate fa-fw
# 056: Mastodon
mastodon:
Weight: 56
Prefix: https://mastodon.social/
Title: Mastodon
Icon:
Class: fab fa-mastodon fa-fw
# 057: Thingiverse
thingiverse:
Weight: 57
Prefix: https://www.thingiverse.com/
Title: Thingiverse
Icon:
Simpleicons: thingiverse
# 058: Dev.To
devto:
Weight: 58
Prefix: https://dev.to/
Title: Dev.To
Icon:
Class: fab fa-dev fa-fw
# 059: Gitea
gitea:
Weight: 59
Title: Gitea
Icon:
Simpleicons: gitea
# 060: XMPP
xmpp:
Weight: 60
Template: xmpp:%v
Title: XMPP
Icon:
Simpleicons: xmpp
# 061: Matrix
matrix:
Weight: 61
Prefix: https://matrix.to/#/
Title: Matrix
Icon:
Simpleicons: matrix
# 062: bilibili
bilibili:
Weight: 62
Prefix: https://space.bilibili.com/
Title: bilibili
Icon:
Simpleicons: bilibili
# 063: Email
email:
Weight: 63
Template: mailto:%v
Title: Email
Icon:
Class: far fa-envelope fa-fw
# 064: RSS
rss:
Weight: 64
Url: /index.xml
Title: RSS
Newtab: true
Icon:
Class: fas fa-rss fa-fw

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,24 @@
normalize.css@8.0.1 https://github.com/necolas/normalize.css
fontawesome-free@6.1.1 https://fontawesome.com/
simple-icons@6.20.0 https://github.com/simple-icons/simple-icons
animate.css@4.1.1 https://github.com/daneden/animate.css
autocomplete@0.38.1 https://github.com/algolia/autocomplete
lunr.js@2.3.9 https://lunrjs.com/
algoliasearch@4.13.0 https://github.com/algolia/algoliasearch-client-javascript
lazysizes@5.3.1 https://github.com/aFarkas/lazysizes
object-fit-images@3.2.4 https://github.com/fregante/object-fit-images
twemoji@14.0.2 https://github.com/twitter/twemoji
emoji-data@14.0.0 https://github.com/iamcal/emoji-data
lightgallery@2.4.0 https://github.com/sachinchoolur/lightgallery
clipboard.js@2.0.11 https://github.com/zenorocha/clipboard.js
sharer.js@0.4.0 https://github.com/ellisonleao/sharer.js
typeit@8.5.4 https://github.com/alexmacarthur/typeit
katex@0.15.3 https://katex.org/
mermaid@9.1.0 https://github.com/mermaid-js/mermaid
echarts@5.3.2 https://echarts.apache.org/
mapbox-gl@2.8.2 https://github.com/mapbox/mapbox-gl-js
aplayer@1.10.1 https://github.com/MoePlayer/APlayer
meting@2.0.1 https://github.com/metowolf/MetingJS
gitalk@1.7.2 https://github.com/gitalk/gitalk
valine@1.4.18 https://valine.js.org/
cookieconsent@3.1.1 https://github.com/osano/cookieconsent

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,112 @@
[theme=dark] .aplayer {
background: #212121;
&.aplayer-withlist {
.aplayer-info {
border-bottom-color: #5c5c5c;
}
}
&.aplayer-fixed {
.aplayer-list {
border-color: #5c5c5c;
}
}
.aplayer-body {
background-color: #212121;
}
.aplayer-info {
border-top-color: #212121;
}
.aplayer-info {
.aplayer-music {
.aplayer-title {
color: #fff;
}
.aplayer-author {
color: #fff;
}
}
.aplayer-controller {
.aplayer-time {
color: #eee;
.aplayer-icon {
path {
fill: #eee;
}
}
}
}
}
.aplayer-list {
background-color: #212121;
&::-webkit-scrollbar-thumb {
background-color: #999;
}
&::-webkit-scrollbar-thumb:hover {
background-color: #bbb;
}
li {
color: #fff;
border-top-color: #666;
&:hover {
background: #4e4e4e;
}
&.aplayer-list-light {
background: #6c6c6c;
}
.aplayer-list-index {
color: #ddd;
}
.aplayer-list-author {
color: #ddd;
}
}
}
.aplayer-lrc {
text-shadow: -1px -1px 0 #666;
&:before {
background: -moz-linear-gradient(top, rgba(33,33,33,1) 0%, rgba(33,33,33,0) 100%);
background: -webkit-linear-gradient(top, rgba(33,33,33,1) 0%,rgba(33,33,33,0) 100%);
background: linear-gradient(to bottom, rgba(33,33,33,1) 0%,rgba(33,33,33,0) 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#212121', endColorstr='#00212121',GradientType=0 );
}
&:after {
background: -moz-linear-gradient(top, rgba(33,33,33,0) 0%, rgba(33,33,33,0.8) 100%);
background: -webkit-linear-gradient(top, rgba(33,33,33,0) 0%,rgba(33,33,33,0.8) 100%);
background: linear-gradient(to bottom, rgba(33,33,33,0) 0%,rgba(33,33,33,0.8) 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00212121', endColorstr='#cc212121',GradientType=0 );
}
p {
color: #fff;
}
}
.aplayer-miniswitcher {
background: #484848;
.aplayer-icon {
path {
fill: #eee;
}
}
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
.cc-window{opacity:1;-webkit-transition:opacity 1s ease;transition:opacity 1s ease}.cc-window.cc-invisible{opacity:0}.cc-animate.cc-revoke{-webkit-transition:transform 1s ease;-webkit-transition:-webkit-transform 1s ease;transition:-webkit-transform 1s ease;transition:transform 1s ease;transition:transform 1s ease,-webkit-transform 1s ease}.cc-animate.cc-revoke.cc-top{-webkit-transform:translateY(-2em);transform:translateY(-2em)}.cc-animate.cc-revoke.cc-bottom{-webkit-transform:translateY(2em);transform:translateY(2em)}.cc-animate.cc-revoke.cc-active.cc-top{-webkit-transform:translateY(0);transform:translateY(0)}.cc-animate.cc-revoke.cc-active.cc-bottom{-webkit-transform:translateY(0);transform:translateY(0)}.cc-revoke:hover{-webkit-transform:translateY(0);transform:translateY(0)}.cc-grower{max-height:0;overflow:hidden;-webkit-transition:max-height 1s;transition:max-height 1s}
.cc-revoke,.cc-window{position:fixed;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;font-family:Helvetica,Calibri,Arial,sans-serif;font-size:16px;line-height:1.5em;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;z-index:9999}.cc-window.cc-static{position:static}.cc-window.cc-floating{padding:2em;max-width:24em;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner{padding:1em 1.8em;width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.cc-revoke{padding:.5em}.cc-revoke:hover{text-decoration:underline}.cc-header{font-size:18px;font-weight:700}.cc-btn,.cc-close,.cc-link,.cc-revoke{cursor:pointer}.cc-link{opacity:.8;display:inline-block;padding:.2em;text-decoration:underline}.cc-link:hover{opacity:1}.cc-link:active,.cc-link:visited{color:initial}.cc-btn{display:block;padding:.4em .8em;font-size:.9em;font-weight:700;border-width:2px;border-style:solid;text-align:center;white-space:nowrap}.cc-highlight .cc-btn:first-child{background-color:transparent;border-color:transparent}.cc-highlight .cc-btn:first-child:focus,.cc-highlight .cc-btn:first-child:hover{background-color:transparent;text-decoration:underline}.cc-close{display:block;position:absolute;top:.5em;right:.5em;font-size:1.6em;opacity:.9;line-height:.75}.cc-close:focus,.cc-close:hover{opacity:1}
.cc-revoke.cc-top{top:0;left:3em;border-bottom-left-radius:.5em;border-bottom-right-radius:.5em}.cc-revoke.cc-bottom{bottom:0;left:3em;border-top-left-radius:.5em;border-top-right-radius:.5em}.cc-revoke.cc-left{left:3em;right:unset}.cc-revoke.cc-right{right:3em;left:unset}.cc-top{top:1em}.cc-left{left:1em}.cc-right{right:1em}.cc-bottom{bottom:1em}.cc-floating>.cc-link{margin-bottom:1em}.cc-floating .cc-message{display:block;margin-bottom:1em}.cc-window.cc-floating .cc-compliance{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.cc-window.cc-banner{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cc-banner.cc-top{left:0;right:0;top:0}.cc-banner.cc-bottom{left:0;right:0;bottom:0}.cc-banner .cc-message{display:block;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:100%;margin-right:1em}.cc-compliance{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:justify;align-content:space-between}.cc-floating .cc-compliance>.cc-btn{-webkit-box-flex:1;-ms-flex:1;flex:1}.cc-btn+.cc-btn{margin-left:.5em}
@media print{.cc-revoke,.cc-window{display:none}}@media screen and (max-width:900px){.cc-btn{white-space:normal}}@media screen and (max-width:414px) and (orientation:portrait),screen and (max-width:736px) and (orientation:landscape){.cc-window.cc-top{top:0}.cc-window.cc-bottom{bottom:0}.cc-window.cc-banner,.cc-window.cc-floating,.cc-window.cc-left,.cc-window.cc-right{left:0;right:0}.cc-window.cc-banner{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner .cc-compliance{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.cc-window.cc-floating{max-width:none}.cc-window .cc-message{margin-bottom:1em}.cc-window.cc-banner{-webkit-box-align:unset;-ms-flex-align:unset;align-items:unset}.cc-window.cc-banner .cc-message{margin-right:0}}
.cc-floating.cc-theme-classic{padding:1.2em;border-radius:5px}.cc-floating.cc-type-info.cc-theme-classic .cc-compliance{text-align:center;display:inline;-webkit-box-flex:0;-ms-flex:none;flex:none}.cc-theme-classic .cc-btn{border-radius:5px}.cc-theme-classic .cc-btn:last-child{min-width:140px}.cc-floating.cc-type-info.cc-theme-classic .cc-btn{display:inline-block}
.cc-theme-edgeless.cc-window{padding:0}.cc-floating.cc-theme-edgeless .cc-message{margin:2em;margin-bottom:1.5em}.cc-banner.cc-theme-edgeless .cc-btn{margin:0;padding:.8em 1.8em;height:100%}.cc-banner.cc-theme-edgeless .cc-message{margin-left:1em}.cc-floating.cc-theme-edgeless .cc-btn+.cc-btn{margin-left:0}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,273 @@
# dark theme based on chalk theme
color:
- '#fc97af'
- '#87f7cf'
- '#f7f494'
- '#72ccff'
- '#f7c5a0'
- '#d4a4eb'
- '#d2f5a6'
- '#76f2f2'
backgroundColor: rgba(41,52,65,1)
textStyle: {}
title:
textStyle:
color: '#ffffff'
subtextStyle:
color: '#dddddd'
line:
itemStyle:
borderWidth: 1
lineStyle:
width: 2
symbolSize: 6
symbol: circle
smooth: true
radar:
itemStyle:
borderWidth: 1
lineStyle:
width: 2
symbolSize: 3
symbol: circle
smooth: true
bar:
itemStyle:
barBorderWidth: 0
barBorderColor: '#ccc'
pie:
itemStyle:
borderWidth: 0
borderColor: '#ccc'
scatter:
itemStyle:
borderWidth: 0
borderColor: '#ccc'
boxplot:
itemStyle:
borderWidth: 0
borderColor: '#ccc'
parallel:
itemStyle:
borderWidth: 0
borderColor: '#ccc'
sankey:
itemStyle:
borderWidth: 0
borderColor: '#ccc'
funnel:
itemStyle:
borderWidth: 0
borderColor: '#ccc'
gauge:
itemStyle:
borderWidth: 0
borderColor: '#ccc'
candlestick:
itemStyle:
color: '#fc97af'
color0: transparent
borderColor: '#fc97af'
borderColor0: '#87f7cf'
borderWidth: 1
graph:
itemStyle:
borderWidth: 0
borderColor: '#ccc'
lineStyle:
width: 1
color: '#ffffff'
symbolSize: 3
symbol: emptyCircle
smooth: true
color:
- '#fc97af'
- '#87f7cf'
- '#f7f494'
- '#72ccff'
- '#f7c5a0'
- '#d4a4eb'
- '#d2f5a6'
- '#76f2f2'
label:
color: '#293441'
map:
itemStyle:
areaColor: '#f3f3f3'
borderColor: '#999999'
borderWidth: 0.5
label:
color: '#893448'
emphasis:
itemStyle:
areaColor: rgba(255,178,72,1)
borderColor: '#eb8146'
borderWidth: 1
label:
color: rgb(137,52,72)
geo:
itemStyle:
areaColor: '#f3f3f3'
borderColor: '#999999'
borderWidth: 0.5
label:
color: '#893448'
emphasis:
itemStyle:
areaColor: rgba(255,178,72,1)
borderColor: '#eb8146'
borderWidth: 1
label:
color: rgb(137,52,72)
categoryAxis:
axisLine:
show: true
lineStyle:
color: '#666666'
axisTick:
show: true
lineStyle:
color: '#333'
axisLabel:
show: true
color: '#aaaaaa'
splitLine:
show: false
lineStyle:
color:
- '#e6e6e6'
splitArea:
show: false
areaStyle:
color:
- rgba(250,250,250,0.05)
- rgba(200,200,200,0.02)
valueAxis:
axisLine:
show: true
lineStyle:
color: '#666666'
axisTick:
show: true
lineStyle:
color: '#333'
axisLabel:
show: true
color: '#aaaaaa'
splitLine:
show: true
lineStyle:
color:
- '#e6e6e6'
splitArea:
show: false
areaStyle:
color:
- rgba(250,250,250,0.05)
- rgba(200,200,200,0.02)
logAxis:
axisLine:
show: true
lineStyle:
color: '#666666'
axisTick:
show: true
lineStyle:
color: '#333'
axisLabel:
show: true
color: '#aaaaaa'
splitLine:
show: true
lineStyle:
color:
- '#e6e6e6'
splitArea:
show: true
areaStyle:
color:
- rgba(250,250,250,0.05)
- rgba(200,200,200,0.02)
timeAxis:
axisLine:
show: true
lineStyle:
color: '#666666'
axisTick:
show: true
lineStyle:
color: '#333'
axisLabel:
show: true
color: '#aaaaaa'
splitLine:
show: true
lineStyle:
color:
- '#e6e6e6'
splitArea:
show: false
areaStyle:
color:
- rgba(250,250,250,0.05)
- rgba(200,200,200,0.02)
toolbox:
iconStyle:
borderColor: '#999999'
emphasis:
iconStyle:
borderColor: '#666666'
legend:
textStyle:
color: '#999999'
tooltip:
axisPointer:
lineStyle:
color: '#cccccc'
width: 1
crossStyle:
color: '#cccccc'
width: 1
timeline:
lineStyle:
color: '#87f7cf'
width: 1
itemStyle:
color: '#87f7cf'
borderWidth: 1
controlStyle:
color: '#87f7cf'
borderColor: '#87f7cf'
borderWidth: 0.5
checkpointStyle:
color: '#fc97af'
borderColor: '#fc97af'
label:
color: '#87f7cf'
emphasis:
itemStyle:
color: '#f7f494'
controlStyle:
color: '#87f7cf'
borderColor: '#87f7cf'
borderWidth: 0.5
label:
color: '#87f7cf'
visualMap:
color:
- '#fc97af'
- '#87f7cf'
dataZoom:
backgroundColor: rgba(255,255,255,0)
dataBackgroundColor: rgba(114,204,255,1)
fillerColor: rgba(114,204,255,0.2)
handleColor: '#72ccff'
handleSize: 100%
textStyle:
color: '#333333'
markPoint:
label:
color: '#293441'
emphasis:
label:
color: '#293441'

View File

@@ -0,0 +1,297 @@
# light theme based on macarons theme
color:
- '#2ec7c9'
- '#b6a2de'
- '#5ab1ef'
- '#ffb980'
- '#d87a80'
- '#8d98b3'
- '#e5cf0d'
- '#97b552'
- '#95706d'
- '#dc69aa'
- '#07a2a4'
- '#9a7fd1'
- '#588dd5'
- '#f5994e'
- '#c05050'
- '#59678c'
- '#c9ab00'
- '#7eb00a'
- '#6f5553'
- '#c14089'
backgroundColor: rgba(0,0,0,0)
textStyle: {}
title:
textStyle:
color: '#008acd'
subtextStyle:
color: '#aaaaaa'
line:
itemStyle:
borderWidth: 1
lineStyle:
width: 2
symbolSize: 5
symbol: emptyCircle
smooth: true
radar:
itemStyle:
borderWidth: 1
lineStyle:
width: 2
symbolSize: 3
symbol: emptyCircle
smooth: true
bar:
itemStyle:
barBorderWidth: 0
barBorderColor: '#ccc'
pie:
itemStyle:
borderWidth: 0
borderColor: '#ccc'
scatter:
itemStyle:
borderWidth: 0
borderColor: '#ccc'
boxplot:
itemStyle:
borderWidth: 0
borderColor: '#ccc'
parallel:
itemStyle:
borderWidth: 0
borderColor: '#ccc'
sankey:
itemStyle:
borderWidth: 0
borderColor: '#ccc'
funnel:
itemStyle:
borderWidth: 0
borderColor: '#ccc'
gauge:
itemStyle:
borderWidth: 0
borderColor: '#ccc'
candlestick:
itemStyle:
color: '#d87a80'
color0: '#2ec7c9'
borderColor: '#d87a80'
borderColor0: '#2ec7c9'
borderWidth: 1
graph:
itemStyle:
borderWidth: 0
borderColor: '#ccc'
lineStyle:
width: 1
color: '#aaaaaa'
symbolSize: 3
symbol: emptyCircle
smooth: true
color:
- '#2ec7c9'
- '#b6a2de'
- '#5ab1ef'
- '#ffb980'
- '#d87a80'
- '#8d98b3'
- '#e5cf0d'
- '#97b552'
- '#95706d'
- '#dc69aa'
- '#07a2a4'
- '#9a7fd1'
- '#588dd5'
- '#f5994e'
- '#c05050'
- '#59678c'
- '#c9ab00'
- '#7eb00a'
- '#6f5553'
- '#c14089'
label:
color: '#eeeeee'
map:
itemStyle:
areaColor: '#dddddd'
borderColor: '#eeeeee'
borderWidth: 0.5
label:
color: '#d87a80'
emphasis:
itemStyle:
areaColor: rgba(254,153,78,1)
borderColor: '#444'
borderWidth: 1
label:
color: rgb(100,0,0)
geo:
itemStyle:
areaColor: '#dddddd'
borderColor: '#eeeeee'
borderWidth: 0.5
label:
color: '#d87a80'
emphasis:
itemStyle:
areaColor: rgba(254,153,78,1)
borderColor: '#444'
borderWidth: 1
label:
color: rgb(100,0,0)
categoryAxis:
axisLine:
show: true
lineStyle:
color: '#008acd'
axisTick:
show: true
lineStyle:
color: '#333'
axisLabel:
show: true
color: '#333'
splitLine:
show: false
lineStyle:
color:
- '#eee'
splitArea:
show: false
areaStyle:
color:
- rgba(250,250,250,0.3)
- rgba(200,200,200,0.3)
valueAxis:
axisLine:
show: true
lineStyle:
color: '#008acd'
axisTick:
show: true
lineStyle:
color: '#333'
axisLabel:
show: true
color: '#333'
splitLine:
show: true
lineStyle:
color:
- '#eee'
splitArea:
show: true
areaStyle:
color:
- rgba(250,250,250,0.3)
- rgba(200,200,200,0.3)
logAxis:
axisLine:
show: true
lineStyle:
color: '#008acd'
axisTick:
show: true
lineStyle:
color: '#333'
axisLabel:
show: true
color: '#333'
splitLine:
show: true
lineStyle:
color:
- '#eee'
splitArea:
show: true
areaStyle:
color:
- rgba(250,250,250,0.3)
- rgba(200,200,200,0.3)
timeAxis:
axisLine:
show: true
lineStyle:
color: '#008acd'
axisTick:
show: true
lineStyle:
color: '#333'
axisLabel:
show: true
color: '#333'
splitLine:
show: true
lineStyle:
color:
- '#eee'
splitArea:
show: false
areaStyle:
color:
- rgba(250,250,250,0.3)
- rgba(200,200,200,0.3)
toolbox:
iconStyle:
borderColor: '#2ec7c9'
emphasis:
iconStyle:
borderColor: '#18a4a6'
legend:
textStyle:
color: '#333333'
tooltip:
axisPointer:
lineStyle:
color: '#008acd'
width: 1
crossStyle:
color: '#008acd'
width: 1
timeline:
lineStyle:
color: '#008acd'
width: 1
itemStyle:
color: '#008acd'
borderWidth: 1
controlStyle:
color: '#008acd'
borderColor: '#008acd'
borderWidth: 0.5
checkpointStyle:
color: '#2ec7c9'
borderColor: '#2ec7c9'
label:
color: '#008acd'
emphasis:
itemStyle:
color: '#a9334c'
controlStyle:
color: '#008acd'
borderColor: '#008acd'
borderWidth: 0.5
label:
color: '#008acd'
visualMap:
color:
- '#5ab1ef'
- '#e0ffff'
dataZoom:
backgroundColor: rgba(47,69,84,0)
dataBackgroundColor: '#efefff'
fillerColor: rgba(182,162,222,0.2)
handleColor: '#008acd'
handleSize: 100%
textStyle:
color: '#333333'
markPoint:
label:
color: '#eeeeee'
emphasis:
label:
color: '#eeeeee'

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