refactor: replace gulp by webpack and npm scripts (#258)
BREAKING CHANGE: We have replaced `gulp` with `webpack` and `npm scripts` to build this theme. If you build it on your own or use build commands during the deployment, you may have to adjust your setup. BREAKING CHANGE: The `GeekblogIcons` font is using the icon name as Unicode now. As a consequence, you have to replace all references to Icons from this font if you have customized the theme. BREAKING CHANGE: We have refactored the search integration to split Hugo templates from JavaScript code. To get it working again, you need to adjust the `outputFormats` and `outputs` in your Hugo configuration file, as [documented](https://geekdocs.de/usage/configuration/#site-configuration).
|
@ -1 +0,0 @@
|
|||
{"result":{"status":"success"},"favicon":{"package_url":"https://realfavicongenerator.net/files/a14c093dfa827ba277aadc2d7a936885d5b564aa/favicon_package_v0.16.zip","files_urls":["https://realfavicongenerator.net/files/a14c093dfa827ba277aadc2d7a936885d5b564aa/package_files/android-chrome-192x192.png","https://realfavicongenerator.net/files/a14c093dfa827ba277aadc2d7a936885d5b564aa/package_files/android-chrome-512x512.png","https://realfavicongenerator.net/files/a14c093dfa827ba277aadc2d7a936885d5b564aa/package_files/apple-touch-icon.png","https://realfavicongenerator.net/files/a14c093dfa827ba277aadc2d7a936885d5b564aa/package_files/browserconfig.xml","https://realfavicongenerator.net/files/a14c093dfa827ba277aadc2d7a936885d5b564aa/package_files/favicon-16x16.png","https://realfavicongenerator.net/files/a14c093dfa827ba277aadc2d7a936885d5b564aa/package_files/favicon-32x32.png","https://realfavicongenerator.net/files/a14c093dfa827ba277aadc2d7a936885d5b564aa/package_files/favicon.ico","https://realfavicongenerator.net/files/a14c093dfa827ba277aadc2d7a936885d5b564aa/package_files/mstile-144x144.png","https://realfavicongenerator.net/files/a14c093dfa827ba277aadc2d7a936885d5b564aa/package_files/mstile-150x150.png","https://realfavicongenerator.net/files/a14c093dfa827ba277aadc2d7a936885d5b564aa/package_files/mstile-310x150.png","https://realfavicongenerator.net/files/a14c093dfa827ba277aadc2d7a936885d5b564aa/package_files/mstile-310x310.png","https://realfavicongenerator.net/files/a14c093dfa827ba277aadc2d7a936885d5b564aa/package_files/mstile-70x70.png","https://realfavicongenerator.net/files/a14c093dfa827ba277aadc2d7a936885d5b564aa/package_files/safari-pinned-tab.svg","https://realfavicongenerator.net/files/a14c093dfa827ba277aadc2d7a936885d5b564aa/package_files/site.webmanifest"],"html_code":"<link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"/apple-touch-icon.png\">\n<link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/favicon-32x32.png\">\n<link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/favicon-16x16.png\">\n<link rel=\"manifest\" href=\"/site.webmanifest\">\n<link rel=\"mask-icon\" href=\"/safari-pinned-tab.svg\" color=\"#5bbad5\">\n<meta name=\"msapplication-TileColor\" content=\"#2b5797\">\n<meta name=\"msapplication-TileImage\" content=\"/mstile-144x144.png\">\n<meta name=\"theme-color\" content=\"#ffffff\">","compression":"false","overlapping_markups":["link[rel=\"apple-touch-icon\"]","link[rel=\"shortcut\"]","link[rel=\"shortcut icon\"]","link[rel=\"icon\",sizes=\"16x16\"]","link[rel=\"icon\",sizes=\"32x32\"]","meta[name=\"msapplication-TileColor\"]","meta[name=\"msapplication-TileImage\"]","link[rel=\"manifest\"]","meta[name=\"theme-color\"]","link[rel=\"mask-icon\"]"]},"files_location":{"type":"path","path":"/"},"preview_picture_url":"https://realfavicongenerator.net/files/a14c093dfa827ba277aadc2d7a936885d5b564aa/favicon_preview.png","version":"0.16"}
|
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-6.67 -6.67 37.33 37.33"><path d="M24 10.526v2.947H5.755l8.351 8.421-2.105 2.105-12-12 12-12 2.105 2.105-8.351 8.421H24z"/></svg>
|
Before Width: | Height: | Size: 202 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-6.67 -6.67 37.33 37.33"><path d="M18.035 10.526V6.035L24 12l-5.965 5.965v-4.491H0v-2.947h18.035z"/></svg>
|
Before Width: | Height: | Size: 179 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-6.67 -6.67 37.33 37.33"><path d="M15.268 4.392q.868 0 1.532.638t.664 1.506v17.463l-7.659-3.268-7.608 3.268V6.536q0-.868.664-1.506t1.532-.638h10.876zm4.34 14.144V4.392q0-.868-.638-1.532t-1.506-.664H6.537q0-.868.664-1.532T8.733 0h10.876q.868 0 1.532.664t.664 1.532v17.412z"/></svg>
|
Before Width: | Height: | Size: 353 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-6.67 -6.67 41.33 41.33"><path d="M9.917 24.5a1.75 1.75 0 10-3.501.001 1.75 1.75 0 003.501-.001zm0-21a1.75 1.75 0 10-3.501.001A1.75 1.75 0 009.917 3.5zm11.666 2.333a1.75 1.75 0 10-3.501.001 1.75 1.75 0 003.501-.001zm1.75 0a3.502 3.502 0 01-1.75 3.026c-.055 6.581-4.721 8.039-7.82 9.023-2.898.911-3.846 1.349-3.846 3.117v.474a3.502 3.502 0 011.75 3.026c0 1.932-1.568 3.5-3.5 3.5s-3.5-1.568-3.5-3.5c0-1.294.711-2.424 1.75-3.026V6.526A3.502 3.502 0 014.667 3.5c0-1.932 1.568-3.5 3.5-3.5s3.5 1.568 3.5 3.5a3.502 3.502 0 01-1.75 3.026v9.06c.93-.456 1.914-.766 2.807-1.039 3.391-1.075 5.323-1.878 5.359-5.687a3.502 3.502 0 01-1.75-3.026c0-1.932 1.568-3.5 3.5-3.5s3.5 1.568 3.5 3.5z"/></svg>
|
Before Width: | Height: | Size: 757 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-6.67 -6.67 45.33 45.33"><path d="M27.192 28.844V11.192H4.808v17.652h22.384zm0-25.689q1.277 0 2.253.976t.976 2.253v22.459q0 1.277-.976 2.216t-2.253.939H4.808q-1.352 0-2.291-.901t-.939-2.253V6.385q0-1.277.939-2.253t2.291-.976h1.577V.001h3.23v3.155h12.769V.001h3.23v3.155h1.577zm-3.155 11.267v3.155h-3.23v-3.155h3.23zm-6.46 0v3.155h-3.155v-3.155h3.155zm-6.384 0v3.155h-3.23v-3.155h3.23z"/></svg>
|
Before Width: | Height: | Size: 466 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-6.67 -6.67 45.33 45.33"><path d="M2.866 28.209h26.269v3.79H2.866v-3.79zm26.268-16.925L16 24.418 2.866 11.284h7.493V.001h11.283v11.283h7.493z"/></svg>
|
Before Width: | Height: | Size: 223 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-6.67 -6.67 45.33 45.33"><path d="M28.845 9.615v-3.23L16 14.422 3.155 6.385v3.23L16 17.577zm0-6.46q1.277 0 2.216.977T32 6.385v19.23q0 1.277-.939 2.253t-2.216.977H3.155q-1.277 0-2.216-.977T0 25.615V6.385q0-1.277.939-2.253t2.216-.977h25.69z"/></svg>
|
Before Width: | Height: | Size: 320 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-6.67 -6.67 45.33 45.33"><path d="M16 .394c8.833 0 15.999 7.166 15.999 15.999 0 7.062-4.583 13.062-10.937 15.187-.813.146-1.104-.354-1.104-.771 0-.521.021-2.25.021-4.396 0-1.5-.5-2.458-1.083-2.958 3.562-.396 7.312-1.75 7.312-7.896 0-1.75-.625-3.167-1.646-4.291.167-.417.708-2.042-.167-4.25-1.333-.417-4.396 1.646-4.396 1.646a15.032 15.032 0 00-8 0S8.937 6.602 7.603 7.018c-.875 2.208-.333 3.833-.167 4.25-1.021 1.125-1.646 2.542-1.646 4.291 0 6.125 3.729 7.5 7.291 7.896-.458.417-.875 1.125-1.021 2.146-.917.417-3.25 1.125-4.646-1.333-.875-1.521-2.458-1.646-2.458-1.646-1.562-.021-.104.979-.104.979 1.042.479 1.771 2.333 1.771 2.333.938 2.854 5.396 1.896 5.396 1.896 0 1.333.021 2.583.021 2.979 0 .417-.292.917-1.104.771C4.582 29.455-.001 23.455-.001 16.393-.001 7.56 7.165.394 15.998.394zM6.063 23.372c.042-.083-.021-.187-.146-.25-.125-.042-.229-.021-.271.042-.042.083.021.187.146.25.104.062.229.042.271-.042zm.646.709c.083-.062.062-.208-.042-.333-.104-.104-.25-.146-.333-.062-.083.062-.062.208.042.333.104.104.25.146.333.062zm.625.937c.104-.083.104-.25 0-.396-.083-.146-.25-.208-.354-.125-.104.062-.104.229 0 .375s.271.208.354.146zm.875.875c.083-.083.042-.271-.083-.396-.146-.146-.333-.167-.417-.062-.104.083-.062.271.083.396.146.146.333.167.417.062zm1.187.521c.042-.125-.083-.271-.271-.333-.167-.042-.354.021-.396.146s.083.271.271.312c.167.062.354 0 .396-.125zm1.313.104c0-.146-.167-.25-.354-.229-.187 0-.333.104-.333.229 0 .146.146.25.354.229.187 0 .333-.104.333-.229zm1.208-.208c-.021-.125-.187-.208-.375-.187-.187.042-.312.167-.292.312.021.125.187.208.375.167s.312-.167.292-.292z"/></svg>
|
Before Width: | Height: | Size: 1.6 KiB |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-6.67 -6.67 45.33 45.33"><path d="M16 29.714a1.11 1.11 0 01-.786-.321L4.072 18.643c-.143-.125-4.071-3.714-4.071-8 0-5.232 3.196-8.357 8.535-8.357 3.125 0 6.053 2.464 7.464 3.857 1.411-1.393 4.339-3.857 7.464-3.857 5.339 0 8.535 3.125 8.535 8.357 0 4.286-3.928 7.875-4.089 8.035L16.785 29.392c-.214.214-.5.321-.786.321z"/></svg>
|
Before Width: | Height: | Size: 400 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-6.67 -6.67 45.33 45.33"><path d="M24.037 7.963q3.305 0 5.634 2.366T32 16t-2.329 5.671-5.634 2.366h-6.46v-3.08h6.46q2.028 0 3.493-1.465t1.465-3.493-1.465-3.493-3.493-1.465h-6.46v-3.08h6.46zM9.615 17.578v-3.155h12.77v3.155H9.615zM3.005 16q0 2.028 1.465 3.493t3.493 1.465h6.46v3.08h-6.46q-3.305 0-5.634-2.366T0 16.001t2.329-5.671 5.634-2.366h6.46v3.08h-6.46q-2.028 0-3.493 1.465t-1.465 3.493z"/></svg>
|
Before Width: | Height: | Size: 472 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-6.67 -6.67 45.33 45.33"><path d="M.001 5.334h31.998v3.583H.001V5.334zm0 12.416v-3.5h31.998v3.5H.001zm0 8.916v-3.583h31.998v3.583H.001z"/></svg>
|
Before Width: | Height: | Size: 217 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-6.67 -6.67 41.33 41.33"><path d="M22.615 19.384l2.894 2.894v1.413H2.49v-1.413l2.894-2.894V12.25q0-3.365 1.716-5.856t4.745-3.231v-1.01q0-.875.606-1.514T13.999 0t1.548.639.606 1.514v1.01q3.029.74 4.745 3.231t1.716 5.856v7.134zM14 27.999q-1.211 0-2.053-.808t-.841-2.019h5.788q0 1.144-.875 1.986T14 27.999z"/></svg>
|
Before Width: | Height: | Size: 385 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-6.67 -6.67 41.33 41.33"><path d="M28 12.62h-9.793V8.414h-2.826v11.173h2.826v-4.206H28V26.62h-9.793v-4.206H12.62v-14H9.794v4.206H.001V1.381h9.793v4.206h8.413V1.381H28V12.62z"/></svg>
|
Before Width: | Height: | Size: 255 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-6.67 -6.67 45.33 45.33"><path d="M16 20.023q5.052 0 10.526 2.199t5.473 5.754v4.023H0v-4.023q0-3.555 5.473-5.754t10.526-2.199zM16 16q-3.275 0-5.614-2.339T8.047 8.047t2.339-5.661T16 0t5.614 2.386 2.339 5.661-2.339 5.614T16 16z"/></svg>
|
Before Width: | Height: | Size: 307 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-6.67 -6.67 45.33 45.33"><path d="M11.925 20.161q3.432 0 5.834-2.402t2.402-5.834-2.402-5.834-5.834-2.402-5.834 2.402-2.402 5.834 2.402 5.834 5.834 2.402zm10.981 0L32 29.255 29.255 32l-9.094-9.094v-1.458l-.515-.515q-3.26 2.831-7.721 2.831-4.976 0-8.45-3.432T.001 11.925t3.474-8.45 8.45-3.474 8.407 3.474 3.432 8.45q0 1.802-.858 4.075t-1.973 3.646l.515.515h1.458z"/></svg>
|
Before Width: | Height: | Size: 443 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-6.67 -6.67 41.33 41.33"><path d="M22.167 15.166V3.5h-8.166v20.726c.93-.492 2.424-1.349 3.883-2.497 1.95-1.531 4.284-3.919 4.284-6.562zm3.499-13.999v14c0 7.674-10.737 12.523-11.192 12.724-.146.073-.31.109-.474.109s-.328-.036-.474-.109c-.456-.201-11.192-5.049-11.192-12.724v-14C2.334.529 2.863 0 3.501 0H24.5c.638 0 1.167.529 1.167 1.167z"/></svg>
|
Before Width: | Height: | Size: 419 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-6.67 -6.67 41.33 41.33"><path d="M6.606 7.549c0-1.047-.84-1.887-1.887-1.887s-1.887.84-1.887 1.887.84 1.887 1.887 1.887 1.887-.84 1.887-1.887zm15.732 8.493c0 .501-.206.988-.546 1.327l-7.239 7.254c-.354.339-.84.546-1.342.546s-.988-.206-1.327-.546L1.342 14.066C.59 13.329 0 11.899 0 10.852V4.718a1.9 1.9 0 011.887-1.887h6.134c1.047 0 2.477.59 3.229 1.342L21.792 14.7c.339.354.546.84.546 1.342zm5.661 0c0 .501-.206.988-.546 1.327l-7.239 7.254c-.354.339-.84.546-1.342.546-.767 0-1.15-.354-1.651-.87l6.93-6.93c.339-.339.546-.826.546-1.327s-.206-.988-.546-1.342L13.609 4.173c-.752-.752-2.182-1.342-3.229-1.342h3.303c1.047 0 2.477.59 3.229 1.342L27.454 14.7c.339.354.546.84.546 1.342z"/></svg>
|
Before Width: | Height: | Size: 759 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-6.67 -6.67 37.33 37.33"><path d="M5.965 10.526V6.035L0 12l5.965 5.965v-4.491H24v-2.947H5.965z"/></svg>
|
Before Width: | Height: | Size: 176 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-6.67 -6.67 45.33 45.33"><path d="M25.875 28.25L22.125 32 6.126 16.001 22.125.002l3.75 3.75-12.25 12.25z"/></svg>
|
Before Width: | Height: | Size: 186 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-6.67 -6.67 45.33 45.33"><path d="M6.125 28.25L18.375 16 6.125 3.75 9.875 0l15.999 15.999L9.875 31.998z"/></svg>
|
Before Width: | Height: | Size: 185 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-2.67 -2.67 33.33 33.33"><path d="M15.905 13.355c.189 1.444-1.564 2.578-2.784 1.839-1.375-.602-1.375-2.784-.034-3.403 1.151-.705 2.818.223 2.818 1.564zm1.907-.361c-.309-2.44-3.076-4.056-5.328-3.042-1.426.636-2.389 2.148-2.32 3.747.086 2.097 2.08 3.815 4.176 3.626s3.729-2.234 3.472-4.331zm4.108-9.315c-.756-.997-2.045-1.169-3.179-1.358-3.214-.516-6.513-.533-9.727.034-1.066.172-2.269.361-2.939 1.323 1.1 1.031 2.664 1.186 4.073 1.358 2.544.327 5.156.344 7.699.017 1.426-.172 3.008-.309 4.073-1.375zm.979 17.788c-.481 1.684-.206 3.953-1.994 4.932-3.076 1.701-6.806 1.89-10.191 1.289-1.787-.327-3.884-.894-4.864-2.578-.43-1.65-.705-3.334-.98-5.018l.103-.275.309-.155c5.121 3.386 12.288 3.386 17.427 0 .808.241.206 1.22.189 1.805zM26.01 4.951c-.584 3.764-1.255 7.51-1.908 11.257-.189 1.1-1.255 1.719-2.148 2.183-3.214 1.615-6.96 1.89-10.483 1.512-2.389-.258-4.829-.894-6.771-2.389-.911-.705-.911-1.908-1.083-2.922-.602-3.523-1.289-7.046-1.719-10.604.206-1.547 1.942-2.217 3.231-2.698C6.848.654 8.686.362 10.508.19c3.884-.378 7.854-.241 11.618.859 1.341.395 2.784.945 3.695 2.097.412.533.275 1.203.189 1.805z"/></svg>
|
Before Width: | Height: | Size: 1.2 KiB |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-2.67 -2.67 33.33 33.33"><path d="M27.472 12.753L15.247.529a1.803 1.803 0 00-2.55 0l-2.84 2.84 2.137 2.137a2.625 2.625 0 013.501 3.501l3.499 3.499a2.625 2.625 0 11-1.237 1.237l-3.499-3.499c-.083.04-.169.075-.257.106v7.3a2.626 2.626 0 11-1.75 0v-7.3a2.626 2.626 0 01-1.494-3.607L8.62 4.606l-8.09 8.09a1.805 1.805 0 000 2.551l12.225 12.224a1.803 1.803 0 002.55 0l12.168-12.168a1.805 1.805 0 000-2.551z"/></svg>
|
Before Width: | Height: | Size: 481 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-2.67 -2.67 33.33 33.33"><path d="M1.629 11.034L14 26.888.442 17.048a1.09 1.09 0 01-.39-1.203l1.578-4.811zm7.217 0h10.309l-5.154 15.854zM5.753 1.475l3.093 9.559H1.63l3.093-9.559a.548.548 0 011.031 0zm20.618 9.559l1.578 4.811c.141.437-.016.922-.39 1.203l-13.558 9.84 12.371-15.854zm0 0h-7.216l3.093-9.559a.548.548 0 011.031 0z"/></svg>
|
Before Width: | Height: | Size: 407 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-2.29 -2.29 32.57 32.57"><path d="M14 21.435q3.079 0 5.257-2.178T21.435 14t-2.178-5.257T14 6.565q-1.51 0-3.079.697 1.917.871 3.108 2.701T15.22 14t-1.191 4.037-3.108 2.701q1.568.697 3.079.697zm9.933-11.559L27.999 14l-4.066 4.124v5.809h-5.809L14 27.999l-4.124-4.066H4.067v-5.809L.001 14l4.066-4.124V4.067h5.809L14 .001l4.124 4.066h5.809v5.809z"/></svg>
|
Before Width: | Height: | Size: 422 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-2.29 -2.29 32.57 32.57"><path d="M14 21.435q3.079 0 5.257-2.178T21.435 14t-2.178-5.257T14 6.565 8.743 8.743 6.565 14t2.178 5.257T14 21.435zm9.933-3.311v5.809h-5.809L14 27.999l-4.124-4.066H4.067v-5.809L.001 14l4.066-4.124V4.067h5.809L14 .001l4.124 4.066h5.809v5.809L27.999 14z"/></svg>
|
Before Width: | Height: | Size: 357 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-2.29 -2.29 32.57 32.57"><path d="M16.846 18.938h2.382L15.22 7.785h-2.44L8.772 18.938h2.382l.871-2.44h3.95zm7.087-9.062L27.999 14l-4.066 4.124v5.809h-5.809L14 27.999l-4.124-4.066H4.067v-5.809L.001 14l4.066-4.124V4.067h5.809L14 .001l4.124 4.066h5.809v5.809zm-11.385 4.937L14 10.282l1.452 4.531h-2.904z"/></svg>
|
Before Width: | Height: | Size: 381 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-2.29 -2.29 32.57 32.57"><path d="M3.281 5.36L14 16.079 24.719 5.36 28 8.641l-14 14-14-14z"/></svg>
|
Before Width: | Height: | Size: 171 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-2.29 -2.29 32.57 32.57"><path d="M24.719 22.64L14 11.921 3.281 22.64 0 19.359l14-14 14 14z"/></svg>
|
Before Width: | Height: | Size: 172 B |
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="-2.29 -2.29 32.57 32.57"><path d="M24.003 15.695v8.336c0 .608-.504 1.111-1.111 1.111h-6.669v-6.669h-4.446v6.669H5.108a1.119 1.119 0 01-1.111-1.111v-8.336c0-.035.017-.069.017-.104L14 7.359l9.986 8.232a.224.224 0 01.017.104zm3.873-1.198l-1.077 1.285a.578.578 0 01-.365.191h-.052a.547.547 0 01-.365-.122L14 5.831 1.983 15.851a.594.594 0 01-.417.122.578.578 0 01-.365-.191L.124 14.497a.57.57 0 01.069-.781L12.679 3.314c.729-.608 1.91-.608 2.64 0l4.237 3.543V3.471c0-.313.243-.556.556-.556h3.334c.313 0 .556.243.556.556v7.085l3.803 3.161c.226.191.26.556.069.781z"/></svg>
|
Before Width: | Height: | Size: 638 B |
|
@ -1,21 +1,31 @@
|
|||
import { applyTheme } from "./darkmode"
|
||||
import { createCopyButton } from "./copycode.js"
|
||||
|
||||
import Clipboard from "clipboard"
|
||||
;(() => {
|
||||
applyTheme()
|
||||
})()
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function (event) {
|
||||
var clipboard = new ClipboardJS(".clip");
|
||||
let clipboard = new Clipboard(".clip")
|
||||
|
||||
clipboard.on("success", function (e) {
|
||||
const trigger = e.trigger;
|
||||
const trigger = e.trigger
|
||||
|
||||
if (trigger.hasAttribute("data-copy-feedback")) {
|
||||
trigger.classList.add("gdoc-post__codecopy--success");
|
||||
trigger.querySelector(".icon.copy").classList.add("hidden");
|
||||
trigger.querySelector(".icon.check").classList.remove("hidden");
|
||||
trigger.classList.add("gdoc-post__codecopy--success")
|
||||
trigger.querySelector(".icon.copy").classList.add("hidden")
|
||||
trigger.querySelector(".icon.check").classList.remove("hidden")
|
||||
|
||||
setTimeout(function () {
|
||||
trigger.classList.remove("gdoc-post__codecopy--success");
|
||||
trigger.querySelector(".icon.copy").classList.remove("hidden");
|
||||
trigger.querySelector(".icon.check").classList.add("hidden");
|
||||
}, 3000);
|
||||
trigger.classList.remove("gdoc-post__codecopy--success")
|
||||
trigger.querySelector(".icon.copy").classList.remove("hidden")
|
||||
trigger.querySelector(".icon.check").classList.add("hidden")
|
||||
}, 3000)
|
||||
}
|
||||
|
||||
e.clearSelection();
|
||||
});
|
||||
});
|
||||
e.clearSelection()
|
||||
})
|
||||
|
||||
document.querySelectorAll(".highlight").forEach((highlightDiv) => createCopyButton(highlightDiv))
|
||||
})
|
5
src/js/config.js
Normal file
|
@ -0,0 +1,5 @@
|
|||
export const DARK_MODE = "dark"
|
||||
export const LIGHT_MODE = "light"
|
||||
export const AUTO_MODE = "auto"
|
||||
export const THEME = "hugo-geekdoc"
|
||||
export const TOGGLE_MODES = [AUTO_MODE, DARK_MODE, LIGHT_MODE]
|
|
@ -1,34 +1,23 @@
|
|||
function createCopyButton(highlightDiv) {
|
||||
const button = document.createElement("span");
|
||||
export function createCopyButton(highlightDiv) {
|
||||
const button = document.createElement("span")
|
||||
let selector = "pre > code"
|
||||
|
||||
if (highlightDiv.querySelector(".lntable")) {
|
||||
selector = ".lntable .lntd:last-child pre > code";
|
||||
} else {
|
||||
selector = "pre > code";
|
||||
selector = ".lntable .lntd:last-child pre > code"
|
||||
}
|
||||
|
||||
const codeToCopy = highlightDiv.querySelector(selector).innerText.trim();
|
||||
const codeToCopy = highlightDiv.querySelector(selector).innerText.trim()
|
||||
|
||||
button.classList.add(
|
||||
"flex",
|
||||
"align-center",
|
||||
"justify-center",
|
||||
"clip",
|
||||
"gdoc-post__codecopy"
|
||||
);
|
||||
button.type = "button";
|
||||
button.classList.add("flex", "align-center", "justify-center", "clip", "gdoc-post__codecopy")
|
||||
button.type = "button"
|
||||
button.innerHTML =
|
||||
'<svg class="icon copy"><use xlink:href="#gdoc_copy"></use></svg>' +
|
||||
'<svg class="icon check hidden"><use xlink:href="#gdoc_check"></use></svg>';
|
||||
button.setAttribute("data-clipboard-text", codeToCopy);
|
||||
button.setAttribute("data-copy-feedback", "Copied!");
|
||||
button.setAttribute("role", "button");
|
||||
button.setAttribute("aria-label", "Copy");
|
||||
'<svg class="icon check hidden"><use xlink:href="#gdoc_check"></use></svg>'
|
||||
button.setAttribute("data-clipboard-text", codeToCopy)
|
||||
button.setAttribute("data-copy-feedback", "Copied!")
|
||||
button.setAttribute("role", "button")
|
||||
button.setAttribute("aria-label", "Copy")
|
||||
|
||||
highlightDiv.classList.add("gdoc-post__codecontainer");
|
||||
highlightDiv.insertBefore(button, highlightDiv.firstChild);
|
||||
highlightDiv.classList.add("gdoc-post__codecontainer")
|
||||
highlightDiv.insertBefore(button, highlightDiv.firstChild)
|
||||
}
|
||||
|
||||
document
|
||||
.querySelectorAll(".highlight")
|
||||
.forEach((highlightDiv) => createCopyButton(highlightDiv));
|
||||
|
|
|
@ -1,51 +1,53 @@
|
|||
const DARK_MODE = "dark";
|
||||
const LIGHT_MODE = "light";
|
||||
const AUTO_MODE = "auto";
|
||||
const THEME = "hugo-geekdoc";
|
||||
import Storage from "store2"
|
||||
|
||||
const TOGGLE_MODES = [AUTO_MODE, DARK_MODE, LIGHT_MODE];
|
||||
import { TOGGLE_MODES, THEME, AUTO_MODE } from "./config.js"
|
||||
|
||||
(applyTheme = function (init = true) {
|
||||
let html = document.documentElement;
|
||||
let currentMode = TOGGLE_MODES.includes(localStorage.getItem(THEME))
|
||||
? localStorage.getItem(THEME)
|
||||
: AUTO_MODE;
|
||||
document.addEventListener("DOMContentLoaded", (event) => {
|
||||
const darkModeToggle = document.getElementById("gdoc-dark-mode")
|
||||
|
||||
html.setAttribute("class", "color-toggle-" + currentMode);
|
||||
localStorage.setItem(THEME, currentMode);
|
||||
darkModeToggle.onclick = function () {
|
||||
let lstore = Storage.namespace(THEME)
|
||||
let currentMode = lstore.get("color-mode")
|
||||
let nextMode = toggle(TOGGLE_MODES, currentMode)
|
||||
|
||||
lstore.set("color-mode", TOGGLE_MODES[nextMode])
|
||||
applyTheme(false)
|
||||
}
|
||||
})
|
||||
|
||||
export function applyTheme(init = true) {
|
||||
if (Storage.isFake()) return
|
||||
|
||||
let lstore = Storage.namespace(THEME)
|
||||
let html = document.documentElement
|
||||
let currentMode = TOGGLE_MODES.includes(lstore.get("color-mode"))
|
||||
? lstore.get("color-mode")
|
||||
: AUTO_MODE
|
||||
|
||||
html.setAttribute("class", "color-toggle-" + currentMode)
|
||||
lstore.set("color-mode", currentMode)
|
||||
|
||||
if (currentMode === AUTO_MODE) {
|
||||
html.removeAttribute("color-mode");
|
||||
html.removeAttribute("color-mode")
|
||||
} else {
|
||||
html.setAttribute("color-mode", currentMode);
|
||||
html.setAttribute("color-mode", currentMode)
|
||||
}
|
||||
|
||||
if (!init) {
|
||||
// Reload required to re-initialise e.g. Mermaid with the new theme and re-parse the Mermaid code blocks.
|
||||
location.reload();
|
||||
// Reload required to re-initialise e.g. Mermaid with the new theme
|
||||
// and re-parse the Mermaid code blocks.
|
||||
location.reload()
|
||||
}
|
||||
})();
|
||||
|
||||
document.addEventListener("DOMContentLoaded", (event) => {
|
||||
const darkModeToggle = document.getElementById("gdoc-dark-mode");
|
||||
|
||||
darkModeToggle.onclick = function () {
|
||||
let currentMode = localStorage.getItem(THEME);
|
||||
let nextMode = toggle(TOGGLE_MODES, currentMode);
|
||||
|
||||
localStorage.setItem(THEME, TOGGLE_MODES[nextMode]);
|
||||
applyTheme(false);
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
function toggle(list = [], value) {
|
||||
current = list.indexOf(value);
|
||||
max = list.length - 1;
|
||||
next = 0;
|
||||
let current = list.indexOf(value)
|
||||
let max = list.length - 1
|
||||
let next = 0
|
||||
|
||||
if (current < max) {
|
||||
next = current + 1;
|
||||
next = current + 1
|
||||
}
|
||||
|
||||
return next;
|
||||
return next
|
||||
}
|
||||
|
|
|
@ -7,30 +7,25 @@
|
|||
* strings for iteratees.
|
||||
*/
|
||||
|
||||
const groupBy = (e, ...t) => {
|
||||
export const groupBy = (e, ...t) => {
|
||||
let r = e.map((e) => t.map((t) => t(e))),
|
||||
a = {};
|
||||
a = {}
|
||||
return (
|
||||
r.forEach((t, r) => {
|
||||
let l = (_simpleAt(a, t) || []).concat([e[r]]);
|
||||
_simpleSet(a, t, l);
|
||||
let l = (_simpleAt(a, t) || []).concat([e[r]])
|
||||
_simpleSet(a, t, l)
|
||||
}),
|
||||
a
|
||||
);
|
||||
)
|
||||
},
|
||||
_isPlainObject = (e) =>
|
||||
null != e && "object" == typeof e && e.constructor == Object,
|
||||
_isPlainObject = (e) => null != e && "object" == typeof e && e.constructor == Object,
|
||||
_parsePath = (e) => (Array.isArray(e) ? e : `${e}`.split(".")),
|
||||
_simpleAt = (e, t) =>
|
||||
_parsePath(t).reduce(
|
||||
(e, t) => (null != e && e.hasOwnProperty(t) ? e[t] : void 0),
|
||||
e
|
||||
),
|
||||
_parsePath(t).reduce((e, t) => (null != e && e.hasOwnProperty(t) ? e[t] : void 0), e),
|
||||
_simpleSet = (e, t, r) =>
|
||||
_parsePath(t).reduce((e, t, a, l) => {
|
||||
let s = a === l.length - 1;
|
||||
let s = a === l.length - 1
|
||||
return (
|
||||
(e.hasOwnProperty(t) && (s || _isPlainObject(e[t]))) || (e[t] = {}),
|
||||
s ? (e[t] = r) : e[t]
|
||||
);
|
||||
}, e);
|
||||
(e.hasOwnProperty(t) && (s || _isPlainObject(e[t]))) || (e[t] = {}), s ? (e[t] = r) : e[t]
|
||||
)
|
||||
}, e)
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
document.addEventListener("DOMContentLoaded", function () {
|
||||
renderMathInElement(document.body);
|
||||
});
|
9
src/js/katex.js
Normal file
|
@ -0,0 +1,9 @@
|
|||
import "katex/dist/katex.css"
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
import("katex/dist/contrib/auto-render")
|
||||
.then(({ default: renderMathInElement }) => {
|
||||
renderMathInElement(document.body)
|
||||
})
|
||||
.catch((error) => console.error(error))
|
||||
})
|
|
@ -1,23 +0,0 @@
|
|||
document.addEventListener("DOMContentLoaded", function (event) {
|
||||
let currentMode = localStorage.getItem(THEME);
|
||||
let darkModeQuery = window.matchMedia("(prefers-color-scheme: dark)");
|
||||
let primaryColor = "#ececff";
|
||||
let darkMode = false;
|
||||
|
||||
if (
|
||||
currentMode === DARK_MODE ||
|
||||
(currentMode === AUTO_MODE && darkModeQuery.matches)
|
||||
) {
|
||||
primaryColor = "#6C617E";
|
||||
darkMode = true;
|
||||
}
|
||||
|
||||
mermaid.initialize({
|
||||
flowchart: { useMaxWidth: true },
|
||||
theme: "base",
|
||||
themeVariables: {
|
||||
darkMode: darkMode,
|
||||
primaryColor: primaryColor,
|
||||
},
|
||||
});
|
||||
});
|
29
src/js/mermaid.js
Normal file
|
@ -0,0 +1,29 @@
|
|||
import Storage from "store2"
|
||||
|
||||
import { DARK_MODE, THEME, AUTO_MODE } from "./config.js"
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function (event) {
|
||||
let lstore = Storage.namespace(THEME)
|
||||
let currentMode = lstore.get("color-mode")
|
||||
let darkModeQuery = window.matchMedia("(prefers-color-scheme: dark)")
|
||||
let primaryColor = "#ececff"
|
||||
let darkMode = false
|
||||
|
||||
if (currentMode === DARK_MODE || (currentMode === AUTO_MODE && darkModeQuery.matches)) {
|
||||
primaryColor = "#6C617E"
|
||||
darkMode = true
|
||||
}
|
||||
|
||||
import("mermaid")
|
||||
.then(({ default: md }) => {
|
||||
md.initialize({
|
||||
flowchart: { useMaxWidth: true },
|
||||
theme: "base",
|
||||
themeVariables: {
|
||||
darkMode: darkMode,
|
||||
primaryColor: primaryColor
|
||||
}
|
||||
})
|
||||
})
|
||||
.catch((error) => console.error(error))
|
||||
})
|
200
src/js/search.js
Normal file
|
@ -0,0 +1,200 @@
|
|||
const { groupBy } = require("./groupBy")
|
||||
const FlexSearch = require("flexsearch")
|
||||
const Ajv = require("ajv")
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function (event) {
|
||||
const ajv = new Ajv()
|
||||
|
||||
const input = document.querySelector("#gdoc-search-input")
|
||||
const results = document.querySelector("#gdoc-search-results")
|
||||
|
||||
const configSchema = {
|
||||
type: "object",
|
||||
properties: {
|
||||
dataFile: {
|
||||
type: "string"
|
||||
},
|
||||
indexConfig: {
|
||||
type: ["object", "null"]
|
||||
},
|
||||
showParent: {
|
||||
type: "boolean"
|
||||
}
|
||||
},
|
||||
additionalProperties: false
|
||||
}
|
||||
|
||||
getJson("/searchconfig.json", function (searchConfig) {
|
||||
const configValidate = ajv.compile(configSchema)
|
||||
const valid = configValidate(searchConfig)
|
||||
|
||||
if (!valid)
|
||||
throw AggregateError(
|
||||
configValidate.errors.map(
|
||||
(err) =>
|
||||
new Error(["Validation error:", err.instancePath, err.keyword, err.message].join(" "))
|
||||
),
|
||||
"Schema validation failed"
|
||||
)
|
||||
|
||||
if (input) {
|
||||
input.addEventListener("focus", () => {
|
||||
init(input, searchConfig)
|
||||
})
|
||||
input.addEventListener("keyup", () => {
|
||||
search(input, results, searchConfig)
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
function init(input, searchConfig) {
|
||||
input.removeEventListener("focus", init)
|
||||
|
||||
const indexCfgDefaults = {
|
||||
tokenize: "forward"
|
||||
}
|
||||
const indexCfg = searchConfig.indexConfig ? searchConfig.indexConfig : indexCfgDefaults
|
||||
const dataUrl = searchConfig.dataFile
|
||||
|
||||
indexCfg.document = {
|
||||
key: "id",
|
||||
index: ["title", "content"],
|
||||
store: ["title", "href", "parent"]
|
||||
}
|
||||
|
||||
const index = new FlexSearch.Document(indexCfg)
|
||||
window.geekdocSearchIndex = index
|
||||
|
||||
getJson(dataUrl, function (data) {
|
||||
data.forEach((obj) => {
|
||||
window.geekdocSearchIndex.add(obj)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function search(input, results, searchConfig) {
|
||||
const searchCfg = {
|
||||
enrich: true,
|
||||
limit: 10
|
||||
}
|
||||
|
||||
while (results.firstChild) {
|
||||
results.removeChild(results.firstChild)
|
||||
}
|
||||
|
||||
if (!input.value) {
|
||||
return results.classList.remove("has-hits")
|
||||
}
|
||||
|
||||
let searchHits = flattenHits(window.geekdocSearchIndex.search(input.value, searchCfg))
|
||||
|
||||
if (searchHits.length < 1) {
|
||||
return results.classList.remove("has-hits")
|
||||
}
|
||||
|
||||
results.classList.add("has-hits")
|
||||
|
||||
if (searchConfig.showParent === true) {
|
||||
searchHits = groupBy(searchHits, (hit) => hit.parent)
|
||||
}
|
||||
|
||||
const items = []
|
||||
|
||||
if (searchConfig.showParent === true) {
|
||||
for (const section in searchHits) {
|
||||
const item = document.createElement("li"),
|
||||
title = item.appendChild(document.createElement("span")),
|
||||
subList = item.appendChild(document.createElement("ul"))
|
||||
|
||||
title.textContent = section
|
||||
createLinks(searchHits[section], subList)
|
||||
|
||||
items.push(item)
|
||||
}
|
||||
} else {
|
||||
const item = document.createElement("li"),
|
||||
title = item.appendChild(document.createElement("span")),
|
||||
subList = item.appendChild(document.createElement("ul"))
|
||||
|
||||
title.textContent = "Results"
|
||||
createLinks(searchHits, subList)
|
||||
|
||||
items.push(item)
|
||||
}
|
||||
|
||||
items.forEach((item) => {
|
||||
results.appendChild(item)
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates links to given fields and either returns them in an array or attaches them to a target element
|
||||
* @param {Object} fields Page to which the link should point to
|
||||
* @param {HTMLElement} target Element to which the links should be attatched
|
||||
* @returns {Array} If target is not specified, returns an array of built links
|
||||
*/
|
||||
function createLinks(pages, target) {
|
||||
const items = []
|
||||
|
||||
for (const page of pages) {
|
||||
const item = document.createElement("li"),
|
||||
entry = item.appendChild(document.createElement("span")),
|
||||
a = entry.appendChild(document.createElement("a"))
|
||||
|
||||
entry.classList.add("flex")
|
||||
|
||||
a.href = page.href
|
||||
a.textContent = page.title
|
||||
a.classList.add("gdoc-search__entry")
|
||||
|
||||
if (target) {
|
||||
target.appendChild(item)
|
||||
continue
|
||||
}
|
||||
|
||||
items.push(item)
|
||||
}
|
||||
|
||||
return items
|
||||
}
|
||||
|
||||
function fetchErrors(response) {
|
||||
if (!response.ok) {
|
||||
throw Error("Failed to fetch '" + response.url + "': " + response.statusText)
|
||||
}
|
||||
return response
|
||||
}
|
||||
|
||||
function getJson(src, callback) {
|
||||
fetch(src)
|
||||
.then(fetchErrors)
|
||||
.then((response) => response.json())
|
||||
.then((json) => callback(json))
|
||||
.catch(function (error) {
|
||||
if (error instanceof AggregateError) {
|
||||
console.error(error.message)
|
||||
error.errors.forEach((element) => {
|
||||
console.error(element)
|
||||
})
|
||||
} else {
|
||||
console.error(error)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function flattenHits(results) {
|
||||
const items = []
|
||||
const map = new Map()
|
||||
|
||||
for (const field of results) {
|
||||
for (const page of field.result) {
|
||||
if (!map.has(page.doc.href)) {
|
||||
map.set(page.doc.href, true)
|
||||
items.push(page.doc)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return items
|
||||
}
|
|
@ -401,30 +401,6 @@ img {
|
|||
}
|
||||
}
|
||||
|
||||
&__figure {
|
||||
padding: $padding-4;
|
||||
margin: $padding-16 0;
|
||||
background-color: var(--accent-color);
|
||||
display: table;
|
||||
border-top-left-radius: $border-radius;
|
||||
border-top-right-radius: $border-radius;
|
||||
|
||||
figcaption {
|
||||
display: table-caption;
|
||||
caption-side: bottom;
|
||||
background-color: var(--accent-color);
|
||||
padding: 0 $padding-4 $padding-4;
|
||||
text-align: center;
|
||||
border-bottom-left-radius: $border-radius;
|
||||
border-bottom-right-radius: $border-radius;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
|
||||
&__footer {
|
||||
margin-top: $padding-32;
|
||||
|
||||
|
@ -559,10 +535,7 @@ img {
|
|||
color: var(--footer-font-color);
|
||||
|
||||
.fake-link:hover {
|
||||
background-image: linear-gradient(
|
||||
var(--footer-link-color),
|
||||
var(--footer-link-color)
|
||||
);
|
||||
background-image: linear-gradient(var(--footer-link-color), var(--footer-link-color));
|
||||
}
|
||||
|
||||
&__item {
|
||||
|
@ -636,8 +609,7 @@ img {
|
|||
visibility: hidden;
|
||||
background: var(--body-background);
|
||||
border-radius: $border-radius;
|
||||
box-shadow: 0 1px 3px 0 var(--accent-color),
|
||||
0 1px 2px 0 var(--accent-color-lite);
|
||||
box-shadow: 0 1px 3px 0 var(--accent-color), 0 1px 2px 0 var(--accent-color-lite);
|
||||
position: absolute;
|
||||
margin: 0;
|
||||
padding: $padding-8;
|
||||
|
|
|
@ -71,6 +71,30 @@
|
|||
}
|
||||
}
|
||||
|
||||
&__figure {
|
||||
padding: $padding-4;
|
||||
margin: $padding-16 0;
|
||||
background-color: var(--accent-color);
|
||||
display: table;
|
||||
border-top-left-radius: $border-radius;
|
||||
border-top-right-radius: $border-radius;
|
||||
|
||||
figcaption {
|
||||
display: table-caption;
|
||||
caption-side: bottom;
|
||||
background-color: var(--accent-color);
|
||||
padding: 0 $padding-4 $padding-4;
|
||||
text-align: center;
|
||||
border-bottom-left-radius: $border-radius;
|
||||
border-bottom-right-radius: $border-radius;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
border-radius: $border-radius;
|
||||
|
|
88
src/static/brand.svg
Normal file
|
@ -0,0 +1,88 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="128.54926mm"
|
||||
height="128.54977mm"
|
||||
viewBox="0 0 128.54926 128.54977"
|
||||
version="1.1"
|
||||
id="svg4543"
|
||||
inkscape:export-filename="/home/rknet/rkau2905/Bilder/favicon-32.png"
|
||||
inkscape:export-xdpi="6.3228416"
|
||||
inkscape:export-ydpi="6.3228416"
|
||||
inkscape:version="0.92.4 (unknown)"
|
||||
sodipodi:docname="geekdoc_invert.svg">
|
||||
<defs
|
||||
id="defs4537" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.1503906"
|
||||
inkscape:cx="159.02327"
|
||||
inkscape:cy="275.63348"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="g5186"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1600"
|
||||
inkscape:window-height="844"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="28"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4540">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-39.442039,-40.637613)">
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="Layer 1"
|
||||
style="display:none">
|
||||
<rect
|
||||
style="fill:#666666;fill-opacity:1;stroke-width:0.27813107"
|
||||
id="rect831"
|
||||
width="142.59648"
|
||||
height="143.05647"
|
||||
x="36.912102"
|
||||
y="37.170635" />
|
||||
</g>
|
||||
<g
|
||||
id="g5186"
|
||||
transform="translate(1.0583346,1.851866)">
|
||||
<path
|
||||
id="path5105"
|
||||
d="M 388,146.5918 A 242.92773,242.92871 0 0 0 145.07227,389.51953 242.92773,242.92871 0 0 0 388,632.44922 242.92773,242.92871 0 0 0 630.92773,389.51953 242.92773,242.92871 0 0 0 388,146.5918 Z m 0,10 A 232.92773,232.92871 0 0 1 620.92773,389.51953 232.92773,232.92871 0 0 1 388,622.44922 232.92773,232.92871 0 0 1 155.07227,389.51953 232.92773,232.92871 0 0 1 388,156.5918 Z"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke-width:1.12989867"
|
||||
inkscape:connector-curvature="0"
|
||||
transform="scale(0.26458333)" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke-width:0.29306456"
|
||||
d="m 102.65833,40.051097 a 63.008755,63.00902 0 0 0 -63.008753,63.009283 63.008755,63.00902 0 0 0 63.008753,63.00876 63.008755,63.00902 0 0 0 63.00876,-63.00876 63.008755,63.00902 0 0 0 -63.00876,-63.009283 z m -39.513148,32.79431 h 79.026298 a 4.3907643,6.0435574 0 1 1 0,12.086202 H 63.145182 a 4.3907643,6.0435574 0 1 1 0,-12.086202 z m 0,24.171874 h 79.026298 a 4.3907643,6.0435574 0 1 1 0,12.086199 H 63.145182 a 4.3907643,6.0435574 0 1 1 0,-12.086199 z m -0.594905,24.171869 h 53.247233 a 3.8037628,6.0435574 0 1 1 0,12.08621 H 62.550277 a 3.8037628,6.0435574 0 1 1 0,-12.08621 z"
|
||||
id="ellipse5130"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.5 KiB |
1
src/static/custom.css
Normal file
|
@ -0,0 +1 @@
|
|||
/* You can add custom styles here. */
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |