Compartmentalized and updated assets
- NETWATCH 404 pages removed - time for something new - Compartmentalized CSS fonts and JS script files - Streamlined cache manifest for ServiceWorker - Added AVIF images, replaced PNG fallback with WebP fallback - Changed favicon color
17
public/assets/css/fonts.css
Normal file
|
@ -0,0 +1,17 @@
|
|||
@font-face {
|
||||
font-family: "Roboto Mono";
|
||||
font-weight: 400;
|
||||
src: local("Roboto Mono Regular"),
|
||||
local("RobotoMono-Regular"),
|
||||
url("../fonts/RobotoMono-Regular.woff2"),
|
||||
url("../fonts/RobotoMono-Regular.ttf");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Roboto Mono";
|
||||
font-weight: 700;
|
||||
src: local("Roboto Mono Bold"),
|
||||
local("RobotoMono-Bold"),
|
||||
url("../fonts/RobotoMono-Bold.woff2"),
|
||||
url("../fonts/RobotoMono-Bold.ttf");
|
||||
}
|
|
@ -1,27 +1,11 @@
|
|||
@import url("fonts.css");
|
||||
|
||||
:root {
|
||||
--color: #212121;
|
||||
--color-accent: white;
|
||||
--color-highlight: #f4f2ff;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Roboto Mono";
|
||||
font-weight: 400;
|
||||
src: local("Roboto Mono Regular"),
|
||||
local("RobotoMono-Regular"),
|
||||
url("../fonts/RobotoMono-Regular.woff2"),
|
||||
url("../fonts/RobotoMono-Regular.ttf");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Roboto Mono";
|
||||
font-weight: 700;
|
||||
src: local("Roboto Mono Bold"),
|
||||
local("RobotoMono-Bold"),
|
||||
url("../fonts/RobotoMono-Bold.woff2"),
|
||||
url("../fonts/RobotoMono-Bold.ttf");
|
||||
}
|
||||
|
||||
/* Cornerstones */
|
||||
|
||||
* {
|
||||
|
@ -234,4 +218,3 @@ nav a:hover {
|
|||
}
|
||||
|
||||
}
|
||||
/* Victor Westerlund */
|
||||
|
|
1
public/assets/css/style.min.css
vendored
|
@ -1 +0,0 @@
|
|||
:root{--color: #212121;--color-accent: white;--color-highlight: #f4f2ff}@font-face{font-family:"Roboto Mono";font-weight:400;src:local("Roboto Mono Regular"),local("RobotoMono-Regular"),url(/assets/fonts/RobotoMono-Regular.woff2),url(/assets/fonts/RobotoMono-Regular.ttf)}@font-face{font-family:"Roboto Mono";font-weight:700;src:local("Roboto Mono Bold"),local("RobotoMono-Bold"),url(/assets/fonts/RobotoMono-Bold.woff2),url(/assets/fonts/RobotoMono-Bold.ttf)}*{margin:0;font-family:"Roboto Mono","Arial",sans-serif;color:var(--color)}::selection{background:var(--color-highlight);color:var(--color)}body,html,main,main>div{width:100%;height:100%}.logo,.logo::after{width:0;height:0;border-left:var(--skew) solid transparent;border-right:var(--skew) solid transparent;border-top:var(--size) solid var(--color)}.logo{--size: 5em;--skew: calc(var(--size) / 1.7)}.logo::after{content:"";opacity:.3}h1{font-size:2em}h2{font-weight:400;font-size:1.42em}h2 span{color:var(--color-accent);background:var(--color)}main{--grid-spacing: 30px;margin:auto;max-width:200vh;background:radial-gradient(circle,rgba(0,0,0,.2) 1px,transparent 1px),url(/assets/img/pattern.gif);background-size:var(--grid-spacing) var(--grid-spacing),auto 90%;background-position:100% 100%;background-repeat:repeat,no-repeat;background-blend-mode:multiply;image-rendering:pixelated;image-rendering:-moz-crisp-edges}main *{image-rendering:initial}main>div{position:absolute;width:50%}#intro{left:0;width:100vh;box-sizing:border-box;padding:5vw;display:flex;align-items:center;z-index:1}#intro .inner{display:flex;flex-wrap:wrap;height:100%}#intro .logo{--size: 7vh;margin-bottom:2em}#intro .block{width:100%;font-size:3vh}#intro .block:last-child{display:flex;align-items:flex-end}#intro .block p{font-size:.7em;margin-bottom:1.5em}#intro .block p span{background:var(--color-accent);margin-right:.9em}nav a{text-decoration:none;margin-right:2em;font-size:.9em}nav a::after{content:"→";padding-left:.5em}nav a:hover{background:var(--color-highlight);font-weight:700}#myface{right:0;width:50%;display:flex;justify-content:center}#myface img,#myface picture{position:absolute;height:80%;bottom:0;pointer-events:none;display:flex;justify-content:center}#myface img{height:100%}@media screen and (max-width:1010px){#myface{display:none}}@media screen and (max-width:800px){h1{font-size:7vw}h2{font-size:5vw}main{max-width:unset;background-size:auto 100vw}#intro{width:initial;padding:10vw;text-align:center}#intro p{text-align:justify}#intro .block p:last-of-type{text-align:initial}nav a{text-decoration:none;margin-right:5vw;font-size:5vw}}
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 96 KiB |
BIN
public/assets/img/myface/highres.avif
Normal file
After Width: | Height: | Size: 671 KiB |
Before Width: | Height: | Size: 3.8 MiB |
BIN
public/assets/img/myface/mediumres.avif
Normal file
After Width: | Height: | Size: 28 KiB |
|
@ -1,29 +0,0 @@
|
|||
+--------------------------------------------------------------------------------------------+
|
||||
Size comparison for 6x6 monochrome image ranking from best to worst
|
||||
|
||||
pattern.gif: 49 bytes
|
||||
- Dithering level: 7 (doesn't really matter)
|
||||
- Transparency threshold: 128 (doesn't really matter)
|
||||
|
||||
pattern.bmp: 86 bytes
|
||||
- Bit depth: 4
|
||||
- Dirthering level: 7 (doesn't really matter)
|
||||
|
||||
pattern.png: 151 bytes
|
||||
- Bit depth: 4
|
||||
- Dirthering level: 7 (doesn't really matter)
|
||||
- Transparency threshold: 192 (doesn't really matter)
|
||||
- Interlaced (saves 1 byte)
|
||||
|
||||
pattern.webp: 248 bytes
|
||||
- Quality: 100
|
||||
|
||||
pattern.jpg: 800 bytes
|
||||
- Chroma Subsampling: 4:2:2 (saves 6 bytes from 4:4:4)
|
||||
+--------------------------------------------------------------------------------------------+
|
||||
|
||||
-- Here's the image used for the test --
|
||||
data:image/gif;base64,R0lGODlhBgAGAHAAACwAAAAABgAGAIH////08v8AAAAAAAACCgRiGciL9mA6ExQAOw==
|
||||
|
||||
|
||||
Unfortunately after all response headers are set, the total ends up at 317 bytes.
|
7
public/assets/js/nomodule.js
Normal file
|
@ -0,0 +1,7 @@
|
|||
// Promote IE to Edge
|
||||
if(/MSIE \d|Trident.*rv:/.test(navigator.userAgent)) {
|
||||
window.location = 'microsoft-edge:' + window.location;
|
||||
setTimeout(function() {
|
||||
window.location = 'https://go.microsoft.com/fwlink/?linkid=2135547';
|
||||
},1);
|
||||
}
|
6
public/assets/js/script.js
Normal file
|
@ -0,0 +1,6 @@
|
|||
// Register SW if supported by browser
|
||||
if(navigator.serviceWorker) {
|
||||
navigator.serviceWorker.register("sw.js",{
|
||||
scope: "/"
|
||||
});
|
||||
}
|
|
@ -33,29 +33,15 @@
|
|||
</div>
|
||||
<div id="myface">
|
||||
<picture>
|
||||
<source media="(min-width: 900px)" srcset="assets/img/myface/highres.webp" type="image/webp">
|
||||
<source media="(min-width: 300px)" srcset="assets/img/myface/mediumres.webp" type="image/webp">
|
||||
<source media="(min-width: 900px)" srcset="assets/img/myface/highres.png" type="image/png">
|
||||
<source media="(min-width: 300px)" srcset="assets/img/myface/mediumres.png" type="image/png">
|
||||
<img srcset="assets/img/myface/fallback.jpg" type="image/jpeg">
|
||||
<source srcset="assets/img/myface/highres.avif" type="image/avif" media="(min-width: 1920px)">
|
||||
<source srcset="assets/img/myface/highres.webp" type="image/webp" media="(min-width: 1920px)">
|
||||
<source srcset="assets/img/myface/mediumres.avif" type="image/avif">
|
||||
<source srcset="assets/img/myface/mediumres.webp" type="image/webp">
|
||||
<img src="assets/img/myface/mediumres.png" type="image/png">
|
||||
</picture>
|
||||
</div>
|
||||
</main>
|
||||
<script>
|
||||
// Promote IE to Edge
|
||||
if(/MSIE \d|Trident.*rv:/.test(navigator.userAgent)) {
|
||||
window.location = 'microsoft-edge:' + window.location;
|
||||
setTimeout(function() {
|
||||
window.location = 'https://go.microsoft.com/fwlink/?linkid=2135547';
|
||||
},1);
|
||||
}
|
||||
|
||||
// Register SW if supported by browser
|
||||
if(navigator.serviceWorker) {
|
||||
navigator.serviceWorker.register("sw.js",{
|
||||
scope: "/"
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<script src="assets/js/script.js" type="module"></script>
|
||||
<script src="assets/js/nomodule.js" nomodule></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,42 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="theme-color" content="#091008">
|
||||
<link rel="stylesheet" href="/netwatch/assets/css/style.css">
|
||||
<title>NETDIR://PAGE_NOT_FOUND</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="keystone">
|
||||
<header>
|
||||
<div id="keystoneLogo" class="center">
|
||||
<img src="/netwatch/assets/img/Keystone_icon_2077.svg"/>
|
||||
<img src="/netwatch/assets/img/Keystone_Logo_2077.svg"/>
|
||||
</div>
|
||||
<div id="searchbox" class="centerY">
|
||||
<div id="urlbox" class="centerY">
|
||||
<p>NETDIR://PAGE_NOT_FOUND</p>
|
||||
<div id="poweredby" class="centerY">
|
||||
<p>POWERED BY</p>
|
||||
<svg data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 96.75"><path d="M.05,64.48c27.15-.35,54.42,0,81.57-.12,8.78-.11,17.91,1.43,25,6.88,4.62,3.91,7.82,9.37,7.94,15.53v73.87c-11,.11-22-.12-33.08.11V86.42c-16.24,0-32.36-.12-48.61.12q.18,37.15,0,74.33c-10.9-.12-21.93-.12-32.84,0C.05,128.62-.07,96.38.05,64.48Z" transform="translate(0 -64.13)"/><path class="cls-1" d="M128.45,64.48c34.27-.12,68.65-.12,102.92,0-.24,7.23.11,14.59-.12,21.82-23.24-.12-46.6-.24-69.84,0,.12,17.43,0,34.85.12,52.28h69.95c-.11,7.35-.11,14.59,0,21.94-34.26.12-68.64-.12-102.91.12C128.34,128.62,128.34,96.49,128.45,64.48Z" transform="translate(0 -64.13)"/><path class="cls-1" d="M245,64.48c34.62-.23,69.12,0,103.74-.12,2.61,7.35,5.46,14.59,8.18,21.82-13.51.12-27.15-.12-40.66.12.11,24.78,0,49.56,0,74.34-13.88-.12-27.87-.12-41.74,0,0-24.78.12-49.56,0-74.46-9.72.12-19.56-.12-29.28.12C244.88,79,245.12,71.71,245,64.48Z" transform="translate(0 -64.13)"/><path class="cls-1" d="M366.17,64.36c11.38,0,22.76-.23,34.15,0,9,24.66,18.14,49.44,27.15,74.1h56.79q13.51-37.16,27.27-74.33c11.38.12,22.76,0,34.14.12-10.79,28.09-21.22,56.43-31.89,84.65a18.18,18.18,0,0,1-17.07,11.5H414.9a18.23,18.23,0,0,1-17-11.86C387.16,120.68,376.6,92.46,366.17,64.36Z" transform="translate(0 -64.13)"/><path class="cls-1" d="M562.86,64.36c21.94-.11,43.87.12,65.81-.11,2.72,7.35,5.57,14.58,8.18,21.93-16.25-.12-32.49,0-48.85,0-9.13,24.78-18.14,49.56-27.27,74.34-11.38,0-22.65-.12-34,.12C538.8,128.51,551,96.49,562.86,64.36Z" transform="translate(0 -64.13)"/><path class="cls-1" d="M646.09,64.36c37.35.12,74.7-.11,112,.12V86.42c-9.84-.12-19.68-.12-29.4,0,.12,24.78,0,49.56,0,74.33-13.87-.11-27.86,0-41.73,0V86.42H654.39C651.67,78.83,648.82,71.6,646.09,64.36Z" transform="translate(0 -64.13)"/><path class="cls-1" d="M801.29,64.36h70.43V86.18c-23.12-.12-46.24-.12-69.48,0v52.4h69.48v22.06c-23.48-.12-47,0-70.43,0-7.59-.24-15.53-1.31-21.93-5.46a20.62,20.62,0,0,1-10-17.19V86.89a20.37,20.37,0,0,1,8.65-16.12C784.69,65.79,793.23,64.25,801.29,64.36Z" transform="translate(0 -64.13)"/><path class="cls-1" d="M885.71,64.36c10.9-.11,21.81,0,32.72-.11,0,12.92.12,25.84,0,38.88,16.12.12,32.37-.11,48.49.12.12-12.92.12-26,0-39,11,.11,22.05,0,33.08,0-.12,32,0,64.14-.12,96.27-11,0-21.93-.12-33,0,0-12.45.24-24.9-.12-37.35-16.12.24-32.25.12-48.37.12v37.35c-10.91-.12-21.82-.12-32.84,0C885.71,128.62,885.47,96.38,885.71,64.36Z" transform="translate(0 -64.13)"/><path class="cls-1" d="M437,73.49c12.57.12,25.26-.12,37.82.12q-.18,23.3,0,46.6c-12.56.12-25.25,0-37.82.12C436.83,104.67,436.83,89.14,437,73.49Z" transform="translate(0 -64.13)"/><path class="cls-1" d="M167.34,101.47c14.23-.11,28.46,0,42.57,0,0,7.35.12,14.59,0,21.94H167.22C167.34,116.06,167.22,108.71,167.34,101.47Z" transform="translate(0 -64.13)"/><path class="cls-1" d="M614.79,116.89h33.79c5.22,14.58,11,29,16.25,43.63H630.56C625.7,145.82,620,131.47,614.79,116.89Z" transform="translate(0 -64.13)"/></svg>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<main>
|
||||
<div id="banner" class="centerY">
|
||||
<img src="/netwatch/assets/img/no_entry_icon_2077.svg"/>
|
||||
<h1>PAGE NOT FOUND</h1>
|
||||
</div>
|
||||
<div id="content" class="center">
|
||||
<div class="center">
|
||||
<img src="/netwatch/assets/img/NetWatch_badge_2077.png"/>
|
||||
<h2>THIS PAGE CANNOT BE DISPLAYED. FOR HELP, PLEASE CONTACT NETWATCH</h2>
|
||||
<p>REMEMBER: Never access private domains with the extension .web. Surf ONLY domains with approved URL extensions (e.g. CORP, PUB, LAW). DO NOT upload daemons on public-access computers. If you encounter a rouge AI, contact a NetWatch officer IMMEDIATELY and follow their instructions.</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,240 +0,0 @@
|
|||
@font-face {
|
||||
font-family: "NetWatch";
|
||||
src: url("/netwatch/assets/fonts/netwatch-normal.woff2");
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
:root {
|
||||
--color-frame: #18635F;
|
||||
--color-text: #d7fffa;
|
||||
--color-text-distortion: #03554d40;
|
||||
}
|
||||
|
||||
::selection {
|
||||
background: var(--color-frame);
|
||||
color: var(--color-text);
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
color: var(--color-text);
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
font-family: "NetWatch",sans-serif;
|
||||
background: black;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
-webkit-filter: saturate(2);
|
||||
filter: saturate(2);
|
||||
cursor: url("/netwatch/assets/img/cursor.png") 32 32, auto;
|
||||
}
|
||||
|
||||
/* ---- */
|
||||
|
||||
.center {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.centerX {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.centerY {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
/* ---- */
|
||||
|
||||
#keystone {
|
||||
--header-height: 80px;
|
||||
--header-content-offset: var(--header-height);
|
||||
|
||||
width: calc(100% - 50px);
|
||||
height: calc(100% - 50px);
|
||||
border: solid 2px var(--color-frame);
|
||||
}
|
||||
|
||||
#keystone header {
|
||||
--gadient-dark: #052c2a;
|
||||
--gradient-light: #072e29;
|
||||
|
||||
position: relative;
|
||||
top: 2px;
|
||||
height: 80px;
|
||||
background: #033A35;
|
||||
background: repeating-linear-gradient(0,var(--gadient-dark),var(--gadient-dark) 5px,var(--gradient-light) 5px,var(--gradient-light) 10px);
|
||||
border-top: solid 2px var(--color-frame);
|
||||
border-bottom: solid 2px var(--color-frame);
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
#keystoneLogo {
|
||||
width: 400px;
|
||||
min-width: 400px;
|
||||
height: 100%;
|
||||
background: #0a484541;
|
||||
border-right: solid 2px var(--color-frame);
|
||||
}
|
||||
|
||||
#keystoneLogo img:first-child {
|
||||
height: 35px;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
#keystoneLogo img {
|
||||
height: 30px;
|
||||
filter: drop-shadow(5px 3px 1px var(--color-text-distortion));
|
||||
}
|
||||
|
||||
/* ---- */
|
||||
|
||||
#searchbox {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#urlbox {
|
||||
position: absolute;
|
||||
right: var(--header-content-offset);
|
||||
width: calc(100% - 200px);
|
||||
height: calc(var(--header-content-offset) / 2);
|
||||
background: #0A4845CC;
|
||||
}
|
||||
|
||||
#urlbox > p {
|
||||
font-size: 30px;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
#poweredby {
|
||||
position: absolute;
|
||||
height: 100%;
|
||||
right: var(--header-content-offset);
|
||||
display: flex;
|
||||
}
|
||||
|
||||
#poweredby p {
|
||||
opacity: .3;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
#poweredby svg {
|
||||
height: 10px;
|
||||
margin-left: 10px;
|
||||
fill: var(--color-text);
|
||||
}
|
||||
|
||||
/* ---- */
|
||||
|
||||
main {
|
||||
--color-glow: #d5ffea94;
|
||||
|
||||
width: 100%;
|
||||
height: calc(100% - var(--header-height) - 4px);
|
||||
box-sizing: border-box;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#banner {
|
||||
position: relative;
|
||||
margin-top: 50px;
|
||||
width: 50%;
|
||||
box-sizing: border-box;
|
||||
padding: 10px;
|
||||
padding-left: 15px;
|
||||
height: var(--header-height);
|
||||
background: #f4fefc;
|
||||
box-shadow: 0 0 20px 17px #36c2b126;
|
||||
}
|
||||
|
||||
#banner img {
|
||||
height: 100%;
|
||||
margin-right: 15px;
|
||||
filter: drop-shadow(0px 0px 17px var(--color-glow));
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
#banner h1 {
|
||||
color: #002823;
|
||||
font-size: 55px;
|
||||
font-weight: 300;
|
||||
word-spacing: 5px;
|
||||
text-shadow: 0 0 17px var(--color-glow);
|
||||
}
|
||||
|
||||
/* ---- */
|
||||
|
||||
#content {
|
||||
height: calc(100% - var(--header-height) - 50px);
|
||||
}
|
||||
|
||||
#content > div {
|
||||
flex-wrap: wrap;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
#content img {
|
||||
filter: drop-shadow(0px 0px 17px #91eabe36);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
#content h2,
|
||||
#content p {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
text-shadow: 0 0 17px var(--color-glow);
|
||||
}
|
||||
|
||||
#content h2 {
|
||||
margin-top: 15px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1400px) {
|
||||
#urlbox > p {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#banner {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 950px) {
|
||||
#keystoneLogo {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#searchbox {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#banner {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#content > div {
|
||||
width: calc(100% - 20px);
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-height: 750px) {
|
||||
#banner {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#content {
|
||||
height: calc(100% - var(--header-height));
|
||||
}
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 284.81 37.73"><defs><style>.cls-1{fill:#cdfffa;stroke:#cdfffa;stroke-miterlimit:10;stroke-width:2px;}</style></defs><path class="cls-1" d="M118.5,260H123a.5.5,0,0,0,.5-.5V246.08a.5.5,0,0,1,.5-.5h2.83a.51.51,0,0,1,.4.2l10.62,14a.48.48,0,0,0,.4.2h7.83a.5.5,0,0,0,.38-.83L133.67,244.3a.5.5,0,0,1,0-.62L146.59,226a.5.5,0,0,0-.41-.79h-6.93a.48.48,0,0,0-.4.2l-10.7,14.43a.48.48,0,0,1-.4.2H124.5a.5.5,0,0,1-.5-.5V225.67a.5.5,0,0,0-.5-.5h-5a.5.5,0,0,0-.5.5V259.5A.5.5,0,0,0,118.5,260Z" transform="translate(-117 -223.69)"/><rect class="cls-1" x="37.5" y="1.48" width="26.92" height="4.83"/><rect class="cls-1" x="37.54" y="15.6" width="26.92" height="4.83" rx="0.5"/><rect class="cls-1" x="37.54" y="31.6" width="26.92" height="4.83" rx="0.5"/><path class="cls-1" d="M188.73,226l12.16,14.9a.52.52,0,0,1,.11.32V259.5a.5.5,0,0,0,.5.5h5.25a.5.5,0,0,0,.5-.5V241.17a.51.51,0,0,1,.11-.31l12-15.05A.5.5,0,0,0,219,225h-5.7a.51.51,0,0,0-.41.21l-6.7,9.58a.51.51,0,0,1-.41.21h-2.49a.48.48,0,0,1-.4-.2l-7.28-9.6a.5.5,0,0,0-.41-.19l-6,.13A.5.5,0,0,0,188.73,226Z" transform="translate(-117 -223.69)"/><path class="cls-1" d="M255.5,226v5a.5.5,0,0,1-.5.5H234a.5.5,0,0,0-.5.5v8a.5.5,0,0,0,.5.5h22.75a.5.5,0,0,1,.5.5v18.92a.5.5,0,0,1-.5.5H229.5a.5.5,0,0,1-.5-.5v-5.09a.5.5,0,0,1,.5-.5h22a.5.5,0,0,0,.5-.5V247a.5.5,0,0,0-.5-.5H229a.5.5,0,0,1-.5-.5V226a.5.5,0,0,1,.5-.5h26A.5.5,0,0,1,255.5,226Z" transform="translate(-117 -223.69)"/><path class="cls-1" d="M264.92,226v4.08a.5.5,0,0,0,.5.5H276.5a.5.5,0,0,1,.5.5v28.84a.5.5,0,0,0,.5.5h4a.5.5,0,0,0,.5-.5V231a.5.5,0,0,1,.5-.5h11a.5.5,0,0,0,.5-.5v-4a.5.5,0,0,0-.5-.5H265.42A.5.5,0,0,0,264.92,226Z" transform="translate(-117 -223.69)"/><path class="cls-1" d="M300.33,225.5v34a.5.5,0,0,0,.5.5h28a.5.5,0,0,0,.5-.5v-34a.5.5,0,0,0-.5-.5h-28A.5.5,0,0,0,300.33,225.5Zm22.17,28h-16a.5.5,0,0,1-.5-.5V231.5a.5.5,0,0,1,.5-.5h16a.5.5,0,0,1,.5.5V253A.5.5,0,0,1,322.5,253.5Z" transform="translate(-117 -223.69)"/><path class="cls-1" d="M337.08,260h6.09a.5.5,0,0,0,.5-.5v-28a.5.5,0,0,1,.5-.5h15a.5.5,0,0,1,.5.5v28a.5.5,0,0,0,.5.5h6.16a.5.5,0,0,0,.5-.5v-34a.5.5,0,0,0-.5-.5H337.08a.5.5,0,0,0-.5.5v34A.5.5,0,0,0,337.08,260Z" transform="translate(-117 -223.69)"/><rect class="cls-1" x="256.85" y="1" width="26.92" height="4.83"/><rect class="cls-1" x="256.9" y="15.12" width="26.92" height="4.83" rx="0.5"/><rect class="cls-1" x="256.9" y="31.12" width="26.92" height="4.83" rx="0.5"/></svg>
|
Before Width: | Height: | Size: 2.4 KiB |
|
@ -1,14 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 25.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="30px" height="29px" viewBox="0 0 30 29" style="enable-background:new 0 0 30 29;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{opacity:0.1;fill:#B6FFF4;enable-background:new ;}
|
||||
.st1{fill:#D7FFFA;}
|
||||
</style>
|
||||
<path class="st0" d="M26.5,0h-23C1.6,0,0,1.6,0,3.5v22C0,27.4,1.6,29,3.5,29h23c1.9,0,3.5-1.6,3.5-3.5c0,0,0,0,0,0v-22
|
||||
C30,1.6,28.4,0,26.5,0z M18.7,13.5l-4.6,3.2l4.6,3.1V24l-10-7.4l10-7.3V13.5z"/>
|
||||
<path class="st1" d="M24.5,10.6l-7.8-7.4c-0.9-0.9-2.4-0.8-3.3,0l-8,8c-0.4,0.5-0.7,1.1-0.7,1.7l0.1,10.2c0,1.3,1.1,2.4,2.4,2.4
|
||||
h15.7c1.3,0,2.4-1.1,2.4-2.4c0,0,0,0,0,0V12.4C25.2,11.7,25,11.1,24.5,10.6z M18.7,13.5l-4.6,3.2l4.6,3.1V24l-10-7.4l10-7.3V13.5z"
|
||||
/>
|
||||
</svg>
|
Before Width: | Height: | Size: 944 B |
|
@ -1 +0,0 @@
|
|||
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 96.75"><defs><style>.cls-1{fill:#fff;}</style></defs><path class="cls-1" d="M.05,64.48c27.15-.35,54.42,0,81.57-.12,8.78-.11,17.91,1.43,25,6.88,4.62,3.91,7.82,9.37,7.94,15.53v73.87c-11,.11-22-.12-33.08.11V86.42c-16.24,0-32.36-.12-48.61.12q.18,37.15,0,74.33c-10.9-.12-21.93-.12-32.84,0C.05,128.62-.07,96.38.05,64.48Z" transform="translate(0 -64.13)"/><path class="cls-1" d="M128.45,64.48c34.27-.12,68.65-.12,102.92,0-.24,7.23.11,14.59-.12,21.82-23.24-.12-46.6-.24-69.84,0,.12,17.43,0,34.85.12,52.28h69.95c-.11,7.35-.11,14.59,0,21.94-34.26.12-68.64-.12-102.91.12C128.34,128.62,128.34,96.49,128.45,64.48Z" transform="translate(0 -64.13)"/><path class="cls-1" d="M245,64.48c34.62-.23,69.12,0,103.74-.12,2.61,7.35,5.46,14.59,8.18,21.82-13.51.12-27.15-.12-40.66.12.11,24.78,0,49.56,0,74.34-13.88-.12-27.87-.12-41.74,0,0-24.78.12-49.56,0-74.46-9.72.12-19.56-.12-29.28.12C244.88,79,245.12,71.71,245,64.48Z" transform="translate(0 -64.13)"/><path class="cls-1" d="M366.17,64.36c11.38,0,22.76-.23,34.15,0,9,24.66,18.14,49.44,27.15,74.1h56.79q13.51-37.16,27.27-74.33c11.38.12,22.76,0,34.14.12-10.79,28.09-21.22,56.43-31.89,84.65a18.18,18.18,0,0,1-17.07,11.5H414.9a18.23,18.23,0,0,1-17-11.86C387.16,120.68,376.6,92.46,366.17,64.36Z" transform="translate(0 -64.13)"/><path class="cls-1" d="M562.86,64.36c21.94-.11,43.87.12,65.81-.11,2.72,7.35,5.57,14.58,8.18,21.93-16.25-.12-32.49,0-48.85,0-9.13,24.78-18.14,49.56-27.27,74.34-11.38,0-22.65-.12-34,.12C538.8,128.51,551,96.49,562.86,64.36Z" transform="translate(0 -64.13)"/><path class="cls-1" d="M646.09,64.36c37.35.12,74.7-.11,112,.12V86.42c-9.84-.12-19.68-.12-29.4,0,.12,24.78,0,49.56,0,74.33-13.87-.11-27.86,0-41.73,0V86.42H654.39C651.67,78.83,648.82,71.6,646.09,64.36Z" transform="translate(0 -64.13)"/><path class="cls-1" d="M801.29,64.36h70.43V86.18c-23.12-.12-46.24-.12-69.48,0v52.4h69.48v22.06c-23.48-.12-47,0-70.43,0-7.59-.24-15.53-1.31-21.93-5.46a20.62,20.62,0,0,1-10-17.19V86.89a20.37,20.37,0,0,1,8.65-16.12C784.69,65.79,793.23,64.25,801.29,64.36Z" transform="translate(0 -64.13)"/><path class="cls-1" d="M885.71,64.36c10.9-.11,21.81,0,32.72-.11,0,12.92.12,25.84,0,38.88,16.12.12,32.37-.11,48.49.12.12-12.92.12-26,0-39,11,.11,22.05,0,33.08,0-.12,32,0,64.14-.12,96.27-11,0-21.93-.12-33,0,0-12.45.24-24.9-.12-37.35-16.12.24-32.25.12-48.37.12v37.35c-10.91-.12-21.82-.12-32.84,0C885.71,128.62,885.47,96.38,885.71,64.36Z" transform="translate(0 -64.13)"/><path class="cls-1" d="M437,73.49c12.57.12,25.26-.12,37.82.12q-.18,23.3,0,46.6c-12.56.12-25.25,0-37.82.12C436.83,104.67,436.83,89.14,437,73.49Z" transform="translate(0 -64.13)"/><path class="cls-1" d="M167.34,101.47c14.23-.11,28.46,0,42.57,0,0,7.35.12,14.59,0,21.94H167.22C167.34,116.06,167.22,108.71,167.34,101.47Z" transform="translate(0 -64.13)"/><path class="cls-1" d="M614.79,116.89h33.79c5.22,14.58,11,29,16.25,43.63H630.56C625.7,145.82,620,131.47,614.79,116.89Z" transform="translate(0 -64.13)"/></svg>
|
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 82 KiB |
Before Width: | Height: | Size: 6.2 KiB |
|
@ -1,10 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 25.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="48px" height="48px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:none;stroke:#002823;stroke-width:5;stroke-miterlimit:10;}
|
||||
</style>
|
||||
<circle class="st0" cx="24" cy="24" r="21.5"/>
|
||||
<line class="st0" x1="9" y1="39" x2="39" y2="9"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 578 B |
34
public/sw.js
|
@ -1,23 +1,32 @@
|
|||
const version = "1620928311";
|
||||
const version = "1622708674";
|
||||
const root = "/";
|
||||
|
||||
let activeCaches = [
|
||||
`content-${version}`
|
||||
];
|
||||
|
||||
let cacheManifest = [
|
||||
"index.html",
|
||||
"assets/css/style.css",
|
||||
"assets/css/fonts.css",
|
||||
"assets/img/favicon.png",
|
||||
"assets/img/pattern.gif",
|
||||
"assets/fonts/RobotoMono-Bold.woff2",
|
||||
"assets/fonts/RobotoMono-Regular.woff2",
|
||||
"assets/js/script.js"
|
||||
];
|
||||
|
||||
// Download assets and install ServiceWorker
|
||||
self.addEventListener("install", event => {
|
||||
event.waitUntil(
|
||||
caches.open(`content-${version}`).then(cache => cache.addAll([
|
||||
root + "index.html",
|
||||
root + "assets/css/style.css",
|
||||
root + "assets/img/favicon.png",
|
||||
root + "assets/img/pattern.gif",
|
||||
root + "assets/fonts/RobotoMono-Bold.woff2",
|
||||
root + "assets/fonts/RobotoMono-Regular.woff2"
|
||||
]))
|
||||
caches.open(`content-${version}`).then(cache => cache.addAll(cacheManifest.map(asset => {
|
||||
// Append the root path to all assets
|
||||
return root + asset;
|
||||
})))
|
||||
)
|
||||
});
|
||||
|
||||
// Wipe old assets from Cache Storage
|
||||
self.addEventListener("activate", event => {
|
||||
event.waitUntil(
|
||||
// Delete inactive caches
|
||||
|
@ -33,7 +42,7 @@ self.addEventListener("activate", event => {
|
|||
)
|
||||
});
|
||||
|
||||
// Fetch and cache content to bucket
|
||||
// Fetch and cache an asset not defined in the manifest
|
||||
async function fetchToCache(event) {
|
||||
const networkFetch = fetch(event.request);
|
||||
|
||||
|
@ -73,7 +82,7 @@ self.addEventListener("fetch", event => {
|
|||
return;
|
||||
}
|
||||
|
||||
// Fetch cross-origin none-asset content
|
||||
// Fetch cross-origin content using the network
|
||||
if(!origin || (url.pathname.substring(1,7) != "assets")) {
|
||||
event.respondWith(fetchContent(url.href));
|
||||
return;
|
||||
|
@ -86,9 +95,8 @@ self.addEventListener("fetch", event => {
|
|||
return;
|
||||
}
|
||||
|
||||
// Respond with content for cache or fetch and save
|
||||
// Respond with content from cache or fetch and save
|
||||
event.respondWith(
|
||||
caches.match(event.request).then(response => response || fetchToCache(event))
|
||||
);
|
||||
});
|
||||
// Victor Westerlund
|
||||
|
|