diff --git a/content/posts/mastodon_influx.md b/content/posts/mastodon_influx.md index 2712852..e695db4 100644 --- a/content/posts/mastodon_influx.md +++ b/content/posts/mastodon_influx.md @@ -2,7 +2,6 @@ title: "Hosting mastodon.nz and the recent twitter influx" tags: ["mastodon", "twitter", "self hosting"] date: "2022-05-08" -draft: true featuredimagepreview: "/server1.jpg" --- @@ -31,7 +30,5 @@ It was about at this time I figured we probably needed to look into the future o {{< image src="/server_prov.jpg" caption="Provisioning everything (Excuse the mess)"src_s="/server_prov.jpg" src_l="/server_prov_l.jpg" >}} After about 6 hours of configuring and installing everything required, I was ready to make a trip to a local datacenter to rack it (Thanks to previously mentioned friend!) and start the painful migration. -// opnsense - -// IP +More to come soon.. \ No newline at end of file diff --git a/themes/LoveIt/.babelrc b/themes/LoveIt/.babelrc new file mode 100644 index 0000000..5672c7a --- /dev/null +++ b/themes/LoveIt/.babelrc @@ -0,0 +1,10 @@ +{ + "presets": [ + [ + "@babel/preset-env", + { + "targets": "> 0.25%, not dead" + } + ] + ] +} diff --git a/themes/LoveIt/.gitignore b/themes/LoveIt/.gitignore new file mode 100644 index 0000000..e27fc7b --- /dev/null +++ b/themes/LoveIt/.gitignore @@ -0,0 +1,20 @@ +# Hugo default output directory +public/ +/exampleSite/resources/ +/exampleSite/.hugo_build.lock + +node_modules/ +build/ + +## OS Files +# Windows +Thumbs.db +ehthumbs.db +Desktop.ini +$RECYCLE.BIN/ + +# OSX +.DS_Store + +# Linux +.directory diff --git a/themes/LoveIt/LICENSE b/themes/LoveIt/LICENSE new file mode 100644 index 0000000..322bee4 --- /dev/null +++ b/themes/LoveIt/LICENSE @@ -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. diff --git a/themes/LoveIt/README.md b/themes/LoveIt/README.md new file mode 100644 index 0000000..6a846b2 --- /dev/null +++ b/themes/LoveIt/README.md @@ -0,0 +1,204 @@ +# LoveIt Theme | Hugo [![Netlify Status](https://api.netlify.com/api/v1/badges/e60303f2-862c-4342-bf59-7c9adb10812e/deploy-status)](https://app.netlify.com/sites/hugo-loveit/deploys) + +[![GitHub release (latest by date)](https://img.shields.io/github/v/release/dillonzq/LoveIt?style=flat-square)](https://github.com/dillonzq/LoveIt/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/LoveIt?style=flat-square)](https://github.com/dillonzq/LoveIt/blob/master/LICENSE) +[![CircleCI](https://circleci.com/gh/dillonzq/LoveIt/tree/master.svg?style=svg)](https://circleci.com/gh/dillonzq/LoveIt/tree/master) + +English README | [简体中文说明](https://github.com/dillonzq/LoveIt/blob/master/README.zh-cn.md) + +> **LoveIt** 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 LoveIt](#why-choose-loveit) so that you can choose the one that works best for you. + +![Hugo Theme LoveIt](https://github.com/dillonzq/LoveIt/raw/master/images/Apple-Devices-Preview.png) + +## [Demo Site](https://hugoloveit.com/) + +To see this theme in action, here is a live [demo site](https://hugoloveit.com/) which is rendered with **LoveIt** theme. + +## Why choose LoveIt + +Compared to the original LeaveIt theme and the KeepIt theme, the LoveIt 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/knsv/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 LoveIt 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 LoveIt theme may be more suitable for you. + +I hope you will LoveIt ❤️! + +## 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 + +* **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.js](https://github.com/sachinchoolur/lightgallery.js) +* 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/knsv/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/) +* **Dynamic scroll** supported by [Smooth Scroll](https://github.com/cferdinandi/smooth-scroll) +* **Cookie consent banner** supported by [cookieconsent](https://github.com/osano/cookieconsent) +* ... + +## [Documentation](https://hugoloveit.com/categories/documentation/) + +Build Documentation Locally: + +```bash +hugo server --source=exampleSite +``` + +## Multilingual and i18n + +LoveIt 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/dillonzq/LoveIt/pulls) + +[Languages Compatibility](https://hugoloveit.com/theme-documentation-basics/#language-compatibility) + +## [Roadmap](https://github.com/dillonzq/LoveIt/projects/1) + +## Questions, ideas, bugs, pull requests + +All feedback is welcome! Head over to the [issue tracker](https://github.com/dillonzq/LoveIt/issues). + +## License + +LoveIt is licensed under the **MIT** license. Check the [LICENSE file](https://github.com/dillonzq/LoveIt/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/) +* [Smooth Scroll](https://github.com/cferdinandi/smooth-scroll) +* [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.js](https://github.com/sachinchoolur/lightgallery.js) +* [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/knsv/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/dillonzq/LoveIt/raw/master/images/Alipay.jpg) +* [Wechat](https://github.com/dillonzq/LoveIt/raw/master/images/Wechat.jpg) + +Thanks! ❤️ + +## Stargazers over time + +[![Stargazers over time](https://starchart.cc/dillonzq/LoveIt.svg)](https://starchart.cc/dillonzq/LoveIt) diff --git a/themes/LoveIt/README.zh-cn.md b/themes/LoveIt/README.zh-cn.md new file mode 100644 index 0000000..95b32ee --- /dev/null +++ b/themes/LoveIt/README.zh-cn.md @@ -0,0 +1,199 @@ +# LoveIt 主题 | Hugo [![Netlify Status](https://api.netlify.com/api/v1/badges/e60303f2-862c-4342-bf59-7c9adb10812e/deploy-status)](https://app.netlify.com/sites/hugo-loveit/deploys) + +[![GitHub release (latest by date)](https://img.shields.io/github/v/release/dillonzq/LoveIt?style=flat-square)](https://github.com/dillonzq/LoveIt/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/LoveIt?style=flat-square)](https://github.com/dillonzq/LoveIt/blob/master/LICENSE) +[![CircleCI](https://circleci.com/gh/dillonzq/LoveIt/tree/master.svg?style=svg)](https://circleci.com/gh/dillonzq/LoveIt/tree/master) + +[English README](https://github.com/dillonzq/LoveIt/blob/master/README.md) | 简体中文说明 + +> [LoveIt](https://github.com/dillonzq/LoveIt) 是一个**简洁**、**优雅**且**高效**的 [Hugo](https://gohugo.io/) 博客主题。 + +它的原型基于 [LeaveIt 主题](https://github.com/liuzc/LeaveIt) 和 [KeepIt 主题](https://github.com/Fastbyte01/KeepIt)。 + +由于三个主题外观的相似性,如果你对于它们的不同之处有疑问,请阅读 [为什么选择 LoveIt](#为什么选择-LoveIt),以便你能选择最适合你的一个。 + +![Hugo 主题 LoveIt](https://github.com/dillonzq/LoveIt/raw/master/images/Apple-Devices-Preview.png) + +## 主题[预览](https://hugoloveit.com/zh-cn/) + +为了直观地浏览主题特性,这里有一个基于 **LoveIt** 主题渲染的 [预览网站](https://hugoloveit.com/zh-cn/)。 + +## 为什么选择 LoveIt + +相较于 LeaveIt 主题 和 KeepIt 主题,LoveIt 主题主要有以下修改 + +* 自定义**标题栏** +* 自定义**CSS 样式** +* 焕然一新的**主页**,已经兼容最新版 Hugo +* 大量的**样式细节调整**,包括颜色、字体大小、边距、代码预览样式 +* 可读性更强的**深色模式** +* 一些美观的 **CSS 动画** +* 易用和自动展开的**文章目录** +* 支持更多的**社交链接**、**网站分享**和**评论系统** +* 支持基于 [Lunr.js](https://lunrjs.com/) 或 [algolia](https://www.algolia.com/) 的**搜索** +* 一键**复制代码**到剪贴板 +* 支持基于 **[Font Awesome](https://fontawesome.com/) 图标**的扩展 Markdown 语法 +* 支持**上标注释**的扩展 Markdown 语法 +* 支持**分数**的扩展 Markdown 语法 +* 支持基于 [KaTeX](https://katex.org/) 的**数学公式** +* 支持基于 [mermaid](https://github.com/knsv/mermaid) 的**图表**生成功能 +* 支持基于 [ECharts](https://echarts.apache.org/) 的**交互式数据可视化**生成功能 +* 支持基于 [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js) 的 **Mapbox** 地图显示功能 +* 支持基于 [APlayer](https://github.com/MoePlayer/APlayer) 和 [MetingJS](https://github.com/metowolf/MetingJS) 的内嵌**音乐播放器** +* 支持内嵌 **Bilibili** 视频 +* 支持多种**注释**的 shortcode +* 支持自定义样式的 shortcode +* 支持所有第三方库的 **CDN** +* ... + +所以,如果你更偏好 LoveIt 主题的设计语言和自由度,如果你想便捷地使用扩展的 Font Awesome 图标,如果你想在文章内嵌数学公式、流程图、音乐或是 Bilibili 视频, +那么,LoveIt 主题可能是更适合你。 +希望你会 LoveIt ❤️! + +## 特性 + +### 性能和 SEO + +* **性能**优化:在 [Google PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights) 中, 99/100 的移动设备得分和 100/100 的桌面设备得分 +* 使用基于 JSON-LD 格式 的 **SEO SCHEMA** 文件进行 SEO 优化 +* 支持 **[Google Analytics](https://analytics.google.com/analytics)** +* 支持 **[Fathom Analytics](https://usefathom.com/)** +* 支持搜索引擎的**网站验证** (Google, Bind, Yandex and Baidu) +* 支持所有第三方库的 **CDN** +* 基于 [lazysizes](https://github.com/aFarkas/lazysizes) 自动转换图片为**懒加载** + +### 外观和布局 + +* **响应式**布局 +* **浅色/深色** 主题模式 +* 全局一致的**设计语言** +* 支持**分页** +* 易用和自动展开的**文章目录** +* 支持**多语言**和国际化 +* 美观的 **CSS 动画** + +### 社交和评论系统 + +* 支持 **[Gravatar](https://gravatar.com)** 头像 +* 支持本地**头像** +* 支持多达 **64** 种社交链接 +* 支持多达 **24** 种网站分享 +* 支持 **[Disqus](https://disqus.com)** 评论系统 +* 支持 **[Gitalk](https://github.com/gitalk/gitalk)** 评论系统 +* 支持 **[Valine](https://valine.js.org/)** 评论系统 +* 支持 **[Facebook](https://developers.facebook.com/docs/plugins/comments/) 评论**系统 +* 支持 **[Telegram comments](https://comments.app/) 评论**系统 +* 支持 **[Commento](https://commento.io/)** 评论系统 +* 支持 **[Utterances](https://utteranc.es/)** 评论系统 + +### 扩展功能 + +* 支持基于 [Lunr.js](https://lunrjs.com/) 或 [algolia](https://www.algolia.com/) 的**搜索** +* 支持 **Twemoji** +* 支持**代码高亮** +* 一键**复制代码**到剪贴板 +* 支持基于 [lightgallery.js](https://github.com/sachinchoolur/lightgallery.js) 的**图片画廊** +* 支持 **[Font Awesome](https://fontawesome.com/) 图标**的扩展 Markdown 语法 +* 支持**上标注释**的扩展 Markdown 语法 +* 支持**分数**的扩展 Markdown 语法 +* 支持基于 [KaTeX](https://katex.org/) 的**数学公式** +* 支持基于 [mermaid](https://github.com/knsv/mermaid) 的**图表** shortcode +* 支持基于 [ECharts](https://echarts.apache.org/) 的**交互式数据可视化** shortcode +* 支持基于 [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js) 的 **Mapbox** shortcode +* 支持基于 [APlayer](https://github.com/MoePlayer/APlayer) 和 [MetingJS](https://github.com/metowolf/MetingJS) 的**音乐播放器** shortcode +* 支持 **Bilibili 视频** shortcode +* 支持多种**注释**的 shortcode +* 支持**自定义样式**的 shortcode +* 支持**自定义脚本**的 shortcode +* 支持基于 [TypeIt](https://typeitjs.com/) 的**打字动画** shortcode +* 支持基于 [Smooth Scroll](https://github.com/cferdinandi/smooth-scroll) 的**滚动动画** +* 支持基于 [cookieconsent](https://github.com/osano/cookieconsent) 的 **Cookie 许可横幅** +* ... + +## [文档](https://hugoloveit.com/zh-cn/categories/documentation/) + +在本地构建文档: + +```bash +hugo server --source=exampleSite +``` + +## 多语言和国际化 + +LoveIt 支持下列语言: + +* 英语 +* 简体中文 +* 繁体中文 +* 法语 +* 波兰语 +* 巴西葡萄牙语 +* 意大利语 +* 西班牙语 +* 德语 +* 塞尔维亚语 +* 俄语 +* 罗马尼亚语 +* 越南语 +* [贡献一种新的语言](https://github.com/dillonzq/LoveIt/pulls) + +[语言兼容性](https://hugoloveit.com/zh-cn/theme-documentation-basics/#language-compatibility) + +## [路线图](https://github.com/dillonzq/LoveIt/projects/1) + +## 问题、想法、 bugs 和 PRs + +所有的反馈都是欢迎的!详见 [issue tracker](https://github.com/dillonzq/LoveIt/issues)。 + +## 许可协议 + +LoveIt 根据 **MIT** 许可协议授权。 更多信息请查看 [LICENSE 文件](https://github.com/dillonzq/LoveIt/blob/master/LICENSE)。 + +## 特别感谢 + +LoveIt 主题中用到了以下项目,感谢它们的作者: + +* [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/) +* [Smooth Scroll](https://github.com/cferdinandi/smooth-scroll) +* [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.js](https://github.com/sachinchoolur/lightgallery.js) +* [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/knsv/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) + +## 作者 + +[Dillon](https://dillonzq.com) + +## 赞助支持 + +如果你喜爱这个主题, 请考虑给我买杯咖啡 ☕️. + +* [PayPal](https://paypal.me/dillonzq) +* [支付宝](https://github.com/dillonzq/LoveIt/raw/master/images/Alipay.jpg) +* [微信支付](https://github.com/dillonzq/LoveIt/raw/master/images/Wechat.jpg) + +谢谢! ❤️ + +## Star 数目趋势 + +[![Star 数目趋势](https://starchart.cc/dillonzq/LoveIt.svg)](https://starchart.cc/dillonzq/LoveIt) diff --git a/themes/LoveIt/archetypes/default.md b/themes/LoveIt/archetypes/default.md new file mode 100644 index 0000000..3fa8440 --- /dev/null +++ b/themes/LoveIt/archetypes/default.md @@ -0,0 +1,28 @@ +--- +title: "{{ replace .TranslationBaseName "-" " " | title }}" +subtitle: "" +date: {{ .Date }} +lastmod: {{ .Date }} +draft: true +author: "" +authorLink: "" +description: "" + +tags: [] +categories: [] + +hiddenFromHomePage: false +hiddenFromSearch: false + +featuredImage: "" +featuredImagePreview: "" + +toc: + enable: true +math: + enable: false +lightgallery: false +license: "" +--- + + diff --git a/themes/LoveIt/assets/css/_core/_base.scss b/themes/LoveIt/assets/css/_core/_base.scss new file mode 100644 index 0000000..9257ce7 --- /dev/null +++ b/themes/LoveIt/assets/css/_core/_base.scss @@ -0,0 +1,55 @@ +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%; +} + +/* 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); +} diff --git a/themes/LoveIt/assets/css/_core/_layout.scss b/themes/LoveIt/assets/css/_core/_layout.scss new file mode 100644 index 0000000..154f3a6 --- /dev/null +++ b/themes/LoveIt/assets/css/_core/_layout.scss @@ -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; + } + } +} diff --git a/themes/LoveIt/assets/css/_core/_media.scss b/themes/LoveIt/assets/css/_core/_media.scss new file mode 100644 index 0000000..f4c7f51 --- /dev/null +++ b/themes/LoveIt/assets/css/_core/_media.scss @@ -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; + } + } + } +} diff --git a/themes/LoveIt/assets/css/_custom.scss b/themes/LoveIt/assets/css/_custom.scss new file mode 100644 index 0000000..37edf90 --- /dev/null +++ b/themes/LoveIt/assets/css/_custom.scss @@ -0,0 +1,4 @@ +// ============================== +// Custom style +// 自定义样式 +// ============================== diff --git a/themes/LoveIt/assets/css/_mixin/_blur.scss b/themes/LoveIt/assets/css/_mixin/_blur.scss new file mode 100644 index 0000000..d68ac17 --- /dev/null +++ b/themes/LoveIt/assets/css/_mixin/_blur.scss @@ -0,0 +1,5 @@ +@mixin blur { + .blur & { + @include filter(blur(1.5px)); + } +} diff --git a/themes/LoveIt/assets/css/_mixin/_compatibility.scss b/themes/LoveIt/assets/css/_mixin/_compatibility.scss new file mode 100644 index 0000000..b4cb2d0 --- /dev/null +++ b/themes/LoveIt/assets/css/_mixin/_compatibility.scss @@ -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};'; +} diff --git a/themes/LoveIt/assets/css/_mixin/_details.scss b/themes/LoveIt/assets/css/_mixin/_details.scss new file mode 100644 index 0000000..218e6af --- /dev/null +++ b/themes/LoveIt/assets/css/_mixin/_details.scss @@ -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); +} diff --git a/themes/LoveIt/assets/css/_mixin/_index.scss b/themes/LoveIt/assets/css/_mixin/_index.scss new file mode 100644 index 0000000..3c35521 --- /dev/null +++ b/themes/LoveIt/assets/css/_mixin/_index.scss @@ -0,0 +1,4 @@ +@import "_compatibility"; +@import "_link"; +@import "_blur"; +@import "_details"; diff --git a/themes/LoveIt/assets/css/_mixin/_link.scss b/themes/LoveIt/assets/css/_mixin/_link.scss new file mode 100644 index 0000000..351d8d5 --- /dev/null +++ b/themes/LoveIt/assets/css/_mixin/_link.scss @@ -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); + } + } +} diff --git a/themes/LoveIt/assets/css/_override.scss b/themes/LoveIt/assets/css/_override.scss new file mode 100644 index 0000000..c37b4ec --- /dev/null +++ b/themes/LoveIt/assets/css/_override.scss @@ -0,0 +1,4 @@ +// ============================== +// Override Variables +// 覆盖变量 +// ============================== diff --git a/themes/LoveIt/assets/css/_page/_404.scss b/themes/LoveIt/assets/css/_page/_404.scss new file mode 100644 index 0000000..774c7dd --- /dev/null +++ b/themes/LoveIt/assets/css/_page/_404.scss @@ -0,0 +1,6 @@ +#content-404 { + font-size: 1.8rem; + line-height: 3rem; + @include transform(translateY(30vh)); + text-align: center; +} diff --git a/themes/LoveIt/assets/css/_page/_archive.scss b/themes/LoveIt/assets/css/_page/_archive.scss new file mode 100644 index 0000000..2b8f466 --- /dev/null +++ b/themes/LoveIt/assets/css/_page/_archive.scss @@ -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"; +} diff --git a/themes/LoveIt/assets/css/_page/_home.scss b/themes/LoveIt/assets/css/_page/_home.scss new file mode 100644 index 0000000..4ca6eb8 --- /dev/null +++ b/themes/LoveIt/assets/css/_page/_home.scss @@ -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: 8rem; + 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: 6rem; + } + + .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); + } + } + } +} diff --git a/themes/LoveIt/assets/css/_page/_index.scss b/themes/LoveIt/assets/css/_page/_index.scss new file mode 100644 index 0000000..b715e95 --- /dev/null +++ b/themes/LoveIt/assets/css/_page/_index.scss @@ -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"; diff --git a/themes/LoveIt/assets/css/_page/_single.scss b/themes/LoveIt/assets/css/_page/_single.scss new file mode 100644 index 0000000..a9f983b --- /dev/null +++ b/themes/LoveIt/assets/css/_page/_single.scss @@ -0,0 +1,330 @@ +@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; + height: auto; + margin: 0 auto; + overflow: hidden; + } + } + + .lazyloading { + @include object-fit(none); + } + + 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; + } + } + + .typeit { + .code { + padding: .375rem; + font-size: .875rem; + font-family: $code-font-family; + font-weight: bold; + word-break: break-all; + } + } + + .version { + height: 1.25em; + vertical-align: text-bottom; + } + } + + @import "../_partial/_single/footer"; + @import "../_partial/_single/comment"; +} + +.lg-toolbar .lg-icon::after { + color: #999; +} diff --git a/themes/LoveIt/assets/css/_page/_special.scss b/themes/LoveIt/assets/css/_page/_special.scss new file mode 100644 index 0000000..436d8d9 --- /dev/null +++ b/themes/LoveIt/assets/css/_page/_special.scss @@ -0,0 +1,5 @@ +.special { + .single-title, .single-subtitle { + text-align: right; + } +} diff --git a/themes/LoveIt/assets/css/_partial/_archive/_tags.scss b/themes/LoveIt/assets/css/_partial/_archive/_tags.scss new file mode 100644 index 0000000..d12b26f --- /dev/null +++ b/themes/LoveIt/assets/css/_partial/_archive/_tags.scss @@ -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; + } + } + } +} diff --git a/themes/LoveIt/assets/css/_partial/_archive/_terms.scss b/themes/LoveIt/assets/css/_partial/_archive/_terms.scss new file mode 100644 index 0000000..25889f8 --- /dev/null +++ b/themes/LoveIt/assets/css/_partial/_archive/_terms.scss @@ -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; +} diff --git a/themes/LoveIt/assets/css/_partial/_cookieconsent.scss b/themes/LoveIt/assets/css/_partial/_cookieconsent.scss new file mode 100644 index 0000000..01deb5a --- /dev/null +++ b/themes/LoveIt/assets/css/_partial/_cookieconsent.scss @@ -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; + } + } + } +} diff --git a/themes/LoveIt/assets/css/_partial/_details.scss b/themes/LoveIt/assets/css/_partial/_details.scss new file mode 100644 index 0000000..f1702d0 --- /dev/null +++ b/themes/LoveIt/assets/css/_partial/_details.scss @@ -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; + } + } +} diff --git a/themes/LoveIt/assets/css/_partial/_fixed-button.scss b/themes/LoveIt/assets/css/_partial/_fixed-button.scss new file mode 100644 index 0000000..eaad26e --- /dev/null +++ b/themes/LoveIt/assets/css/_partial/_fixed-button.scss @@ -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; +} diff --git a/themes/LoveIt/assets/css/_partial/_footer.scss b/themes/LoveIt/assets/css/_partial/_footer.scss new file mode 100644 index 0000000..21a89e8 --- /dev/null +++ b/themes/LoveIt/assets/css/_partial/_footer.scss @@ -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; +} diff --git a/themes/LoveIt/assets/css/_partial/_header.scss b/themes/LoveIt/assets/css/_partial/_header.scss new file mode 100644 index 0000000..c4955ca --- /dev/null +++ b/themes/LoveIt/assets/css/_partial/_header.scss @@ -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; + } + } + } +} diff --git a/themes/LoveIt/assets/css/_partial/_icon.scss b/themes/LoveIt/assets/css/_partial/_icon.scss new file mode 100644 index 0000000..f42d2e6 --- /dev/null +++ b/themes/LoveIt/assets/css/_partial/_icon.scss @@ -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; +} diff --git a/themes/LoveIt/assets/css/_partial/_mask.scss b/themes/LoveIt/assets/css/_partial/_mask.scss new file mode 100644 index 0000000..65b5734 --- /dev/null +++ b/themes/LoveIt/assets/css/_partial/_mask.scss @@ -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); + } +} diff --git a/themes/LoveIt/assets/css/_partial/_pagination.scss b/themes/LoveIt/assets/css/_partial/_pagination.scss new file mode 100644 index 0000000..10d24b7 --- /dev/null +++ b/themes/LoveIt/assets/css/_partial/_pagination.scss @@ -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%; + } + } + } +} diff --git a/themes/LoveIt/assets/css/_partial/_single/_admonition.scss b/themes/LoveIt/assets/css/_partial/_single/_admonition.scss new file mode 100644 index 0000000..41c8cbc --- /dev/null +++ b/themes/LoveIt/assets/css/_partial/_single/_admonition.scss @@ -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; + } +} diff --git a/themes/LoveIt/assets/css/_partial/_single/_bilibili.scss b/themes/LoveIt/assets/css/_partial/_single/_bilibili.scss new file mode 100644 index 0000000..6eef8e6 --- /dev/null +++ b/themes/LoveIt/assets/css/_partial/_single/_bilibili.scss @@ -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; + } +} diff --git a/themes/LoveIt/assets/css/_partial/_single/_code.scss b/themes/LoveIt/assets/css/_partial/_single/_code.scss new file mode 100644 index 0000000..6367044 --- /dev/null +++ b/themes/LoveIt/assets/css/_partial/_single/_code.scss @@ -0,0 +1,402 @@ +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; + + .table-wrapper { + > table, + > table thead, + > table tr, + > table td { + margin: 0; + padding: 0; + border: none !important; + + span.c { + white-space: nowrap; + } + } + } +} + +.highlight { + line-height: 1.4em; + margin: .5rem 0; + + > .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; + } + } +} diff --git a/themes/LoveIt/assets/css/_partial/_single/_comment.scss b/themes/LoveIt/assets/css/_partial/_single/_comment.scss new file mode 100644 index 0000000..88899f6 --- /dev/null +++ b/themes/LoveIt/assets/css/_partial/_single/_comment.scss @@ -0,0 +1,3 @@ +#comments { + padding: 8rem 0 2rem; +} diff --git a/themes/LoveIt/assets/css/_partial/_single/_echarts.scss b/themes/LoveIt/assets/css/_partial/_single/_echarts.scss new file mode 100644 index 0000000..c5c5872 --- /dev/null +++ b/themes/LoveIt/assets/css/_partial/_single/_echarts.scss @@ -0,0 +1,4 @@ +.echarts { + margin: .5rem 0; + text-align: center; +} diff --git a/themes/LoveIt/assets/css/_partial/_single/_footer.scss b/themes/LoveIt/assets/css/_partial/_single/_footer.scss new file mode 100644 index 0000000..e2c1324 --- /dev/null +++ b/themes/LoveIt/assets/css/_partial/_single/_footer.scss @@ -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)); + } + } +} diff --git a/themes/LoveIt/assets/css/_partial/_single/_instagram.scss b/themes/LoveIt/assets/css/_partial/_single/_instagram.scss new file mode 100644 index 0000000..49e08ca --- /dev/null +++ b/themes/LoveIt/assets/css/_partial/_single/_instagram.scss @@ -0,0 +1,5 @@ +iframe.instagram-media { + [theme=dark] & { + border: none !important; + } +} diff --git a/themes/LoveIt/assets/css/_partial/_single/_mapbox.scss b/themes/LoveIt/assets/css/_partial/_single/_mapbox.scss new file mode 100644 index 0000000..4ed9856 --- /dev/null +++ b/themes/LoveIt/assets/css/_partial/_single/_mapbox.scss @@ -0,0 +1,4 @@ +.mapbox { + margin: .5rem 0; + padding: .5rem 0; +} diff --git a/themes/LoveIt/assets/css/_partial/_single/_music.scss b/themes/LoveIt/assets/css/_partial/_single/_music.scss new file mode 100644 index 0000000..2a20549 --- /dev/null +++ b/themes/LoveIt/assets/css/_partial/_single/_music.scss @@ -0,0 +1,3 @@ +meting-js { + margin: .5rem 0; +} diff --git a/themes/LoveIt/assets/css/_partial/_single/_toc.scss b/themes/LoveIt/assets/css/_partial/_single/_toc.scss new file mode 100644 index 0000000..aef9a09 --- /dev/null +++ b/themes/LoveIt/assets/css/_partial/_single/_toc.scss @@ -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%); + } + } + } +} diff --git a/themes/LoveIt/assets/css/_variables.scss b/themes/LoveIt/assets/css/_variables.scss new file mode 100644 index 0000000..6ed827b --- /dev/null +++ b/themes/LoveIt/assets/css/_variables.scss @@ -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; diff --git a/themes/LoveIt/assets/css/style.scss b/themes/LoveIt/assets/css/style.scss new file mode 100644 index 0000000..cd685a8 --- /dev/null +++ b/themes/LoveIt/assets/css/style.scss @@ -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"; diff --git a/themes/LoveIt/assets/data/cdn/jsdelivr.yml b/themes/LoveIt/assets/data/cdn/jsdelivr.yml new file mode 100644 index 0000000..a5c85ca --- /dev/null +++ b/themes/LoveIt/assets/data/cdn/jsdelivr.yml @@ -0,0 +1,67 @@ +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 + # smooth-scroll@16.1.3 https://github.com/cferdinandi/smooth-scroll + smoothScrollJS: smooth-scroll@16.1.3/dist/smooth-scroll.min.js + # 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 + lazysizesParentFitJS: lazysizes@5.3.1/plugins/parent-fit/ls.parent-fit.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.js@1.2.0 https://github.com/sachinchoolur/lightgallery.js + # lg-thumbnail.js@1.2.0 https://github.com/sachinchoolur/lg-thumbnail.js + # lg-zoom.js@1.2.0 https://github.com/sachinchoolur/lg-zoom.js + lightgalleryCSS: lightgallery.js@1.2.0/dist/css/lightgallery.min.css + lightgalleryJS: lightgallery.js@1.2.0/dist/js/lightgallery.min.js + lightgalleryThumbnailJS: lg-thumbnail.js@1.2.0/dist/lg-thumbnail.min.js + lightgalleryZoomJS: lg-zoom.js@1.2.0/dist/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@7.0.4 https://github.com/alexmacarthur/typeit + typeitJS: typeit@7.0.4/dist/typeit.min.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.0.1 https://github.com/knsv/mermaid + mermaidJS: mermaid@9.0.1/dist/mermaid.min.js + # echarts@4.8.0 https://echarts.apache.org/ + echartsJS: echarts@4.8.0/dist/echarts.min.js + echartsMacaronsJS: echarts@4.8.0/theme/macarons.min.js + # mapbox-gl@1.10.1 https://docs.mapbox.com/mapbox-gl-js + mapboxGLCSS: mapbox-gl@1.10.1/dist/mapbox-gl.min.css + mapboxGLJS: mapbox-gl@1.10.1/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 diff --git a/themes/LoveIt/assets/data/emoji/apple.yml b/themes/LoveIt/assets/data/emoji/apple.yml new file mode 100644 index 0000000..7d81041 --- /dev/null +++ b/themes/LoveIt/assets/data/emoji/apple.yml @@ -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 diff --git a/themes/LoveIt/assets/data/emoji/facebook.yml b/themes/LoveIt/assets/data/emoji/facebook.yml new file mode 100644 index 0000000..a49d874 --- /dev/null +++ b/themes/LoveIt/assets/data/emoji/facebook.yml @@ -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 diff --git a/themes/LoveIt/assets/data/emoji/google.yml b/themes/LoveIt/assets/data/emoji/google.yml new file mode 100644 index 0000000..d9db49c --- /dev/null +++ b/themes/LoveIt/assets/data/emoji/google.yml @@ -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 diff --git a/themes/LoveIt/assets/data/emoji/twitter.yml b/themes/LoveIt/assets/data/emoji/twitter.yml new file mode 100644 index 0000000..8be26e5 --- /dev/null +++ b/themes/LoveIt/assets/data/emoji/twitter.yml @@ -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 diff --git a/themes/LoveIt/assets/data/polyfill.yml b/themes/LoveIt/assets/data/polyfill.yml new file mode 100644 index 0000000..048d555 --- /dev/null +++ b/themes/LoveIt/assets/data/polyfill.yml @@ -0,0 +1,22 @@ +theme: + - html5shiv + - Object.values + - Promise + - fetch + - Element.prototype.after +smooth-scroll: + - Element.prototype.closest + - requestAnimationFrame + - CustomEvent +algoliasearch: + - Promise + - Object.entries + - Object.assign +TypeIt: + - Array.prototype.fill + - Array.prototype.find + - Array.from + - IntersectionObserver + - Math.sign + - Object.assign + - Promise diff --git a/themes/LoveIt/assets/data/social.yml b/themes/LoveIt/assets/data/social.yml new file mode 100644 index 0000000..84dacbf --- /dev/null +++ b/themes/LoveIt/assets/data/social.yml @@ -0,0 +1,522 @@ +# 001: Github +github: + Weight: 1 + Prefix: https://github.com/ + Title: GitHub + Icon: + Class: fab fa-github-alt fa-fw + +# 002: LinkedIn +linkedin: + Weight: 79 + 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.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 + +# 065: Pixelfed +pixelfed: + Weight: 60 + Title: Pixelfed + Newtab: true + Icon: + Class: fas fa-camera fa-fw + +peertube: + diff --git a/themes/LoveIt/assets/js/theme.js b/themes/LoveIt/assets/js/theme.js new file mode 100644 index 0000000..4fdb07a --- /dev/null +++ b/themes/LoveIt/assets/js/theme.js @@ -0,0 +1,1059 @@ +"use strict"; + +function _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError("Cannot destructure undefined"); } + +function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +var Util = /*#__PURE__*/function () { + function Util() { + _classCallCheck(this, Util); + } + + _createClass(Util, [{ + key: "forEach", + value: function forEach(elements, handler) { + elements = elements || []; + + for (var i = 0; i < elements.length; i++) { + handler(elements[i]); + } + } + }, { + key: "getScrollTop", + value: function getScrollTop() { + return document.documentElement && document.documentElement.scrollTop || document.body.scrollTop; + } + }, { + key: "isMobile", + value: function isMobile() { + return window.matchMedia('only screen and (max-width: 680px)').matches; + } + }, { + key: "isTocStatic", + value: function isTocStatic() { + return window.matchMedia('only screen and (max-width: 960px)').matches; + } + }, { + key: "animateCSS", + value: function animateCSS(element, animation, reserved, callback) { + var _element$classList; + + if (!Array.isArray(animation)) animation = [animation]; + + (_element$classList = element.classList).add.apply(_element$classList, ['animate__animated'].concat(_toConsumableArray(animation))); + + var handler = function handler() { + var _element$classList2; + + (_element$classList2 = element.classList).remove.apply(_element$classList2, ['animate__animated'].concat(_toConsumableArray(animation))); + + element.removeEventListener('animationend', handler); + if (typeof callback === 'function') callback(); + }; + + if (!reserved) element.addEventListener('animationend', handler, false); + } + }]); + + return Util; +}(); + +var Theme = /*#__PURE__*/function () { + function Theme() { + _classCallCheck(this, Theme); + + this.config = window.config; + this.data = this.config.data; + this.isDark = document.body.getAttribute('theme') === 'dark'; + this.util = new Util(); + this.newScrollTop = this.util.getScrollTop(); + this.oldScrollTop = this.newScrollTop; + this.scrollEventSet = new Set(); + this.resizeEventSet = new Set(); + this.switchThemeEventSet = new Set(); + this.clickMaskEventSet = new Set(); + if (window.objectFitImages) objectFitImages(); + } + + _createClass(Theme, [{ + key: "initRaw", + value: function initRaw() { + var _this = this; + + this.util.forEach(document.querySelectorAll('[data-raw]'), function ($raw) { + $raw.innerHTML = _this.data[$raw.id]; + }); + } + }, { + key: "initSVGIcon", + value: function initSVGIcon() { + this.util.forEach(document.querySelectorAll('[data-svg-src]'), function ($icon) { + fetch($icon.getAttribute('data-svg-src')).then(function (response) { + return response.text(); + }).then(function (svg) { + var $temp = document.createElement('div'); + $temp.insertAdjacentHTML('afterbegin', svg); + var $svg = $temp.firstChild; + $svg.setAttribute('data-svg-src', $icon.getAttribute('data-svg-src')); + $svg.classList.add('icon'); + var $titleElements = $svg.getElementsByTagName('title'); + if ($titleElements.length) $svg.removeChild($titleElements[0]); + $icon.parentElement.replaceChild($svg, $icon); + }).catch(function (err) { + console.error(err); + }); + }); + } + }, { + key: "initTwemoji", + value: function initTwemoji() { + if (this.config.twemoji) twemoji.parse(document.body); + } + }, { + key: "initMenuMobile", + value: function initMenuMobile() { + var $menuToggleMobile = document.getElementById('menu-toggle-mobile'); + var $menuMobile = document.getElementById('menu-mobile'); + $menuToggleMobile.addEventListener('click', function () { + document.body.classList.toggle('blur'); + $menuToggleMobile.classList.toggle('active'); + $menuMobile.classList.toggle('active'); + }, false); + + this._menuMobileOnClickMask = this._menuMobileOnClickMask || function () { + $menuToggleMobile.classList.remove('active'); + $menuMobile.classList.remove('active'); + }; + + this.clickMaskEventSet.add(this._menuMobileOnClickMask); + } + }, { + key: "initSwitchTheme", + value: function initSwitchTheme() { + var _this2 = this; + + this.util.forEach(document.getElementsByClassName('theme-switch'), function ($themeSwitch) { + $themeSwitch.addEventListener('click', function () { + if (document.body.getAttribute('theme') === 'dark') document.body.setAttribute('theme', 'light');else document.body.setAttribute('theme', 'dark'); + _this2.isDark = !_this2.isDark; + window.localStorage && localStorage.setItem('theme', _this2.isDark ? 'dark' : 'light'); + + var _iterator = _createForOfIteratorHelper(_this2.switchThemeEventSet), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var event = _step.value; + event(); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + }, false); + }); + } + }, { + key: "initSearch", + value: function initSearch() { + var _this3 = this; + + var searchConfig = this.config.search; + var isMobile = this.util.isMobile(); + if (!searchConfig || isMobile && this._searchMobileOnce || !isMobile && this._searchDesktopOnce) return; + var maxResultLength = searchConfig.maxResultLength ? searchConfig.maxResultLength : 10; + var snippetLength = searchConfig.snippetLength ? searchConfig.snippetLength : 50; + var highlightTag = searchConfig.highlightTag ? searchConfig.highlightTag : 'em'; + var suffix = isMobile ? 'mobile' : 'desktop'; + var $header = document.getElementById("header-".concat(suffix)); + var $searchInput = document.getElementById("search-input-".concat(suffix)); + var $searchToggle = document.getElementById("search-toggle-".concat(suffix)); + var $searchLoading = document.getElementById("search-loading-".concat(suffix)); + var $searchClear = document.getElementById("search-clear-".concat(suffix)); + + if (isMobile) { + this._searchMobileOnce = true; + $searchInput.addEventListener('focus', function () { + document.body.classList.add('blur'); + $header.classList.add('open'); + }, false); + document.getElementById('search-cancel-mobile').addEventListener('click', function () { + $header.classList.remove('open'); + document.body.classList.remove('blur'); + document.getElementById('menu-toggle-mobile').classList.remove('active'); + document.getElementById('menu-mobile').classList.remove('active'); + $searchLoading.style.display = 'none'; + $searchClear.style.display = 'none'; + _this3._searchMobile && _this3._searchMobile.autocomplete.setVal(''); + }, false); + $searchClear.addEventListener('click', function () { + $searchClear.style.display = 'none'; + _this3._searchMobile && _this3._searchMobile.autocomplete.setVal(''); + }, false); + + this._searchMobileOnClickMask = this._searchMobileOnClickMask || function () { + $header.classList.remove('open'); + $searchLoading.style.display = 'none'; + $searchClear.style.display = 'none'; + _this3._searchMobile && _this3._searchMobile.autocomplete.setVal(''); + }; + + this.clickMaskEventSet.add(this._searchMobileOnClickMask); + } else { + this._searchDesktopOnce = true; + $searchToggle.addEventListener('click', function () { + document.body.classList.add('blur'); + $header.classList.add('open'); + $searchInput.focus(); + }, false); + $searchClear.addEventListener('click', function () { + $searchClear.style.display = 'none'; + _this3._searchDesktop && _this3._searchDesktop.autocomplete.setVal(''); + }, false); + + this._searchDesktopOnClickMask = this._searchDesktopOnClickMask || function () { + $header.classList.remove('open'); + $searchLoading.style.display = 'none'; + $searchClear.style.display = 'none'; + _this3._searchDesktop && _this3._searchDesktop.autocomplete.setVal(''); + }; + + this.clickMaskEventSet.add(this._searchDesktopOnClickMask); + } + + $searchInput.addEventListener('input', function () { + if ($searchInput.value === '') $searchClear.style.display = 'none';else $searchClear.style.display = 'inline'; + }, false); + + var initAutosearch = function initAutosearch() { + var autosearch = autocomplete("#search-input-".concat(suffix), { + hint: false, + autoselect: true, + dropdownMenuContainer: "#search-dropdown-".concat(suffix), + clearOnSelected: true, + cssClasses: { + noPrefix: true + }, + debug: true + }, { + name: 'search', + source: function source(query, callback) { + $searchLoading.style.display = 'inline'; + $searchClear.style.display = 'none'; + + var finish = function finish(results) { + $searchLoading.style.display = 'none'; + $searchClear.style.display = 'inline'; + callback(results); + }; + + if (searchConfig.type === 'lunr') { + var search = function search() { + if (lunr.queryHandler) query = lunr.queryHandler(query); + var results = {}; + + _this3._index.search(query).forEach(function (_ref) { + var ref = _ref.ref, + metadata = _ref.matchData.metadata; + var matchData = _this3._indexData[ref]; + var uri = matchData.uri, + title = matchData.title, + context = matchData.content; + if (results[uri]) return; + var position = 0; + Object.values(metadata).forEach(function (_ref2) { + var content = _ref2.content; + + if (content) { + var matchPosition = content.position[0][0]; + if (matchPosition < position || position === 0) position = matchPosition; + } + }); + position -= snippetLength / 5; + + if (position > 0) { + position += context.substr(position, 20).lastIndexOf(' ') + 1; + context = '...' + context.substr(position, snippetLength); + } else { + context = context.substr(0, snippetLength); + } + + Object.keys(metadata).forEach(function (key) { + title = title.replace(new RegExp("(".concat(key, ")"), 'gi'), "<".concat(highlightTag, ">$1").concat(highlightTag, ">")); + context = context.replace(new RegExp("(".concat(key, ")"), 'gi'), "<".concat(highlightTag, ">$1").concat(highlightTag, ">")); + }); + results[uri] = { + 'uri': uri, + 'title': title, + 'date': matchData.date, + 'context': context + }; + }); + + return Object.values(results).slice(0, maxResultLength); + }; + + if (!_this3._index) { + fetch(searchConfig.lunrIndexURL).then(function (response) { + return response.json(); + }).then(function (data) { + var indexData = {}; + _this3._index = lunr(function () { + var _this4 = this; + + if (searchConfig.lunrLanguageCode) this.use(lunr[searchConfig.lunrLanguageCode]); + this.ref('objectID'); + this.field('title', { + boost: 50 + }); + this.field('tags', { + boost: 20 + }); + this.field('categories', { + boost: 20 + }); + this.field('content', { + boost: 10 + }); + this.metadataWhitelist = ['position']; + data.forEach(function (record) { + indexData[record.objectID] = record; + + _this4.add(record); + }); + }); + _this3._indexData = indexData; + finish(search()); + }).catch(function (err) { + console.error(err); + finish([]); + }); + } else finish(search()); + } else if (searchConfig.type === 'algolia') { + _this3._algoliaIndex = _this3._algoliaIndex || algoliasearch(searchConfig.algoliaAppID, searchConfig.algoliaSearchKey).initIndex(searchConfig.algoliaIndex); + + _this3._algoliaIndex.search(query, { + offset: 0, + length: maxResultLength * 8, + attributesToHighlight: ['title'], + attributesToSnippet: ["content:".concat(snippetLength)], + highlightPreTag: "<".concat(highlightTag, ">"), + highlightPostTag: "".concat(highlightTag, ">") + }).then(function (_ref3) { + var hits = _ref3.hits; + var results = {}; + hits.forEach(function (_ref4) { + var uri = _ref4.uri, + date = _ref4.date, + title = _ref4._highlightResult.title, + content = _ref4._snippetResult.content; + if (results[uri] && results[uri].context.length > content.value) return; + results[uri] = { + uri: uri, + title: title.value, + date: date, + context: content.value + }; + }); + finish(Object.values(results).slice(0, maxResultLength)); + }).catch(function (err) { + console.error(err); + finish([]); + }); + } + }, + templates: { + suggestion: function suggestion(_ref5) { + var title = _ref5.title, + date = _ref5.date, + context = _ref5.context; + return "
",t+=r(e[1]),t+="
\n"}),t}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,a=function(){function e(e,t){for(var n=0;n"+b(a)+"
"}return{empty:a.empty&&k.templatify(a.empty),header:a.header&&k.templatify(a.header),footer:a.footer&&k.templatify(a.footer),suggestion:a.suggestion||c}}function g(a){return/^[_a-zA-Z0-9-]+$/.test(a)}var h="aaDataset",i="aaValue",j="aaDatum",k=c(4),l=c(3),m=c(18),n=c(19),o=c(8);d.extractDatasetName=function(a){return l.element(a).data(h)},d.extractValue=function(a){return l.element(a).data(i)},d.extractDatum=function(a){var b=l.element(a).data(j);return"string"==typeof b&&(b=JSON.parse(b)),b},k.mixin(d.prototype,o,{_render:function(a,b){function c(){var b=[].slice.call(arguments,0);return b=[{query:a,isEmpty:!0}].concat(b),n.templates.empty.apply(this,b)}function d(){function a(a){var b,c=m.suggestion.replace("%PREFIX%",f.cssClasses.prefix).replace("%SUGGESTION%",f.cssClasses.suggestion);return b=l.element(c).attr({role:"option",id:["option",Math.floor(1e8*Math.random())].join("-")}).append(n.templates.suggestion.apply(this,[a].concat(e))),b.data(h,n.name),b.data(i,n.displayFn(a)||void 0),b.data(j,JSON.stringify(a)),b.children().each(function(){l.element(this).css(f.css.suggestionChild)}),b}var c,d,e=[].slice.call(arguments,0),f=this,g=m.suggestions.replace("%PREFIX%",this.cssClasses.prefix).replace("%SUGGESTIONS%",this.cssClasses.suggestions);return c=l.element(g).css(this.css.suggestions),d=k.map(b,a),c.append.apply(c,d),c}function e(){var b=[].slice.call(arguments,0);return b=[{query:a,isEmpty:!g}].concat(b),n.templates.header.apply(this,b)}function f(){var b=[].slice.call(arguments,0);return b=[{query:a,isEmpty:!g}].concat(b),n.templates.footer.apply(this,b)}if(this.$el){var g,n=this,o=[].slice.call(arguments,2);if(this.$el.empty(),g=b&&b.length,this._isEmpty=!g,!g&&this.templates.empty)this.$el.html(c.apply(this,o)).prepend(n.templates.header?e.apply(this,o):null).append(n.templates.footer?f.apply(this,o):null);else if(g)this.$el.html(d.apply(this,o)).prepend(n.templates.header?e.apply(this,o):null).append(n.templates.footer?f.apply(this,o):null);else if(b&&!Array.isArray(b))throw new TypeError("suggestions must be an array");this.$menu&&this.$menu.addClass(this.cssClasses.prefix+(g?"with":"without")+"-"+this.name).removeClass(this.cssClasses.prefix+(g?"without":"with")+"-"+this.name),this.trigger("rendered",a)}},getRoot:function(){return this.$el},update:function(a){function b(b){if(!this.canceled&&a===this.query){var c=[].slice.call(arguments,1);this.cacheSuggestions(a,b,c),this._render.apply(this,[a,b].concat(c))}}if(this.query=a,this.canceled=!1,this.shouldFetchFromCache(a))b.apply(this,[this.cachedSuggestions].concat(this.cachedRenderExtraArgs));else{var c=this,d=function(){c.canceled||c.source(a,b.bind(c))};if(this.debounce){var e=function(){c.debounceTimeout=null,d()};clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout(e,this.debounce)}else d()}},cacheSuggestions:function(a,b,c){this.cachedQuery=a,this.cachedSuggestions=b,this.cachedRenderExtraArgs=c},shouldFetchFromCache:function(a){return this.cache&&this.cachedQuery===a&&this.cachedSuggestions&&this.cachedSuggestions.length},clearCachedSuggestions:function(){delete this.cachedQuery,delete this.cachedSuggestions,delete this.cachedRenderExtraArgs},cancel:function(){this.canceled=!0},clear:function(){this.$el&&(this.cancel(),this.$el.empty(),this.trigger("rendered",""))},isEmpty:function(){return this._isEmpty},destroy:function(){this.clearCachedSuggestions(),this.$el=null}}),a.exports=d},function(a,b){"use strict";a.exports={wrapper:'',dropdown:'',dataset:'',suggestions:'',suggestion:''}},function(a,b,c){"use strict";var d=c(4),e={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},dropdown:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},suggestions:{display:"block"},suggestion:{whiteSpace:"nowrap",cursor:"pointer"},suggestionChild:{whiteSpace:"normal"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:"0"},defaultClasses:{root:"algolia-autocomplete",prefix:"aa",noPrefix:!1,dropdownMenu:"dropdown-menu",input:"input",hint:"hint",suggestions:"suggestions",suggestion:"suggestion",cursor:"cursor",dataset:"dataset",empty:"empty"},appendTo:{wrapper:{position:"absolute",zIndex:"100",display:"none"},input:{},inputWithNoHint:{},dropdown:{display:"block"}}};d.isMsie()&&d.mixin(e.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),d.isMsie()&&d.isMsie()<=7&&d.mixin(e.input,{marginTop:"-1px"}),a.exports=e},function(a,b,c){"use strict";a.exports={hits:c(21),popularIn:c(24)}},function(a,b,c){"use strict";var d=c(4),e=c(22),f=c(23),g=function(){function a(a,d){return window.Promise.resolve().then(function(){return b.length&&(e=a.search(b),b=[]),e}).then(function(a){if(a)return c=a.results,c[d]})}var b=[],c=[],e=window.Promise.resolve();return function(c,e){return function(f,g){a(c.as,b.push({indexName:c.indexName,query:f,params:e})-1).then(function(a){a&&g(a.hits,a)}).catch(function(a){d.error(a.message)})}}}();a.exports=function(a,b){var c=f(a.as._ua);if(c&&c[0]>=3&&c[1]>20){var d="autocomplete.js "+e;a.as._ua.indexOf(d)===-1&&(a.as._ua+="; "+d)}return g(a,b)}},function(a,b){a.exports="0.38.1"},function(a,b){"use strict";a.exports=function(a){var b=a.match(/Algolia for JavaScript \((\d+\.)(\d+\.)(\d+)\)/)||a.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);if(b)return[b[1],b[2],b[3]]}},function(a,b,c){"use strict";var d=c(4),e=c(22),f=c(23);a.exports=function(a,b,c,g){function h(h,i){a.search(h,b,function(a,h){if(a)return void d.error(a.message);if(h.hits.length>0){var l=h.hits[0],m=d.mixin({hitsPerPage:0},c);delete m.source,delete m.index;var n=f(k.as._ua);return n&&n[0]>=3&&n[1]>20&&(b.additionalUA="autocomplete.js "+e),void k.search(j(l),m,function(a,b){if(a)return void d.error(a.message);var c=[];if(g.includeAll){var e=g.allTitle||"All departments";c.push(d.mixin({facet:{value:e,count:b.nbHits}},d.cloneDeep(l)))}d.each(b.facets,function(a,b){d.each(a,function(a,e){c.push(d.mixin({facet:{facet:b,value:e,count:a}},d.cloneDeep(l)))})});for(var f=1;fe[0]||i[1]<0||i[1]>e[1])){var n=this._handleEnds,o=(n[0]+n[1])/2,a=this._updateInterval("all",i[0]-o);this._updateView(),a&&this._dispatchZoomAction()}},_dispatchZoomAction:function(){var t=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,start:t[0],end:t[1]})},_findCoordRect:function(){var i;if(iL(this.getTargetCoordInfo(),function(t){if(!i&&t.length){var e=t[0].model.coordinateSystem;i=e.getRect&&e.getRect()}}),!i){var t=this.api.getWidth(),e=this.api.getHeight();i={x:.2*t,y:.2*e,width:.6*t,height:.6*e}}return i}});function sL(t){return"vertical"===t?"ns-resize":"ew-resize"}iD.extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}});var lL="\0_ec_dataZoom_roams";function uL(t,n){var e=cL(t),o=n.dataZoomId,a=n.coordId;E(e,function(t,e){var i=t.dataZoomInfos;i[o]&&_(n.allCoordIds,a)<0&&(delete i[o],t.count--)}),dL(e);var i=e[a];i||((i=e[a]={coordId:a,dataZoomInfos:{},count:0}).controller=function(t,r){var e=new Vy(t.getZr());return E(["pan","zoom","scrollMove"],function(a){e.on(a,function(n){var o=[];E(r.dataZoomInfos,function(t){if(n.isAvailableBehavior(t.dataZoomModel.option)){var e=(t.getRange||{})[a],i=e&&e(r.controller,n);!t.dataZoomModel.get("disabled",!0)&&i&&o.push({dataZoomId:t.dataZoomId,start:i[0],end:i[1]})}}),o.length&&r.dispatchAction(o)})}),e}(t,i),i.dispatchAction=T(fL,t)),i.dataZoomInfos[o]||i.count++,i.dataZoomInfos[o]=n;var r=function(t){var n,o={type_true:2,type_move:1,type_false:0,type_undefined:-1},a=!0;return E(t,function(t){var e=t.dataZoomModel,i=!e.get("disabled",!0)&&(!e.get("zoomLock",!0)||"move");o["type_"+n]