BIN
themes/Eclectic/exampleSite/assets/image/favicon.png
Normal file
After Width: | Height: | Size: 3.7 KiB |
1
themes/Eclectic/exampleSite/assets/image/favicon.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg enable-background="new 0 0 26.37 39.59" viewBox="0 0 26.37 39.59" xmlns="http://www.w3.org/2000/svg"><font horiz-adv-x="1000"><font-face font-family="PainterPERSONALUSEONLY" underline-position="-75" underline-thickness="50"/><missing-glyph horiz-adv-x="336"/><glyph d="M260 809C273 784 289 762 306 741 323 720 342 702 363 685 384 700 408 713 433 722 458 731 484 737 510 742 526 745 543 747 561 749 579 750 597 751 615 750 632 749 649 745 666 740 683 735 698 727 711 716 730 701 741 682 742 660 743 638 736 617 721 598 710 583 696 571 679 561 662 551 645 543 628 537 598 526 567 521 534 522 501 523 469 528 438 538 437 534 437 530 437 526 436 522 436 518 436 514 435 501 439 490 449 481l31 0C488 481 496 481 505 480 513 479 520 475 526 470 533 464 538 457 539 448 540 439 537 431 532 424 525 415 514 408 499 404 484 399 471 396 460 394 443 391 426 390 409 392 392 393 375 398 360 405 324 392 291 373 261 350 228 323 201 289 182 248 162 207 151 166 150 123 149 87 155 58 167 35 179 12 195-3 216-12 236-21 259-24 285-19 311-15 337-5 364 12 389 28 408 46 422 66 436 86 445 105 450 122 454 139 454 154 450 167 445 179 437 185 424 186 413 187 402 184 392 178 381 172 371 164 362 154 352 144 343 133 335 122 327 111 320 101 314 92 304 117 302 142 308 169 314 195 326 217 345 236 359 250 375 260 394 266 413 272 431 274 449 271 467 268 483 260 497 248 511 236 521 219 526 198 531 175 531 152 525 131 518 110 508 90 495 71 481 52 465 35 448 20 430 5 412-9 395-20 352-48 308-66 263-73 218-80 176-78 139-65 102-52 71-30 46 2 21 33 7 74 4 123 1 166 8 205 25 241 41 277 63 309 92 338 120 366 153 390 190 410 227 430 264 446 302 457 287 482 280 509 281 539 282 569 291 597 306 623 292 640 280 658 271 678 262 698 256 720 253 743 252 746 252 751 252 758 251 765 251 772 252 779 252 786 253 792 254 798 255 804 257 808 260 809M675 697C658 702 641 704 624 701 606 698 589 692 572 684 555 676 539 666 524 655 509 644 495 632 484 620 505 612 527 606 550 601 573 596 595 595 616 596 631 597 647 600 664 605 681 610 694 619 703 632 712 646 714 659 707 672 700 684 690 692 675 697z" horiz-adv-x="604" unicode="E"/></font><switch><foreignObject height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1"/><g><path d="m1.77 9.45h26.37v26.6h-26.37z" fill="none"/><text font-family="'PainterPERSONALUSEONLY'" font-size="31" transform="translate(1.773 31.2701)">E</text></g></switch></svg>
|
After Width: | Height: | Size: 2.3 KiB |
1
themes/Eclectic/exampleSite/assets/image/logo.svg
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
themes/Eclectic/exampleSite/assets/theme.jpg
Normal file
After Width: | Height: | Size: 43 KiB |
45
themes/Eclectic/exampleSite/config/_default/config.toml
Normal file
@@ -0,0 +1,45 @@
|
||||
theme = "eclectic"
|
||||
|
||||
enableInlineShortcodes = true
|
||||
footnoteReturnLinkContents = "^"
|
||||
|
||||
# Output format JSON for the home page to enable search
|
||||
[outputs]
|
||||
home = [
|
||||
"html",
|
||||
"rss",
|
||||
"json"
|
||||
]
|
||||
|
||||
# The theme has a special support for series.
|
||||
# Specifically if series are present and a page has series
|
||||
# The related pages under the page come from the same series
|
||||
# With the right ordering (one before two after). If that series
|
||||
# Does not have enough posts, the related pages from Hugo are used.
|
||||
[taxonomies]
|
||||
category = "categories"
|
||||
tag = "tags"
|
||||
series = "series"
|
||||
|
||||
# Privacy config for Hugo's internal templates
|
||||
# Not specific to eclectic.
|
||||
[privacy]
|
||||
|
||||
[privacy.vimeo]
|
||||
disabled = false
|
||||
simple = true
|
||||
|
||||
[privacy.twitter]
|
||||
disabled = false
|
||||
enableDNT = true
|
||||
simple = true
|
||||
disableInlineCSS = true
|
||||
|
||||
[privacy.instagram]
|
||||
disabled = false
|
||||
simple = true
|
||||
|
||||
[privacy.youtube]
|
||||
disabled = false
|
||||
privacyEnhanced = true
|
||||
|
27
themes/Eclectic/exampleSite/config/_default/params.toml
Normal file
@@ -0,0 +1,27 @@
|
||||
# Theme specific parameters
|
||||
# All these parameters are optional.
|
||||
|
||||
# NOTE: The theme reads certain files from specified locations. All files are optional but good to have.
|
||||
# | File | Purpose |
|
||||
# |------------------------------------------------------ | ------------------------------------------------- |
|
||||
# | assets/image/logo.(svg| png) | Website Logo. Use PNG logo if auto dark |
|
||||
# | | color switch for logo is not desired |
|
||||
# | assets/image/favicon.svg | Icon in SVG format |
|
||||
# | assets/image/favicon.png | Icon in PNG format |
|
||||
# |------------------------------------------------------ | ------------------------------------------------- |
|
||||
|
||||
|
||||
# Specify text in the copyright section. Supports Markdown content.
|
||||
# Can use special variable `{now}` which is replaced with the current year via JavaScript (A common use case in copyright)
|
||||
copyright = "© 2016-{now} [Atishay Jain](https://atishay.me). All rights reserved."
|
||||
# Theme color for the website. Can be any RGB color. It is a responsibility of the website creator to ensure contrast.
|
||||
color = "#FF8822"
|
||||
|
||||
# Automatically switches to the dark mode based on the OS/Browser settings
|
||||
checksDarkMode = true
|
||||
# Show color picker to switch color themes.
|
||||
colorPickerEnabled = true
|
||||
# Combinations to show in the color picker.
|
||||
colorVariations = [ {name = "violet", color = "8800D3"}, {name = "red", color = "FF0000"}]
|
||||
# Github link. Shows the github corner at the top right which links to the github website.
|
||||
github = "https://github.com/atishay/eclectic-hugo-theme"
|
4
themes/Eclectic/exampleSite/content/_index.md
Executable file
@@ -0,0 +1,4 @@
|
||||
+++
|
||||
author = "Hugo Authors"
|
||||
+++
|
||||
|
28
themes/Eclectic/exampleSite/content/about.md
Executable file
@@ -0,0 +1,28 @@
|
||||
+++
|
||||
title = "About"
|
||||
description = "Hugo, the world’s fastest framework for building websites"
|
||||
date = "2019-02-28"
|
||||
aliases = ["about-us","about-hugo","contact"]
|
||||
author = "Hugo Authors"
|
||||
+++
|
||||
|
||||
Written in Go, Hugo is an open source static site generator available under the [Apache Licence 2.0.](https://github.com/gohugoio/hugo/blob/master/LICENSE) Hugo supports TOML, YAML and JSON data file types, Markdown and HTML content files and uses shortcodes to add rich content. Other notable features are taxonomies, multilingual mode, image processing, custom output formats, HTML/CSS/JS minification and support for Sass SCSS workflows.
|
||||
|
||||
Hugo makes use of a variety of open source projects including:
|
||||
|
||||
* https://github.com/russross/blackfriday
|
||||
* https://github.com/alecthomas/chroma
|
||||
* https://github.com/muesli/smartcrop
|
||||
* https://github.com/spf13/cobra
|
||||
* https://github.com/spf13/viper
|
||||
|
||||
Hugo is ideal for blogs, corporate websites, creative portfolios, online magazines, single page applications or even a website with thousands of pages.
|
||||
|
||||
Hugo is for people who want to hand code their own website without worrying about setting up complicated runtimes, dependencies and databases.
|
||||
|
||||
Websites built with Hugo are extremelly fast, secure and can be deployed anywhere including, AWS, GitHub Pages, Heroku, Netlify and any other hosting provider.
|
||||
|
||||
Learn more and contribute on [GitHub](https://github.com/gohugoio).
|
||||
|
||||
|
||||
|
6
themes/Eclectic/exampleSite/content/posts/_index.md
Executable file
@@ -0,0 +1,6 @@
|
||||
+++
|
||||
aliases = ["posts","articles","blog","showcase","docs"]
|
||||
title = "Posts"
|
||||
author = "Hugo Authors"
|
||||
tags = ["index"]
|
||||
+++
|
47
themes/Eclectic/exampleSite/content/posts/emoji-support.md
Executable file
@@ -0,0 +1,47 @@
|
||||
+++
|
||||
author = "Hugo Authors"
|
||||
title = "Emoji Support"
|
||||
date = "2019-03-05"
|
||||
description = "Guide to emoji usage in Hugo"
|
||||
tags = [
|
||||
"emoji",
|
||||
]
|
||||
+++
|
||||
|
||||
Emoji can be enabled in a Hugo project in a number of ways.
|
||||
<!--more-->
|
||||
The [`emojify`](https://gohugo.io/functions/emojify/) function can be called directly in templates or [Inline Shortcodes](https://gohugo.io/templates/shortcode-templates/#inline-shortcodes).
|
||||
|
||||
To enable emoji globally, set `enableEmoji` to `true` in your site’s [configuration](https://gohugo.io/getting-started/configuration/) and then you can type emoji shorthand codes directly in content files; e.g.
|
||||
|
||||
|
||||
<p><span class="nowrap"><span class="emojify">🙈</span> <code>:see_no_evil:</code></span> <span class="nowrap"><span class="emojify">🙉</span> <code>:hear_no_evil:</code></span> <span class="nowrap"><span class="emojify">🙊</span> <code>:speak_no_evil:</code></span></p>
|
||||
<br>
|
||||
|
||||
The [Emoji cheat sheet](http://www.emoji-cheat-sheet.com/) is a useful reference for emoji shorthand codes.
|
||||
|
||||
***
|
||||
|
||||
**N.B.** The above steps enable Unicode Standard emoji characters and sequences in Hugo, however the rendering of these glyphs depends on the browser and the platform. To style the emoji you can either use a third party emoji font or a font stack; e.g.
|
||||
|
||||
{{< highlight html >}}
|
||||
.emoji {
|
||||
font-family: Apple Color Emoji,Segoe UI Emoji,NotoColorEmoji,Segoe UI Symbol,Android Emoji,EmojiSymbols;
|
||||
}
|
||||
{{< /highlight >}}
|
||||
|
||||
{{< css.inline >}}
|
||||
<style>
|
||||
.emojify {
|
||||
font-family: Apple Color Emoji,Segoe UI Emoji,NotoColorEmoji,Segoe UI Symbol,Android Emoji,EmojiSymbols;
|
||||
font-size: 2rem;
|
||||
vertical-align: middle;
|
||||
}
|
||||
@media screen and (max-width:650px) {
|
||||
.nowrap {
|
||||
display: block;
|
||||
margin: 25px 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
{{< /css.inline >}}
|
147
themes/Eclectic/exampleSite/content/posts/markdown-syntax.md
Executable file
@@ -0,0 +1,147 @@
|
||||
+++
|
||||
author = "Hugo Authors"
|
||||
title = "Markdown Syntax Guide"
|
||||
date = "2019-03-11"
|
||||
description = "Sample article showcasing basic Markdown syntax and formatting for HTML elements."
|
||||
tags = [
|
||||
"markdown",
|
||||
"css",
|
||||
"html",
|
||||
"themes",
|
||||
]
|
||||
categories = [
|
||||
"themes",
|
||||
"syntax",
|
||||
]
|
||||
series = ["Themes Guide"]
|
||||
aliases = ["migrate-from-jekyl"]
|
||||
+++
|
||||
|
||||
This article offers a sample of basic Markdown syntax that can be used in Hugo content files, also it shows whether basic HTML elements are decorated with CSS in a Hugo theme.
|
||||
<!--more-->
|
||||
|
||||
## Headings
|
||||
|
||||
The following HTML `<h1>`—`<h6>` elements represent six levels of section headings. `<h1>` is the highest section level while `<h6>` is the lowest.
|
||||
|
||||
# H1
|
||||
## H2
|
||||
### H3
|
||||
#### H4
|
||||
##### H5
|
||||
###### H6
|
||||
|
||||
## Paragraph
|
||||
|
||||
Xerum, quo qui aut unt expliquam qui dolut labo. Aque venitatiusda cum, voluptionse latur sitiae dolessi aut parist aut dollo enim qui voluptate ma dolestendit peritin re plis aut quas inctum laceat est volestemque commosa as cus endigna tectur, offic to cor sequas etum rerum idem sintibus eiur? Quianimin porecus evelectur, cum que nis nust voloribus ratem aut omnimi, sitatur? Quiatem. Nam, omnis sum am facea corem alique molestrunt et eos evelece arcillit ut aut eos eos nus, sin conecerem erum fuga. Ri oditatquam, ad quibus unda veliamenimin cusam et facea ipsamus es exerum sitate dolores editium rerore eost, temped molorro ratiae volorro te reribus dolorer sperchicium faceata tiustia prat.
|
||||
|
||||
Itatur? Quiatae cullecum rem ent aut odis in re eossequodi nonsequ idebis ne sapicia is sinveli squiatum, core et que aut hariosam ex eat.
|
||||
|
||||
## Blockquotes
|
||||
|
||||
The blockquote element represents content that is quoted from another source, optionally with a citation which must be within a `footer` or `cite` element, and optionally with in-line changes such as annotations and abbreviations.
|
||||
|
||||
#### Blockquote without attribution
|
||||
|
||||
> Tiam, ad mint andaepu dandae nostion secatur sequo quae.
|
||||
> **Note** that you can use *Markdown syntax* within a blockquote.
|
||||
|
||||
#### Blockquote with attribution
|
||||
|
||||
> Don't communicate by sharing memory, share memory by communicating.</p>
|
||||
> — <cite>Rob Pike[^1]</cite>
|
||||
|
||||
|
||||
[^1]: The above quote is excerpted from Rob Pike's [talk](https://www.youtube.com/watch?v=PAAkCSZUG1c) during Gopherfest, November 18, 2015.
|
||||
|
||||
## Tables
|
||||
|
||||
Tables aren't part of the core Markdown spec, but Hugo supports supports them out-of-the-box.
|
||||
|
||||
Name | Age
|
||||
--------|------
|
||||
Bob | 27
|
||||
Alice | 23
|
||||
|
||||
#### Inline Markdown within tables
|
||||
|
||||
| Inline | Markdown | In | Table |
|
||||
| ---------- | --------- | ----------------- | ---------- |
|
||||
| *italics* | **bold** | ~~strikethrough~~ | `code` |
|
||||
|
||||
## Code Blocks
|
||||
|
||||
#### Code block with backticks
|
||||
|
||||
```
|
||||
html
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Example HTML5 Document</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Test</p>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
#### Code block indented with four spaces
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Example HTML5 Document</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Test</p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
#### Code block with Hugo's internal highlight shortcode
|
||||
{{< highlight html >}}
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Example HTML5 Document</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Test</p>
|
||||
</body>
|
||||
</html>
|
||||
{{< /highlight >}}
|
||||
|
||||
## List Types
|
||||
|
||||
#### Ordered List
|
||||
|
||||
1. First item
|
||||
2. Second item
|
||||
3. Third item
|
||||
|
||||
#### Unordered List
|
||||
|
||||
* List item
|
||||
* Another item
|
||||
* And another item
|
||||
|
||||
#### Nested list
|
||||
|
||||
* Item
|
||||
1. First Sub-item
|
||||
2. Second Sub-item
|
||||
|
||||
## Other Elements — abbr, sub, sup, kbd, mark
|
||||
|
||||
<abbr title="Graphics Interchange Format">GIF</abbr> is a bitmap image format.
|
||||
|
||||
H<sub>2</sub>O
|
||||
|
||||
X<sup>n</sup> + Y<sup>n</sup> = Z<sup>n</sup>
|
||||
|
||||
Press <kbd><kbd>CTRL</kbd>+<kbd>ALT</kbd>+<kbd>Delete</kbd></kbd> to end the session.
|
||||
|
||||
Most <mark>salamanders</mark> are nocturnal, and hunt for insects, worms, and other small creatures.
|
||||
|
46
themes/Eclectic/exampleSite/content/posts/math-typesetting.mmark
Executable file
@@ -0,0 +1,46 @@
|
||||
---
|
||||
author: Hugo Authors
|
||||
title: Math Typesetting
|
||||
date: 2019-03-08
|
||||
description: A brief guide to setup KaTeX
|
||||
markup: mmark
|
||||
math: true
|
||||
---
|
||||
|
||||
Mathematical notation in a Hugo project can be enabled by using third party JavaScript libraries.
|
||||
<!--more-->
|
||||
|
||||
In this example we will be using [KaTeX](https://katex.org/)
|
||||
|
||||
- Create a partial under `/layouts/partials/math.html`
|
||||
- Within this partial reference the [Auto-render Extension](https://katex.org/docs/autorender.html) or host these scripts locally.
|
||||
- Include the partial in your templates like so:
|
||||
|
||||
```
|
||||
{{ if or .Params.math .Site.Params.math }}
|
||||
{{ partial "math.html" . }}
|
||||
{{ end }}
|
||||
```
|
||||
- To enable KaTex globally set the parameter `math` to `true` in a project's configuration
|
||||
- To enable KaTex on a per page basis include the parameter `math: true` in content files.
|
||||
|
||||
**Note:** Use the online reference of [Supported TeX Functions](https://katex.org/docs/supported.html)
|
||||
{{< math.inline >}}
|
||||
{{ if or .Page.Params.math .Site.Params.math }}
|
||||
<!-- KaTeX -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/katex.min.css" integrity="sha384-dbVIfZGuN1Yq7/1Ocstc1lUEm+AT+/rCkibIcC/OmWo5f0EA48Vf8CytHzGrSwbQ" crossorigin="anonymous">
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/katex.min.js" integrity="sha384-2BKqo+exmr9su6dir+qCw08N2ZKRucY4PrGQPPWU1A7FtlCGjmEGFqXCv5nyM5Ij" crossorigin="anonymous"></script>
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/contrib/auto-render.min.js" integrity="sha384-kWPLUVMOks5AQFrykwIup5lo0m3iMkkHrD0uJ4H5cjeGihAutqP0yW0J6dpFiVkI" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script>
|
||||
{{ end }}
|
||||
{{</ math.inline >}}
|
||||
|
||||
### Examples
|
||||
|
||||
Inline math: $$ \varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887… $$
|
||||
|
||||
Block math:
|
||||
|
||||
$$
|
||||
\varphi = 1+\frac{1} {1+\frac{1} {1+\frac{1} {1+\cdots} } }
|
||||
$$
|
||||
|
58
themes/Eclectic/exampleSite/content/posts/placeholder-text.md
Executable file
@@ -0,0 +1,58 @@
|
||||
+++
|
||||
author = "Hugo Authors"
|
||||
title = "Placeholder Text"
|
||||
date = "2019-03-09"
|
||||
description = "Lorem Ipsum Dolor Si Amet"
|
||||
tags = [
|
||||
"markdown",
|
||||
"text",
|
||||
]
|
||||
+++
|
||||
|
||||
Lorem est tota propiore conpellat pectoribus de
|
||||
pectora summo. <!--more-->Redit teque digerit hominumque toris verebor lumina non cervice
|
||||
subde tollit usus habet Arctonque, furores quas nec ferunt. Quoque montibus nunc
|
||||
caluere tempus inhospita parcite confusaque translucet patri vestro qui optatis
|
||||
lumine cognoscere flos nubis! Fronde ipsamque patulos Dryopen deorum.
|
||||
|
||||
1. Exierant elisi ambit vivere dedere
|
||||
2. Duce pollice
|
||||
3. Eris modo
|
||||
4. Spargitque ferrea quos palude
|
||||
|
||||
Rursus nulli murmur; hastile inridet ut ab gravi sententia! Nomine potitus
|
||||
silentia flumen, sustinet placuit petis in dilapsa erat sunt. Atria
|
||||
tractus malis.
|
||||
|
||||
1. Comas hunc haec pietate fetum procerum dixit
|
||||
2. Post torum vates letum Tiresia
|
||||
3. Flumen querellas
|
||||
4. Arcanaque montibus omnes
|
||||
5. Quidem et
|
||||
|
||||
# Vagus elidunt
|
||||
|
||||
<svg class="canon" xmlns="http://www.w3.org/2000/svg" overflow="visible" viewBox="0 0 496 373" height="373" width="496"><g fill="none"><path stroke="#000" stroke-width=".75" d="M.599 372.348L495.263 1.206M.312.633l494.95 370.853M.312 372.633L247.643.92M248.502.92l246.76 370.566M330.828 123.869V1.134M330.396 1.134L165.104 124.515"></path><path stroke="#ED1C24" stroke-width=".75" d="M275.73 41.616h166.224v249.05H275.73zM54.478 41.616h166.225v249.052H54.478z"></path><path stroke="#000" stroke-width=".75" d="M.479.375h495v372h-495zM247.979.875v372"></path><ellipse cx="498.729" cy="177.625" rx=".75" ry="1.25"></ellipse><ellipse cx="247.229" cy="377.375" rx=".75" ry="1.25"></ellipse></g></svg>
|
||||
|
||||
[The Van de Graaf Canon](https://en.wikipedia.org/wiki/Canons_of_page_construction#Van_de_Graaf_canon)
|
||||
|
||||
## Mane refeci capiebant unda mulcebat
|
||||
|
||||
Victa caducifer, malo vulnere contra
|
||||
dicere aurato, ludit regale, voca! Retorsit colit est profanae esse virescere
|
||||
furit nec; iaculi matertera et visa est, viribus. Divesque creatis, tecta novat collumque vulnus est, parvas. **Faces illo pepulere** tempus adest. Tendit flamma, ab opes virum sustinet, sidus sequendo urbis.
|
||||
|
||||
Iubar proles corpore raptos vero auctor imperium; sed et huic: manus caeli
|
||||
Lelegas tu lux. Verbis obstitit intus oblectamina fixis linguisque ausus sperare
|
||||
Echionides cornuaque tenent clausit possit. Omnia putatur. Praeteritae refert
|
||||
ausus; ferebant e primus lora nutat, vici quae mea ipse. Et iter nil spectatae
|
||||
vulnus haerentia iuste et exercebat, sui et.
|
||||
|
||||
Eurytus Hector, materna ipsumque ut Politen, nec, nate, ignari, vernum cohaesit sequitur. Vel **mitis temploque** vocatus, inque alis, *oculos nomen* non silvis corpore coniunx ne displicet illa. Crescunt non unus, vidit visa quantum inmiti flumina mortis facto sic: undique a alios vincula sunt iactata abdita! Suspenderat ego fuit tendit: luna, ante urbem
|
||||
Propoetides **parte**.
|
||||
|
||||
{{< css.inline >}}
|
||||
<style>
|
||||
.canon { background: white; width: 100%; height: auto;}
|
||||
</style>
|
||||
{{< /css.inline >}}
|
42
themes/Eclectic/exampleSite/content/posts/rich-content.md
Executable file
@@ -0,0 +1,42 @@
|
||||
+++
|
||||
author = "Hugo Authors"
|
||||
title = "Rich Content"
|
||||
date = "2019-03-10"
|
||||
description = "A brief description of Hugo Shortcodes"
|
||||
tags = [
|
||||
"shortcodes",
|
||||
"privacy",
|
||||
]
|
||||
+++
|
||||
|
||||
Hugo ships with several [Built-in Shortcodes](https://gohugo.io/content-management/shortcodes/#use-hugo-s-built-in-shortcodes) for rich content, along with a [Privacy Config](https://gohugo.io/about/hugo-and-gdpr/) and a set of Simple Shortcodes that enable static and no-JS versions of various social media embeds.
|
||||
<!--more-->
|
||||
---
|
||||
|
||||
## Instagram Simple Shortcode
|
||||
|
||||
{{< instagram_simple BGvuInzyFAe hidecaption >}}
|
||||
|
||||
<br>
|
||||
|
||||
---
|
||||
|
||||
## YouTube Privacy Enhanced Shortcode
|
||||
|
||||
{{< youtube ZJthWmvUzzc >}}
|
||||
|
||||
<br>
|
||||
|
||||
---
|
||||
|
||||
## Twitter Simple Shortcode
|
||||
|
||||
{{< twitter_simple 1085870671291310081 >}}
|
||||
|
||||
<br>
|
||||
|
||||
---
|
||||
|
||||
## Vimeo Simple Shortcode
|
||||
|
||||
{{< vimeo_simple 48912912 >}}
|
23
themes/Eclectic/exampleSite/content/sketch/lines-from-center.html
Executable file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
title: "Lines from center"
|
||||
date: 2019-03-04T22:15:42-03:00
|
||||
description: "this is a p5js sketch"
|
||||
---
|
||||
|
||||
<div id="sketch"></div>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.3/p5.min.js"></script>
|
||||
<script>
|
||||
var sketch = document.getElementById('sketch')
|
||||
function setup() {
|
||||
var canvas = createCanvas(sketch.offsetWidth, windowHeight)
|
||||
canvas.parent('#sketch')
|
||||
}
|
||||
|
||||
function draw() {
|
||||
line(width/2, height/2, mouseX, mouseY)
|
||||
}
|
||||
|
||||
function windowResized() {
|
||||
resizeCanvas(sketch.offsetWidth, windowHeight);
|
||||
}
|
||||
</script>
|
@@ -0,0 +1 @@
|
||||
{"Target":"css/index.min.827f6c55f724c64d4d5bc1013bc33b1008a0f14ae36ecc339ae751f08a994609c675ca6452345beef7107015cdee4f3d57cb8ad4799acd7c7e4ca8f757a40e70.css","MediaType":"text/css","Data":{"Integrity":"sha512-gn9sVfckxk1NW8EBO8M7EAig8UrjbswzmudR8IqZRgnGdcpkUjRb7vcQcBXN7k89V8uK1HmazXx+TKj3V6QOcA=="}}
|
@@ -0,0 +1,56 @@
|
||||
(()=>{document.getElementsByTagName('html')[0].classList.remove('no-js');console.info(`%c Welcome to ${document.location.hostname}`,"padding:20px; font: 38px Impact, sans-serif; color: #ddd; text-shadow: 0 1px 1px #bbb,0 2px 0 #999, 0 3px 0 #888, 0 4px 0 #777, 0 5px 0 #666, 0 6px 0 #555, 0 7px 0 #444, 0 8px 0 #333, 0 9px 7px #302314;");console.info("If you find something cool and would like to learn more, please contact me using the contact page. Will love to hear from a fellow developer");function getAgoTime(value){if(!value){return "";}
|
||||
const d=new Date(value.trim());const now=new Date();const seconds=Math.round(Math.abs((now.getTime()-d.getTime())/1000));const minutes=Math.round(Math.abs(seconds/60));const hours=Math.round(Math.abs(minutes/60));const days=Math.round(Math.abs(hours/24));const months=Math.round(Math.abs(days/30.416));const years=Math.round(Math.abs(days/365));if(seconds<=45){return 'a few seconds ago';}else if(seconds<=90){return 'a minute ago';}else if(minutes<=45){return minutes+' minutes ago';}else if(minutes<=90){return 'an hour ago';}else if(hours<=22){return hours+' hours ago';}else if(hours<=36){return 'a day ago';}else if(days<=25){return days+' days ago';}else if(days<=45){return 'a month ago';}else if(days<=345){return months+' months ago';}else if(days<=545){return 'a year ago';}else{return years+' years ago';}}
|
||||
document.addEventListener("DOMContentLoaded",()=>{Array.from(document.getElementsByTagName('time')).forEach((x)=>{if(x.className==='now'){x.innerText=new Date().getFullYear();}else{x.innerText=getAgoTime(x.getAttribute('datetime'));}});});const consideredTop=200;const height=document.documentElement.clientHeight;let lastKnownScrollY=0;let currentScrollY=0;let ticking=false;let eleHeader=null;let eleCheckbox=null;let eleScroll=null;let eleSearch=null;let hitCount=0;const classes={pinned:'header-pin',unpinned:'header-unpin',};function onScroll(){currentScrollY=window.pageYOffset;requestTick();}
|
||||
function requestTick(){if(eleCheckbox.checked||eleSearch===document.activeElement){return;}
|
||||
if(!ticking){requestAnimationFrame(update);}
|
||||
ticking=true;}
|
||||
function update(){ticking=false;if(eleCheckbox.checked){return;}
|
||||
if(currentScrollY>2*height){if(!eleScroll.classList.contains('visible')){eleScroll.classList.add('visible');}}else{if(eleScroll.classList.contains('visible')){eleScroll.classList.remove('visible');}}
|
||||
if(hitCount>2){if(currentScrollY+height>=document.documentElement.scrollHeight||currentScrollY<consideredTop){pin();}else if(currentScrollY<lastKnownScrollY){pin();}else if(currentScrollY>lastKnownScrollY){unpin();}}
|
||||
lastKnownScrollY=currentScrollY;hitCount++;}
|
||||
function pin(){if(eleHeader.classList.contains(classes.unpinned)){eleHeader.classList.remove(classes.unpinned);eleHeader.classList.add(classes.pinned);eleScroll.classList.remove('unpin');}}
|
||||
function unpin(){if(eleHeader.classList.contains(classes.pinned)||!eleHeader.classList.contains(classes.unpinned)){eleHeader.classList.remove(classes.pinned);eleHeader.classList.add(classes.unpinned);eleScroll.classList.add('unpin');}}
|
||||
document.addEventListener("DOMContentLoaded",()=>{eleCheckbox=document.getElementsByClassName('hamburger')[0];eleSearch=document.querySelector('#searchbox input');eleHeader=document.getElementById('header');eleScroll=document.querySelector('.scroll-up');document.addEventListener('scroll',onScroll,false);});let color=window.localStorage.color||'#FF8822';function setColor(hex){color=hex;window.localStorage.color=color;document.documentElement.style.setProperty("--theme-color",hex);}
|
||||
document.querySelectorAll('.theme-choice').forEach(s=>{s.addEventListener('click',e=>{const color=e.target.getAttribute('data-color');setColor("#"+color);});});const colorSelector=document.querySelector('.custom-color');if(colorSelector){colorSelector.addEventListener('click',evt=>{evt.preventDefault();const x=document.createElement("input");x.setAttribute("type","color");x.value=color;x.click();x.addEventListener('input',()=>{setColor(x.value);})});}
|
||||
const checkbox=document.querySelector('#color-switch');if(checkbox){checkbox.checked=document.documentElement.classList.contains("dark");const handler=()=>{if(checkbox.checked){document.documentElement.classList.add("dark");}else{document.documentElement.classList.remove("dark");}
|
||||
window.localStorage.dark=checkbox.checked?"true":"false";};checkbox.addEventListener("change",handler);}
|
||||
class Search{constructor(){this.prepare().catch(()=>{});}
|
||||
get resultTemplate(){return `<div>
|
||||
<img src="data:image/svg+xml;utf8,<svg width='50' height='50' xmlns='http://www.w3.org/2000/svg'/>" width="50" height="50" intrinsicsize="100x100" alt="Result"/>
|
||||
<h2></h2>
|
||||
<div class="description"></div>
|
||||
<span>
|
||||
<svg width="12px" class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path fill="currentColor" d="M9 4V5H6 5V6 26v1H6 26h1V26 6 5H26 23V4H21V5H11V4H9zM7 7H9V8h2V7H21V8h2V7h2V9H7V7zm0 4H25V25H7V11zm6 2v2h2V13H13zm4 0v2h2V13H17zm4 0v2h2V13H21zM9 17v2h2V17H9zm4 0v2h2V17H13zm4 0v2h2V17H17zm4 0v2h2V17H21zM9 21v2h2V21H9zm4 0v2h2V21H13zm4 0v2h2V21H17z"/></svg>
|
||||
<time></time>
|
||||
<svg width="12px" class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path fill="currentColor" d="M7 4V6H9v4C9 12.542128 10.368674 14.77362 12.40625 16 10.368674 17.22638 9 19.457872 9 22v4H7v2H9 23h2V26H23V22C23 19.457872 21.631326 17.22638 19.59375 16 21.631326 14.77362 23 12.542128 23 10V6h2V4H7zm4 2H21v4C21 12.773666 18.773666 15 16 15 13.226334 15 11 12.773666 11 10V6zm1 2v2C12 12.209 13.791 14 16 14 18.209 14 20 12.209 20 10V8H12zm4 9C18.773666 17 21 19.226334 21 22v4H11V22C11 19.226334 13.226334 17 16 17z"/></svg>
|
||||
<span class="readingTime"></span>
|
||||
<svg width="12px" class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path fill="currentColor" d="M5 5V6 26v1H6 26h1V26 6 5H26 6 5zM7 7H25V25H7V7zm7.21875 2.28125-1.4375 1.4375L18.0625 16l-5.28125 5.28125 1.4375 1.4375 6-6L20.90625 16l-.6875-.71875-6-6z"/></svg>
|
||||
<span class="category"></span>
|
||||
</span>
|
||||
</div>`;}
|
||||
async prepare(){const response=await fetch('/index.json');const data=await response.json();if(data&&data.length>0){this.data=data;document.querySelector('#searchbox').classList.add('visible');this.input=document.querySelector('#searchbox input');this.input.addEventListener('focus',this.triggerResults.bind(this));this.input.addEventListener('input',this.triggerResults.bind(this));this.input.addEventListener('keyup',this.handleKeyPress.bind(this));}}
|
||||
triggerResults(){window.requestAnimationFrame(this.showSearchResults.bind(this));}
|
||||
createResultDivs(){let data='';for(var i=0;i<5;++i){data+=this.resultTemplate;}
|
||||
document.querySelector('#searchbox .results').innerHTML=data;const divs=Array.from(document.querySelectorAll("#searchbox .results>div"));divs.forEach(x=>{x.addEventListener('mousedown',this.handleClick,{passive:true});x.addEventListener('mouseover',()=>this.selected=x,{passive:true});});return divs;}
|
||||
handleClick(e){window.location=e.currentTarget.dataset['href'];}
|
||||
set selected(element){if(this._selected!==element){this._selected&&this._selected.classList.remove('selected');element.classList.add('selected');this._selected=element;}}
|
||||
get selected(){return this._selected;}
|
||||
handleKeyPress(key){const x=this.resultDivs.indexOf(this.selected);switch(key.code){case 'ArrowDown':if(this.resultDivs.length>x+1&&this.resultDivs[x+1].style.display!=='none'){this.selected=this.resultDivs[x+1];}
|
||||
break;case 'ArrowUp':if(x>0){this.selected=this.resultDivs[x-1];}
|
||||
break;case 'Escape':this.input.blur();break;case 'Enter':window.location=this.selected.dataset['href'];break;}}
|
||||
get indexedData(){return this.index=this.index||this.data.map(x=>{let index={};for(let y in x){index[y]=JSON.stringify(x[y]).toLowerCase()}
|
||||
x._index=index;return x;});}
|
||||
search(key){key=key.toLowerCase();const fields={'title':1,'description':0.3,'series':0.5,'category':0.5,'tags':0.5,'contents':0.1,'meta':0.1}
|
||||
let data=this.indexedData;let results=[];if(this.lastKnownResults){if(key.indexOf(this.lastKnownResults.key)===0){data=this.lastKnownResults.results;}}
|
||||
results=data.map(x=>({data:x,score:Object.keys(fields).map(y=>x._index[y].indexOf(key)!==-1?fields[y]:0).reduce((a,b)=>a+b)})).filter(x=>x.score>0).sort((a,b)=>b.score-a.score!==0?b.score-a.score:new Date(b.data.date)-new Date(a.data.date)).map(x=>x.data);this.lastKnownResults={key,results};return results;}
|
||||
showSearchResults(){this.resultDivs=this.resultDivs||this.createResultDivs();let results=[];if(this.input.value.length===0){results=this.data.sort((b,a)=>new Date(a.date).getTime()-new Date(b.date).getTime());}else{results=this.search(this.input.value);}
|
||||
this.resultDivs.forEach((div,index)=>{const result=results[index];if(index===0){this.selected=div;}
|
||||
if(!result){div.style.display="none";return;}
|
||||
const ago=getAgoTime(result.date);div.style.display="block";div.dataset['href']=result.permalink;div.querySelector('img').alt=result.title;div.querySelector('img').src=result.image;div.querySelector('h2').innerText=result.title;div.querySelector('time').innerText=ago.substr(0,ago.indexOf(" ago"));div.querySelector('time').datetime=result.date;div.querySelector('.description').innerText=result.description;div.querySelector('.readingTime').innerText=result.readingTime+'m';div.querySelector('.category').innerText=result.category;});}}
|
||||
const search=new Search();if('serviceWorker'in navigator&&window.location.pathname!=='/offline'){navigator.serviceWorker.register('/sw.min.js',{scope:'/'});}
|
||||
Array.from(document.querySelectorAll('a')).forEach((link)=>{let prefetchComplete=false;const prefetch=()=>{if(prefetchComplete){return;}
|
||||
prefetchComplete=true;if(link.href.includes('mailto')){return;}
|
||||
if(link.href.includes('http')&&new URL(link.href).host!==new URL(window.location.href).host){return;}
|
||||
if(link.href===window.location.href){return;}
|
||||
const loader=document.createElement("link");loader.rel="prefetch";loader.as="document";loader.type="text/html";loader.href=link.href;document.head.appendChild(loader);};link.addEventListener("mouseenter",prefetch,{passive:true});link.addEventListener("touchstart",prefetch,{passive:true});});if(window.innerWidth>=768){const observer=new IntersectionObserver((entries)=>{entries.forEach(x=>{if(x.isIntersecting&&!x.target.classList.contains('visible')){x.target.classList.add('visible');}
|
||||
if(x.target.classList.contains('visible')){observer.unobserve(x.target);}});});['.left-image','.meta.default .item','.item-icon-left .item','.meta.default','.max-2','.max-2 .item','.filter','.filter .item','.blog','.blog .item','footer .items','.contact','.more','.comments','.comments form','.item-icon-left','.full-width','.full-width .item'].forEach(s=>{document.querySelectorAll(s).forEach(x=>{const rect=x.getBoundingClientRect();if(rect.y<0){x.classList.add('visible');}else{observer.observe(x);}});});}else{const observer=new IntersectionObserver((entries)=>{entries.forEach(x=>{if(x.isIntersecting&&!x.target.classList.contains('hover')){x.target.classList.add('hover');}else if(!x.isIntersecting&&x.target.classList.contains('hover')){x.target.classList.remove('hover')}});},{rootMargin:"-20% 0px -70% 0px"});['p','li','.meta .content','.meta .item-cover','.item-icon','.main-icon','.banner-holder','.img-container','.tex','.i-tex','.post aside svg','.meta.carousel .item'].forEach(s=>{document.querySelectorAll(s).forEach(x=>{observer.observe(x);});});}})();
|
@@ -0,0 +1 @@
|
||||
{"Target":"index.min.2962e07fb68e8fb81384be06b73a954d1c085446ece5c15dd377cb50a87f0e073ced1b8a1b99588056b322d2366571435964fa8f3c0928064d54a337df09b8b0.js","MediaType":"application/javascript","Data":{"Integrity":"sha512-KWLgf7aOj7gThL4GtzqVTRwIVEbs5cFd03fLUKh/Dgc87RuKG5lYgFazItI2ZXFDWWT6jzwJKAZNVKM33wm4sA=="}}
|
@@ -0,0 +1,465 @@
|
||||
// Wrap in an IFFE.
|
||||
(() => {
|
||||
///////////////////////////////////////////
|
||||
// Remove the no-js class from the html tag that is meant for the noscript mode.
|
||||
///////////////////////////////////////////
|
||||
document.getElementsByTagName('html')[0].classList.remove('no-js');
|
||||
|
||||
///////////////////////////////////////////
|
||||
// Log for fellow developers.
|
||||
///////////////////////////////////////////
|
||||
console.info(`%c Welcome to ${document.location.hostname}`, "padding:20px; font: 38px Impact, sans-serif; color: #ddd; text-shadow: 0 1px 1px #bbb,0 2px 0 #999, 0 3px 0 #888, 0 4px 0 #777, 0 5px 0 #666, 0 6px 0 #555, 0 7px 0 #444, 0 8px 0 #333, 0 9px 7px #302314;");
|
||||
console.info("If you find something cool and would like to learn more, please contact me using the contact page. Will love to hear from a fellow developer");
|
||||
|
||||
///////////////////////////////////////////
|
||||
// Convert date to hours from now
|
||||
///////////////////////////////////////////
|
||||
function getAgoTime(value) {
|
||||
if (!value) { return ""; }
|
||||
const d = new Date(value.trim());
|
||||
const now = new Date();
|
||||
const seconds = Math.round(Math.abs((now.getTime() - d.getTime()) / 1000));
|
||||
const minutes = Math.round(Math.abs(seconds / 60));
|
||||
const hours = Math.round(Math.abs(minutes / 60));
|
||||
const days = Math.round(Math.abs(hours / 24));
|
||||
const months = Math.round(Math.abs(days / 30.416));
|
||||
const years = Math.round(Math.abs(days / 365));
|
||||
if (seconds <= 45) {
|
||||
return 'a few seconds ago';
|
||||
} else if (seconds <= 90) {
|
||||
return 'a minute ago';
|
||||
} else if (minutes <= 45) {
|
||||
return minutes + ' minutes ago';
|
||||
} else if (minutes <= 90) {
|
||||
return 'an hour ago';
|
||||
} else if (hours <= 22) {
|
||||
return hours + ' hours ago';
|
||||
} else if (hours <= 36) {
|
||||
return 'a day ago';
|
||||
} else if (days <= 25) {
|
||||
return days + ' days ago';
|
||||
} else if (days <= 45) {
|
||||
return 'a month ago';
|
||||
} else if (days <= 345) {
|
||||
return months + ' months ago';
|
||||
} else if (days <= 545) {
|
||||
return 'a year ago';
|
||||
} else { // (days > 545)
|
||||
return years + ' years ago';
|
||||
}
|
||||
}
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
Array.from(document.getElementsByTagName('time')).forEach((x) => {
|
||||
if (x.className === 'now') {
|
||||
x.innerText = new Date().getFullYear();
|
||||
} else {
|
||||
x.innerText = getAgoTime(x.getAttribute('datetime'));
|
||||
}
|
||||
// TODO: Attach event listener to update the string here.
|
||||
});
|
||||
});
|
||||
|
||||
///////////////////////////////////////////
|
||||
// Header
|
||||
///////////////////////////////////////////
|
||||
// Inspired by https://www.sysleaf.com/js-toggle-header-on-scroll/
|
||||
const consideredTop = 200;
|
||||
const height = document.documentElement.clientHeight;
|
||||
let lastKnownScrollY = 0;
|
||||
let currentScrollY = 0;
|
||||
let ticking = false;
|
||||
let eleHeader = null;
|
||||
let eleCheckbox = null;
|
||||
let eleScroll = null;
|
||||
let eleSearch = null;
|
||||
let hitCount = 0;
|
||||
const classes = {
|
||||
pinned: 'header-pin',
|
||||
unpinned: 'header-unpin',
|
||||
};
|
||||
function onScroll() {
|
||||
currentScrollY = window.pageYOffset;
|
||||
requestTick();
|
||||
}
|
||||
function requestTick() {
|
||||
if (eleCheckbox.checked || eleSearch === document.activeElement) {
|
||||
return;
|
||||
}
|
||||
if (!ticking) {
|
||||
requestAnimationFrame(update);
|
||||
}
|
||||
ticking = true;
|
||||
}
|
||||
function update() {
|
||||
ticking = false;
|
||||
if (eleCheckbox.checked) {
|
||||
return;
|
||||
}
|
||||
// Scroll to top hiding.
|
||||
if (currentScrollY > 2 * height) {
|
||||
if (!eleScroll.classList.contains('visible')) {
|
||||
eleScroll.classList.add('visible');
|
||||
}
|
||||
} else {
|
||||
if (eleScroll.classList.contains('visible')) {
|
||||
eleScroll.classList.remove('visible');
|
||||
}
|
||||
}
|
||||
// Header hiding
|
||||
// Ignore first 2 hits for safari reload in the center of the page
|
||||
// It is good enough with 2. First is the Js load,
|
||||
// Second is safari's scroll to position.
|
||||
if (hitCount > 2) {
|
||||
if (currentScrollY + height >= document.documentElement.scrollHeight || currentScrollY < consideredTop) {
|
||||
pin();
|
||||
} else if (currentScrollY < lastKnownScrollY) {
|
||||
pin();
|
||||
} else if (currentScrollY > lastKnownScrollY) {
|
||||
unpin();
|
||||
}
|
||||
}
|
||||
lastKnownScrollY = currentScrollY;
|
||||
hitCount++;
|
||||
}
|
||||
function pin() {
|
||||
if (eleHeader.classList.contains(classes.unpinned)) {
|
||||
eleHeader.classList.remove(classes.unpinned);
|
||||
eleHeader.classList.add(classes.pinned);
|
||||
eleScroll.classList.remove('unpin');
|
||||
}
|
||||
}
|
||||
function unpin() {
|
||||
if (eleHeader.classList.contains(classes.pinned) || !eleHeader.classList.contains(classes.unpinned)) {
|
||||
eleHeader.classList.remove(classes.pinned);
|
||||
eleHeader.classList.add(classes.unpinned);
|
||||
eleScroll.classList.add('unpin');
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
eleCheckbox = document.getElementsByClassName('hamburger')[0];
|
||||
eleSearch = document.querySelector('#searchbox input');
|
||||
eleHeader = document.getElementById('header');
|
||||
eleScroll = document.querySelector('.scroll-up');
|
||||
document.addEventListener('scroll', onScroll, false);
|
||||
});
|
||||
|
||||
///////////////////////////////////////////
|
||||
// Color Picker
|
||||
///////////////////////////////////////////
|
||||
let color = window.localStorage.color || '#FF8822';
|
||||
function setColor(hex) {
|
||||
color = hex;
|
||||
window.localStorage.color = color;
|
||||
document.documentElement.style.setProperty("--theme-color", hex);
|
||||
}
|
||||
document.querySelectorAll('.theme-choice').forEach(s => {
|
||||
s.addEventListener('click', e => {
|
||||
const color = e.target.getAttribute('data-color');
|
||||
setColor("#" + color);
|
||||
});
|
||||
});
|
||||
|
||||
const colorSelector = document.querySelector('.custom-color');
|
||||
if (colorSelector) {
|
||||
colorSelector.addEventListener('click', evt => {
|
||||
evt.preventDefault();
|
||||
const x = document.createElement("input");
|
||||
x.setAttribute("type", "color");
|
||||
x.value = color;
|
||||
x.click();
|
||||
x.addEventListener('input', () => {
|
||||
setColor(x.value);
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
const checkbox = document.querySelector('#color-switch');
|
||||
if (checkbox) {
|
||||
checkbox.checked = document.documentElement.classList.contains("dark");
|
||||
const handler = () => {
|
||||
if (checkbox.checked) {
|
||||
document.documentElement.classList.add("dark");
|
||||
} else {
|
||||
document.documentElement.classList.remove("dark");
|
||||
}
|
||||
window.localStorage.dark = checkbox.checked ? "true" : "false";
|
||||
};
|
||||
checkbox.addEventListener("change", handler);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////
|
||||
// Search
|
||||
///////////////////////////////////////////
|
||||
//
|
||||
|
||||
class Search {
|
||||
constructor() {
|
||||
// Ignore errors loading search.
|
||||
this.prepare().catch(() => { });
|
||||
}
|
||||
|
||||
get resultTemplate() {
|
||||
return `<div>
|
||||
<img src="data:image/svg+xml;utf8,<svg width='50' height='50' xmlns='http://www.w3.org/2000/svg'/>" width="50" height="50" intrinsicsize="100x100" alt="Result"/>
|
||||
<h2></h2>
|
||||
<div class="description"></div>
|
||||
<span>
|
||||
<svg width="12px" class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path fill="currentColor" d="M9 4V5H6 5V6 26v1H6 26h1V26 6 5H26 23V4H21V5H11V4H9zM7 7H9V8h2V7H21V8h2V7h2V9H7V7zm0 4H25V25H7V11zm6 2v2h2V13H13zm4 0v2h2V13H17zm4 0v2h2V13H21zM9 17v2h2V17H9zm4 0v2h2V17H13zm4 0v2h2V17H17zm4 0v2h2V17H21zM9 21v2h2V21H9zm4 0v2h2V21H13zm4 0v2h2V21H17z"/></svg>
|
||||
<time></time>
|
||||
<svg width="12px" class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path fill="currentColor" d="M7 4V6H9v4C9 12.542128 10.368674 14.77362 12.40625 16 10.368674 17.22638 9 19.457872 9 22v4H7v2H9 23h2V26H23V22C23 19.457872 21.631326 17.22638 19.59375 16 21.631326 14.77362 23 12.542128 23 10V6h2V4H7zm4 2H21v4C21 12.773666 18.773666 15 16 15 13.226334 15 11 12.773666 11 10V6zm1 2v2C12 12.209 13.791 14 16 14 18.209 14 20 12.209 20 10V8H12zm4 9C18.773666 17 21 19.226334 21 22v4H11V22C11 19.226334 13.226334 17 16 17z"/></svg>
|
||||
<span class="readingTime"></span>
|
||||
<svg width="12px" class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path fill="currentColor" d="M5 5V6 26v1H6 26h1V26 6 5H26 6 5zM7 7H25V25H7V7zm7.21875 2.28125-1.4375 1.4375L18.0625 16l-5.28125 5.28125 1.4375 1.4375 6-6L20.90625 16l-.6875-.71875-6-6z"/></svg>
|
||||
<span class="category"></span>
|
||||
</span>
|
||||
</div>`;
|
||||
}
|
||||
|
||||
async prepare() {
|
||||
const response = await fetch('/index.json');
|
||||
const data = await response.json();
|
||||
if (data && data.length > 0) {
|
||||
this.data = data;
|
||||
document.querySelector('#searchbox').classList.add('visible');
|
||||
this.input = document.querySelector('#searchbox input');
|
||||
this.input.addEventListener('focus', this.triggerResults.bind(this));
|
||||
this.input.addEventListener('input', this.triggerResults.bind(this));
|
||||
this.input.addEventListener('keyup', this.handleKeyPress.bind(this));
|
||||
}
|
||||
}
|
||||
|
||||
triggerResults() {
|
||||
// We are delaying calculations but that's not a big performance issues.
|
||||
// If you type too fast on a slow browser, we won't get an animation frame.
|
||||
window.requestAnimationFrame(this.showSearchResults.bind(this));
|
||||
}
|
||||
|
||||
createResultDivs() {
|
||||
let data = '';
|
||||
for (var i = 0; i < 5; ++i) {
|
||||
data += this.resultTemplate;
|
||||
}
|
||||
document.querySelector('#searchbox .results').innerHTML = data;
|
||||
const divs = Array.from(document.querySelectorAll("#searchbox .results>div"));
|
||||
divs.forEach(x => {
|
||||
x.addEventListener('mousedown', this.handleClick, { passive: true });
|
||||
x.addEventListener('mouseover', () => this.selected = x, { passive: true });
|
||||
});
|
||||
return divs;
|
||||
}
|
||||
|
||||
handleClick(e) {
|
||||
window.location = e.currentTarget.dataset['href'];
|
||||
}
|
||||
|
||||
set selected(element) {
|
||||
if (this._selected !== element) {
|
||||
this._selected && this._selected.classList.remove('selected');
|
||||
element.classList.add('selected');
|
||||
this._selected = element;
|
||||
}
|
||||
}
|
||||
|
||||
get selected() {
|
||||
return this._selected;
|
||||
}
|
||||
|
||||
handleKeyPress(key) {
|
||||
const x = this.resultDivs.indexOf(this.selected);
|
||||
switch (key.code) {
|
||||
case 'ArrowDown':
|
||||
if (this.resultDivs.length > x + 1 && this.resultDivs[x + 1].style.display !== 'none') {
|
||||
this.selected = this.resultDivs[x + 1];
|
||||
}
|
||||
break;
|
||||
case 'ArrowUp':
|
||||
if (x > 0) {
|
||||
this.selected = this.resultDivs[x - 1];
|
||||
}
|
||||
break;
|
||||
case 'Escape':
|
||||
this.input.blur();
|
||||
break;
|
||||
case 'Enter':
|
||||
window.location = this.selected.dataset['href'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
get indexedData() {
|
||||
return this.index = this.index || this.data.map(x => {
|
||||
let index = {};
|
||||
for (let y in x) {
|
||||
index[y] = JSON.stringify(x[y]).toLowerCase()
|
||||
}
|
||||
x._index = index;
|
||||
return x;
|
||||
});
|
||||
}
|
||||
|
||||
search(key) {
|
||||
key = key.toLowerCase();
|
||||
const fields = {
|
||||
'title': 1,
|
||||
'description': 0.3,
|
||||
'series': 0.5,
|
||||
'category': 0.5,
|
||||
'tags': 0.5,
|
||||
'contents': 0.1,
|
||||
'meta': 0.1
|
||||
}
|
||||
let data = this.indexedData;
|
||||
let results = [];
|
||||
if (this.lastKnownResults) {
|
||||
if (key.indexOf(this.lastKnownResults.key) === 0) {
|
||||
data = this.lastKnownResults.results;
|
||||
}
|
||||
}
|
||||
|
||||
// Search algorithm
|
||||
results = data.map(x => ({
|
||||
data: x,
|
||||
score: Object.keys(fields)
|
||||
.map(y => x._index[y].indexOf(key) !== -1 ? fields[y] : 0)
|
||||
.reduce((a, b) => a + b)
|
||||
}))
|
||||
.filter(x => x.score > 0)
|
||||
.sort((a, b) =>
|
||||
b.score - a.score !== 0 ? b.score - a.score : new Date(b.data.date) - new Date(a.data.date)
|
||||
)
|
||||
.map(x => x.data);
|
||||
|
||||
this.lastKnownResults = {
|
||||
key,
|
||||
results
|
||||
};
|
||||
return results;
|
||||
}
|
||||
|
||||
showSearchResults() {
|
||||
this.resultDivs = this.resultDivs || this.createResultDivs();
|
||||
|
||||
let results = [];
|
||||
if (this.input.value.length === 0) {
|
||||
results = this.data.sort((b, a) => new Date(a.date).getTime() - new Date(b.date).getTime());
|
||||
} else {
|
||||
results = this.search(this.input.value);
|
||||
}
|
||||
this.resultDivs.forEach((div, index) => {
|
||||
const result = results[index];
|
||||
if (index === 0) {
|
||||
this.selected = div;
|
||||
}
|
||||
if (!result) {
|
||||
div.style.display = "none";
|
||||
return;
|
||||
}
|
||||
const ago = getAgoTime(result.date);
|
||||
div.style.display = "block";
|
||||
div.dataset['href'] = result.permalink;
|
||||
div.querySelector('img').alt = result.title;
|
||||
div.querySelector('img').src = result.image;
|
||||
div.querySelector('h2').innerText = result.title;
|
||||
div.querySelector('time').innerText = ago.substr(0, ago.indexOf(" ago"));
|
||||
div.querySelector('time').datetime = result.date;
|
||||
div.querySelector('.description').innerText = result.description;
|
||||
div.querySelector('.readingTime').innerText = result.readingTime + 'm';
|
||||
div.querySelector('.category').innerText = result.category;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const search = new Search();
|
||||
//
|
||||
///////////////////////////////////////////
|
||||
// Service Worker
|
||||
///////////////////////////////////////////
|
||||
/**/
|
||||
if ('serviceWorker' in navigator && window.location.pathname !== '/offline') {
|
||||
navigator.serviceWorker.register('/sw.min.js', { scope: '/' });
|
||||
}
|
||||
/**/
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
// Link Pre-fetching to improve perceptible load times.
|
||||
////////////////////////////////////////////////////////
|
||||
Array.from(document.querySelectorAll('a')).forEach((link) => {
|
||||
let prefetchComplete = false;
|
||||
|
||||
const prefetch = () => {
|
||||
if (prefetchComplete) {
|
||||
return;
|
||||
}
|
||||
prefetchComplete = true;
|
||||
if (link.href.includes('mailto')) {
|
||||
return;
|
||||
}
|
||||
if (link.href.includes('http') && new URL(link.href).host !== new URL(window.location.href).host) {
|
||||
return;
|
||||
}
|
||||
if (link.href === window.location.href) {
|
||||
return;
|
||||
}
|
||||
const loader = document.createElement("link");
|
||||
loader.rel = "prefetch";
|
||||
loader.as = "document";
|
||||
loader.type = "text/html";
|
||||
loader.href = link.href;
|
||||
document.head.appendChild(loader);
|
||||
};
|
||||
link.addEventListener("mouseenter", prefetch, { passive: true });
|
||||
link.addEventListener("touchstart", prefetch, { passive: true });
|
||||
});
|
||||
|
||||
///////////////////////////////////////////
|
||||
// Intersection Observer for animations
|
||||
///////////////////////////////////////////
|
||||
// Scroll animations for iPad and bigger
|
||||
if (window.innerWidth >= 768) {
|
||||
const observer = new IntersectionObserver((entries) => {
|
||||
entries.forEach(x => {
|
||||
if (x.isIntersecting && !x.target.classList.contains('visible')) {
|
||||
x.target.classList.add('visible');
|
||||
}
|
||||
if (x.target.classList.contains('visible')) {
|
||||
observer.unobserve(x.target);
|
||||
}
|
||||
});
|
||||
});
|
||||
['.left-image', '.meta.default .item', '.item-icon-left .item', '.meta.default', '.max-2', '.max-2 .item', '.filter', '.filter .item',
|
||||
'.blog', '.blog .item', 'footer .items', '.contact', '.more', '.comments', '.comments form',
|
||||
'.item-icon-left', '.full-width', '.full-width .item'].forEach(s => {
|
||||
|
||||
document.querySelectorAll(s).forEach(x => {
|
||||
const rect = x.getBoundingClientRect();
|
||||
// All elements above the scroll are visible by default.
|
||||
// We only animate and scroll down.
|
||||
if (rect.y < 0) {
|
||||
x.classList.add('visible');
|
||||
} else {
|
||||
observer.observe(x);
|
||||
}
|
||||
});
|
||||
});
|
||||
} else {
|
||||
// For mobile the hover animations
|
||||
const observer = new IntersectionObserver((entries) => {
|
||||
entries.forEach(x => {
|
||||
if (x.isIntersecting && !x.target.classList.contains('hover')) {
|
||||
x.target.classList.add('hover');
|
||||
} else if (!x.isIntersecting && x.target.classList.contains('hover')) {
|
||||
x.target.classList.remove('hover')
|
||||
}
|
||||
});
|
||||
}, {
|
||||
rootMargin: "-20% 0px -70% 0px"
|
||||
});
|
||||
['p', 'li', '.meta .content', '.meta .item-cover', '.item-icon', '.main-icon', '.banner-holder', '.img-container', '.tex', '.i-tex', '.post aside svg', '.meta.carousel .item'].forEach(s => {
|
||||
document.querySelectorAll(s).forEach(x => {
|
||||
observer.observe(x);
|
||||
});
|
||||
});
|
||||
}
|
||||
})();
|
||||
|
||||
|
@@ -0,0 +1 @@
|
||||
{"Target":"js/main.js","MediaType":"application/javascript","Data":{}}
|
@@ -0,0 +1,6 @@
|
||||
(function(){const staticCacheName='static';const version='v1::';const OFFLINE_URL='/off/';const urls=['/','/manifest.json','/css/index.min.827f6c55f724c64d4d5bc1013bc33b1008a0f14ae36ecc339ae751f08a994609c675ca6452345beef7107015cdee4f3d57cb8ad4799acd7c7e4ca8f757a40e70.css','/index.min.2962e07fb68e8fb81384be06b73a954d1c085446ece5c15dd377cb50a87f0e073ced1b8a1b99588056b322d2366571435964fa8f3c0928064d54a337df09b8b0.js','/image/background_hu5fa5007403ed47f8e70c21b28ee4cec6_92766_1400x787_fill_q75_box_smart1.jpg','/image/background-dark_huacd336bfb7f5597695f9c32d4115a2aa_1561823_1400x787_fill_q75_box_smart1.jpg',OFFLINE_URL,'/image/logo.min.svg','/index.json'];return caches.open(version+staticCacheName).then((cache)=>cache.addAll(urls)).catch(e=>{console.log("Error = ",e);console.log(e.stack);});}
|
||||
self.addEventListener('install',(event)=>event.waitUntil(updateStaticCache()));self.addEventListener('activate',function(event){event.waitUntil(caches.keys().then(function(keys){return Promise.all(keys.filter((key)=>key.indexOf(version)!==0).map((key)=>caches.delete(key)));}));});function offline(){return caches.match(OFFLINE_URL).then(x=>x.text()).then(y=>new Response(y,{"status":200,headers:{'Content-Type':'text/html'}}));}
|
||||
self.addEventListener('fetch',function(event){const request=event.request;if(request.method!=='GET'){return event.respondWith(fetch(request).catch(offline));}
|
||||
if(request.headers.get('Accept').indexOf('text/html')!==-1){event.respondWith(fetch(request).then(function(response){const copy=response.clone();caches.open(version+staticCacheName).then(function(cache){cache.put(request,copy);});return response;}).catch(function(){return caches.match(request).then(function(response){return response||offline()})}));return;}
|
||||
event.respondWith(caches.match(request).then(function(response){return response||fetch(request).catch(function(){if(request.url.match(/\.(jpe?g|png|gif|svg)$/)){return new Response('<svg role="img" aria-labelledby="offline-title" viewBox="0 0 400 225" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice"><title id="offline-title">Offline</title><path fill="rgba(145,145,145,0.5)" d="M0 0h400v225H0z" /><text fill="rgba(0,0,0,0.33)" font-family="Helvetica Neue,Arial,sans-serif" font-size="27" text-anchor="middle" x="200" y="113" dominant-baseline="central">Offline</text></svg>',{headers:{'Content-Type':'image/svg+xml'}});}
|
||||
return new Response('');});}));});})();
|
@@ -0,0 +1 @@
|
||||
{"Target":"sw.min.js","MediaType":"application/javascript","Data":{}}
|
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "",
|
||||
"short_name": "",
|
||||
|
||||
"icons": [{
|
||||
"src": "/image/favicon_hud91e23785cf70a843bfd0b30f5ef61e6_3819_192x192_resize_box_2.png",
|
||||
"type": "image/png",
|
||||
"sizes": "192x192"
|
||||
},
|
||||
{
|
||||
"src": "/image/favicon_hud91e23785cf70a843bfd0b30f5ef61e6_3819_512x512_resize_box_2.png",
|
||||
"type": "image/png",
|
||||
"sizes": "512x512"
|
||||
}
|
||||
],
|
||||
"start_url": "/",
|
||||
"scope": "/",
|
||||
"theme_color": "#FF8822",
|
||||
"background_color": "#FF8822",
|
||||
"display": "standalone"
|
||||
}
|
@@ -0,0 +1 @@
|
||||
{"Target":"manifest.json","MediaType":"application/json","Data":{}}
|
@@ -0,0 +1 @@
|
||||
{"Target":"main.css","MediaType":"text/css","Data":{}}
|
@@ -0,0 +1 @@
|
||||
<svg enable-background="new 0 0 26.37 39.59" viewBox="0 0 26.37 39.59" xmlns="http://www.w3.org/2000/svg"><font horiz-adv-x="1e3"><font-face font-family="PainterPERSONALUSEONLY" underline-position="-75" underline-thickness="50"/><missing-glyph horiz-adv-x="336"/><glyph d="M260 809c13-25 29-47 46-68 17-21 36-39 57-56 21 15 45 28 70 37 25 9 51 15 77 20 16 3 33 5 51 7 18 1 36 2 54 1 17-1 34-5 51-10 17-5 32-13 45-24 19-15 30-34 31-56 1-22-6-43-21-62-11-15-25-27-42-37-17-10-34-18-51-24-30-11-61-16-94-15-33 1-65 6-96 16-1-4-1-8-1-12-1-4-1-8-1-12-1-13 3-24 13-33h31c8 0 16 0 25-1 8-1 15-5 21-10 7-6 12-13 13-22 1-9-2-17-7-24-7-9-18-16-33-20-15-5-28-8-39-10-17-3-34-4-51-2-17 1-34 6-49 13-36-13-69-32-99-55-33-27-60-61-79-102-20-41-31-82-32-125-1-36 5-65 17-88 12-23 28-38 49-47 20-9 43-12 69-7 26 4 52 14 79 31 25 16 44 34 58 54 14 20 23 39 28 56 4 17 4 32 0 45-5 12-13 18-26 19-11 1-22-2-32-8-11-6-21-14-30-24-10-10-19-21-27-32-8-11-15-21-21-30-10 25-12 50-6 77 6 26 18 48 37 67 14 14 30 24 49 30 19 6 37 8 55 5 18-3 34-11 48-23 14-12 24-29 29-50 5-23 5-46-1-67-7-21-17-41-30-60-14-19-30-36-47-51-18-15-36-29-53-40-43-28-87-46-132-53-45-7-87-5-124 8C102-52 71-30 46 2 21 33 7 74 4 123c-3 43 4 82 21 118 16 36 38 68 67 97 28 28 61 52 98 72 37 20 74 36 112 47-15 25-22 52-21 82 1 30 10 58 25 84-14 17-26 35-35 55-9 20-15 42-18 65-1 3-1 8-1 15-1 7-1 14 0 21 0 7 1 13 2 19 1 6 3 10 6 11M675 697c-17 5-34 7-51 4-18-3-35-9-52-17-17-8-33-18-48-29-15-11-29-23-40-35 21-8 43-14 66-19 23-5 45-6 66-5 15 1 31 4 48 9 17 5 30 14 39 27 9 14 11 27 4 40-7 12-17 20-32 25z" horiz-adv-x="604" unicode="E"/></font><switch><foreignObject height="1" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/" width="1"/><g><path d="m1.77 9.45h26.37v26.6h-26.37z" fill="none"/><text font-family="'PainterPERSONALUSEONLY'" font-size="31" transform="translate(1.773 31.2701)">E</text></g></switch></svg>
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1 @@
|
||||
{"Target":"image/favicon.min.svg","MediaType":"image/svg+xml","Data":{}}
|
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 25 28"><g class="svg-menu-toggle"><path class="bar" d="M20.945 8.75c0 .69-.5 1.25-1.117 1.25H3.141c-.617.0-1.118-.56-1.118-1.25v0c0-.69.5-1.25 1.118-1.25h16.688C20.445 7.5 20.945 8.06 20.945 8.75v0z"/><path class="bar" d="M20.923 15c0 .689-.501 1.25-1.118 1.25H3.118C2.5 16.25 2 15.689 2 15v0c0-.689.5-1.25 1.118-1.25h16.687C20.422 13.75 20.923 14.311 20.923 15v0z"/><path class="bar" d="M20.969 21.25c0 .689-.5 1.25-1.117 1.25H3.164c-.617.0-1.118-.561-1.118-1.25v0c0-.689.5-1.25 1.118-1.25h16.688C20.469 20 20.969 20.561 20.969 21.25v0z"/></g></svg>
|
After Width: | Height: | Size: 669 B |
@@ -0,0 +1 @@
|
||||
{"Target":"image/hamburger.min.svg","MediaType":"image/svg+xml","Data":{}}
|
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M16 6.59375l-.71875.6875-12.5 12.5 1.4375 1.4375L16 9.4375 27.78125 21.21875l1.4375-1.4375-12.5-12.5L16 6.59375z"/></svg>
|
After Width: | Height: | Size: 190 B |
@@ -0,0 +1 @@
|
||||
{"Target":"image/line-awesome/fa-angle-up.min.svg","MediaType":"image/svg+xml","Data":{}}
|
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M9 4V5H6 5V6 26v1H6 26h1V26 6 5H26 23V4H21V5H11V4H9zM7 7H9V8h2V7H21V8h2V7h2V9H7V7zm0 4H25V25H7V11zm6 2v2h2V13H13zm4 0v2h2V13H17zm4 0v2h2V13H21zM9 17v2h2V17H9zm4 0v2h2V17H13zm4 0v2h2V17H17zm4 0v2h2V17H21zM9 21v2h2V21H9zm4 0v2h2V21H13zm4 0v2h2V21H17z"/></svg>
|
After Width: | Height: | Size: 326 B |
@@ -0,0 +1 @@
|
||||
{"Target":"image/line-awesome/fa-calendar.min.svg","MediaType":"image/svg+xml","Data":{}}
|
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M5 5V6 26v1H6 26h1V26 6 5H26 6 5zM7 7H25V25H7V7zm7.21875 2.28125-1.4375 1.4375L18.0625 16l-5.28125 5.28125 1.4375 1.4375 6-6L20.90625 16l-.6875-.71875-6-6z"/></svg>
|
After Width: | Height: | Size: 233 B |
@@ -0,0 +1 @@
|
||||
{"Target":"image/line-awesome/fa-caret-square-o-right.min.svg","MediaType":"image/svg+xml","Data":{}}
|
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M13.1875 3l-.15625.8125-.59375 2.96875C11.485754 7.1553109 10.623396 7.6844912 9.84375 8.3125l-2.90625-1-.78125-.25L5.75 7.78125l-2 3.4375-.40625.71875.59375.53125 2.25 1.96875C6.1039547 14.950261 6 15.459106 6 16 6 16.540894 6.1039547 17.049739 6.1875 17.5625l-2.25 1.96875-.59375.53125.40625.71875 2 3.4375.40625.71875.78125-.25 2.90625-1C10.62363 24.315572 11.486197 24.844746 12.4375 25.21875l.59375 2.96875L13.1875 29H14h4 .8125l.15625-.8125.59375-2.96875C20.514246 24.844689 21.376604 24.315509 22.15625 23.6875l2.90625 1 .78125.25.40625-.71875 2-3.4375.40625-.71875-.59375-.53125-2.25-1.96875C25.896017 17.049492 26 16.540894 26 16 26 15.459106 25.896045 14.950261 25.8125 14.4375l2.25-1.96875.59375-.53125-.40625-.71875-2-3.4375-.40625-.71875-.78125.25-2.90625 1C21.37637 7.684428 20.513803 7.1552541 19.5625 6.78125L18.96875 3.8125 18.8125 3H18 14h-.8125zm1.625 2h2.375l.5 2.59375.125.59375.5625.1875C19.512308 8.729911 20.54376 9.3303666 21.40625 10.125l.4375.40625.5625-.1875 2.53125-.875L26.125 11.5l-2 1.78125-.46875.375.15625.59375C23.940067 14.820459 24 15.402764 24 16 24 16.597236 23.94016 17.178228 23.8125 17.75l-.125.59375.4375.375 2 1.78125-1.1875 2.03125-2.53125-.875-.5625-.1875-.4375.40625C20.543507 22.669866 19.513125 23.27011 18.375 23.625l-.5625.1875-.125.59375L17.1875 27h-2.375l-.5-2.59375-.125-.59375-.5625-.1875C12.487692 23.270089 11.45624 22.669633 10.59375 21.875l-.4375-.40625-.5625.1875-2.53125.875L5.875 20.5l2-1.78125.46875-.375L8.1875 17.75C8.0599327 17.179541 8 16.597236 8 16 8 15.402764 8.0599327 14.820459 8.1875 14.25l.15625-.59375-.46875-.375-2-1.78125L7.0625 9.46875l2.53125.875.5625.1875.4375-.40625C11.456493 9.3301336 12.486875 8.7298898 13.625 8.375l.5625-.1875.125-.59375L14.8125 5zM16 11C13.250421 11 11 13.250421 11 16 11 18.749579 13.250421 21 16 21 18.749579 21 21 18.749579 21 16 21 13.250421 18.749579 11 16 11zm0 2C17.668699 13 19 14.331301 19 16 19 17.668699 17.668699 19 16 19 14.331301 19 13 17.668699 13 16 13 14.331301 14.331301 13 16 13z"/></svg>
|
After Width: | Height: | Size: 2.0 KiB |
@@ -0,0 +1 @@
|
||||
{"Target":"image/line-awesome/fa-gear.min.svg","MediaType":"image/svg+xml","Data":{}}
|
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M7 4V6H9v4C9 12.542128 10.368674 14.77362 12.40625 16 10.368674 17.22638 9 19.457872 9 22v4H7v2H9 23h2V26H23V22C23 19.457872 21.631326 17.22638 19.59375 16 21.631326 14.77362 23 12.542128 23 10V6h2V4H7zm4 2H21v4C21 12.773666 18.773666 15 16 15 13.226334 15 11 12.773666 11 10V6zm1 2v2C12 12.209 13.791 14 16 14 18.209 14 20 12.209 20 10V8H12zm4 9C18.773666 17 21 19.226334 21 22v4H11V22C11 19.226334 13.226334 17 16 17z"/></svg>
|
After Width: | Height: | Size: 497 B |
@@ -0,0 +1 @@
|
||||
{"Target":"image/line-awesome/fa-hourglass-1.min.svg","MediaType":"image/svg+xml","Data":{}}
|
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M19 3C13.488997 3 9 7.4889972 9 13 9 15.39499 9.8389508 17.588106 11.25 19.3125L3.28125 27.28125l1.4375 1.4375L12.6875 20.75C14.411894 22.161049 16.60501 23 19 23 24.511003 23 29 18.511003 29 13 29 7.4889972 24.511003 3 19 3zm0 2C23.430123 5 27 8.5698774 27 13 27 17.430123 23.430123 21 19 21 14.569877 21 11 17.430123 11 13 11 8.5698774 14.569877 5 19 5z"/></svg>
|
After Width: | Height: | Size: 433 B |
@@ -0,0 +1 @@
|
||||
{"Target":"image/line-awesome/fa-search.min.svg","MediaType":"image/svg+xml","Data":{}}
|
After Width: | Height: | Size: 12 KiB |
@@ -0,0 +1 @@
|
||||
{"Target":"image/logo.min.svg","MediaType":"image/svg+xml","Data":{}}
|
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 250 250" width="100" height="100" aria-hidden="true"><path d="M0 0 115 115h15l12 27L250 250V0z"/><path d="M128.3 109C113.8 99.7 119 89.6 119 89.6 122 82.7 120.5 78.6 120.5 78.6 119.2 72 123.4 76.3 123.4 76.3 127.3 80.9 125.5 87.3 125.5 87.3 122.9 97.6 130.6 101.9 134.4 103.2" fill="currentcolor" class="octo-arm"/><path d="M115 115C114.9 115.1 118.7 116.5 119.8 115.4L133.7 101.6C136.9 99.2 139.9 98.4 142.2 98.6 133.8 88 127.5 74.4 143.8 58 148.5 53.4 154 51.2 159.7 51 160.3 49.4 163.2 43.6 171.4 40.1 171.4 40.1 176.1 42.5 178.8 56.2 183.1 58.6 187.2 61.8 190.9 65.4 194.5 69 197.7 73.2 200.1 77.6 213.8 80.2 216.3 84.9 216.3 84.9 212.7 93.1 206.9 96 205.4 96.6 205.1 102.4 203 107.8 198.3 112.5 181.9 128.9 168.3 122.5 157.7 114.1 157.9 116.9 156.7 120.9 152.7 124.9L141 136.5C139.8 137.7 141.6 141.9 141.8 141.8z" fill="currentcolor" class="octo-body"/></svg>
|
After Width: | Height: | Size: 883 B |
@@ -0,0 +1 @@
|
||||
{"Target":"image/octocat.min.svg","MediaType":"image/svg+xml","Data":{}}
|
After Width: | Height: | Size: 123 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 4.9 KiB |
1
themes/Eclectic/exampleSite/themes/eclectic
Symbolic link
@@ -0,0 +1 @@
|
||||
../../
|