diff options
Diffstat (limited to 'template')
| -rwxr-xr-x | template/_includes.html | 3 | ||||
| -rwxr-xr-x | template/_meta.html | 5 | ||||
| -rwxr-xr-x | template/_navigation.html | 4 | ||||
| -rw-r--r-- | template/_search.html | 6 | ||||
| -rwxr-xr-x | template/index.html | 90 | ||||
| -rwxr-xr-x | template/post.html | 116 | ||||
| -rwxr-xr-x | template/script.js | 97 | ||||
| -rwxr-xr-x | template/style.css | 103 |
8 files changed, 107 insertions, 317 deletions
diff --git a/template/_includes.html b/template/_includes.html index 120f8f2..6615ff2 100755 --- a/template/_includes.html +++ b/template/_includes.html | |||
| @@ -1,8 +1,7 @@ | |||
| 1 | <!-- user code --> | 1 | <!-- user code --> |
| 2 | 2 | ||
| 3 | <script src="/assets/general/elasticlunr.min.js"></script> | ||
| 4 | <script src="/script.js?v=2022-07-22-02" async></script> | 3 | <script src="/script.js?v=2022-07-22-02" async></script> |
| 5 | 4 | ||
| 6 | <!-- Fathom - beautiful, simple website analytics --> | 5 | <!-- Fathom - beautiful, simple website analytics --> |
| 7 | <script src="https://cdn.usefathom.com/script.js" data-site="XHQARKXP" defer></script> | 6 | <script src="https://cdn.usefathom.com/script.js" data-site="XHQARKXP" defer></script> |
| 8 | <!-- / Fathom --> | 7 | <!-- / Fathom --> \ No newline at end of file |
diff --git a/template/_meta.html b/template/_meta.html index e759a9a..ff0dc0f 100755 --- a/template/_meta.html +++ b/template/_meta.html | |||
| @@ -11,5 +11,6 @@ | |||
| 11 | <link rel="alternate" type="application/feed+json" href="/feed.json"> | 11 | <link rel="alternate" type="application/feed+json" href="/feed.json"> |
| 12 | <link rel="alternate" type="application/rss+xml" href="/yapyap.xml" title="YapYap"> | 12 | <link rel="alternate" type="application/rss+xml" href="/yapyap.xml" title="YapYap"> |
| 13 | 13 | ||
| 14 | <!--<link rel="icon" href="/assets/general/favicon.png?v=2021-12-07-1" type="image/png">--> | 14 | <link |
| 15 | <link href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL69vf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv76+/8LBwQkAAAAAAAAAAAAAAAC+vb3/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL+9vf/Bv78JAAAAAAAAAAAAAAAAu7q6/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7ubr/vr29CAAAAAAAAAAAy8nJAZ6foP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnqGj/6GipAoAAAAAHLjU/xcXHf/BwsL/I8XY/yPK3v8XGiD/IbjL/yPF2f8XGiD/Fxkf/yLF2f8gnK3/Fxog/62ztv8fwNf/FRcd/x271v8mz93/GRsi/xkXHf8p097/GiIp/xobIv8p0t3/KdPe/xocIv8fYmr/KNPe/xoZH/8aHCL/J87c/xy81/8VFxz/IsPZ/8zS0/8XGiD/Ir/R/yPH2/8XGiD/Fxkf/yPH2/8dd4T/GBog/yPJ3f8jyNr/uru9/xcUGv8cudb/EhITDKi5vRKlvMP/RUpOERwcHRAdOj4QHTk8EBwdHRAdNTgQHTo/EBwcHRAcHB0QSGduEKW4vf+koqQfHzg+EBqz0ewSFRv7EyMr/xq51vsTERb7ExUb+xq41fsau9j7ExUb+xiPp/sZudb7ExUb+xMVG/sZuNX/GKvI/BIUGfMdvdn/IrfL/xcaIP8n1eb/J9Dh/xkcIf8ZGR7/J8/f/xxCSv8ZGyH/J9Dg/ybQ4P8ZHCL/FSQs/yPK3/8UExj/GE1b/ybS5P8ZGB7/Ghwj/ynW5P8p2Ob/Ghwi/yWrtv8p1eH/Ghwi/xocIv8p1uT/J8XT/xkcIv8m1un/Hb7d/xUYH/8hzOr/HtHu/xcaIf8XGB//I8vi/xgxOv8XGSD/I8rg/yPK4P8XGiD/GUFL/yPP6f8SERj/Fhkh/x3A4f8AAAAAJ2f9/ydr//8mZPH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlYu38J2v//ydo/f8AAAAAAAAAAAd8/fkFqf//Iob8sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMY39awWr//8FfP3/AAAAAAAAAAAFm/7/SfD//wR+/f8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOB/f9B7v//BaX+/wAAAAAAAAAAQ878SAyZ/v9n1v4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADu9v8DDJb+/z3N/XgAAAAA3/sAAN/7AADf+wAA3/sAAAAAAAAAAAAAAAAAAN/7AAAAAAAAAAAAAAAAAAAAAAAAj/EAAI/5AACP8QAA3/sAAA==" rel="icon" type="image/x-icon" /> | 15 | href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL69vf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv76+/8LBwQkAAAAAAAAAAAAAAAC+vb3/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL+9vf/Bv78JAAAAAAAAAAAAAAAAu7q6/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7ubr/vr29CAAAAAAAAAAAy8nJAZ6foP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnqGj/6GipAoAAAAAHLjU/xcXHf/BwsL/I8XY/yPK3v8XGiD/IbjL/yPF2f8XGiD/Fxkf/yLF2f8gnK3/Fxog/62ztv8fwNf/FRcd/x271v8mz93/GRsi/xkXHf8p097/GiIp/xobIv8p0t3/KdPe/xocIv8fYmr/KNPe/xoZH/8aHCL/J87c/xy81/8VFxz/IsPZ/8zS0/8XGiD/Ir/R/yPH2/8XGiD/Fxkf/yPH2/8dd4T/GBog/yPJ3f8jyNr/uru9/xcUGv8cudb/EhITDKi5vRKlvMP/RUpOERwcHRAdOj4QHTk8EBwdHRAdNTgQHTo/EBwcHRAcHB0QSGduEKW4vf+koqQfHzg+EBqz0ewSFRv7EyMr/xq51vsTERb7ExUb+xq41fsau9j7ExUb+xiPp/sZudb7ExUb+xMVG/sZuNX/GKvI/BIUGfMdvdn/IrfL/xcaIP8n1eb/J9Dh/xkcIf8ZGR7/J8/f/xxCSv8ZGyH/J9Dg/ybQ4P8ZHCL/FSQs/yPK3/8UExj/GE1b/ybS5P8ZGB7/Ghwj/ynW5P8p2Ob/Ghwi/yWrtv8p1eH/Ghwi/xocIv8p1uT/J8XT/xkcIv8m1un/Hb7d/xUYH/8hzOr/HtHu/xcaIf8XGB//I8vi/xgxOv8XGSD/I8rg/yPK4P8XGiD/GUFL/yPP6f8SERj/Fhkh/x3A4f8AAAAAJ2f9/ydr//8mZPH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlYu38J2v//ydo/f8AAAAAAAAAAAd8/fkFqf//Iob8sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMY39awWr//8FfP3/AAAAAAAAAAAFm/7/SfD//wR+/f8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOB/f9B7v//BaX+/wAAAAAAAAAAQ878SAyZ/v9n1v4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADu9v8DDJb+/z3N/XgAAAAA3/sAAN/7AADf+wAA3/sAAAAAAAAAAAAAAAAAAN/7AAAAAAAAAAAAAAAAAAAAAAAAj/EAAI/5AACP8QAA3/sAAA==" |
| 16 | rel="icon" type="image/x-icon" /> \ No newline at end of file | ||
diff --git a/template/_navigation.html b/template/_navigation.html index 45a2a9e..8fef331 100755 --- a/template/_navigation.html +++ b/template/_navigation.html | |||
| @@ -13,8 +13,6 @@ | |||
| 13 | <a href="/books.html">Books</a> | 13 | <a href="/books.html">Books</a> |
| 14 | 14 | ||
| 15 | <a href="/feed.rss" itemprop="url">RSS</a> | 15 | <a href="/feed.rss" itemprop="url">RSS</a> |
| 16 | |||
| 17 | <a class="cursor search-trigger">Search</a> | ||
| 18 | </nav> | 16 | </nav> |
| 19 | </header> | 17 | </header> |
| 20 | </div> | 18 | </div> \ No newline at end of file |
diff --git a/template/_search.html b/template/_search.html deleted file mode 100644 index 997b35c..0000000 --- a/template/_search.html +++ /dev/null | |||
| @@ -1,6 +0,0 @@ | |||
| 1 | <div class="blur hidden"></div> | ||
| 2 | |||
| 3 | <section class="search-form hidden"> | ||
| 4 | <input type="search" placeholder="Search ..."> | ||
| 5 | <ul></ul> | ||
| 6 | </section> | ||
diff --git a/template/index.html b/template/index.html index cb334e1..9196940 100755 --- a/template/index.html +++ b/template/index.html | |||
| @@ -1,64 +1,62 @@ | |||
| 1 | <!doctype html> | 1 | <!doctype html> |
| 2 | <html lang="en"> | 2 | <html lang="en"> |
| 3 | 3 | ||
| 4 | <head> | 4 | <head> |
| 5 | {{template "_meta.html"}} | 5 | {{template "_meta.html"}} |
| 6 | 6 | ||
| 7 | <title>{{.Title}}</title> | 7 | <title>{{.Title}}</title> |
| 8 | <meta name="description" content="{{.Description}}"> | 8 | <meta name="description" content="{{.Description}}"> |
| 9 | <meta property="og:title" content="{{.Title}}"> | 9 | <meta property="og:title" content="{{.Title}}"> |
| 10 | <meta property="og:description" content="{{.Description}}"> | 10 | <meta property="og:description" content="{{.Description}}"> |
| 11 | </head> | 11 | </head> |
| 12 | 12 | ||
| 13 | <body> | 13 | <body> |
| 14 | 14 | ||
| 15 | {{template "_navigation.html"}} | 15 | {{template "_navigation.html"}} |
| 16 | 16 | ||
| 17 | <main class="wrapper"> | 17 | <main class="wrapper"> |
| 18 | <h2>Blog posts</h2> | 18 | <h2>Blog posts</h2> |
| 19 | <nav itemscope itemtype="https://schema.org/SiteNavigationElement"> | 19 | <nav itemscope itemtype="https://schema.org/SiteNavigationElement"> |
| 20 | <meta itemprop="name" content="Article list"> | 20 | <meta itemprop="name" content="Article list"> |
| 21 | 21 | ||
| 22 | <ul class="post-list"> | 22 | <ul class="post-list"> |
| 23 | {{range $index, $post := .Posts}} | 23 | {{range $index, $post := .Posts}} |
| 24 | {{if $post.Listing}} | 24 | {{if $post.Listing}} |
| 25 | <li> | 25 | <li> |
| 26 | <time>{{.CreatedFormatted}}</time> | 26 | <time>{{.CreatedFormatted}}</time> |
| 27 | 27 | ||
| 28 | <a href="/{{$post.Slug}}" title="{{$post.Title}}" itemprop="url"> | 28 | <a href="/{{$post.Slug}}" title="{{$post.Title}}" itemprop="url"> |
| 29 | <h2>{{$post.Title}}</h2> | 29 | <h2>{{$post.Title}}</h2> |
| 30 | </a> | 30 | </a> |
| 31 | </li> | 31 | </li> |
| 32 | {{end}} | 32 | {{end}} |
| 33 | {{end}} | 33 | {{end}} |
| 34 | </ul> | 34 | </ul> |
| 35 | </nav> | 35 | </nav> |
| 36 | 36 | ||
| 37 | <hr class="top-margin"> | 37 | <hr class="top-margin"> |
| 38 | 38 | ||
| 39 | <section class="project-list"> | 39 | <section class="project-list"> |
| 40 | <h4>Side projects I work/worked on</h4> | 40 | <h4>Side projects I work/worked on</h4> |
| 41 | <ul> | 41 | <ul> |
| 42 | <li><a href="https://git.mitjafelicijan.com/journalctl-proxy.git/" target="_blank" rel="noopener nofollow">journalctl-proxy - Exposes your systemd logs to web via web interface</a></li> | 42 | <li><a href="https://git.mitjafelicijan.com/journalctl-proxy.git/" target="_blank" rel="noopener nofollow">journalctl-proxy - Exposes your systemd logs to web via web interface</a></li> |
| 43 | <li><a href="https://git.mitjafelicijan.com/redis-marshal.git/" target="_blank" rel="noopener nofollow">redis-marshal - Lightweight Redis data exploration tool</a></li> | 43 | <li><a href="https://git.mitjafelicijan.com/redis-marshal.git/" target="_blank" rel="noopener nofollow">redis-marshal - Lightweight Redis data exploration tool</a></li> |
| 44 | <li><a href="https://git.mitjafelicijan.com/dna-encoding.git/" target="_blank" rel="noopener nofollow">dna-encoding - Tools for encoding files to DNA sequence</a></li> | 44 | <li><a href="https://git.mitjafelicijan.com/dna-encoding.git/" target="_blank" rel="noopener nofollow">dna-encoding - Tools for encoding files to DNA sequence</a></li> |
| 45 | <li><a href="https://git.mitjafelicijan.com/vertex.git/" target="_blank" rel="noopener nofollow">vertex - Create mock API's and add basic logic to simplify prototyping</a></li> | 45 | <li><a href="https://git.mitjafelicijan.com/vertex.git/" target="_blank" rel="noopener nofollow">vertex - Create mock API's and add basic logic to simplify prototyping</a></li> |
| 46 | <li><a href="https://git.mitjafelicijan.com/scarecrow.git/" target="_blank" rel="noopener nofollow">scarecrow - Minimal configuration reverse proxy</a></li> | 46 | <li><a href="https://git.mitjafelicijan.com/scarecrow.git/" target="_blank" rel="noopener nofollow">scarecrow - Minimal configuration reverse proxy</a></li> |
| 47 | </ul> | 47 | </ul> |
| 48 | </section> | 48 | </section> |
| 49 | 49 | ||
| 50 | <hr class="top-margin"> | 50 | <hr class="top-margin"> |
| 51 | 51 | ||
| 52 | {{template "openring-build.html"}} | 52 | {{template "openring-build.html"}} |
| 53 | 53 | ||
| 54 | </main> | 54 | </main> |
| 55 | 55 | ||
| 56 | {{template "_footer.html"}} | 56 | {{template "_footer.html"}} |
| 57 | 57 | ||
| 58 | {{template "_includes.html"}} | 58 | {{template "_includes.html"}} |
| 59 | 59 | ||
| 60 | {{template "_search.html"}} | 60 | </body> |
| 61 | 61 | ||
| 62 | </body> | 62 | </html> \ No newline at end of file |
| 63 | |||
| 64 | </html> | ||
diff --git a/template/post.html b/template/post.html index cf80b22..3ce5ff0 100755 --- a/template/post.html +++ b/template/post.html | |||
| @@ -1,78 +1,76 @@ | |||
| 1 | <!doctype html> | 1 | <!doctype html> |
| 2 | <html lang="en"> | 2 | <html lang="en"> |
| 3 | 3 | ||
| 4 | <head> | 4 | <head> |
| 5 | {{template "_meta.html"}} | 5 | {{template "_meta.html"}} |
| 6 | |||
| 7 | <title>{{.Title}}</title> | ||
| 8 | <meta name="description" content="{{.Description}}"> | ||
| 9 | <meta property="og:title" content="{{.Title}}"> | ||
| 10 | <meta property="og:description" content="{{.Description}}"> | ||
| 11 | </head> | ||
| 12 | |||
| 13 | <body> | ||
| 14 | |||
| 15 | {{template "_navigation.html"}} | ||
| 16 | |||
| 17 | <main class="wrapper"> | ||
| 18 | <article itemtype="http://schema.org/Article"> | ||
| 19 | <header> | ||
| 20 | <h1 itemtype="headline">{{.Title}}</h1> | ||
| 21 | {{if .Listing}} | ||
| 22 | <time>Published on {{.CreatedFormatted}}</time> | ||
| 23 | {{end}} | ||
| 24 | </header> | ||
| 25 | <div> | ||
| 26 | {{.Content}} | ||
| 27 | </div> | ||
| 28 | </article> | ||
| 29 | 6 | ||
| 30 | {{if .Listing}} | 7 | <title>{{.Title}}</title> |
| 8 | <meta name="description" content="{{.Description}}"> | ||
| 9 | <meta property="og:title" content="{{.Title}}"> | ||
| 10 | <meta property="og:description" content="{{.Description}}"> | ||
| 11 | </head> | ||
| 31 | 12 | ||
| 32 | <hr class="top-margin"> | 13 | <body> |
| 33 | 14 | ||
| 34 | <p class="top-margin"> | 15 | {{template "_navigation.html"}} |
| 35 | <strong>Comment, contact:</strong> The easiest way to contact me is by writing me a message on <a href="https://t.me/mitjafelicijan" target="_blank">Telegram (https://t.me/mitjafelicijan)</a>. | ||
| 36 | </p> | ||
| 37 | 16 | ||
| 38 | <p>You can also just write me an email at <a href="mailto:m@mitjafelicijan.com">m@mitjafelicijan.com</a>.</p> | 17 | <main class="wrapper"> |
| 39 | 18 | <article itemtype="http://schema.org/Article"> | |
| 40 | <hr class="top-margin"> | 19 | <header> |
| 41 | 20 | <h1 itemtype="headline">{{.Title}}</h1> | |
| 42 | {{if .Posts}} | 21 | {{if .Listing}} |
| 43 | <nav class="top-margin"> | 22 | <time>Published on {{.CreatedFormatted}}</time> |
| 44 | <h4>Read more from this site</h4> | ||
| 45 | {{range $index, $post := .Posts}} | ||
| 46 | {{if .Listing}} | ||
| 47 | {{if (lt $index 5)}} | ||
| 48 | <p> | ||
| 49 | <time>{{$post.CreatedFormatted}}</time><br> | ||
| 50 | <a href="/{{$post.Slug}}" title="{{$post.Title}}" itemprop="url"> | ||
| 51 | {{$post.Title}} | ||
| 52 | </a> | ||
| 53 | </p> | ||
| 54 | {{end}} | ||
| 55 | {{end}} | ||
| 56 | {{end}} | 23 | {{end}} |
| 57 | </nav> | 24 | </header> |
| 58 | {{end}} | 25 | <div> |
| 26 | {{.Content}} | ||
| 27 | </div> | ||
| 28 | </article> | ||
| 29 | |||
| 30 | {{if .Listing}} | ||
| 31 | |||
| 32 | <hr class="top-margin"> | ||
| 33 | |||
| 34 | <p class="top-margin"> | ||
| 35 | <strong>Comment, contact:</strong> The easiest way to contact me is by writing me a message on <a href="https://t.me/mitjafelicijan" target="_blank">Telegram (https://t.me/mitjafelicijan)</a>. | ||
| 36 | </p> | ||
| 59 | 37 | ||
| 60 | <hr class="top-margin"> | 38 | <p>You can also just write me an email at <a href="mailto:m@mitjafelicijan.com">m@mitjafelicijan.com</a>.</p> |
| 61 | 39 | ||
| 62 | {{template "openring-build.html"}} | 40 | <hr class="top-margin"> |
| 63 | 41 | ||
| 42 | {{if .Posts}} | ||
| 43 | <nav class="top-margin"> | ||
| 44 | <h4>Read more from this site</h4> | ||
| 45 | {{range $index, $post := .Posts}} | ||
| 46 | {{if .Listing}} | ||
| 47 | {{if (lt $index 5)}} | ||
| 48 | <p> | ||
| 49 | <time>{{$post.CreatedFormatted}}</time><br> | ||
| 50 | <a href="/{{$post.Slug}}" title="{{$post.Title}}" itemprop="url"> | ||
| 51 | {{$post.Title}} | ||
| 52 | </a> | ||
| 53 | </p> | ||
| 54 | {{end}} | ||
| 64 | {{end}} | 55 | {{end}} |
| 56 | {{end}} | ||
| 57 | </nav> | ||
| 58 | {{end}} | ||
| 59 | |||
| 60 | <hr class="top-margin"> | ||
| 61 | |||
| 62 | {{template "openring-build.html"}} | ||
| 65 | 63 | ||
| 66 | </main> | 64 | {{end}} |
| 67 | 65 | ||
| 68 | {{template "_footer.html"}} | 66 | </main> |
| 69 | 67 | ||
| 70 | {{template "_includes.html"}} | 68 | {{template "_footer.html"}} |
| 71 | 69 | ||
| 72 | {{template "_search.html"}} | 70 | {{template "_includes.html"}} |
| 73 | 71 | ||
| 74 | {{template "_libraries.html"}} | 72 | {{template "_libraries.html"}} |
| 75 | 73 | ||
| 76 | </body> | 74 | </body> |
| 77 | 75 | ||
| 78 | </html> | 76 | </html> \ No newline at end of file |
diff --git a/template/script.js b/template/script.js index 3c58403..796ea4f 100755 --- a/template/script.js +++ b/template/script.js | |||
| @@ -1,17 +1,4 @@ | |||
| 1 | window.addEventListener('load', async () => { | 1 | window.addEventListener('load', async () => { |
| 2 | // dither image on mouse over replace | ||
| 3 | // document.querySelectorAll('article img').forEach(img => { | ||
| 4 | // const ditheredImage = img.src; | ||
| 5 | // const originalImage = img.src.replace('.dith.gif', ''); | ||
| 6 | |||
| 7 | // img.addEventListener('mouseover', evt => { | ||
| 8 | // evt.target.src = originalImage; | ||
| 9 | // }); | ||
| 10 | |||
| 11 | // img.addEventListener('mouseout', evt => { | ||
| 12 | // evt.target.src = ditheredImage; | ||
| 13 | // }); | ||
| 14 | // }); | ||
| 15 | 2 | ||
| 16 | // flip CV image on mouse over | 3 | // flip CV image on mouse over |
| 17 | const cvImage = document.querySelector('.cv-picture img'); | 4 | const cvImage = document.querySelector('.cv-picture img'); |
| @@ -25,88 +12,4 @@ window.addEventListener('load', async () => { | |||
| 25 | }); | 12 | }); |
| 26 | } | 13 | } |
| 27 | 14 | ||
| 28 | // Search functionality | ||
| 29 | |||
| 30 | window.index = null; | ||
| 31 | |||
| 32 | const response = await fetch('/feed.json'); | ||
| 33 | const feed = await response.json(); | ||
| 34 | |||
| 35 | window.index = elasticlunr(function () { | ||
| 36 | this.addField('title'); | ||
| 37 | this.addField('body'); | ||
| 38 | this.setRef('id'); | ||
| 39 | }); | ||
| 40 | |||
| 41 | for (const item of feed.items) { | ||
| 42 | item.id = item.url; | ||
| 43 | window.index.addDoc({ | ||
| 44 | id: item.url, | ||
| 45 | title: item.title, | ||
| 46 | body: item.content_html, | ||
| 47 | url: item.url, | ||
| 48 | }); | ||
| 49 | } | ||
| 50 | |||
| 51 | const blur = document.querySelector('.blur'); | ||
| 52 | const searchForm = document.querySelector('.search-form'); | ||
| 53 | const searchResultsList = document.querySelector('.search-form ul'); | ||
| 54 | |||
| 55 | function showSearchModal() { | ||
| 56 | blur.classList.remove('hidden'); | ||
| 57 | searchForm.classList.remove('hidden'); | ||
| 58 | |||
| 59 | // Clear search input. | ||
| 60 | searchForm.querySelector('input').value = ''; | ||
| 61 | |||
| 62 | // We need to clear the list before opening modal. | ||
| 63 | searchResultsList.innerHTML = ''; | ||
| 64 | |||
| 65 | // Focus on search input. | ||
| 66 | searchForm.querySelector('input').focus(); | ||
| 67 | } | ||
| 68 | |||
| 69 | document.querySelector('.search-trigger').addEventListener('click', async (evt) => { | ||
| 70 | showSearchModal(); | ||
| 71 | }); | ||
| 72 | |||
| 73 | document.onkeydown = function (e) { | ||
| 74 | // Show search modal on F key. | ||
| 75 | if (blur.classList.contains('hidden')) { | ||
| 76 | if (e.key === 'f') { | ||
| 77 | setTimeout(() => { | ||
| 78 | showSearchModal(); | ||
| 79 | }, 100); | ||
| 80 | } | ||
| 81 | } | ||
| 82 | |||
| 83 | // Hide search modal on escape key. | ||
| 84 | if (!blur.classList.contains('hidden')) { | ||
| 85 | if (e.key === 'Escape') { | ||
| 86 | blur.classList.add('hidden'); | ||
| 87 | searchForm.classList.add('hidden'); | ||
| 88 | } | ||
| 89 | } | ||
| 90 | }; | ||
| 91 | |||
| 92 | blur.addEventListener('click', async (evt) => { | ||
| 93 | evt.target.classList.add('hidden'); | ||
| 94 | searchForm.classList.add('hidden'); | ||
| 95 | }); | ||
| 96 | |||
| 97 | document.querySelector('.search-form input').addEventListener('keyup', async (evt) => { | ||
| 98 | // Perform search. | ||
| 99 | const searchResults = window.index.search(evt.target.value); | ||
| 100 | |||
| 101 | // We need to clear the list before adding new results. | ||
| 102 | searchResultsList.innerHTML = ''; | ||
| 103 | |||
| 104 | // Loop through the results and add them to the list. | ||
| 105 | for (const result of searchResults.slice(0, 9)) { | ||
| 106 | const listItem = document.createElement('li'); | ||
| 107 | listItem.innerHTML = `<a href="${result.doc.url}">${result.doc.title}</a>`; | ||
| 108 | searchResultsList.appendChild(listItem); | ||
| 109 | } | ||
| 110 | }); | ||
| 111 | |||
| 112 | }); | 15 | }); |
diff --git a/template/style.css b/template/style.css index ebb2b26..20ed862 100755 --- a/template/style.css +++ b/template/style.css | |||
| @@ -386,80 +386,6 @@ audio { | |||
| 386 | color: #666; | 386 | color: #666; |
| 387 | } | 387 | } |
| 388 | 388 | ||
| 389 | /* comments */ | ||
| 390 | |||
| 391 | .comments input { | ||
| 392 | width: 100%; | ||
| 393 | font: var(--comment-form-font); | ||
| 394 | border: 1px solid #bbb; | ||
| 395 | padding: 5px; | ||
| 396 | } | ||
| 397 | |||
| 398 | .comments textarea { | ||
| 399 | width: 100%; | ||
| 400 | height: 100px; | ||
| 401 | resize: vertical; | ||
| 402 | font: var(--comment-form-font); | ||
| 403 | border: 1px solid #bbb; | ||
| 404 | padding: 5px; | ||
| 405 | } | ||
| 406 | |||
| 407 | .comments ul { | ||
| 408 | list-style-type: none; | ||
| 409 | padding: 0; | ||
| 410 | margin-top: 30px; | ||
| 411 | } | ||
| 412 | |||
| 413 | .comments hr { | ||
| 414 | border: initial !important; | ||
| 415 | border-top: initial !important; | ||
| 416 | } | ||
| 417 | |||
| 418 | /* search form */ | ||
| 419 | |||
| 420 | .search-form { | ||
| 421 | position: fixed; | ||
| 422 | top: 120px; | ||
| 423 | left: 50%; | ||
| 424 | margin-left: -250px; | ||
| 425 | width: 500px; | ||
| 426 | padding: 30px; | ||
| 427 | background: #eee; | ||
| 428 | border-radius: 5px; | ||
| 429 | } | ||
| 430 | |||
| 431 | .blur { | ||
| 432 | position: fixed; | ||
| 433 | top: 0; | ||
| 434 | left: 0; | ||
| 435 | right: 0; | ||
| 436 | bottom: 0; | ||
| 437 | backdrop-filter: blur(15px); | ||
| 438 | } | ||
| 439 | |||
| 440 | .hidden { | ||
| 441 | display: none; | ||
| 442 | } | ||
| 443 | |||
| 444 | .search-form input { | ||
| 445 | width: 100%; | ||
| 446 | margin-bottom: 20px; | ||
| 447 | border: 1px solid #ffffff; | ||
| 448 | padding: 5px 10px; | ||
| 449 | border-radius: 3px; | ||
| 450 | outline: none; | ||
| 451 | } | ||
| 452 | |||
| 453 | .search-form ul { | ||
| 454 | list-style-type: none; | ||
| 455 | padding: 0; | ||
| 456 | margin: 0; | ||
| 457 | } | ||
| 458 | |||
| 459 | .search-form ul li { | ||
| 460 | margin-bottom: 5px; | ||
| 461 | } | ||
| 462 | |||
| 463 | /* responsive */ | 389 | /* responsive */ |
| 464 | 390 | ||
| 465 | @media only screen and (max-width: 960px) { | 391 | @media only screen and (max-width: 960px) { |
| @@ -507,31 +433,4 @@ audio { | |||
| 507 | .search-trigger { | 433 | .search-trigger { |
| 508 | display: none; | 434 | display: none; |
| 509 | } | 435 | } |
| 510 | } | 436 | } \ No newline at end of file |
| 511 | |||
| 512 | /* light/dark mode */ | ||
| 513 | |||
| 514 | /*@media (prefers-color-scheme: light) { } | ||
| 515 | |||
| 516 | @media (prefers-color-scheme: dark) { | ||
| 517 | body { | ||
| 518 | background: #222; | ||
| 519 | color: #fff; | ||
| 520 | } | ||
| 521 | |||
| 522 | time { | ||
| 523 | color: #fff; | ||
| 524 | } | ||
| 525 | |||
| 526 | a { | ||
| 527 | color: #fff !important; | ||
| 528 | } | ||
| 529 | |||
| 530 | code { | ||
| 531 | color: #222 !important; | ||
| 532 | } | ||
| 533 | |||
| 534 | blockquote:before { | ||
| 535 | background-image: url('/assets/general/alert-dark.svg'); | ||
| 536 | } | ||
| 537 | }*/ | ||
