From: Daniel Jr Date: Sat, 17 May 2025 06:45:22 +0000 (-0300) Subject: move theme files & remove cactus theme X-Git-Url: https://git.danielmrcl.dev/?a=commitdiff_plain;h=21efaf27579c231d22d26b4783367d0b2ef1c773;p=danielmrcl.dev.git move theme files & remove cactus theme Signed-off-by: Daniel Jr --- diff --git a/README.md b/README.md new file mode 100644 index 0000000..d7764bf --- /dev/null +++ b/README.md @@ -0,0 +1,299 @@ +## Cactus + +A hugo theme for personal blog. Fork from hexo theme [cactus](https://github.com/probberechts/hexo-theme-cactus) created by @probberechts. + +[Live demo on github pages](https://www.takuzen.me/hugo-theme-cactus/). + +Some works are still in progress. See [TODOS](#todos) below. + +## Install + +1. clone cactus to your hugo site's `themes` folder. +``` +git clone https://github.com/monkeyWzr/hugo-theme-cactus.git themes/cactus +``` + +2. change your theme to cactus in your site config +```toml +# config.toml + +theme = "cactus" +``` + +3. config your site. See [Config] or a [complete config sample](exampleSite/config.toml) +4. test your site +``` +hugo server +``` + +5. publish your site in your prefered way. See hugo's doc: [Hosting & Deployment](https://gohugo.io/hosting-and-deployment/) + +## Config + +### Color themes + +```toml +[params] + + colortheme = "white" # dark, light, white, or classic +``` + +### Custom CSS + +```toml +[params] + css = ["css/custom.css"] +``` + +You can add multiple custom stylesheets which will be loaded after the main theme css. +For example, the above line will load the CSS-file placed at `/static/css/custom.css`. + +### Navigation + +```toml +# Main menu which appears below site header. +[[menu.main]] +name = "Home" +url = "/" +weight = 1 + +[[menu.main]] +name = "All posts" +url = "/posts" +weight = 2 + +[[menu.main]] +name = "Tags" +url = "/tags" +weight = 3 + +[[menu.main]] +name = "About" +url = "/about" +weight = 4 +``` + +### Homepage settings + +* description: description will be displayed in the homepage. Markdown syntax is supported in the description string. +```toml +[params] + + description = "Hugo is a general-purpose website framework. Technically speaking, Hugo is a static site generator. Unlike systems that dynamically build a page with each visitor request, Hugo builds pages when you create or update your content. Since websites are viewed far more often than they are edited, Hugo is designed to provide an optimal viewing experience for your website’s end users and an ideal writing experience for website authors." +``` + +* set your main section (used as the link for the "writings" title on the homepage) + +```toml +[params] + mainSection = "posts" +``` + +* change the default main section title from Writings, to something else: + +```toml +[params] + mainSectionTitle = "Blog" +``` + +* Show only the 5 most recent posts (default) + +```toml +[params] + showAllPostsOnHomePage = false + postsOnHomePage = 5 +``` +* show all posts + +```toml +[params] + showAllPostsOnHomePage = true + postsOnHomePage = 5 # this option will be ignored +``` + +* show tagsoverview (default) or not +* +```toml +[params] + tagsOverview = true +``` + +* display the table of contents inline on blog posts, rather than as part of the navigation menu: + +```toml +[params] + tocInline = true +``` + +* show projects list (default) or not. + +```toml +[params] + showProjectsList = true + projectsUrl = "https://github.com/monkeyWzr" +``` + +Projects section will not be shown if no data file is detected. See [Projects list](#projects-list) below. + +### Projects list + +Create your projects data file `data/projects.yaml|toml|json`. Hugo support yaml, toml and json formats. +for former hexo cactus users: please assign your json array to a `list` key. + +for example, `data/projects.json`: +```json +{ + "list": [ + { + "name":"Hexo", + "url":"https://hexo.io/", + "desc":"A fast, simple & powerful blog framework" + }, + { + "name":"Font Awesome", + "url":"http://fontawesome.io/", + "desc":"The iconic font and CSS toolkit" + } + ] +} +``` + +### Social media links + +```toml +[[params.social]] + name = "github" + link = "https://github.com/monkeyWzr" + +[[params.social]] + name = "email" + link = "monkeywzr@gmail.com" # no need for "mailto:" at the start + +[[params.social]] + name = "linkedin" + link = "https://www.linkedin.com/in/monkeywzr/" +``` + +The `name` key expects the name of a [Font Awesome icon](https://fontawesome.com/icons?d=gallery&s=brands). + +### Copyright + +Assign your copy right to `.Site.Copyright`. Cactus will append current year to the head. + +TODO: Customizable copyright year + +```toml +copyright = "Zeran Wu" # cactus theme will use site title if copyright is not set +``` + +### Comments + +Comments is disabled by default. Enable comments in your `.Site.Params`. +```toml +[params] + [params.comments] + enabled = true + # engine = "disqus" # in progress +``` + +You can also enable/disable comments per post. in your posts' front matter, add: +```yaml +comments: true +``` + +The site config is ignored when `comments` option exists in front matter. + +The default engine is disqus. **By now only disqus is supported in cactus.** I will add more options sooner or later. See [Comments Alternatives](https://gohugo.io/content-management/comments/#comments-alternatives) + +Before using disqus, you need to register and get your [disqus shortname](https://help.disqus.com/en/articles/1717111-what-s-a-shortname). Assign your shortname in `.Site.disqusShortname`, or cactus will use `.Site.Title` by default. + +``` +disqusShortname = "wzr" # cactus will use site title if not set +``` + +### highlight + +Use hugo's built-in [syntax highlighting](https://gohugo.io/getting-started/configuration-markup#highlight). + +default config: + +```toml +[markup] + [markup.highlight] + codeFences = true + guessSyntax = false + hl_Lines = "" + lineNoStart = 1 + lineNos = false + lineNumbersInTable = true + noClasses = true + style = "monokai" + tabWidth = 4 +``` + +### Analytics + +Cactus uses hugo's bulit in analytics templates. Check [hugo's documents](https://gohugo.io/templates/internal#google-analytics) for details. + +Set you tracking id in your site config. +```toml +googleAnalytics = "UA-XXXXXXXX-XX" # or G-XXXXXXXX if you are using Google Analytics v4 (gtag.js) +``` + +If you are using Google Analytics v3 (analytics.js), you can switch to asynchronous tracking by set `params.googleAnalyticsAsync` to `true`. +```toml +[params] +googleAnalyticsAsync = true # not required +``` + +### RSS + +The rss feed is not generated by default. you can enable it in your site config: + +```toml +[params] + rss = true +``` + +The rss link will be `https://example.com/index.xml` assuming your `baseURL` is set to `https://example.com/` + +Please also check [Configure RSS](https://gohugo.io/templates/rss/#configure-rss) + +### Mathjax + +Cactus supports mathjax. Just add `mathjax` option in your site config: +```toml +[params] + mathjax = true # not required +``` + +You can also enable/disable mathjax per post. In your posts' front matter, add: +```yaml +mathjax: true # or false +``` + +The site config will be ignored when `mathjax` option exists in front matter. + +### Archive +Pagination on posts archive can be disabled to show all posts in chronological order + +```toml +[params] + showAllPostsArchive = true # or false (default) +``` + +## TODOS + +- [ ] More comments engines +- [x] RSS +- [ ] I18n +- [x] Analytics +- [ ] Local Search +- [ ] toc template +- [ ] Customizable copyright year +- [ ] gallery +- [ ] expose [mathjax configuration](https://docs.mathjax.org/en/latest/web/configuration.html#web-configuration) + +## License + +MIT diff --git a/assets/scss/_extend.scss b/assets/scss/_extend.scss new file mode 100644 index 0000000..5eb2d52 --- /dev/null +++ b/assets/scss/_extend.scss @@ -0,0 +1,119 @@ +// $base-style +h1, +.h1 { + display: block; + margin-top: 3rem; + margin-bottom: 1rem; + color: $color-accent-1; + letter-spacing: .01em; + font-weight: 700; + font-style: normal; + font-size: 1.5em; + + @include antialias(); +} +h2, +.h2 { + position: relative; + display: block; + margin-top: 2rem; + margin-bottom: .5rem; + color: $color-accent-2; + text-transform: none; + letter-spacing: normal; + font-weight: bold; + font-size: 1rem; +} +h3 { + color: $color-accent-2; + text-decoration: underline; + font-weight: bold; + font-size: .9rem; +} +h4 +h5 +h6 { + display: inline; + text-decoration: none; + color: $color-accent-3; + font-weight: bold; + font-size: .9rem; +} +h3 +h4 +h5 +h6 { + margin-top: .9rem; + margin-bottom: .5rem; +} +hr { + border: .5px dashed $color-accent-3; + opacity: .5; + margin: 0; + margin-top: 20px; + margin-bottom: 20px; +} +strong { + font-weight: bold; +} +em +cite { + font-style: italic; +} +sup +sub { + position: relative; + vertical-align: baseline; + font-size: .75em; + line-height: 0; +} +sup { + top: -.5em; +} +sub { + bottom: -.2em; +} +small { + font-size: .85em; +} +acronym +abbr { + border-bottom: 1px dotted; +} +ul +ol +dl { + line-height: $line-height; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-top: 0; + margin-bottom: 0; +} +ol { + list-style: decimal; +} +dt { + font-weight: bold; +} +table { + width: 100%; + border-collapse: collapse; + text-align: left; + font-size: $font-size - 2px; + overflow: auto; + display: block; +} +th { + padding: 8px; + border-bottom: 1px dashed $color-border; + color: $color-accent-2; + font-weight: bold; + font-size: $font-size - 1px; +} +td { + padding: 0 8px; + border-bottom: none; +} \ No newline at end of file diff --git a/assets/scss/_fonts.scss b/assets/scss/_fonts.scss new file mode 100644 index 0000000..37d2e4d --- /dev/null +++ b/assets/scss/_fonts.scss @@ -0,0 +1,6 @@ +@font-face { + font-style: normal; + font-family: "JetBrains Mono"; + font-display: swap; + src: local("JetBrains Mono"), local("JetBrains-Mono"), url("../lib/JetBrainsMono/web/woff2/JetBrainsMono-Regular.woff2") format("woff2"), url("../lib/JetBrainsMono/web/woff/JetBrainsMono-Regular.woff") format("woff"), url("../lib/JetBrainsMono/web/eot/JetBrainsMono-Regular.eot") format("embedded-opentype"), url("../lib/JetBrainsMono/ttf/JetBrainsMono-Regular.ttf") format("truetype"); +}; \ No newline at end of file diff --git a/assets/scss/_mixins.scss b/assets/scss/_mixins.scss new file mode 100644 index 0000000..cc0eda6 --- /dev/null +++ b/assets/scss/_mixins.scss @@ -0,0 +1,20 @@ +@mixin antialias() { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; +} +@mixin hyphens($value) { + hyphens: $value; + -moz-hyphens: $value; + -ms-hyphens: $value; + -webkit-hyphens: $value; +} +@mixin underline($size, $color) { + background-image: linear-gradient(transparent, transparent $size, $color $size, $color); + background-position: bottom; + background-size: 100% 6px; + background-repeat: repeat-x; +} +@mixin no-select() { + user-select: none; + -khtml-user-select: none; +} \ No newline at end of file diff --git a/assets/scss/_util.scss b/assets/scss/_util.scss new file mode 100644 index 0000000..83cbc8c --- /dev/null +++ b/assets/scss/_util.scss @@ -0,0 +1,319 @@ +/* Basscss */ +.inline { + display: inline; +} +.block { + display: block; +} +.inline-block { + display: inline-block; +} +.table { + display: table; +} +.table-cell { + display: table-cell; +} +.overflow-hidden { + overflow: hidden; +} +.overflow-scroll { + overflow: scroll; +} +.overflow-auto { + overflow: auto; +} +.clearfix:before, +.clearfix:after { + display: table; + content: " "; +} +.clearfix:after { + clear: both; +} +.left { + float: left; +} +.right { + float: right; +} +.fit { + max-width: 100%; +} +.truncate { + display: inline-block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.max-width-1 { + max-width: 24rem; +} +.max-width-2 { + max-width: 32rem; +} +.max-width-3 { + max-width: 48rem; +} +.max-width-4 { + max-width: 64rem; +} +.border-box { + box-sizing: border-box; +} +.m0 { + margin: 0; +} +.mt0 { + margin-top: 0; +} +.mr0 { + margin-right: 0; +} +.mb0 { + margin-bottom: 0; +} +.ml0 { + margin-left: 0; +} +.mx0 { + margin-right: 0; + margin-left: 0; +} +.my0 { + margin-top: 0; + margin-bottom: 0; +} +.m1 { + margin: .5rem; +} +.mt1 { + margin-top: .5rem; +} +.mr1 { + margin-right: .5rem; +} +.mb1 { + margin-bottom: .5rem; +} +.ml1 { + margin-left: .5rem; +} +.mx1 { + margin-right: .5rem; + margin-left: .5rem; +} +.my1 { + margin-top: .5rem; + margin-bottom: .5rem; +} +.m2 { + margin: 1rem; +} +.mt2 { + margin-top: 1rem; +} +.mr2 { + margin-right: 1rem; +} +.mb2 { + margin-bottom: 1rem; +} +.ml2 { + margin-left: 1rem; +} +.mx2 { + margin-right: 1rem; + margin-left: 1rem; +} +.my2 { + margin-top: 1rem; + margin-bottom: 1rem; +} +.m3 { + margin: 2rem; +} +.mt3 { + margin-top: 2rem; +} +.mr3 { + margin-right: 2rem; +} +.mb3 { + margin-bottom: 2rem; +} +.ml3 { + margin-left: 2rem; +} +.mx3 { + margin-right: 2rem; + margin-left: 2rem; +} +.my3 { + margin-top: 2rem; + margin-bottom: 2rem; +} +.m4 { + margin: 4rem; +} +.mt4 { + margin-top: 4rem; +} +.mr4 { + margin-right: 4rem; +} +.mb4 { + margin-bottom: 4rem; +} +.ml4 { + margin-left: 4rem; +} +.mx4 { + margin-right: 4rem; + margin-left: 4rem; +} +.my4 { + margin-top: 4rem; + margin-bottom: 4rem; +} +.mxn1 { + margin-right: -.5rem; + margin-left: -.5rem; +} +.mxn2 { + margin-right: -1rem; + margin-left: -1rem; +} +.mxn3 { + margin-right: -2rem; + margin-left: -2rem; +} +.mxn4 { + margin-right: -4rem; + margin-left: -4rem; +} +.ml-auto { + margin-left: auto; +} +.mr-auto { + margin-right: auto; +} +.mx-auto { + margin-right: auto; + margin-left: auto; +} +.p0 { + padding: 0; +} +.pt0 { + padding-top: 0; +} +.pr0 { + padding-right: 0; +} +.pb0 { + padding-bottom: 0; +} +.pl0 { + padding-left: 0; +} +.px0 { + padding-right: 0; + padding-left: 0; +} +.py0 { + padding-top: 0; + padding-bottom: 0; +} +.p1 { + padding: .5rem; +} +.pt1 { + padding-top: .5rem; +} +.pr1 { + padding-right: .5rem; +} +.pb1 { + padding-bottom: .5rem; +} +.pl1 { + padding-left: .5rem; +} +.py1 { + padding-top: .5rem; + padding-bottom: .5rem; +} +.px1 { + padding-right: .5rem; + padding-left: .5rem; +} +.p2 { + padding: 1rem; +} +.pt2 { + padding-top: 1rem; +} +.pr2 { + padding-right: 1rem; +} +.pb2 { + padding-bottom: 1rem; +} +.pl2 { + padding-left: 1rem; +} +.py2 { + padding-top: 1rem; + padding-bottom: 1rem; +} +.px2 { + padding-right: 1rem; + padding-left: 1rem; +} +.p3 { + padding: 2rem; +} +.pt3 { + padding-top: 2rem; +} +.pr3 { + padding-right: 2rem; +} +.pb3 { + padding-bottom: 2rem; +} +.pl3 { + padding-left: 2rem; +} +.py3 { + padding-top: 2rem; + padding-bottom: 2rem; +} +.px3 { + padding-right: 2rem; + padding-left: 2rem; +} +.p4 { + padding: 4rem; +} +.pt4 { + padding-top: 4rem; +} +.pr4 { + padding-right: 4rem; +} +.pb4 { + padding-bottom: 4rem; +} +.pl4 { + padding-left: 4rem; +} +.py4 { + padding-top: 4rem; + padding-bottom: 4rem; +} +.px4 { + padding-right: 4rem; + padding-left: 4rem; +} \ No newline at end of file diff --git a/assets/scss/_variables.scss b/assets/scss/_variables.scss new file mode 100644 index 0000000..279b5b9 --- /dev/null +++ b/assets/scss/_variables.scss @@ -0,0 +1,13 @@ +// Fonts +$font-family-body: "JetBrains Mono", monospace; +$font-family-mono: "JetBrains Mono", monospace; +$font-family-tt: "Inconsolata", monospace; +$font-size: 14px; +$line-height: 1.725; +$page-width: 48rem; +// Logo +$logo-width: 50px; +$logo-height: 50px; +$logo-grayout: true; +// Colors +$colors: "dark" // white dark light classic \ No newline at end of file diff --git a/assets/scss/colors/classic.scss b/assets/scss/colors/classic.scss new file mode 100644 index 0000000..7ff8cb2 --- /dev/null +++ b/assets/scss/colors/classic.scss @@ -0,0 +1,13 @@ +$color-background: #fafafa; +$color-footer-mobile-1: darken($color-background, 2%); +$color-footer-mobile-2: darken($color-background, 10%); +$color-background-code: darken($color-background, 2%); +$color-border: #666; +$color-meta: #666; +$color-meta-code: lighten($color-meta, 10%); +$color-link: rgba(86, 124, 119, .4); +$color-text: #22272a; +$color-accent-1: #cc2a41; +$color-accent-2: rgba(86, 124, 119, .8); +$color-accent-3: #666; +$color-quote: #cc2a41; \ No newline at end of file diff --git a/assets/scss/colors/dark.scss b/assets/scss/colors/dark.scss new file mode 100644 index 0000000..c7fc243 --- /dev/null +++ b/assets/scss/colors/dark.scss @@ -0,0 +1,13 @@ +$color-background: #1d1f21; +$color-footer-mobile-1: lighten($color-background, 2%); +$color-footer-mobile-2: lighten($color-background, 10%); +$color-background-code: lighten($color-background, 2%); +$color-border: #666; +$color-meta: #666; +$color-meta-code: #666; +$color-link: rgba(212, 128, 170, 1); +$color-text: #c9cacc; +$color-accent-3: #cccccc; +$color-accent-2: #eeeeee; +$color-accent-1: #2bbc8a; +$color-quote: #ccffb6; \ No newline at end of file diff --git a/assets/scss/colors/light.scss b/assets/scss/colors/light.scss new file mode 100644 index 0000000..dcfcbd6 --- /dev/null +++ b/assets/scss/colors/light.scss @@ -0,0 +1,14 @@ +// by @GabiThume (https://github.com/gabithume) +$color-background: #e2e0de; +$color-footer-mobile-1: darken($color-background, 2%); +$color-footer-mobile-2: darken($color-background, 10%); +$color-background-code: darken($color-background, 2%); +$color-border: #666; +$color-meta: #666; +$color-meta-code: lighten($color-meta, 10%); +$color-link: rgba(43, 188, 138, 1); +$color-text: #363533; +$color-accent-3: #666666; +$color-accent-2: #111111; +$color-accent-1: #d44375; +$color-quote: #ab2251; \ No newline at end of file diff --git a/assets/scss/colors/white.scss b/assets/scss/colors/white.scss new file mode 100644 index 0000000..a4d1547 --- /dev/null +++ b/assets/scss/colors/white.scss @@ -0,0 +1,14 @@ +// by @sergodeeva (https://github.com/sergodeeva) +$color-background: #FFFFFF; +$color-footer-mobile-1: darken($color-background, 2%); +$color-footer-mobile-2: darken($color-background, 10%); +$color-background-code: darken($color-background, 2%); +$color-border: #666; +$color-meta: #666; +$color-meta-code: lighten($color-meta, 10%); +$color-link: rgba(212, 128, 170, 1); +$color-text: #383838; +$color-accent-3: #8c8c8c; +$color-accent-2: #383838; +$color-accent-1: #2bbc8a; +$color-quote: #2bbc8a; \ No newline at end of file diff --git a/assets/scss/partial/archive.scss b/assets/scss/partial/archive.scss new file mode 100644 index 0000000..139c583 --- /dev/null +++ b/assets/scss/partial/archive.scss @@ -0,0 +1,32 @@ +#archive { + .post-list { + padding: 0; + + .post-item { + margin-bottom: 1rem; + margin-left: 0; + list-style-type: none; + + .meta { + display: block; + margin-right: 16px; + min-width: 100px; + color: $color-meta; + font-size: 14px; + } + } + } + @media (min-width: 480px) { + .post-list { + .post-item { + display: flex; + margin-bottom: 5px; + margin-left: 1rem; + + .meta { + text-align: left; + } + } + } + } +} \ No newline at end of file diff --git a/assets/scss/partial/article.scss b/assets/scss/partial/article.scss new file mode 100644 index 0000000..82a005f --- /dev/null +++ b/assets/scss/partial/article.scss @@ -0,0 +1,158 @@ +article { + header { + .posttitle { + margin-top: 0; + margin-bottom: 0; + text-transform: none; + font-size: 1.5em; + line-height: 1.25; + } + .meta { + margin-top: 0; + margin-bottom: 1rem; + } + .meta * { + color: $color-accent-3; + font-size: .85rem; + } + .author { + text-transform: uppercase; + letter-spacing: .01em; + font-weight: 700; + } + .postdate { + display: inline; + } + } + .content { + h2 { + &:before { + position: absolute; + top: -4px; + left: -1rem; + color: $color-accent-1; + content: "#"; + font-weight: bold; + font-size: 1.2rem; + } + } + } + .content img, + .content video { + display: block; + margin: auto; + max-width: 100%; + height: auto; + + /* http://webdesignerwall.com/tutorials/css-elastic-videos */ + .video-container { + position: relative; + overflow: hidden; + padding-top: 56.25% e; + // (9/16 * 100)% // 16:9 ratio + height: 0; + + iframe, + object, + embed { + position: absolute; + top: 0; + left: 0; + margin-top: 0; + width: 100%; + height: 100%; + } + } + blockquote { + margin: 1rem 10px; + padding: .5em 10px; + background: inherit; + color: $color-quote; + quotes: "\201C" "\201D" "\2018" "\2019"; + font-weight: bold; + + p { + margin: 0; + } + &:before { + margin-right: .25em; + color: $color-quote; + content: "\201C"; + vertical-align: -.4em; + font-size: 2em; + line-height: .1em; + } + footer { + margin: line-height 0; + color: $color-meta; + font-size: 11px; + + a { + background-image: linear-gradient(transparent, transparent 5px, $color-meta 5px, $color-meta); + color: $color-meta; + } + a:hover { + background-image: linear-gradient(transparent, transparent 4px, lighten($color-meta, 20%) 4px, lighten($color-meta, 20%)); + color: lighten($color-meta, 20%); + } + cite { + &:before { + padding: 0 .5em; + content: "—"; + } + } + } + } + .pullquote { + margin: 0; + width: 45%; + text-align: left; + + &.left { + margin-right: 1em; + margin-left: .5em; + } + &.right { + margin-right: .5em; + margin-left: 1em; + } + } + .caption { + position: relative; + display: block; + margin-top: .5em; + color: $color-meta; + text-align: center; + font-size: .9em; + } + } +} +.posttitle { + text-transform: none; + font-size: 1.5em; + line-height: 1.25; +} +.article-tag { + .tag-link { + &:before { + content: "#"; + @include underline(10px, $color-link); + } + } +} +.article-category { + .category-link { + @include underline(10px, $color-link); + } +} +@media (min-width: 480px) { + .article-read-time, + .article-tag, + .article-category { + display: inline; + + &:before { + content: "|"; + } + } +}; \ No newline at end of file diff --git a/assets/scss/partial/categories.scss b/assets/scss/partial/categories.scss new file mode 100644 index 0000000..dc75239 --- /dev/null +++ b/assets/scss/partial/categories.scss @@ -0,0 +1,18 @@ +#categories { + .category-list-title { + color: $color-meta; + } + .category-list { + .category-list-item { + .category-list-count { + color: $color-meta; + } + .category-list-count:before { + content: " ("; + } + .category-list-count:after { + content: ")"; + } + } + } +} \ No newline at end of file diff --git a/assets/scss/partial/comments.scss b/assets/scss/partial/comments.scss new file mode 100644 index 0000000..2ed3c9d --- /dev/null +++ b/assets/scss/partial/comments.scss @@ -0,0 +1,3 @@ +.blog-post-comments { + margin-top: 4rem; +} \ No newline at end of file diff --git a/assets/scss/partial/footer.scss b/assets/scss/partial/footer.scss new file mode 100644 index 0000000..da52981 --- /dev/null +++ b/assets/scss/partial/footer.scss @@ -0,0 +1,66 @@ +#footer { + position: absolute; + bottom: 0; + margin-bottom: 10px; + width: 100%; + color: $color-meta; + vertical-align: top; + text-align: center; + font-size: 11px; + + ul { + margin: 0; + padding: 0; + list-style: none; + } + li { + display: inline-block; + margin-right: 15px; + border-right: 1px solid; + border-color: $color-border; + vertical-align: middle; + + a { + margin-right: 15px; + } + } + li:last-child { + margin-right: 0; + border-right: 0; + + a { + margin-right: 0; + } + } + a { + color: $color-meta; + text-decoration: underline; + background-image: none; + } + a:hover { + color: lighten($color-meta, 20%); + } + .footer-left { + height: 20px; + vertical-align: middle; + line-height: 20px; + } +} +@media (min-width: 39rem) { + #footer { + display: flex; + flex-flow: row wrap; + justify-content: space-between; + align-items: center; + align-content: center; + margin-bottom: 20px; + + .footer-left { + align-self: flex-start; + margin-right: 20px; + } + .footer-right { + align-self: flex-end; + } + } +}; \ No newline at end of file diff --git a/assets/scss/partial/header.scss b/assets/scss/partial/header.scss new file mode 100644 index 0000000..cbb83ff --- /dev/null +++ b/assets/scss/partial/header.scss @@ -0,0 +1,123 @@ +#header { + margin: 0 auto 2rem; + width: 100%; + + h1, + .h1 { + margin-top: 0; + margin-bottom: 0; + color: $color-text; + letter-spacing: .01em; + font-weight: 700; + font-style: normal; + font-size: 1.5rem; + line-height: 2rem; + + @include antialias(); + } + a { + background: none; + color: inherit; + text-decoration: none; + } + #logo { + display: inline-block; + float: left; + margin-right: 20px; + width: $logo-width; + height: $logo-height; + border-radius: 5px; + background-size: $logo-width $logo-height; + background-repeat: no-repeat; + @if $logo-grayout { + filter: grayscale(100%); + -webkit-filter: grayscale(100%); + } + } + #nav { + color: $color-accent-1; + letter-spacing: .01em; + font-weight: 200; + font-style: normal; + font-size: .8rem; + + ul { + margin: 0; + padding: 0; + list-style-type: none; + line-height: 15px; + + a { + margin-right: 15px; + color: $color-accent-1; + } + a:hover { + @include underline(5px, $color-accent-1); + } + li { + display: inline-block; + margin-right: 15px; + border-right: 1px dotted; + border-color: $color-accent-1; + vertical-align: middle; + } + .icon { + display: none; + } + li:last-child { + margin-right: 0; + border-right: 0; + + a { + margin-right: 0; + } + } + } + } +} +@if $logo-grayout { + #header:hover { + #logo { + filter: none; + -webkit-filter: none; + } + } +} +@media screen and (max-width: 480px) { + #header #title { + display: table; + margin-right: 5rem; + min-height: $logo-height; + h1 { + display: table-cell; + vertical-align: middle; + } + } + #header #nav { + ul { + a:hover { + background: none; + } + li { + display: none; + border-right: 0; + } + li.icon { + position: absolute; + top: 77px; + right: 1rem; + display: inline-block; + } + } + ul.responsive { + li { + display: block; + } + } + li:not(:first-child) { + padding-top: 1rem; + padding-left: $logo-width + 20px; + font-size: 1rem; + } + } +}; \ No newline at end of file diff --git a/assets/scss/partial/index.scss b/assets/scss/partial/index.scss new file mode 100644 index 0000000..4ae7639 --- /dev/null +++ b/assets/scss/partial/index.scss @@ -0,0 +1,40 @@ +.post-list { + padding: 0; + + .post-item { + margin-bottom: 1rem; + margin-left: 0; + list-style-type: none; + + .meta { + display: block; + margin-right: 16px; + min-width: 100px; + color: $color-meta; + font-size: 14px; + } + } +} +@media (min-width: 480px) { + .post-list { + .post-item { + display: flex; + margin-bottom: 5px; + + .meta { + text-align: left; + } + } + } +} +.project-list { + padding: 0; + list-style: none; + + .project-item { + margin-bottom: 5px; + p { + display: inline; + } + } +} \ No newline at end of file diff --git a/assets/scss/partial/pagination.scss b/assets/scss/partial/pagination.scss new file mode 100644 index 0000000..eecc53c --- /dev/null +++ b/assets/scss/partial/pagination.scss @@ -0,0 +1,25 @@ +.pagination { + display: inline-block; + margin-top: 2rem; + width: 100%; + text-align: center; + + .page-number { + color: $color-text; + font-size: .8rem; + } + a { + padding: 4px 6px; + border-radius: 5px; + // background-color: $color-accent-1 + background-image: none; + color: $color-text; + text-decoration: none; + } + a:hover { + background-image: none; + } + a:hover:not(.active) { + color: $color-accent-2; + } +} \ No newline at end of file diff --git a/assets/scss/partial/post/actions_desktop.scss b/assets/scss/partial/post/actions_desktop.scss new file mode 100644 index 0000000..35aaf71 --- /dev/null +++ b/assets/scss/partial/post/actions_desktop.scss @@ -0,0 +1,256 @@ +#header-post { + position: fixed; + top: 2rem; + right: 0; + display: inline-block; + float: right; + z-index: 100; + + a { + background: none; + color: inherit; + text-decoration: none; + } + a.icon { + background: none; + + &:hover { + color: $color-link; + } + } + nav { + ul { + display: block; + + list-style-image: none; + + list-style-position: outside; + + list-style-type: none; + + padding-inline-start: 40px; + + li { + display: list-item; + + margin-right: 0px; + } + } + } + nav > ul { + margin-block-end: 1em; + + margin-block-start: 1em; + } + + ul { + display: inline-block; + margin: 0; + padding: 0; + list-style-type: none; + + li { + display: inline-block; + margin-right: 15px; + vertical-align: middle; + } + li:last-child { + margin-right: 0; + } + } + #menu-icon { + float: right; + margin-right: 2rem; + margin-left: 15px; + + &:hover { + color: $color-accent-1; + } + } + #menu-icon-tablet { + float: right; + margin-right: 2rem; + margin-left: 15px; + + &:hover { + color: $color-accent-1; + } + } + #top-icon-tablet { + position: fixed; + right: 2rem; + bottom: 2rem; + margin-right: 2rem; + margin-left: 15px; + + &:hover { + color: $color-accent-1; + } + } + .active { + color: $color-accent-1; + } + #menu { + visibility: hidden; + margin-right: 2rem; + } + #nav { + color: $color-accent-1; + letter-spacing: .01em; + font-weight: 200; + font-style: normal; + font-size: .8rem; + + ul { + line-height: 15px; + + a { + margin-right: 15px; + color: $color-accent-1; + } + a:hover { + @include underline(5px, $color-accent-1); + } + li { + border-right: 1px dotted $color-accent-1; + } + li:last-child { + margin-right: 0; + border-right: 0; + + a { + margin-right: 0; + } + } + } + } + #actions { + float: right; + margin-top: 2rem; + margin-right: 2rem; + width: 100%; + text-align: right; + + ul { + display: block; + } + .info { + display: block; + font-style: italic; + } + } + #share { + clear: both; + padding-top: 1rem; + padding-right: 2rem; + text-align: right; + + li { + display: block; + margin: 0; + } + } + #toc { + float: right; + clear: both; + overflow: auto; + margin-top: 1rem; + padding-right: 2rem; + max-width: 20em; + max-height: calc(95vh - 7rem); + text-align: right; + + a:hover { + color: $color-link; + } + // .toc-level-1 > .toc-link + // display: none + + nav > ul > li { + color: $color-text; + font-size: .8rem; + + &:before { + color: $color-accent-1; + content: "#"; + margin-right: 8px; + } + } + nav > ul > li > ul > li { + color: $color-meta; + font-size: .7rem; + + &:before { + color: $color-accent-1; + content: "·"; + font-weight: bold; + margin-right: 3px; + } + } + nav > ul > li > ul > li > ul > li { + color: darken($color-meta, 20%); + font-size: .4rem; + } + .toc-level-5 { + display: none; + } + .toc-level-6 { + display: none; + } + .toc-number { + display: none; + } +// smartphone + phapblet + } +} +@media screen and (max-width: 500px) { + #header-post { + display: none; + } +} + +@media screen and (max-width: 900px) { + #header-post { + #menu-icon { + display: none; + } + #actions { + display: none; + } + } +} +@media screen and (max-width: 1199px) { + #header-post { + #toc { + display: none; + } + } +} +@media screen and (min-width: 900px) { + #header-post { + #menu-icon-tablet { + display: none !important; + } + #top-icon-tablet { + display: none !important; + } + } +} +@media screen and (min-width: 1199px) { + #header-post { + #actions { + width: auto; + + ul { + display: inline-block; + float: right; + } + .info { + display: inline; + float: left; + margin-right: 2rem; + font-style: italic; + } + } + } +}; \ No newline at end of file diff --git a/assets/scss/partial/post/actions_mobile.scss b/assets/scss/partial/post/actions_mobile.scss new file mode 100644 index 0000000..b4acd51 --- /dev/null +++ b/assets/scss/partial/post/actions_mobile.scss @@ -0,0 +1,154 @@ +#footer-post { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 5000000; + width: 100%; + border-top: 1px solid $color-border; + background: $color-footer-mobile-1; + transition: opacity .2s; + + a { + background: none; + color: inherit; + text-decoration: none; + } + a.icon { + background: none; + + &:hover { + color: $color-link; + } + } + #nav-footer { + padding-right: 1rem; + padding-left: 1rem; + background: $color-footer-mobile-2; + text-align: center; + + a { + color: $color-accent-1; + font-size: 1em; + } + a:hover { + @include underline(5px, $color-accent-1); + } + ul { + display: table; + margin: 0; + padding: 0; + width: 100%; + list-style-type: none; + + li { + display: inline-table; + padding: 10px; + width: 20%; + vertical-align: middle; + } + } + } + #actions-footer { + overflow: auto; + margin-top: 1rem; + margin-bottom: 1rem; + padding-right: 1rem; + padding-left: 1rem; + width: 100%; + text-align: center; + white-space: nowrap; + + a { + display: inline-block; + padding-left: 1rem; + color: $color-accent-1; + } + } + #share-footer { + padding-right: 1rem; + padding-left: 1rem; + background: $color-footer-mobile-2; + text-align: center; + + ul { + display: table; + margin: 0; + padding: 0; + width: 100%; + list-style-type: none; + + li { + display: inline-table; + padding: 10px; + width: 20%; + vertical-align: middle; + } + } + } + #toc-footer { + clear: both; + padding-top: 1rem; + padding-bottom: 1rem; + background: $color-footer-mobile-2; + text-align: left; + + #TableOfContents { + ul { + margin: 0; + padding-left: 20px; + list-style-type: none; + + li { + line-height: 30px; + } + } + } + a:hover { + color: $color-link; + } + // .toc-level-1 > .toc-link + // display: none + + #TableOfContents > ul > li { + color: $color-text; + font-size: .8rem; + + &:before { + color: $color-accent-1; + content: "#"; + margin-right: 8px; + } + } + #TableOfContents > ul > li > ul > li { + color: $color-meta; + font-size: .7rem; + line-height: 15px; + + &:before { + color: $color-accent-1; + content: "·"; + + font-weight: bold; + + margin-right: 3px; + } + } + #TableOfContents > ul > li > ul > li > ul > li { + display: none; + } + // .toc-level-5 + // display: none + + // .toc-level-6 + // display: none + + // .toc-number + // display: none + } +} +@media screen and (min-width: 500px) { + #footer-post-container { + display: none; + } +}; \ No newline at end of file diff --git a/assets/scss/partial/search.scss b/assets/scss/partial/search.scss new file mode 100644 index 0000000..2965c63 --- /dev/null +++ b/assets/scss/partial/search.scss @@ -0,0 +1,49 @@ +.search-input { + padding: 4px 7px; + width: 100%; + outline: none; + border: solid 1px $color-accent-3; + border-radius: 5px; + background-color: $color-background; + color: $color-text; + font-size: 1.2rem; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + + &:focus { + border: solid 1px $color-accent-1; + } +} +#search-result { + ul.search-result-list { + padding: 0; + list-style-type: none; + } + li { + margin: 2em auto; + } + a.search-result-title { + background-image: none; + color: $color-text; + text-transform: capitalize; + font-weight: bold; + line-height: 1.2; + } + p.search-result { + overflow: hidden; + margin: .4em auto; + max-height: 13em; + text-align: justify; + font-size: .8em; + } + em.search-keyword { + border-bottom: 1px dashed $color-link; + color: $color-link; + font-weight: bold; + } +} +.search-no-result { + display: none; + padding-bottom: .5em; + color: $color-text; +} \ No newline at end of file diff --git a/assets/scss/partial/tags.scss b/assets/scss/partial/tags.scss new file mode 100644 index 0000000..1af38ef --- /dev/null +++ b/assets/scss/partial/tags.scss @@ -0,0 +1,13 @@ +#tag-cloud { + .tag-cloud-title { + color: $color-meta; + } + .tag-cloud-tags { + clear: both; + text-align: center; + a { + display: inline-block; + margin: 10px; + } + } +} \ No newline at end of file diff --git a/assets/scss/partial/tooltip.scss b/assets/scss/partial/tooltip.scss new file mode 100644 index 0000000..9cb6cd6 --- /dev/null +++ b/assets/scss/partial/tooltip.scss @@ -0,0 +1,86 @@ +// ref: https://github.com/primer/primer/blob/master/modules/primer-tooltips/lib/tooltips.scss +.tooltipped { + position: relative; +} +// This is the tooltip bubble +.tooltipped::after { + position: absolute; + z-index: 1000000; + display: none; + padding: .2em .5em; + -webkit-font-smoothing: subpixel-antialiased; + color: $color-background; + font-display: swap; + font-weight: 400; + font-size: $font-size * 0.8; + font-family: $font-family-body; + line-height: $line-height; + text-rendering: geometricPrecision; + text-align: center; + word-wrap: break-word; + white-space: pre; + content: attr(aria-label); + background: $color-text; + border-radius: 3px; + opacity: 0; +} +// This is the tooltip arrow +.tooltipped::before { + position: absolute; + z-index: 1000001; + display: none; + width: 0; + height: 0; + color: $color-text; + pointer-events: none; + content: ''; + border: 6px solid transparent; + opacity: 0; +} +// delay animation for tooltip +@keyframes tooltip-appear { + from { + opacity: 0; + } + to { + opacity: 1; + } +}; + +// This will indicate when we'll activate the tooltip +.tooltipped:hover, +.tooltipped:active, +.tooltipped:focus { + &::before, + &::after { + display: inline-block; + text-decoration: none; + animation-name: tooltip-appear; + animation-duration: 0.1s; + animation-fill-mode: forwards; + animation-timing-function: ease-in; + } +// Tooltipped south +} +.tooltipped-s, +.tooltipped-sw { + &::after { + top: 100%; + right: 50%; + margin-top: 6px; + } + &::before { + top: auto; + right: 50%; + bottom: -7px; + margin-right: -6px; + border-bottom-color: $color-text; + } +} +.tooltipped-sw::after { + margin-right: -16px; +} +// Move the tooltip body to the center of the object. +.tooltipped-s::after { + transform: translateX(50%); +} \ No newline at end of file diff --git a/assets/scss/rtl.scss b/assets/scss/rtl.scss new file mode 100644 index 0000000..44aebba --- /dev/null +++ b/assets/scss/rtl.scss @@ -0,0 +1,105 @@ +@font-face { + font-family: Vazir; + src: url('../lib/vazir-font/Vazir.eot'); + src: url("../lib/vazir-font/Vazir.eot?#iefix") format('embedded-opentype'), url("../lib/vazir-font/Vazir.woff2") format('woff2'), url("../lib/vazir-font/Vazir.woff") format('woff'), url("../lib/vazir-font/Vazir.ttf") format('truetype'); + font-weight: normal; +} + +@font-face { + font-family: Vazir; + src: url('../lib/vazir-font/Vazir-Bold.eot'); + src: url("../lib/vazir-font/Vazir-Bold.eot?#iefix") format('embedded-opentype'), url("../lib/vazir-font/Vazir-Bold.woff2") format('woff2'), url("../lib/vazir-font/Vazir-Bold.woff") format('woff'), url("../lib/vazir-font/Vazir-Bold.ttf") format('truetype'); + font-weight: bold; +} + +@font-face { + font-family: Vazir; + src: url('../lib/vazir-font/Vazir-Light.eot'); + src: url("../lib/vazir-font/Vazir-Light.eot?#iefix") format('embedded-opentype'), url("../lib/vazir-font/Vazir-Light.woff2") format('woff2'), url("../lib/vazir-font/Vazir-Light.woff") format('woff'), url("../lib/vazir-font/Vazir-Light.ttf") format('truetype'); + font-weight: 300; +} + +.rtl { + font-family: Vazir, sans-serif; + direction: rtl; + + #nav { + li { + margin-right: 0px !important; + padding-left: 15px; + border-right: 0px !important; + border-left: 1px dotted; + } + li:last-child { + margin-right: 15px !important; + border-left: 0 !important; + } + } + #header { + #logo { + float: right; + margin-right: 0; + margin-left: 20px; + } + } + #footer { + li { + margin-right: 0px; + padding-left: 15px; + border-right: 0px; + border-left: 1px dotted; + } + li:last-child { + margin-right: 15px !important; + border-left: 0 !important; + } + #logo { + float: right; + } + } + article { + .content { + h2:before { + right: -1rem; + } + } + } + .post-list { + .post-item { + .meta { + margin-left: 16px; + margin-right: inherit; + } + } + } +} +@media screen and (min-width: 480px) { + .rtl { + .post-list { + .post-item { + .meta { + text-align: left; + } + } + } + } +} +@media screen and (max-width: 480px) { + .rtl { + #header { + #title { + margin-left: 5rem; + margin-right: 0; + } + #nav { + ul { + li { + left: 1rem; + right: auto; + border: 0; + } + } + } + } + } +}; \ No newline at end of file diff --git a/assets/scss/style.scss b/assets/scss/style.scss new file mode 100644 index 0000000..f8215d4 --- /dev/null +++ b/assets/scss/style.scss @@ -0,0 +1,231 @@ +@import "variables"; +@import "colors/{{ site.Params.colortheme | default "white" }}"; +@import "util"; +@import "mixins"; +@import "extend"; +@import "fonts"; + +// global-reset() + +*, +*:before, +*:after { + box-sizing: border-box; +} +html { + margin: 0; + padding: 0; + height: 100%; + border-top: 2px solid $color-text; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + margin: 0; + height: 100%; + background-color: $color-background; + color: $color-text; + font-display: swap; + font-weight: 400; + font-size: $font-size; + font-family: $font-family-body; + line-height: $line-height; + text-rendering: geometricPrecision; + flex: 1; + + @include antialias(); + + @extend $base-style !optional; +} +.content { + position: relative; + display: flex; + flex-direction: column; + min-height: 100%; + overflow-wrap: break-word; + + p { + @include hyphens(auto); + } + code { + @include hyphens(manual); + } + a { + color: $color-text; + text-decoration: none; + + @include underline(5px, $color-text); + + &:hover { + background-image: linear-gradient(transparent, transparent 4px, $color-link 4px, $color-link); + } + } + a.icon { + background: none; + + &:hover { + color: $color-link; + } + } + h1 a, + .h1 a, + h2 a, + h3 a, + h4 a, + h5 a, + h6 a { + background: none; + color: inherit; + text-decoration: none; + } + h1 a:hover, + .h1 a:hover, + h2 a:hover, + h3 a:hover, + h4 a:hover, + h5 a:hover, + h6 a:hover { + @include underline(6px, $color-link); + } + h6 { + a { + background: none; + color: inherit; + text-decoration: none; + } + } + h6 { + a:hover { + @include underline(6px, $color-link); + } + } +} +@media (min-width: 540px) { + .image-wrap { + flex-direction: row; + margin-bottom: 2rem; + + .image-block { + flex: 1 0 35%; + margin-right: 2rem; + } + p { + flex: 1 0 65%; + } + } +} +.max-width { + max-width: $page-width; +} +@media (max-width: 480px) { // smaller margins at smaller screen widths + .px3 { + padding-right: 1rem; + padding-left: 1rem; + } + .my4 { + margin-top: 2rem; + margin-bottom: 2rem; + } +} + +@media (min-width: 480px) { + p { + text-align: justify; + } +} + +@import "partial/header"; +@import "partial/post/actions_desktop"; +@import "partial/post/actions_mobile"; +@import "partial/index"; +@import "partial/article"; +@import "partial/archive"; +@import "partial/comments"; +@import "partial/footer"; +@import "partial/pagination"; +@import "partial/search"; +@import "partial/tags"; +@import "partial/tooltip"; +@import "partial/categories"; + +pre { + overflow-x: auto; + padding: 15px 15px 10px 15px; + border: 1px dotted $color-border; + border-radius: 2px; + -webkit-border-radius: 2px; + font-size: 13px; + font-family: $font-family-mono; + line-height: 22px; + position: relative; + + .code-copy-btn { + position: absolute; + top: 0; + right: 0; + border: 0; + border-radius: 0 2px; + padding: 0; + font-family: "JetBrains Mono", monospace; + font-weight: 800; + font-size: 0.9em; + line-height: 1.7; + color: #fff; + background-color: #8c8c8c; + min-width: 60px; + text-align: center; + cursor: pointer; + letter-spacing: 0em; + } + + .code-copy-btn:hover { + background-color: #666; + color: #2bbc8a; + } + + code { + display: block; + padding: 0; + border: none; + } +} + +code { + font-family: $font-family-mono; + padding: 0 5px; + border: 1px dotted $color-border; + border-radius: 2px; + -webkit-border-radius: 2px; +} + +.highlight { + + & > div { + border-radius: 2px; + -webkit-border-radius: 2px; + } + + pre { + border: none; + background: none; + } + + table { + + pre { + margin-top: 0; + } + + td:first-child { + pre { + padding-right: 0; + } + } + + td:last-child { + pre { + padding-left: 0; + } + } + } +} \ No newline at end of file diff --git a/hugo.toml b/hugo.toml index 24d76e5..2f1519c 100644 --- a/hugo.toml +++ b/hugo.toml @@ -1,7 +1,6 @@ baseURL = "https://danielmrcl.dev" languageCode = "en-us" title = "Daniel Jr | Backend Developer" -theme = "cactus" copyright = "Me" [[menu.main]] diff --git a/images/screenshot-classic.png b/images/screenshot-classic.png new file mode 100644 index 0000000..7c23d9d Binary files /dev/null and b/images/screenshot-classic.png differ diff --git a/images/screenshot-dark.png b/images/screenshot-dark.png new file mode 100644 index 0000000..91e3688 Binary files /dev/null and b/images/screenshot-dark.png differ diff --git a/images/screenshot-light.png b/images/screenshot-light.png new file mode 100644 index 0000000..3d5503d Binary files /dev/null and b/images/screenshot-light.png differ diff --git a/images/screenshot-tagsOverview.png b/images/screenshot-tagsOverview.png new file mode 100644 index 0000000..fd246e5 Binary files /dev/null and b/images/screenshot-tagsOverview.png differ diff --git a/images/screenshot.png b/images/screenshot.png new file mode 100644 index 0000000..14dbd06 Binary files /dev/null and b/images/screenshot.png differ diff --git a/images/tn.png b/images/tn.png new file mode 100644 index 0000000..02d9490 Binary files /dev/null and b/images/tn.png differ diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html new file mode 100644 index 0000000..f7a3080 --- /dev/null +++ b/layouts/_default/baseof.html @@ -0,0 +1,20 @@ + + +{{ partial "head.html" . }} + +
+ + {{ partial "header.html" . }} + + {{ block "main" . }} + {{ end }} + + {{ partial "footer.html" . }} + +
+ + + + + + diff --git a/layouts/_default/list.html b/layouts/_default/list.html new file mode 100644 index 0000000..e8c3e31 --- /dev/null +++ b/layouts/_default/list.html @@ -0,0 +1,30 @@ +{{ define "main"}} +
+
    + + {{ $pages := .Paginator.Pages }} + {{ if .Site.Params.showAllPostsArchive }} + {{ $pages = .Pages }} + {{ end }} + + {{ range (sort $pages "Date" "desc") }} + {{ $pageYear := (.Date.Format "2006") }} + {{ if (ne $pageYear ($.Scratch.Get "year")) }} + {{ $.Scratch.Set "year" $pageYear }} +

    {{ $pageYear }}

    + {{ end }} +
  • +
    + +
    + + {{ if .Title }} {{ .Title }} {{ else }} Untitled {{ end }} + +
  • + {{ end }} +
+ {{ if eq .Site.Params.showAllPostsArchive false }} + {{ partial "pagination.html" . }} + {{ end }} +
+{{ end }} \ No newline at end of file diff --git a/layouts/_default/single.html b/layouts/_default/single.html new file mode 100644 index 0000000..6107133 --- /dev/null +++ b/layouts/_default/single.html @@ -0,0 +1,12 @@ +{{ define "main" }} +
+ +
+ {{ if (eq .Type "search") }} + + {{ else }} + {{ .Content }} + {{ end }} +
+
+{{ end }} \ No newline at end of file diff --git a/layouts/_default/terms.html b/layouts/_default/terms.html new file mode 100644 index 0000000..704ab99 --- /dev/null +++ b/layouts/_default/terms.html @@ -0,0 +1,41 @@ +{{ define "main" }} +
+
+ {{ if (eq .Type "tags")}} +
+ {{ if (eq (len .Data.Terms) 0) }} +
+ No tags +
+ {{ end }} +
+ {{ $AllRegularPagesCount := len .Site.RegularPages }} + {{ range $elem := .Data.Terms.Alphabetical }} + + {{- .Page.Title -}} + + {{ end }} +
+
+ {{ else if (eq .Type "categories")}} +
+ {{ if (eq (len .Data.Terms) 0) }} +
+ No categories +
+ {{ end }} +
+
    + {{ range .Data.Terms.Alphabetical }} +
  • + {{ .Page.Title }} + {{ .Count }} +
  • + {{ end }} +
+
+
+ {{ end }} +
+
+{{ end }} \ No newline at end of file diff --git a/layouts/index.html b/layouts/index.html new file mode 100644 index 0000000..8a86a50 --- /dev/null +++ b/layouts/index.html @@ -0,0 +1,65 @@ +{{ define "main" }} +
+ {{ if isset .Site.Params "description" }} + {{ .Site.Params.description | $.Page.RenderString }} + {{ end }} + {{ if isset .Site.Params "social" }} +

Find me on + {{ $length := (len .Site.Params.social) }} + {{ range $index, $elem := .Site.Params.social}} + {{ if eq $elem.name "email" }} + + + + {{ else if eq $elem.name "rss" }} + + + + {{ else if eq $elem.name "scholar" }} + + + + {{ else }} + + + + {{ end }} + {{ if (lt (add $index 2) $length) }} + {{- print " , " -}} + {{ else if (lt (add $index 1) $length) }} + {{- print " and " -}} + {{ else }} + {{- print "." -}} + {{ end }} + {{ end }} +

+ {{ end }} + {{ partial "optional-about.html" . }} +
+ + {{ $showProjectsList := false }} + {{ if (isset .Site.Params "showprojectslist") }} + {{ $showProjectsList = .Site.Params.showProjectsList }} + {{ else if .Site.Data.projects }} + {{ $showProjectsList = true }} + {{ end }} + {{ if $showProjectsList }} + {{ $projectsUrl := "#" }} + {{ if isset .Site.Params "projectsurl" }} + {{ $projectsUrl = .Site.Params.projectsUrl }} + {{ end }} +
+ Career +
    + {{ range .Site.Data.projects.list }} +
  • + {{ range .tags }} + {{ .name }} + {{ end }} + {{ .name }}: {{ .desc | markdownify }} +
  • + {{ end }} +
+
+ {{ end }} +{{ end }} diff --git a/layouts/partials/comments.html b/layouts/partials/comments.html new file mode 100644 index 0000000..b17721e --- /dev/null +++ b/layouts/partials/comments.html @@ -0,0 +1,22 @@ +{{ if (not (isset .Site.Params "comments")) }} + {{ .Scratch.Set "enable_comments" false }} +{{ else if (isset .Params "comments") }} + {{ .Scratch.Set "enable_comments" .Params.comments }} +{{ else if (isset .Site.Params.Comments "enabled") }} + {{ .Scratch.Set "enable_comments" .Site.Params.Comments.Enabled }} +{{ else }} + {{ .Scratch.Set "enable_comments" true }} +{{ end }} + +{{ $enable_comments := .Scratch.Get "enable_comments" }} +{{ if $enable_comments }} +
+ {{ if (or (not (isset .Site.Params.Comments "engine")) (eq .Site.Params.Comments.Engine "disqus")) }} + {{ partial "comments/disqus.html" . }} + {{ else if eq .Site.Params.Comments.Engine "utterances" }} + {{ partial "comments/utterances.html" . }} + {{ else if eq .Site.Params.Comments.Engine "cactus_comments" }} + {{ partial "comments/cactus_comments.html" . }} + {{ end }} +
+{{ end }} diff --git a/layouts/partials/comments/cactus_comments.html b/layouts/partials/comments/cactus_comments.html new file mode 100644 index 0000000..7873bbb --- /dev/null +++ b/layouts/partials/comments/cactus_comments.html @@ -0,0 +1,11 @@ +
+ +
diff --git a/layouts/partials/comments/disqus.html b/layouts/partials/comments/disqus.html new file mode 100644 index 0000000..8acd459 --- /dev/null +++ b/layouts/partials/comments/disqus.html @@ -0,0 +1,17 @@ +
+ + + comments powered by Disqus +
diff --git a/layouts/partials/comments/utterances.html b/layouts/partials/comments/utterances.html new file mode 100644 index 0000000..205617a --- /dev/null +++ b/layouts/partials/comments/utterances.html @@ -0,0 +1,10 @@ +
+ +
diff --git a/layouts/partials/favicon.html b/layouts/partials/favicon.html new file mode 100644 index 0000000..eb3745f --- /dev/null +++ b/layouts/partials/favicon.html @@ -0,0 +1,8 @@ +{{ if (isset .Site.Params "favicon") }} + {{ .Scratch.Set "favicon_path" .Site.Params.favicon }} +{{ else }} + {{ .Scratch.Set "favicon_path" "images/favicon.ico" }} +{{ end }} + +{{ $favicon_path := .Scratch.Get "favicon_path" }} + diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html new file mode 100644 index 0000000..31eb4aa --- /dev/null +++ b/layouts/partials/footer.html @@ -0,0 +1,14 @@ +
+ + +
diff --git a/layouts/partials/head.html b/layouts/partials/head.html new file mode 100644 index 0000000..b46ee84 --- /dev/null +++ b/layouts/partials/head.html @@ -0,0 +1,45 @@ + + + + + + {{ if eq .Site.Params.Comments.enabled true }} + + + {{ end }} + + + {{ if .IsPage }} {{ .Title }} | {{ end }}{{ .Site.Title }} + + {{ with .Site.Params.description }}{{ end }} + + + + {{ template "_internal/opengraph.html" . }} + {{ template "_internal/twitter_cards.html" . }} + {{ .Scratch.Set "colortheme" "white"}} + {{ if .Site.Params.Colortheme }} + {{ .Scratch.Set "colortheme" .Site.Params.Colortheme }} + {{ end }} + {{ $colortheme := .Scratch.Get "colortheme" }} + + {{- $options := (dict "targetPath" "css/styles.css" "outputStyle" "compressed" "enableSourceMap" "true") -}} + {{- $styles := resources.Get "scss/style.scss" | resources.ExecuteAsTemplate "scss/style.scss" . | resources.ToCSS $options | resources.Fingerprint "sha512" }} + + + + {{ range .Site.Params.css }} {{ end }} + {{ ` + + ` | safeHTML }} + + {{ partial "favicon.html" . }} + {{ if .Site.Params.rss }} + {{ with .OutputFormats.Get "RSS" }} + {{ printf `` .Permalink .Rel .MediaType.Type $.Site.Title | safeHTML }} + {{ end }} + {{ end }} + diff --git a/layouts/partials/header.html b/layouts/partials/header.html new file mode 100644 index 0000000..3ecdb0b --- /dev/null +++ b/layouts/partials/header.html @@ -0,0 +1,25 @@ + + diff --git a/layouts/partials/optional-about.html b/layouts/partials/optional-about.html new file mode 100644 index 0000000..e69de29 diff --git a/layouts/partials/page_nav.html b/layouts/partials/page_nav.html new file mode 100644 index 0000000..9ca1c2a --- /dev/null +++ b/layouts/partials/page_nav.html @@ -0,0 +1,57 @@ +
+ + + + + +
    + {{ range .Site.Menus.main }} +
  • {{ .Name }}
  • + {{ end }} +
+
+
+ +
    + {{ if .Prev }} +
  • + + + +
  • + {{ end }} + {{ if .Next }} +
  • + + + +
  • + {{ end }} +
  • + + + +
  • +
  • + + + +
  • +
+ + + + +
+
+ + {{ if not .Site.Params.tocInline }} +
+ {{ .TableOfContents }} +
+ {{ end }} +
+
diff --git a/layouts/partials/page_nav_mobile.html b/layouts/partials/page_nav_mobile.html new file mode 100644 index 0000000..bf9decb --- /dev/null +++ b/layouts/partials/page_nav_mobile.html @@ -0,0 +1,38 @@ +
+
+ + + + {{ if not .Site.Params.tocInline }} + + {{ end }} + + + + + +
+
diff --git a/layouts/partials/pagination.html b/layouts/partials/pagination.html new file mode 100644 index 0000000..fc2058f --- /dev/null +++ b/layouts/partials/pagination.html @@ -0,0 +1,13 @@ +{{ $pag := $.Paginator }} +{{ if gt $pag.TotalPages 1 }} + +{{ end }} diff --git a/layouts/partials/share.html b/layouts/partials/share.html new file mode 100644 index 0000000..4aeadd7 --- /dev/null +++ b/layouts/partials/share.html @@ -0,0 +1,54 @@ + diff --git a/layouts/partials/title.html b/layouts/partials/title.html new file mode 100644 index 0000000..e69de29 diff --git a/layouts/posts/single.html b/layouts/posts/single.html new file mode 100644 index 0000000..5df437a --- /dev/null +++ b/layouts/posts/single.html @@ -0,0 +1,117 @@ + + +{{ partial "head.html" . }} + +
+ + {{ partial "page_nav.html" . }} + +
+
+

+ {{ .Title }} +

+
+ {{ if (or (isset .Site "author") (isset .Site "title"))}} + + {{ end }} + + {{ $showReadTime := .Site.Params.showReadTime | default false }} + {{if $showReadTime}} +
+ + {{ $readTime := math.Round (div (countwords .Content) 220.0) }} + {{ $readTime }} minute read +
+ {{ end }} + {{ if gt .Params.categories 0 }} + + {{ end }} + {{ if gt .Params.tags 0 }} + + {{ end }} +
+
+ + {{ with .Resources.ByType "image" }} +
+ {{ range $index, $value := . }} + + + + {{ end }} +
+ {{ end }} + {{ if .Site.Params.tocInline }} +
+ {{ .TableOfContents }} +
+ {{ end }} +
+ {{ .Content}} +
+
+ + {{ partial "comments.html" . }} + + {{ partial "page_nav_mobile.html" . }} + + {{ partial "footer.html" . }} + +
+ + + + + +{{ if not (isset site.Params "disablecopy") }} + +{{ end }} +{{ $mathjax := false }} +{{ if isset .Params "mathjax" }} + {{ $mathjax = .Params.mathjax }} +{{ else if isset .Site.Params "mathjax" }} + {{ $mathjax = .Site.Params.mathjax }} +{{ end }} +{{ if $mathjax }} + + +{{ end }} + diff --git a/static/favicon.ico b/static/favicon.ico deleted file mode 100644 index 1e3783f..0000000 Binary files a/static/favicon.ico and /dev/null differ diff --git a/static/image.jpg b/static/image.jpg deleted file mode 100644 index edb912f..0000000 Binary files a/static/image.jpg and /dev/null differ diff --git a/static/images/favicon.ico b/static/images/favicon.ico new file mode 100644 index 0000000..84a85d3 Binary files /dev/null and b/static/images/favicon.ico differ diff --git a/static/images/logo.png b/static/images/logo.png new file mode 100644 index 0000000..43a6ef0 Binary files /dev/null and b/static/images/logo.png differ diff --git a/static/js/code-copy.js b/static/js/code-copy.js new file mode 100644 index 0000000..5a07bf8 --- /dev/null +++ b/static/js/code-copy.js @@ -0,0 +1,36 @@ +(() => { + + function createCopyButton(codeNode) { + const copyBtn = document.createElement('button') + copyBtn.className = 'code-copy-btn' + copyBtn.type = 'button' + copyBtn.innerText = 'copy' + + let resetTimer + copyBtn.addEventListener('click', () => { + navigator.clipboard.writeText(codeNode.innerText).then(() => { + copyBtn.innerText = 'copied!' + }).then(() => { + clearTimeout(resetTimer) + resetTimer = setTimeout(() => { + copyBtn.innerText = 'copy' + }, 1000) + }) + }) + + return copyBtn + } + + document.querySelectorAll('pre > code') + .forEach((codeNode) => { + const copyBtn = createCopyButton(codeNode); + const preNode = codeNode.parentNode + codeNode.parentNode.insertBefore(copyBtn, codeNode) + }) + + document.querySelectorAll('.highlight table > tbody > tr > td:first-child .code-copy-btn') + .forEach((btn) => { + btn.remove() + }) + +})() \ No newline at end of file diff --git a/static/js/feather.min.js b/static/js/feather.min.js new file mode 100644 index 0000000..156cd61 --- /dev/null +++ b/static/js/feather.min.js @@ -0,0 +1,13 @@ +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.feather=n():e.feather=n()}("undefined"!=typeof self?self:this,function(){return function(e){var n={};function i(t){if(n[t])return n[t].exports;var l=n[t]={i:t,l:!1,exports:{}};return e[t].call(l.exports,l,l.exports,i),l.l=!0,l.exports}return i.m=e,i.c=n,i.d=function(e,n,t){i.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},i.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},i.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(n,"a",n),n},i.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},i.p="",i(i.s=80)}([function(e,n,i){(function(n){var i="object",t=function(e){return e&&e.Math==Math&&e};e.exports=t(typeof globalThis==i&&globalThis)||t(typeof window==i&&window)||t(typeof self==i&&self)||t(typeof n==i&&n)||Function("return this")()}).call(this,i(75))},function(e,n){var i={}.hasOwnProperty;e.exports=function(e,n){return i.call(e,n)}},function(e,n,i){var t=i(0),l=i(11),r=i(33),o=i(62),a=t.Symbol,c=l("wks");e.exports=function(e){return c[e]||(c[e]=o&&a[e]||(o?a:r)("Symbol."+e))}},function(e,n,i){var t=i(6);e.exports=function(e){if(!t(e))throw TypeError(String(e)+" is not an object");return e}},function(e,n){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,n,i){var t=i(8),l=i(7),r=i(10);e.exports=t?function(e,n,i){return l.f(e,n,r(1,i))}:function(e,n,i){return e[n]=i,e}},function(e,n){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,n,i){var t=i(8),l=i(35),r=i(3),o=i(18),a=Object.defineProperty;n.f=t?a:function(e,n,i){if(r(e),n=o(n,!0),r(i),l)try{return a(e,n,i)}catch(e){}if("get"in i||"set"in i)throw TypeError("Accessors not supported");return"value"in i&&(e[n]=i.value),e}},function(e,n,i){var t=i(4);e.exports=!t(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,n){e.exports={}},function(e,n){e.exports=function(e,n){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:n}}},function(e,n,i){var t=i(0),l=i(19),r=i(17),o=t["__core-js_shared__"]||l("__core-js_shared__",{});(e.exports=function(e,n){return o[e]||(o[e]=void 0!==n?n:{})})("versions",[]).push({version:"3.1.3",mode:r?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=o(i(43)),l=o(i(41)),r=o(i(40));function o(e){return e&&e.__esModule?e:{default:e}}n.default=Object.keys(l.default).map(function(e){return new t.default(e,l.default[e],r.default[e])}).reduce(function(e,n){return e[n.name]=n,e},{})},function(e,n){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,n,i){var t=i(72),l=i(20);e.exports=function(e){return t(l(e))}},function(e,n){e.exports={}},function(e,n,i){var t=i(11),l=i(33),r=t("keys");e.exports=function(e){return r[e]||(r[e]=l(e))}},function(e,n){e.exports=!1},function(e,n,i){var t=i(6);e.exports=function(e,n){if(!t(e))return e;var i,l;if(n&&"function"==typeof(i=e.toString)&&!t(l=i.call(e)))return l;if("function"==typeof(i=e.valueOf)&&!t(l=i.call(e)))return l;if(!n&&"function"==typeof(i=e.toString)&&!t(l=i.call(e)))return l;throw TypeError("Can't convert object to primitive value")}},function(e,n,i){var t=i(0),l=i(5);e.exports=function(e,n){try{l(t,e,n)}catch(i){t[e]=n}return n}},function(e,n){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,n){var i=Math.ceil,t=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?t:i)(e)}},function(e,n,i){var t; +/*! + Copyright (c) 2016 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ +/*! + Copyright (c) 2016 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ +!function(){"use strict";var i=function(){function e(){}function n(e,n){for(var i=n.length,t=0;t0?l(t(e),9007199254740991):0}},function(e,n,i){var t=i(1),l=i(14),r=i(68),o=i(15),a=r(!1);e.exports=function(e,n){var i,r=l(e),c=0,p=[];for(i in r)!t(o,i)&&t(r,i)&&p.push(i);for(;n.length>c;)t(r,i=n[c++])&&(~a(p,i)||p.push(i));return p}},function(e,n,i){var t=i(0),l=i(11),r=i(5),o=i(1),a=i(19),c=i(36),p=i(37),y=p.get,h=p.enforce,x=String(c).split("toString");l("inspectSource",function(e){return c.call(e)}),(e.exports=function(e,n,i,l){var c=!!l&&!!l.unsafe,p=!!l&&!!l.enumerable,y=!!l&&!!l.noTargetGet;"function"==typeof i&&("string"!=typeof n||o(i,"name")||r(i,"name",n),h(i).source=x.join("string"==typeof n?n:"")),e!==t?(c?!y&&e[n]&&(p=!0):delete e[n],p?e[n]=i:r(e,n,i)):p?e[n]=i:a(n,i)})(Function.prototype,"toString",function(){return"function"==typeof this&&y(this).source||c.call(this)})},function(e,n){var i={}.toString;e.exports=function(e){return i.call(e).slice(8,-1)}},function(e,n,i){var t=i(8),l=i(73),r=i(10),o=i(14),a=i(18),c=i(1),p=i(35),y=Object.getOwnPropertyDescriptor;n.f=t?y:function(e,n){if(e=o(e),n=a(n,!0),p)try{return y(e,n)}catch(e){}if(c(e,n))return r(!l.f.call(e,n),e[n])}},function(e,n,i){var t=i(0),l=i(31).f,r=i(5),o=i(29),a=i(19),c=i(71),p=i(65);e.exports=function(e,n){var i,y,h,x,s,u=e.target,d=e.global,f=e.stat;if(i=d?t:f?t[u]||a(u,{}):(t[u]||{}).prototype)for(y in n){if(x=n[y],h=e.noTargetGet?(s=l(i,y))&&s.value:i[y],!p(d?y:u+(f?".":"#")+y,e.forced)&&void 0!==h){if(typeof x==typeof h)continue;c(x,h)}(e.sham||h&&h.sham)&&r(x,"sham",!0),o(i,y,x,e)}}},function(e,n){var i=0,t=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++i+t).toString(36))}},function(e,n,i){var t=i(0),l=i(6),r=t.document,o=l(r)&&l(r.createElement);e.exports=function(e){return o?r.createElement(e):{}}},function(e,n,i){var t=i(8),l=i(4),r=i(34);e.exports=!t&&!l(function(){return 7!=Object.defineProperty(r("div"),"a",{get:function(){return 7}}).a})},function(e,n,i){var t=i(11);e.exports=t("native-function-to-string",Function.toString)},function(e,n,i){var t,l,r,o=i(76),a=i(0),c=i(6),p=i(5),y=i(1),h=i(16),x=i(15),s=a.WeakMap;if(o){var u=new s,d=u.get,f=u.has,g=u.set;t=function(e,n){return g.call(u,e,n),n},l=function(e){return d.call(u,e)||{}},r=function(e){return f.call(u,e)}}else{var v=h("state");x[v]=!0,t=function(e,n){return p(e,v,n),n},l=function(e){return y(e,v)?e[v]:{}},r=function(e){return y(e,v)}}e.exports={set:t,get:l,has:r,enforce:function(e){return r(e)?l(e):t(e,{})},getterFor:function(e){return function(n){var i;if(!c(n)||(i=l(n)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return i}}}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=Object.assign||function(e){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:{};if("undefined"==typeof document)throw new Error("`feather.replace()` only works in a browser environment.");var n=document.querySelectorAll("[data-feather]");Array.from(n).forEach(function(n){return function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=function(e){return Array.from(e.attributes).reduce(function(e,n){return e[n.name]=n.value,e},{})}(e),o=i["data-feather"];delete i["data-feather"];var a=r.default[o].toSvg(t({},n,i,{class:(0,l.default)(n.class,i.class)})),c=(new DOMParser).parseFromString(a,"image/svg+xml").querySelector("svg");e.parentNode.replaceChild(c,e)}(n,e)})}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t,l=i(12),r=(t=l)&&t.__esModule?t:{default:t};n.default=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(console.warn("feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead."),!e)throw new Error("The required `key` (icon name) parameter is missing.");if(!r.default[e])throw new Error("No icon matching '"+e+"'. See the complete list of icons at https://feathericons.com");return r.default[e].toSvg(n)}},function(e){e.exports={activity:["pulse","health","action","motion"],airplay:["stream","cast","mirroring"],"alert-circle":["warning","alert","danger"],"alert-octagon":["warning","alert","danger"],"alert-triangle":["warning","alert","danger"],"align-center":["text alignment","center"],"align-justify":["text alignment","justified"],"align-left":["text alignment","left"],"align-right":["text alignment","right"],anchor:[],archive:["index","box"],"at-sign":["mention","at","email","message"],award:["achievement","badge"],aperture:["camera","photo"],"bar-chart":["statistics","diagram","graph"],"bar-chart-2":["statistics","diagram","graph"],battery:["power","electricity"],"battery-charging":["power","electricity"],bell:["alarm","notification","sound"],"bell-off":["alarm","notification","silent"],bluetooth:["wireless"],"book-open":["read","library"],book:["read","dictionary","booklet","magazine","library"],bookmark:["read","clip","marker","tag"],box:["cube"],briefcase:["work","bag","baggage","folder"],calendar:["date"],camera:["photo"],cast:["chromecast","airplay"],circle:["off","zero","record"],clipboard:["copy"],clock:["time","watch","alarm"],"cloud-drizzle":["weather","shower"],"cloud-lightning":["weather","bolt"],"cloud-rain":["weather"],"cloud-snow":["weather","blizzard"],cloud:["weather"],codepen:["logo"],codesandbox:["logo"],code:["source","programming"],coffee:["drink","cup","mug","tea","cafe","hot","beverage"],columns:["layout"],command:["keyboard","cmd","terminal","prompt"],compass:["navigation","safari","travel","direction"],copy:["clone","duplicate"],"corner-down-left":["arrow","return"],"corner-down-right":["arrow"],"corner-left-down":["arrow"],"corner-left-up":["arrow"],"corner-right-down":["arrow"],"corner-right-up":["arrow"],"corner-up-left":["arrow"],"corner-up-right":["arrow"],cpu:["processor","technology"],"credit-card":["purchase","payment","cc"],crop:["photo","image"],crosshair:["aim","target"],database:["storage","memory"],delete:["remove"],disc:["album","cd","dvd","music"],"dollar-sign":["currency","money","payment"],droplet:["water"],edit:["pencil","change"],"edit-2":["pencil","change"],"edit-3":["pencil","change"],eye:["view","watch"],"eye-off":["view","watch","hide","hidden"],"external-link":["outbound"],facebook:["logo","social"],"fast-forward":["music"],figma:["logo","design","tool"],"file-minus":["delete","remove","erase"],"file-plus":["add","create","new"],"file-text":["data","txt","pdf"],film:["movie","video"],filter:["funnel","hopper"],flag:["report"],"folder-minus":["directory"],"folder-plus":["directory"],folder:["directory"],framer:["logo","design","tool"],frown:["emoji","face","bad","sad","emotion"],gift:["present","box","birthday","party"],"git-branch":["code","version control"],"git-commit":["code","version control"],"git-merge":["code","version control"],"git-pull-request":["code","version control"],github:["logo","version control"],gitlab:["logo","version control"],globe:["world","browser","language","translate"],"hard-drive":["computer","server","memory","data"],hash:["hashtag","number","pound"],headphones:["music","audio","sound"],heart:["like","love","emotion"],"help-circle":["question mark"],hexagon:["shape","node.js","logo"],home:["house","living"],image:["picture"],inbox:["email"],instagram:["logo","camera"],key:["password","login","authentication","secure"],layers:["stack"],layout:["window","webpage"],"life-bouy":["help","life ring","support"],link:["chain","url"],"link-2":["chain","url"],linkedin:["logo","social media"],list:["options"],lock:["security","password","secure"],"log-in":["sign in","arrow","enter"],"log-out":["sign out","arrow","exit"],mail:["email","message"],"map-pin":["location","navigation","travel","marker"],map:["location","navigation","travel"],maximize:["fullscreen"],"maximize-2":["fullscreen","arrows","expand"],meh:["emoji","face","neutral","emotion"],menu:["bars","navigation","hamburger"],"message-circle":["comment","chat"],"message-square":["comment","chat"],"mic-off":["record","sound","mute"],mic:["record","sound","listen"],minimize:["exit fullscreen","close"],"minimize-2":["exit fullscreen","arrows","close"],minus:["subtract"],monitor:["tv","screen","display"],moon:["dark","night"],"more-horizontal":["ellipsis"],"more-vertical":["ellipsis"],"mouse-pointer":["arrow","cursor"],move:["arrows"],music:["note"],navigation:["location","travel"],"navigation-2":["location","travel"],octagon:["stop"],package:["box","container"],paperclip:["attachment"],pause:["music","stop"],"pause-circle":["music","audio","stop"],"pen-tool":["vector","drawing"],percent:["discount"],"phone-call":["ring"],"phone-forwarded":["call"],"phone-incoming":["call"],"phone-missed":["call"],"phone-off":["call","mute"],"phone-outgoing":["call"],phone:["call"],play:["music","start"],"pie-chart":["statistics","diagram"],"play-circle":["music","start"],plus:["add","new"],"plus-circle":["add","new"],"plus-square":["add","new"],pocket:["logo","save"],power:["on","off"],printer:["fax","office","device"],radio:["signal"],"refresh-cw":["synchronise","arrows"],"refresh-ccw":["arrows"],repeat:["loop","arrows"],rewind:["music"],"rotate-ccw":["arrow"],"rotate-cw":["arrow"],rss:["feed","subscribe"],save:["floppy disk"],scissors:["cut"],search:["find","magnifier","magnifying glass"],send:["message","mail","email","paper airplane","paper aeroplane"],settings:["cog","edit","gear","preferences"],"share-2":["network","connections"],shield:["security","secure"],"shield-off":["security","insecure"],"shopping-bag":["ecommerce","cart","purchase","store"],"shopping-cart":["ecommerce","cart","purchase","store"],shuffle:["music"],"skip-back":["music"],"skip-forward":["music"],slack:["logo"],slash:["ban","no"],sliders:["settings","controls"],smartphone:["cellphone","device"],smile:["emoji","face","happy","good","emotion"],speaker:["audio","music"],star:["bookmark","favorite","like"],"stop-circle":["media","music"],sun:["brightness","weather","light"],sunrise:["weather","time","morning","day"],sunset:["weather","time","evening","night"],tablet:["device"],tag:["label"],target:["logo","bullseye"],terminal:["code","command line","prompt"],thermometer:["temperature","celsius","fahrenheit","weather"],"thumbs-down":["dislike","bad","emotion"],"thumbs-up":["like","good","emotion"],"toggle-left":["on","off","switch"],"toggle-right":["on","off","switch"],tool:["settings","spanner"],trash:["garbage","delete","remove","bin"],"trash-2":["garbage","delete","remove","bin"],triangle:["delta"],truck:["delivery","van","shipping","transport","lorry"],tv:["television","stream"],twitch:["logo"],twitter:["logo","social"],type:["text"],umbrella:["rain","weather"],unlock:["security"],"user-check":["followed","subscribed"],"user-minus":["delete","remove","unfollow","unsubscribe"],"user-plus":["new","add","create","follow","subscribe"],"user-x":["delete","remove","unfollow","unsubscribe","unavailable"],user:["person","account"],users:["group"],"video-off":["camera","movie","film"],video:["camera","movie","film"],voicemail:["phone"],volume:["music","sound","mute"],"volume-1":["music","sound"],"volume-2":["music","sound"],"volume-x":["music","sound","mute"],watch:["clock","time"],"wifi-off":["disabled"],wifi:["connection","signal","wireless"],wind:["weather","air"],"x-circle":["cancel","close","delete","remove","times","clear"],"x-octagon":["delete","stop","alert","warning","times","clear"],"x-square":["cancel","close","delete","remove","times","clear"],x:["cancel","close","delete","remove","times","clear"],youtube:["logo","video","play"],"zap-off":["flash","camera","lightning"],zap:["flash","camera","lightning"],"zoom-in":["magnifying glass"],"zoom-out":["magnifying glass"]}},function(e){e.exports={activity:'',airplay:'',"alert-circle":'',"alert-octagon":'',"alert-triangle":'',"align-center":'',"align-justify":'',"align-left":'',"align-right":'',anchor:'',aperture:'',archive:'',"arrow-down-circle":'',"arrow-down-left":'',"arrow-down-right":'',"arrow-down":'',"arrow-left-circle":'',"arrow-left":'',"arrow-right-circle":'',"arrow-right":'',"arrow-up-circle":'',"arrow-up-left":'',"arrow-up-right":'',"arrow-up":'',"at-sign":'',award:'',"bar-chart-2":'',"bar-chart":'',"battery-charging":'',battery:'',"bell-off":'',bell:'',bluetooth:'',bold:'',"book-open":'',book:'',bookmark:'',box:'',briefcase:'',calendar:'',"camera-off":'',camera:'',cast:'',"check-circle":'',"check-square":'',check:'',"chevron-down":'',"chevron-left":'',"chevron-right":'',"chevron-up":'',"chevrons-down":'',"chevrons-left":'',"chevrons-right":'',"chevrons-up":'',chrome:'',circle:'',clipboard:'',clock:'',"cloud-drizzle":'',"cloud-lightning":'',"cloud-off":'',"cloud-rain":'',"cloud-snow":'',cloud:'',code:'',codepen:'',codesandbox:'',coffee:'',columns:'',command:'',compass:'',copy:'',"corner-down-left":'',"corner-down-right":'',"corner-left-down":'',"corner-left-up":'',"corner-right-down":'',"corner-right-up":'',"corner-up-left":'',"corner-up-right":'',cpu:'',"credit-card":'',crop:'',crosshair:'',database:'',delete:'',disc:'',"divide-circle":'',"divide-square":'',divide:'',"dollar-sign":'',"download-cloud":'',download:'',dribbble:'',droplet:'',"edit-2":'',"edit-3":'',edit:'',"external-link":'',"eye-off":'',eye:'',facebook:'',"fast-forward":'',feather:'',figma:'',"file-minus":'',"file-plus":'',"file-text":'',file:'',film:'',filter:'',flag:'',"folder-minus":'',"folder-plus":'',folder:'',framer:'',frown:'',gift:'',"git-branch":'',"git-commit":'',"git-merge":'',"git-pull-request":'',github:'',gitlab:'',globe:'',grid:'',"hard-drive":'',hash:'',headphones:'',heart:'',"help-circle":'',hexagon:'',home:'',image:'',inbox:'',info:'',instagram:'',italic:'',key:'',layers:'',layout:'',"life-buoy":'',"link-2":'',link:'',linkedin:'',list:'',loader:'',lock:'',"log-in":'',"log-out":'',mail:'',"map-pin":'',map:'',"maximize-2":'',maximize:'',meh:'',menu:'',"message-circle":'',"message-square":'',"mic-off":'',mic:'',"minimize-2":'',minimize:'',"minus-circle":'',"minus-square":'',minus:'',monitor:'',moon:'',"more-horizontal":'',"more-vertical":'',"mouse-pointer":'',move:'',music:'',"navigation-2":'',navigation:'',octagon:'',package:'',paperclip:'',"pause-circle":'',pause:'',"pen-tool":'',percent:'',"phone-call":'',"phone-forwarded":'',"phone-incoming":'',"phone-missed":'',"phone-off":'',"phone-outgoing":'',phone:'',"pie-chart":'',"play-circle":'',play:'',"plus-circle":'',"plus-square":'',plus:'',pocket:'',power:'',printer:'',radio:'',"refresh-ccw":'',"refresh-cw":'',repeat:'',rewind:'',"rotate-ccw":'',"rotate-cw":'',rss:'',save:'',scissors:'',search:'',send:'',server:'',settings:'',"share-2":'',share:'',"shield-off":'',shield:'',"shopping-bag":'',"shopping-cart":'',shuffle:'',sidebar:'',"skip-back":'',"skip-forward":'',slack:'',slash:'',sliders:'',smartphone:'',smile:'',speaker:'',square:'',star:'',"stop-circle":'',sun:'',sunrise:'',sunset:'',tablet:'',tag:'',target:'',terminal:'',thermometer:'',"thumbs-down":'',"thumbs-up":'',"toggle-left":'',"toggle-right":'',tool:'',"trash-2":'',trash:'',trello:'',"trending-down":'',"trending-up":'',triangle:'',truck:'',tv:'',twitch:'',twitter:'',type:'',umbrella:'',underline:'',unlock:'',"upload-cloud":'',upload:'',"user-check":'',"user-minus":'',"user-plus":'',"user-x":'',user:'',users:'',"video-off":'',video:'',voicemail:'',"volume-1":'',"volume-2":'',"volume-x":'',volume:'',watch:'',"wifi-off":'',wifi:'',wind:'',"x-circle":'',"x-octagon":'',"x-square":'',x:'',youtube:'',"zap-off":'',zap:'',"zoom-in":'',"zoom-out":''}},function(e){e.exports={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=Object.assign||function(e){for(var n=1;n2&&void 0!==arguments[2]?arguments[2]:[];!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),this.name=n,this.contents=i,this.tags=l,this.attrs=t({},o.default,{class:"feather feather-"+n})}return l(e,[{key:"toSvg",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return""+this.contents+""}},{key:"toString",value:function(){return this.contents}}]),e}();n.default=c},function(e,n,i){"use strict";var t=o(i(12)),l=o(i(39)),r=o(i(38));function o(e){return e&&e.__esModule?e:{default:e}}e.exports={icons:t.default,toSvg:l.default,replace:r.default}},function(e,n,i){e.exports=i(0)},function(e,n,i){var t=i(2)("iterator"),l=!1;try{var r=0,o={next:function(){return{done:!!r++}},return:function(){l=!0}};o[t]=function(){return this},Array.from(o,function(){throw 2})}catch(e){}e.exports=function(e,n){if(!n&&!l)return!1;var i=!1;try{var r={};r[t]=function(){return{next:function(){return{done:i=!0}}}},e(r)}catch(e){}return i}},function(e,n,i){var t=i(30),l=i(2)("toStringTag"),r="Arguments"==t(function(){return arguments}());e.exports=function(e){var n,i,o;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(i=function(e,n){try{return e[n]}catch(e){}}(n=Object(e),l))?i:r?t(n):"Object"==(o=t(n))&&"function"==typeof n.callee?"Arguments":o}},function(e,n,i){var t=i(47),l=i(9),r=i(2)("iterator");e.exports=function(e){if(void 0!=e)return e[r]||e["@@iterator"]||l[t(e)]}},function(e,n,i){"use strict";var t=i(18),l=i(7),r=i(10);e.exports=function(e,n,i){var o=t(n);o in e?l.f(e,o,r(0,i)):e[o]=i}},function(e,n,i){var t=i(2),l=i(9),r=t("iterator"),o=Array.prototype;e.exports=function(e){return void 0!==e&&(l.Array===e||o[r]===e)}},function(e,n,i){var t=i(3);e.exports=function(e,n,i,l){try{return l?n(t(i)[0],i[1]):n(i)}catch(n){var r=e.return;throw void 0!==r&&t(r.call(e)),n}}},function(e,n){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},function(e,n,i){var t=i(52);e.exports=function(e,n,i){if(t(e),void 0===n)return e;switch(i){case 0:return function(){return e.call(n)};case 1:return function(i){return e.call(n,i)};case 2:return function(i,t){return e.call(n,i,t)};case 3:return function(i,t,l){return e.call(n,i,t,l)}}return function(){return e.apply(n,arguments)}}},function(e,n,i){"use strict";var t=i(53),l=i(24),r=i(51),o=i(50),a=i(27),c=i(49),p=i(48);e.exports=function(e){var n,i,y,h,x=l(e),s="function"==typeof this?this:Array,u=arguments.length,d=u>1?arguments[1]:void 0,f=void 0!==d,g=0,v=p(x);if(f&&(d=t(d,u>2?arguments[2]:void 0,2)),void 0==v||s==Array&&o(v))for(i=new s(n=a(x.length));n>g;g++)c(i,g,f?d(x[g],g):x[g]);else for(h=v.call(x),i=new s;!(y=h.next()).done;g++)c(i,g,f?r(h,d,[y.value,g],!0):y.value);return i.length=g,i}},function(e,n,i){var t=i(32),l=i(54);t({target:"Array",stat:!0,forced:!i(46)(function(e){Array.from(e)})},{from:l})},function(e,n,i){var t=i(6),l=i(3);e.exports=function(e,n){if(l(e),!t(n)&&null!==n)throw TypeError("Can't set "+String(n)+" as a prototype")}},function(e,n,i){var t=i(56);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,n=!1,i={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(i,[]),n=i instanceof Array}catch(e){}return function(i,l){return t(i,l),n?e.call(i,l):i.__proto__=l,i}}():void 0)},function(e,n,i){var t=i(0).document;e.exports=t&&t.documentElement},function(e,n,i){var t=i(28),l=i(13);e.exports=Object.keys||function(e){return t(e,l)}},function(e,n,i){var t=i(8),l=i(7),r=i(3),o=i(59);e.exports=t?Object.defineProperties:function(e,n){r(e);for(var i,t=o(n),a=t.length,c=0;a>c;)l.f(e,i=t[c++],n[i]);return e}},function(e,n,i){var t=i(3),l=i(60),r=i(13),o=i(15),a=i(58),c=i(34),p=i(16)("IE_PROTO"),y=function(){},h=function(){var e,n=c("iframe"),i=r.length;for(n.style.display="none",a.appendChild(n),n.src=String("javascript:"),(e=n.contentWindow.document).open(),e.write(" - - diff --git a/themes/cactus/layouts/_default/list.html b/themes/cactus/layouts/_default/list.html deleted file mode 100644 index e8c3e31..0000000 --- a/themes/cactus/layouts/_default/list.html +++ /dev/null @@ -1,30 +0,0 @@ -{{ define "main"}} -
-
    - - {{ $pages := .Paginator.Pages }} - {{ if .Site.Params.showAllPostsArchive }} - {{ $pages = .Pages }} - {{ end }} - - {{ range (sort $pages "Date" "desc") }} - {{ $pageYear := (.Date.Format "2006") }} - {{ if (ne $pageYear ($.Scratch.Get "year")) }} - {{ $.Scratch.Set "year" $pageYear }} -

    {{ $pageYear }}

    - {{ end }} -
  • -
    - -
    - - {{ if .Title }} {{ .Title }} {{ else }} Untitled {{ end }} - -
  • - {{ end }} -
- {{ if eq .Site.Params.showAllPostsArchive false }} - {{ partial "pagination.html" . }} - {{ end }} -
-{{ end }} \ No newline at end of file diff --git a/themes/cactus/layouts/_default/single.html b/themes/cactus/layouts/_default/single.html deleted file mode 100644 index 6107133..0000000 --- a/themes/cactus/layouts/_default/single.html +++ /dev/null @@ -1,12 +0,0 @@ -{{ define "main" }} -
- -
- {{ if (eq .Type "search") }} - - {{ else }} - {{ .Content }} - {{ end }} -
-
-{{ end }} \ No newline at end of file diff --git a/themes/cactus/layouts/_default/terms.html b/themes/cactus/layouts/_default/terms.html deleted file mode 100644 index 704ab99..0000000 --- a/themes/cactus/layouts/_default/terms.html +++ /dev/null @@ -1,41 +0,0 @@ -{{ define "main" }} -
-
- {{ if (eq .Type "tags")}} -
- {{ if (eq (len .Data.Terms) 0) }} -
- No tags -
- {{ end }} -
- {{ $AllRegularPagesCount := len .Site.RegularPages }} - {{ range $elem := .Data.Terms.Alphabetical }} - - {{- .Page.Title -}} - - {{ end }} -
-
- {{ else if (eq .Type "categories")}} -
- {{ if (eq (len .Data.Terms) 0) }} -
- No categories -
- {{ end }} -
-
    - {{ range .Data.Terms.Alphabetical }} -
  • - {{ .Page.Title }} - {{ .Count }} -
  • - {{ end }} -
-
-
- {{ end }} -
-
-{{ end }} \ No newline at end of file diff --git a/themes/cactus/layouts/index.html b/themes/cactus/layouts/index.html deleted file mode 100644 index 8a86a50..0000000 --- a/themes/cactus/layouts/index.html +++ /dev/null @@ -1,65 +0,0 @@ -{{ define "main" }} -
- {{ if isset .Site.Params "description" }} - {{ .Site.Params.description | $.Page.RenderString }} - {{ end }} - {{ if isset .Site.Params "social" }} -

Find me on - {{ $length := (len .Site.Params.social) }} - {{ range $index, $elem := .Site.Params.social}} - {{ if eq $elem.name "email" }} - - - - {{ else if eq $elem.name "rss" }} - - - - {{ else if eq $elem.name "scholar" }} - - - - {{ else }} - - - - {{ end }} - {{ if (lt (add $index 2) $length) }} - {{- print " , " -}} - {{ else if (lt (add $index 1) $length) }} - {{- print " and " -}} - {{ else }} - {{- print "." -}} - {{ end }} - {{ end }} -

- {{ end }} - {{ partial "optional-about.html" . }} -
- - {{ $showProjectsList := false }} - {{ if (isset .Site.Params "showprojectslist") }} - {{ $showProjectsList = .Site.Params.showProjectsList }} - {{ else if .Site.Data.projects }} - {{ $showProjectsList = true }} - {{ end }} - {{ if $showProjectsList }} - {{ $projectsUrl := "#" }} - {{ if isset .Site.Params "projectsurl" }} - {{ $projectsUrl = .Site.Params.projectsUrl }} - {{ end }} -
- Career -
    - {{ range .Site.Data.projects.list }} -
  • - {{ range .tags }} - {{ .name }} - {{ end }} - {{ .name }}: {{ .desc | markdownify }} -
  • - {{ end }} -
-
- {{ end }} -{{ end }} diff --git a/themes/cactus/layouts/partials/comments.html b/themes/cactus/layouts/partials/comments.html deleted file mode 100644 index b17721e..0000000 --- a/themes/cactus/layouts/partials/comments.html +++ /dev/null @@ -1,22 +0,0 @@ -{{ if (not (isset .Site.Params "comments")) }} - {{ .Scratch.Set "enable_comments" false }} -{{ else if (isset .Params "comments") }} - {{ .Scratch.Set "enable_comments" .Params.comments }} -{{ else if (isset .Site.Params.Comments "enabled") }} - {{ .Scratch.Set "enable_comments" .Site.Params.Comments.Enabled }} -{{ else }} - {{ .Scratch.Set "enable_comments" true }} -{{ end }} - -{{ $enable_comments := .Scratch.Get "enable_comments" }} -{{ if $enable_comments }} -
- {{ if (or (not (isset .Site.Params.Comments "engine")) (eq .Site.Params.Comments.Engine "disqus")) }} - {{ partial "comments/disqus.html" . }} - {{ else if eq .Site.Params.Comments.Engine "utterances" }} - {{ partial "comments/utterances.html" . }} - {{ else if eq .Site.Params.Comments.Engine "cactus_comments" }} - {{ partial "comments/cactus_comments.html" . }} - {{ end }} -
-{{ end }} diff --git a/themes/cactus/layouts/partials/comments/cactus_comments.html b/themes/cactus/layouts/partials/comments/cactus_comments.html deleted file mode 100644 index 7873bbb..0000000 --- a/themes/cactus/layouts/partials/comments/cactus_comments.html +++ /dev/null @@ -1,11 +0,0 @@ -
- -
diff --git a/themes/cactus/layouts/partials/comments/disqus.html b/themes/cactus/layouts/partials/comments/disqus.html deleted file mode 100644 index 8acd459..0000000 --- a/themes/cactus/layouts/partials/comments/disqus.html +++ /dev/null @@ -1,17 +0,0 @@ -
- - - comments powered by Disqus -
diff --git a/themes/cactus/layouts/partials/comments/utterances.html b/themes/cactus/layouts/partials/comments/utterances.html deleted file mode 100644 index 205617a..0000000 --- a/themes/cactus/layouts/partials/comments/utterances.html +++ /dev/null @@ -1,10 +0,0 @@ -
- -
diff --git a/themes/cactus/layouts/partials/favicon.html b/themes/cactus/layouts/partials/favicon.html deleted file mode 100644 index eb3745f..0000000 --- a/themes/cactus/layouts/partials/favicon.html +++ /dev/null @@ -1,8 +0,0 @@ -{{ if (isset .Site.Params "favicon") }} - {{ .Scratch.Set "favicon_path" .Site.Params.favicon }} -{{ else }} - {{ .Scratch.Set "favicon_path" "images/favicon.ico" }} -{{ end }} - -{{ $favicon_path := .Scratch.Get "favicon_path" }} - diff --git a/themes/cactus/layouts/partials/footer.html b/themes/cactus/layouts/partials/footer.html deleted file mode 100644 index 31eb4aa..0000000 --- a/themes/cactus/layouts/partials/footer.html +++ /dev/null @@ -1,14 +0,0 @@ -
- - -
diff --git a/themes/cactus/layouts/partials/head.html b/themes/cactus/layouts/partials/head.html deleted file mode 100644 index b46ee84..0000000 --- a/themes/cactus/layouts/partials/head.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - {{ if eq .Site.Params.Comments.enabled true }} - - - {{ end }} - - - {{ if .IsPage }} {{ .Title }} | {{ end }}{{ .Site.Title }} - - {{ with .Site.Params.description }}{{ end }} - - - - {{ template "_internal/opengraph.html" . }} - {{ template "_internal/twitter_cards.html" . }} - {{ .Scratch.Set "colortheme" "white"}} - {{ if .Site.Params.Colortheme }} - {{ .Scratch.Set "colortheme" .Site.Params.Colortheme }} - {{ end }} - {{ $colortheme := .Scratch.Get "colortheme" }} - - {{- $options := (dict "targetPath" "css/styles.css" "outputStyle" "compressed" "enableSourceMap" "true") -}} - {{- $styles := resources.Get "scss/style.scss" | resources.ExecuteAsTemplate "scss/style.scss" . | resources.ToCSS $options | resources.Fingerprint "sha512" }} - - - - {{ range .Site.Params.css }} {{ end }} - {{ ` - - ` | safeHTML }} - - {{ partial "favicon.html" . }} - {{ if .Site.Params.rss }} - {{ with .OutputFormats.Get "RSS" }} - {{ printf `` .Permalink .Rel .MediaType.Type $.Site.Title | safeHTML }} - {{ end }} - {{ end }} - diff --git a/themes/cactus/layouts/partials/header.html b/themes/cactus/layouts/partials/header.html deleted file mode 100644 index 3ecdb0b..0000000 --- a/themes/cactus/layouts/partials/header.html +++ /dev/null @@ -1,25 +0,0 @@ - - diff --git a/themes/cactus/layouts/partials/optional-about.html b/themes/cactus/layouts/partials/optional-about.html deleted file mode 100644 index e69de29..0000000 diff --git a/themes/cactus/layouts/partials/page_nav.html b/themes/cactus/layouts/partials/page_nav.html deleted file mode 100644 index 9ca1c2a..0000000 --- a/themes/cactus/layouts/partials/page_nav.html +++ /dev/null @@ -1,57 +0,0 @@ -
- - - - - -
    - {{ range .Site.Menus.main }} -
  • {{ .Name }}
  • - {{ end }} -
-
-
- -
    - {{ if .Prev }} -
  • - - - -
  • - {{ end }} - {{ if .Next }} -
  • - - - -
  • - {{ end }} -
  • - - - -
  • -
  • - - - -
  • -
- - - - -
-
- - {{ if not .Site.Params.tocInline }} -
- {{ .TableOfContents }} -
- {{ end }} -
-
diff --git a/themes/cactus/layouts/partials/page_nav_mobile.html b/themes/cactus/layouts/partials/page_nav_mobile.html deleted file mode 100644 index bf9decb..0000000 --- a/themes/cactus/layouts/partials/page_nav_mobile.html +++ /dev/null @@ -1,38 +0,0 @@ -
-
- - - - {{ if not .Site.Params.tocInline }} - - {{ end }} - - - - - -
-
diff --git a/themes/cactus/layouts/partials/pagination.html b/themes/cactus/layouts/partials/pagination.html deleted file mode 100644 index fc2058f..0000000 --- a/themes/cactus/layouts/partials/pagination.html +++ /dev/null @@ -1,13 +0,0 @@ -{{ $pag := $.Paginator }} -{{ if gt $pag.TotalPages 1 }} - -{{ end }} diff --git a/themes/cactus/layouts/partials/share.html b/themes/cactus/layouts/partials/share.html deleted file mode 100644 index 4aeadd7..0000000 --- a/themes/cactus/layouts/partials/share.html +++ /dev/null @@ -1,54 +0,0 @@ -
    - {{ $icon_class_name := .Scratch.Get "icon_class_name"}} - {{ if .Description }} - {{ .Scratch.Set "description" .Description }} - {{ else }} - {{ .Scratch.Set "description" .Summary }} - {{ end }} - {{ $description := .Scratch.Get "description" }} -
  • - - - -
  • -
  • - - - -
  • -
  • - - - -
  • -
  • - - - -
  • -
  • - - - -
  • -
  • - - - -
  • -
  • - - - -
  • -
  • - - - -
  • -
  • - - - -
  • -
diff --git a/themes/cactus/layouts/partials/title.html b/themes/cactus/layouts/partials/title.html deleted file mode 100644 index e69de29..0000000 diff --git a/themes/cactus/layouts/posts/single.html b/themes/cactus/layouts/posts/single.html deleted file mode 100644 index 5df437a..0000000 --- a/themes/cactus/layouts/posts/single.html +++ /dev/null @@ -1,117 +0,0 @@ - - -{{ partial "head.html" . }} - -
- - {{ partial "page_nav.html" . }} - -
-
-

- {{ .Title }} -

-
- {{ if (or (isset .Site "author") (isset .Site "title"))}} - - {{ end }} - - {{ $showReadTime := .Site.Params.showReadTime | default false }} - {{if $showReadTime}} -
- - {{ $readTime := math.Round (div (countwords .Content) 220.0) }} - {{ $readTime }} minute read -
- {{ end }} - {{ if gt .Params.categories 0 }} - - {{ end }} - {{ if gt .Params.tags 0 }} - - {{ end }} -
-
- - {{ with .Resources.ByType "image" }} -
- {{ range $index, $value := . }} - - - - {{ end }} -
- {{ end }} - {{ if .Site.Params.tocInline }} -
- {{ .TableOfContents }} -
- {{ end }} -
- {{ .Content}} -
-
- - {{ partial "comments.html" . }} - - {{ partial "page_nav_mobile.html" . }} - - {{ partial "footer.html" . }} - -
- - - - - -{{ if not (isset site.Params "disablecopy") }} - -{{ end }} -{{ $mathjax := false }} -{{ if isset .Params "mathjax" }} - {{ $mathjax = .Params.mathjax }} -{{ else if isset .Site.Params "mathjax" }} - {{ $mathjax = .Site.Params.mathjax }} -{{ end }} -{{ if $mathjax }} - - -{{ end }} - diff --git a/themes/cactus/static/images/favicon.ico b/themes/cactus/static/images/favicon.ico deleted file mode 100644 index 84a85d3..0000000 Binary files a/themes/cactus/static/images/favicon.ico and /dev/null differ diff --git a/themes/cactus/static/images/logo.png b/themes/cactus/static/images/logo.png deleted file mode 100644 index 43a6ef0..0000000 Binary files a/themes/cactus/static/images/logo.png and /dev/null differ diff --git a/themes/cactus/static/js/code-copy.js b/themes/cactus/static/js/code-copy.js deleted file mode 100644 index 5a07bf8..0000000 --- a/themes/cactus/static/js/code-copy.js +++ /dev/null @@ -1,36 +0,0 @@ -(() => { - - function createCopyButton(codeNode) { - const copyBtn = document.createElement('button') - copyBtn.className = 'code-copy-btn' - copyBtn.type = 'button' - copyBtn.innerText = 'copy' - - let resetTimer - copyBtn.addEventListener('click', () => { - navigator.clipboard.writeText(codeNode.innerText).then(() => { - copyBtn.innerText = 'copied!' - }).then(() => { - clearTimeout(resetTimer) - resetTimer = setTimeout(() => { - copyBtn.innerText = 'copy' - }, 1000) - }) - }) - - return copyBtn - } - - document.querySelectorAll('pre > code') - .forEach((codeNode) => { - const copyBtn = createCopyButton(codeNode); - const preNode = codeNode.parentNode - codeNode.parentNode.insertBefore(copyBtn, codeNode) - }) - - document.querySelectorAll('.highlight table > tbody > tr > td:first-child .code-copy-btn') - .forEach((btn) => { - btn.remove() - }) - -})() \ No newline at end of file diff --git a/themes/cactus/static/js/feather.min.js b/themes/cactus/static/js/feather.min.js deleted file mode 100644 index 156cd61..0000000 --- a/themes/cactus/static/js/feather.min.js +++ /dev/null @@ -1,13 +0,0 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.feather=n():e.feather=n()}("undefined"!=typeof self?self:this,function(){return function(e){var n={};function i(t){if(n[t])return n[t].exports;var l=n[t]={i:t,l:!1,exports:{}};return e[t].call(l.exports,l,l.exports,i),l.l=!0,l.exports}return i.m=e,i.c=n,i.d=function(e,n,t){i.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},i.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},i.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(n,"a",n),n},i.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},i.p="",i(i.s=80)}([function(e,n,i){(function(n){var i="object",t=function(e){return e&&e.Math==Math&&e};e.exports=t(typeof globalThis==i&&globalThis)||t(typeof window==i&&window)||t(typeof self==i&&self)||t(typeof n==i&&n)||Function("return this")()}).call(this,i(75))},function(e,n){var i={}.hasOwnProperty;e.exports=function(e,n){return i.call(e,n)}},function(e,n,i){var t=i(0),l=i(11),r=i(33),o=i(62),a=t.Symbol,c=l("wks");e.exports=function(e){return c[e]||(c[e]=o&&a[e]||(o?a:r)("Symbol."+e))}},function(e,n,i){var t=i(6);e.exports=function(e){if(!t(e))throw TypeError(String(e)+" is not an object");return e}},function(e,n){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,n,i){var t=i(8),l=i(7),r=i(10);e.exports=t?function(e,n,i){return l.f(e,n,r(1,i))}:function(e,n,i){return e[n]=i,e}},function(e,n){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,n,i){var t=i(8),l=i(35),r=i(3),o=i(18),a=Object.defineProperty;n.f=t?a:function(e,n,i){if(r(e),n=o(n,!0),r(i),l)try{return a(e,n,i)}catch(e){}if("get"in i||"set"in i)throw TypeError("Accessors not supported");return"value"in i&&(e[n]=i.value),e}},function(e,n,i){var t=i(4);e.exports=!t(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,n){e.exports={}},function(e,n){e.exports=function(e,n){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:n}}},function(e,n,i){var t=i(0),l=i(19),r=i(17),o=t["__core-js_shared__"]||l("__core-js_shared__",{});(e.exports=function(e,n){return o[e]||(o[e]=void 0!==n?n:{})})("versions",[]).push({version:"3.1.3",mode:r?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=o(i(43)),l=o(i(41)),r=o(i(40));function o(e){return e&&e.__esModule?e:{default:e}}n.default=Object.keys(l.default).map(function(e){return new t.default(e,l.default[e],r.default[e])}).reduce(function(e,n){return e[n.name]=n,e},{})},function(e,n){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,n,i){var t=i(72),l=i(20);e.exports=function(e){return t(l(e))}},function(e,n){e.exports={}},function(e,n,i){var t=i(11),l=i(33),r=t("keys");e.exports=function(e){return r[e]||(r[e]=l(e))}},function(e,n){e.exports=!1},function(e,n,i){var t=i(6);e.exports=function(e,n){if(!t(e))return e;var i,l;if(n&&"function"==typeof(i=e.toString)&&!t(l=i.call(e)))return l;if("function"==typeof(i=e.valueOf)&&!t(l=i.call(e)))return l;if(!n&&"function"==typeof(i=e.toString)&&!t(l=i.call(e)))return l;throw TypeError("Can't convert object to primitive value")}},function(e,n,i){var t=i(0),l=i(5);e.exports=function(e,n){try{l(t,e,n)}catch(i){t[e]=n}return n}},function(e,n){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,n){var i=Math.ceil,t=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?t:i)(e)}},function(e,n,i){var t; -/*! - Copyright (c) 2016 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames -*/ -/*! - Copyright (c) 2016 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames -*/ -!function(){"use strict";var i=function(){function e(){}function n(e,n){for(var i=n.length,t=0;t0?l(t(e),9007199254740991):0}},function(e,n,i){var t=i(1),l=i(14),r=i(68),o=i(15),a=r(!1);e.exports=function(e,n){var i,r=l(e),c=0,p=[];for(i in r)!t(o,i)&&t(r,i)&&p.push(i);for(;n.length>c;)t(r,i=n[c++])&&(~a(p,i)||p.push(i));return p}},function(e,n,i){var t=i(0),l=i(11),r=i(5),o=i(1),a=i(19),c=i(36),p=i(37),y=p.get,h=p.enforce,x=String(c).split("toString");l("inspectSource",function(e){return c.call(e)}),(e.exports=function(e,n,i,l){var c=!!l&&!!l.unsafe,p=!!l&&!!l.enumerable,y=!!l&&!!l.noTargetGet;"function"==typeof i&&("string"!=typeof n||o(i,"name")||r(i,"name",n),h(i).source=x.join("string"==typeof n?n:"")),e!==t?(c?!y&&e[n]&&(p=!0):delete e[n],p?e[n]=i:r(e,n,i)):p?e[n]=i:a(n,i)})(Function.prototype,"toString",function(){return"function"==typeof this&&y(this).source||c.call(this)})},function(e,n){var i={}.toString;e.exports=function(e){return i.call(e).slice(8,-1)}},function(e,n,i){var t=i(8),l=i(73),r=i(10),o=i(14),a=i(18),c=i(1),p=i(35),y=Object.getOwnPropertyDescriptor;n.f=t?y:function(e,n){if(e=o(e),n=a(n,!0),p)try{return y(e,n)}catch(e){}if(c(e,n))return r(!l.f.call(e,n),e[n])}},function(e,n,i){var t=i(0),l=i(31).f,r=i(5),o=i(29),a=i(19),c=i(71),p=i(65);e.exports=function(e,n){var i,y,h,x,s,u=e.target,d=e.global,f=e.stat;if(i=d?t:f?t[u]||a(u,{}):(t[u]||{}).prototype)for(y in n){if(x=n[y],h=e.noTargetGet?(s=l(i,y))&&s.value:i[y],!p(d?y:u+(f?".":"#")+y,e.forced)&&void 0!==h){if(typeof x==typeof h)continue;c(x,h)}(e.sham||h&&h.sham)&&r(x,"sham",!0),o(i,y,x,e)}}},function(e,n){var i=0,t=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++i+t).toString(36))}},function(e,n,i){var t=i(0),l=i(6),r=t.document,o=l(r)&&l(r.createElement);e.exports=function(e){return o?r.createElement(e):{}}},function(e,n,i){var t=i(8),l=i(4),r=i(34);e.exports=!t&&!l(function(){return 7!=Object.defineProperty(r("div"),"a",{get:function(){return 7}}).a})},function(e,n,i){var t=i(11);e.exports=t("native-function-to-string",Function.toString)},function(e,n,i){var t,l,r,o=i(76),a=i(0),c=i(6),p=i(5),y=i(1),h=i(16),x=i(15),s=a.WeakMap;if(o){var u=new s,d=u.get,f=u.has,g=u.set;t=function(e,n){return g.call(u,e,n),n},l=function(e){return d.call(u,e)||{}},r=function(e){return f.call(u,e)}}else{var v=h("state");x[v]=!0,t=function(e,n){return p(e,v,n),n},l=function(e){return y(e,v)?e[v]:{}},r=function(e){return y(e,v)}}e.exports={set:t,get:l,has:r,enforce:function(e){return r(e)?l(e):t(e,{})},getterFor:function(e){return function(n){var i;if(!c(n)||(i=l(n)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return i}}}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=Object.assign||function(e){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:{};if("undefined"==typeof document)throw new Error("`feather.replace()` only works in a browser environment.");var n=document.querySelectorAll("[data-feather]");Array.from(n).forEach(function(n){return function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=function(e){return Array.from(e.attributes).reduce(function(e,n){return e[n.name]=n.value,e},{})}(e),o=i["data-feather"];delete i["data-feather"];var a=r.default[o].toSvg(t({},n,i,{class:(0,l.default)(n.class,i.class)})),c=(new DOMParser).parseFromString(a,"image/svg+xml").querySelector("svg");e.parentNode.replaceChild(c,e)}(n,e)})}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t,l=i(12),r=(t=l)&&t.__esModule?t:{default:t};n.default=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(console.warn("feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead."),!e)throw new Error("The required `key` (icon name) parameter is missing.");if(!r.default[e])throw new Error("No icon matching '"+e+"'. See the complete list of icons at https://feathericons.com");return r.default[e].toSvg(n)}},function(e){e.exports={activity:["pulse","health","action","motion"],airplay:["stream","cast","mirroring"],"alert-circle":["warning","alert","danger"],"alert-octagon":["warning","alert","danger"],"alert-triangle":["warning","alert","danger"],"align-center":["text alignment","center"],"align-justify":["text alignment","justified"],"align-left":["text alignment","left"],"align-right":["text alignment","right"],anchor:[],archive:["index","box"],"at-sign":["mention","at","email","message"],award:["achievement","badge"],aperture:["camera","photo"],"bar-chart":["statistics","diagram","graph"],"bar-chart-2":["statistics","diagram","graph"],battery:["power","electricity"],"battery-charging":["power","electricity"],bell:["alarm","notification","sound"],"bell-off":["alarm","notification","silent"],bluetooth:["wireless"],"book-open":["read","library"],book:["read","dictionary","booklet","magazine","library"],bookmark:["read","clip","marker","tag"],box:["cube"],briefcase:["work","bag","baggage","folder"],calendar:["date"],camera:["photo"],cast:["chromecast","airplay"],circle:["off","zero","record"],clipboard:["copy"],clock:["time","watch","alarm"],"cloud-drizzle":["weather","shower"],"cloud-lightning":["weather","bolt"],"cloud-rain":["weather"],"cloud-snow":["weather","blizzard"],cloud:["weather"],codepen:["logo"],codesandbox:["logo"],code:["source","programming"],coffee:["drink","cup","mug","tea","cafe","hot","beverage"],columns:["layout"],command:["keyboard","cmd","terminal","prompt"],compass:["navigation","safari","travel","direction"],copy:["clone","duplicate"],"corner-down-left":["arrow","return"],"corner-down-right":["arrow"],"corner-left-down":["arrow"],"corner-left-up":["arrow"],"corner-right-down":["arrow"],"corner-right-up":["arrow"],"corner-up-left":["arrow"],"corner-up-right":["arrow"],cpu:["processor","technology"],"credit-card":["purchase","payment","cc"],crop:["photo","image"],crosshair:["aim","target"],database:["storage","memory"],delete:["remove"],disc:["album","cd","dvd","music"],"dollar-sign":["currency","money","payment"],droplet:["water"],edit:["pencil","change"],"edit-2":["pencil","change"],"edit-3":["pencil","change"],eye:["view","watch"],"eye-off":["view","watch","hide","hidden"],"external-link":["outbound"],facebook:["logo","social"],"fast-forward":["music"],figma:["logo","design","tool"],"file-minus":["delete","remove","erase"],"file-plus":["add","create","new"],"file-text":["data","txt","pdf"],film:["movie","video"],filter:["funnel","hopper"],flag:["report"],"folder-minus":["directory"],"folder-plus":["directory"],folder:["directory"],framer:["logo","design","tool"],frown:["emoji","face","bad","sad","emotion"],gift:["present","box","birthday","party"],"git-branch":["code","version control"],"git-commit":["code","version control"],"git-merge":["code","version control"],"git-pull-request":["code","version control"],github:["logo","version control"],gitlab:["logo","version control"],globe:["world","browser","language","translate"],"hard-drive":["computer","server","memory","data"],hash:["hashtag","number","pound"],headphones:["music","audio","sound"],heart:["like","love","emotion"],"help-circle":["question mark"],hexagon:["shape","node.js","logo"],home:["house","living"],image:["picture"],inbox:["email"],instagram:["logo","camera"],key:["password","login","authentication","secure"],layers:["stack"],layout:["window","webpage"],"life-bouy":["help","life ring","support"],link:["chain","url"],"link-2":["chain","url"],linkedin:["logo","social media"],list:["options"],lock:["security","password","secure"],"log-in":["sign in","arrow","enter"],"log-out":["sign out","arrow","exit"],mail:["email","message"],"map-pin":["location","navigation","travel","marker"],map:["location","navigation","travel"],maximize:["fullscreen"],"maximize-2":["fullscreen","arrows","expand"],meh:["emoji","face","neutral","emotion"],menu:["bars","navigation","hamburger"],"message-circle":["comment","chat"],"message-square":["comment","chat"],"mic-off":["record","sound","mute"],mic:["record","sound","listen"],minimize:["exit fullscreen","close"],"minimize-2":["exit fullscreen","arrows","close"],minus:["subtract"],monitor:["tv","screen","display"],moon:["dark","night"],"more-horizontal":["ellipsis"],"more-vertical":["ellipsis"],"mouse-pointer":["arrow","cursor"],move:["arrows"],music:["note"],navigation:["location","travel"],"navigation-2":["location","travel"],octagon:["stop"],package:["box","container"],paperclip:["attachment"],pause:["music","stop"],"pause-circle":["music","audio","stop"],"pen-tool":["vector","drawing"],percent:["discount"],"phone-call":["ring"],"phone-forwarded":["call"],"phone-incoming":["call"],"phone-missed":["call"],"phone-off":["call","mute"],"phone-outgoing":["call"],phone:["call"],play:["music","start"],"pie-chart":["statistics","diagram"],"play-circle":["music","start"],plus:["add","new"],"plus-circle":["add","new"],"plus-square":["add","new"],pocket:["logo","save"],power:["on","off"],printer:["fax","office","device"],radio:["signal"],"refresh-cw":["synchronise","arrows"],"refresh-ccw":["arrows"],repeat:["loop","arrows"],rewind:["music"],"rotate-ccw":["arrow"],"rotate-cw":["arrow"],rss:["feed","subscribe"],save:["floppy disk"],scissors:["cut"],search:["find","magnifier","magnifying glass"],send:["message","mail","email","paper airplane","paper aeroplane"],settings:["cog","edit","gear","preferences"],"share-2":["network","connections"],shield:["security","secure"],"shield-off":["security","insecure"],"shopping-bag":["ecommerce","cart","purchase","store"],"shopping-cart":["ecommerce","cart","purchase","store"],shuffle:["music"],"skip-back":["music"],"skip-forward":["music"],slack:["logo"],slash:["ban","no"],sliders:["settings","controls"],smartphone:["cellphone","device"],smile:["emoji","face","happy","good","emotion"],speaker:["audio","music"],star:["bookmark","favorite","like"],"stop-circle":["media","music"],sun:["brightness","weather","light"],sunrise:["weather","time","morning","day"],sunset:["weather","time","evening","night"],tablet:["device"],tag:["label"],target:["logo","bullseye"],terminal:["code","command line","prompt"],thermometer:["temperature","celsius","fahrenheit","weather"],"thumbs-down":["dislike","bad","emotion"],"thumbs-up":["like","good","emotion"],"toggle-left":["on","off","switch"],"toggle-right":["on","off","switch"],tool:["settings","spanner"],trash:["garbage","delete","remove","bin"],"trash-2":["garbage","delete","remove","bin"],triangle:["delta"],truck:["delivery","van","shipping","transport","lorry"],tv:["television","stream"],twitch:["logo"],twitter:["logo","social"],type:["text"],umbrella:["rain","weather"],unlock:["security"],"user-check":["followed","subscribed"],"user-minus":["delete","remove","unfollow","unsubscribe"],"user-plus":["new","add","create","follow","subscribe"],"user-x":["delete","remove","unfollow","unsubscribe","unavailable"],user:["person","account"],users:["group"],"video-off":["camera","movie","film"],video:["camera","movie","film"],voicemail:["phone"],volume:["music","sound","mute"],"volume-1":["music","sound"],"volume-2":["music","sound"],"volume-x":["music","sound","mute"],watch:["clock","time"],"wifi-off":["disabled"],wifi:["connection","signal","wireless"],wind:["weather","air"],"x-circle":["cancel","close","delete","remove","times","clear"],"x-octagon":["delete","stop","alert","warning","times","clear"],"x-square":["cancel","close","delete","remove","times","clear"],x:["cancel","close","delete","remove","times","clear"],youtube:["logo","video","play"],"zap-off":["flash","camera","lightning"],zap:["flash","camera","lightning"],"zoom-in":["magnifying glass"],"zoom-out":["magnifying glass"]}},function(e){e.exports={activity:'',airplay:'',"alert-circle":'',"alert-octagon":'',"alert-triangle":'',"align-center":'',"align-justify":'',"align-left":'',"align-right":'',anchor:'',aperture:'',archive:'',"arrow-down-circle":'',"arrow-down-left":'',"arrow-down-right":'',"arrow-down":'',"arrow-left-circle":'',"arrow-left":'',"arrow-right-circle":'',"arrow-right":'',"arrow-up-circle":'',"arrow-up-left":'',"arrow-up-right":'',"arrow-up":'',"at-sign":'',award:'',"bar-chart-2":'',"bar-chart":'',"battery-charging":'',battery:'',"bell-off":'',bell:'',bluetooth:'',bold:'',"book-open":'',book:'',bookmark:'',box:'',briefcase:'',calendar:'',"camera-off":'',camera:'',cast:'',"check-circle":'',"check-square":'',check:'',"chevron-down":'',"chevron-left":'',"chevron-right":'',"chevron-up":'',"chevrons-down":'',"chevrons-left":'',"chevrons-right":'',"chevrons-up":'',chrome:'',circle:'',clipboard:'',clock:'',"cloud-drizzle":'',"cloud-lightning":'',"cloud-off":'',"cloud-rain":'',"cloud-snow":'',cloud:'',code:'',codepen:'',codesandbox:'',coffee:'',columns:'',command:'',compass:'',copy:'',"corner-down-left":'',"corner-down-right":'',"corner-left-down":'',"corner-left-up":'',"corner-right-down":'',"corner-right-up":'',"corner-up-left":'',"corner-up-right":'',cpu:'',"credit-card":'',crop:'',crosshair:'',database:'',delete:'',disc:'',"divide-circle":'',"divide-square":'',divide:'',"dollar-sign":'',"download-cloud":'',download:'',dribbble:'',droplet:'',"edit-2":'',"edit-3":'',edit:'',"external-link":'',"eye-off":'',eye:'',facebook:'',"fast-forward":'',feather:'',figma:'',"file-minus":'',"file-plus":'',"file-text":'',file:'',film:'',filter:'',flag:'',"folder-minus":'',"folder-plus":'',folder:'',framer:'',frown:'',gift:'',"git-branch":'',"git-commit":'',"git-merge":'',"git-pull-request":'',github:'',gitlab:'',globe:'',grid:'',"hard-drive":'',hash:'',headphones:'',heart:'',"help-circle":'',hexagon:'',home:'',image:'',inbox:'',info:'',instagram:'',italic:'',key:'',layers:'',layout:'',"life-buoy":'',"link-2":'',link:'',linkedin:'',list:'',loader:'',lock:'',"log-in":'',"log-out":'',mail:'',"map-pin":'',map:'',"maximize-2":'',maximize:'',meh:'',menu:'',"message-circle":'',"message-square":'',"mic-off":'',mic:'',"minimize-2":'',minimize:'',"minus-circle":'',"minus-square":'',minus:'',monitor:'',moon:'',"more-horizontal":'',"more-vertical":'',"mouse-pointer":'',move:'',music:'',"navigation-2":'',navigation:'',octagon:'',package:'',paperclip:'',"pause-circle":'',pause:'',"pen-tool":'',percent:'',"phone-call":'',"phone-forwarded":'',"phone-incoming":'',"phone-missed":'',"phone-off":'',"phone-outgoing":'',phone:'',"pie-chart":'',"play-circle":'',play:'',"plus-circle":'',"plus-square":'',plus:'',pocket:'',power:'',printer:'',radio:'',"refresh-ccw":'',"refresh-cw":'',repeat:'',rewind:'',"rotate-ccw":'',"rotate-cw":'',rss:'',save:'',scissors:'',search:'',send:'',server:'',settings:'',"share-2":'',share:'',"shield-off":'',shield:'',"shopping-bag":'',"shopping-cart":'',shuffle:'',sidebar:'',"skip-back":'',"skip-forward":'',slack:'',slash:'',sliders:'',smartphone:'',smile:'',speaker:'',square:'',star:'',"stop-circle":'',sun:'',sunrise:'',sunset:'',tablet:'',tag:'',target:'',terminal:'',thermometer:'',"thumbs-down":'',"thumbs-up":'',"toggle-left":'',"toggle-right":'',tool:'',"trash-2":'',trash:'',trello:'',"trending-down":'',"trending-up":'',triangle:'',truck:'',tv:'',twitch:'',twitter:'',type:'',umbrella:'',underline:'',unlock:'',"upload-cloud":'',upload:'',"user-check":'',"user-minus":'',"user-plus":'',"user-x":'',user:'',users:'',"video-off":'',video:'',voicemail:'',"volume-1":'',"volume-2":'',"volume-x":'',volume:'',watch:'',"wifi-off":'',wifi:'',wind:'',"x-circle":'',"x-octagon":'',"x-square":'',x:'',youtube:'',"zap-off":'',zap:'',"zoom-in":'',"zoom-out":''}},function(e){e.exports={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=Object.assign||function(e){for(var n=1;n2&&void 0!==arguments[2]?arguments[2]:[];!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),this.name=n,this.contents=i,this.tags=l,this.attrs=t({},o.default,{class:"feather feather-"+n})}return l(e,[{key:"toSvg",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return""+this.contents+""}},{key:"toString",value:function(){return this.contents}}]),e}();n.default=c},function(e,n,i){"use strict";var t=o(i(12)),l=o(i(39)),r=o(i(38));function o(e){return e&&e.__esModule?e:{default:e}}e.exports={icons:t.default,toSvg:l.default,replace:r.default}},function(e,n,i){e.exports=i(0)},function(e,n,i){var t=i(2)("iterator"),l=!1;try{var r=0,o={next:function(){return{done:!!r++}},return:function(){l=!0}};o[t]=function(){return this},Array.from(o,function(){throw 2})}catch(e){}e.exports=function(e,n){if(!n&&!l)return!1;var i=!1;try{var r={};r[t]=function(){return{next:function(){return{done:i=!0}}}},e(r)}catch(e){}return i}},function(e,n,i){var t=i(30),l=i(2)("toStringTag"),r="Arguments"==t(function(){return arguments}());e.exports=function(e){var n,i,o;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(i=function(e,n){try{return e[n]}catch(e){}}(n=Object(e),l))?i:r?t(n):"Object"==(o=t(n))&&"function"==typeof n.callee?"Arguments":o}},function(e,n,i){var t=i(47),l=i(9),r=i(2)("iterator");e.exports=function(e){if(void 0!=e)return e[r]||e["@@iterator"]||l[t(e)]}},function(e,n,i){"use strict";var t=i(18),l=i(7),r=i(10);e.exports=function(e,n,i){var o=t(n);o in e?l.f(e,o,r(0,i)):e[o]=i}},function(e,n,i){var t=i(2),l=i(9),r=t("iterator"),o=Array.prototype;e.exports=function(e){return void 0!==e&&(l.Array===e||o[r]===e)}},function(e,n,i){var t=i(3);e.exports=function(e,n,i,l){try{return l?n(t(i)[0],i[1]):n(i)}catch(n){var r=e.return;throw void 0!==r&&t(r.call(e)),n}}},function(e,n){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},function(e,n,i){var t=i(52);e.exports=function(e,n,i){if(t(e),void 0===n)return e;switch(i){case 0:return function(){return e.call(n)};case 1:return function(i){return e.call(n,i)};case 2:return function(i,t){return e.call(n,i,t)};case 3:return function(i,t,l){return e.call(n,i,t,l)}}return function(){return e.apply(n,arguments)}}},function(e,n,i){"use strict";var t=i(53),l=i(24),r=i(51),o=i(50),a=i(27),c=i(49),p=i(48);e.exports=function(e){var n,i,y,h,x=l(e),s="function"==typeof this?this:Array,u=arguments.length,d=u>1?arguments[1]:void 0,f=void 0!==d,g=0,v=p(x);if(f&&(d=t(d,u>2?arguments[2]:void 0,2)),void 0==v||s==Array&&o(v))for(i=new s(n=a(x.length));n>g;g++)c(i,g,f?d(x[g],g):x[g]);else for(h=v.call(x),i=new s;!(y=h.next()).done;g++)c(i,g,f?r(h,d,[y.value,g],!0):y.value);return i.length=g,i}},function(e,n,i){var t=i(32),l=i(54);t({target:"Array",stat:!0,forced:!i(46)(function(e){Array.from(e)})},{from:l})},function(e,n,i){var t=i(6),l=i(3);e.exports=function(e,n){if(l(e),!t(n)&&null!==n)throw TypeError("Can't set "+String(n)+" as a prototype")}},function(e,n,i){var t=i(56);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,n=!1,i={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(i,[]),n=i instanceof Array}catch(e){}return function(i,l){return t(i,l),n?e.call(i,l):i.__proto__=l,i}}():void 0)},function(e,n,i){var t=i(0).document;e.exports=t&&t.documentElement},function(e,n,i){var t=i(28),l=i(13);e.exports=Object.keys||function(e){return t(e,l)}},function(e,n,i){var t=i(8),l=i(7),r=i(3),o=i(59);e.exports=t?Object.defineProperties:function(e,n){r(e);for(var i,t=o(n),a=t.length,c=0;a>c;)l.f(e,i=t[c++],n[i]);return e}},function(e,n,i){var t=i(3),l=i(60),r=i(13),o=i(15),a=i(58),c=i(34),p=i(16)("IE_PROTO"),y=function(){},h=function(){var e,n=c("iframe"),i=r.length;for(n.style.display="none",a.appendChild(n),n.src=String("javascript:"),(e=n.contentWindow.document).open(),e.write("