690 lines
23 KiB
JavaScript
690 lines
23 KiB
JavaScript
|
module.exports = (
|
||
|
{
|
||
|
title,
|
||
|
contentTitle,
|
||
|
texts = [],
|
||
|
bodyBackgroundColors = ["#ffa191", "#ffc247"],
|
||
|
buildingsColor = "#ff6347",
|
||
|
craneDivBorderColor = "#ff6347",
|
||
|
craneArmColor = "#f88f7c",
|
||
|
craneWeightColor = "#f88f7c",
|
||
|
outerCraneColor = "#ff6347",
|
||
|
craneLineColor = "#ff6347",
|
||
|
craneCabinColor = "#f88f7c",
|
||
|
craneStandColors = ["#ff6347", "#f29b8b"],
|
||
|
},
|
||
|
loggedIn
|
||
|
) => {
|
||
|
let logged = "<a class='text' href='/discord'>Login</a>"
|
||
|
if (loggedIn) logged = "<a class='text' href='/discord/logout'>Logout</a>"
|
||
|
return `
|
||
|
<!DOCTYPE html>
|
||
|
<html lang="en">
|
||
|
<head>
|
||
|
<title>${title}</title>
|
||
|
<style>
|
||
|
@import url("https://fonts.googleapis.com/css?family=Ubuntu");
|
||
|
#content-title {
|
||
|
text-align: center !important;
|
||
|
}
|
||
|
#outerCraneContainer {
|
||
|
position: absolute;
|
||
|
width: 100%;
|
||
|
height: 100%;
|
||
|
bottom: 0;
|
||
|
overflow: hidden;
|
||
|
display: flex;
|
||
|
justify-content: center;
|
||
|
box-shadow: inset 0 -60px 0 -30px ${outerCraneColor};
|
||
|
}
|
||
|
.buildings {
|
||
|
height: 84.9673202614379px;
|
||
|
width: 100%;
|
||
|
left: 0;
|
||
|
}
|
||
|
.buildings div {
|
||
|
height: inherit;
|
||
|
width: 42.48366013071895px;
|
||
|
background: ${buildingsColor};
|
||
|
position: absolute;
|
||
|
bottom: 10%;
|
||
|
}
|
||
|
.buildings div:after {
|
||
|
content: '';
|
||
|
width: 80%;
|
||
|
height: 60%;
|
||
|
left: 10%;
|
||
|
bottom: 30%;
|
||
|
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAFElEQVQImWP4////fwYYIJKDEwAAfPsP8eFXG40AAAAASUVORK5CYII=") repeat;
|
||
|
position: absolute;
|
||
|
}
|
||
|
.buildings div:nth-of-type(1) {
|
||
|
width: 42.48366013071895px;
|
||
|
height: 21.241830065359476px;
|
||
|
right: 37%;
|
||
|
bottom: 18%;
|
||
|
}
|
||
|
.buildings div:nth-of-type(1):after {
|
||
|
bottom: 11%;
|
||
|
}
|
||
|
.buildings div:nth-of-type(2) {
|
||
|
width: 48.552754435107374px;
|
||
|
height: 28.322440087145967px;
|
||
|
right: 30%;
|
||
|
bottom: 35%;
|
||
|
transform: rotate(180deg);
|
||
|
}
|
||
|
.buildings div:nth-of-type(2):after {
|
||
|
width: 60%;
|
||
|
left: 11%;
|
||
|
}
|
||
|
.buildings div:nth-of-type(3) {
|
||
|
width: 24.276377217553687px;
|
||
|
height: 37.76325344952796px;
|
||
|
left: 40%;
|
||
|
bottom: 35%;
|
||
|
}
|
||
|
.buildings div:nth-of-type(3):after {
|
||
|
bottom: 0;
|
||
|
width: 20%;
|
||
|
height: 85%;
|
||
|
left: 70%;
|
||
|
}
|
||
|
.buildings div:nth-of-type(4) {
|
||
|
width: 84.9673202614379px;
|
||
|
height: 21.241830065359476px;
|
||
|
left: 24%;
|
||
|
bottom: 20%;
|
||
|
}
|
||
|
.buildings div:nth-of-type(4):after {
|
||
|
background: none;
|
||
|
}
|
||
|
.buildings div:nth-of-type(5) {
|
||
|
width: 61.794414735591204px;
|
||
|
height: 67.97385620915033px;
|
||
|
left: 47%;
|
||
|
bottom: 10%;
|
||
|
}
|
||
|
.buildings div:nth-of-type(5):after {
|
||
|
bottom: 0;
|
||
|
width: 40%;
|
||
|
height: 85%;
|
||
|
left: 20%;
|
||
|
}
|
||
|
.crane,
|
||
|
.buildings {
|
||
|
position: absolute;
|
||
|
bottom: 0;
|
||
|
}
|
||
|
.crane div {
|
||
|
border-radius: 2px;
|
||
|
position: absolute;
|
||
|
}
|
||
|
.crane .line {
|
||
|
border: none;
|
||
|
background: ${craneLineColor};
|
||
|
outline: 1px solid transparent;
|
||
|
z-index: 0;
|
||
|
}
|
||
|
.crane .lineOne {
|
||
|
width: 60%;
|
||
|
left: 11%;
|
||
|
top: 0;
|
||
|
}
|
||
|
.crane .lineTwo {
|
||
|
width: 19%;
|
||
|
right: 8%;
|
||
|
top: 0;
|
||
|
}
|
||
|
.crane .line.lineThree {
|
||
|
height: 30%;
|
||
|
top: 22%;
|
||
|
left: 9%;
|
||
|
}
|
||
|
.crane .line.lineThree:after {
|
||
|
content: '';
|
||
|
position: absolute;
|
||
|
height: 0.2em;
|
||
|
width: 9000%;
|
||
|
background: ${craneLineColor};
|
||
|
display: block;
|
||
|
bottom: 0;
|
||
|
left: -4500%;
|
||
|
border: solid 1px ${craneLineColor};
|
||
|
}
|
||
|
.craneTwo .line.lineThree:after {
|
||
|
height: 0.1em;
|
||
|
}
|
||
|
.craneThree .line.lineThree:after {
|
||
|
height: 0.05em;
|
||
|
}
|
||
|
.stand {
|
||
|
height: 100%;
|
||
|
width: 5%;
|
||
|
right: 25%;
|
||
|
z-index: 1;
|
||
|
background: linear-gradient(to top, ${
|
||
|
craneStandColors[0]
|
||
|
}, ${craneStandColors[1]});
|
||
|
}
|
||
|
.craneTwo .stand {
|
||
|
background: linear-gradient(to top, ${
|
||
|
craneStandColors[0]
|
||
|
}, ${craneStandColors[1]});
|
||
|
}
|
||
|
.craneThree .stand {
|
||
|
background: linear-gradient(to top, ${
|
||
|
craneStandColors[0]
|
||
|
}, ${craneStandColors[1]});
|
||
|
}
|
||
|
.weight {
|
||
|
height: 20%;
|
||
|
width: 8%;
|
||
|
right: 4%;
|
||
|
top: 12%;
|
||
|
z-index: 2;
|
||
|
background: ${craneWeightColor};
|
||
|
}
|
||
|
.craneTwo .weight {
|
||
|
background: ${craneWeightColor};
|
||
|
}
|
||
|
.craneThree .weight {
|
||
|
background: ${craneWeightColor};
|
||
|
}
|
||
|
.cabin {
|
||
|
height: 9%;
|
||
|
width: 12%;
|
||
|
right: 24%;
|
||
|
top: 20%;
|
||
|
z-index: 2;
|
||
|
background: ${craneCabinColor};
|
||
|
}
|
||
|
.cabin:after {
|
||
|
content: '';
|
||
|
position: absolute;
|
||
|
height: 10%;
|
||
|
width: 100%;
|
||
|
background: ${craneCabinColor};
|
||
|
display: block;
|
||
|
top: 60%;
|
||
|
left: 0;
|
||
|
}
|
||
|
.craneTwo .cabin {
|
||
|
background: ${craneCabinColor};
|
||
|
}
|
||
|
.craneThree .cabin {
|
||
|
background: ${craneCabinColor};
|
||
|
}
|
||
|
.arm {
|
||
|
height: 7%;
|
||
|
width: 100%;
|
||
|
top: 15%;
|
||
|
z-index: 3;
|
||
|
background: ${craneArmColor};
|
||
|
}
|
||
|
.craneTwo .arm {
|
||
|
background: ${craneArmColor};
|
||
|
}
|
||
|
.craneThree .arm {
|
||
|
background: ${craneArmColor};
|
||
|
}
|
||
|
.crane div.arm {
|
||
|
border-top-left-radius: 10px;
|
||
|
}
|
||
|
.brick {
|
||
|
height: 6%;
|
||
|
width: 9%;
|
||
|
bottom: 0;
|
||
|
left: 40%;
|
||
|
background: ${craneArmColor};
|
||
|
}
|
||
|
.brickTwo {
|
||
|
left: 48%;
|
||
|
}
|
||
|
.brickThree {
|
||
|
bottom: 5.5%;
|
||
|
left: 44%;
|
||
|
}
|
||
|
.craneOne {
|
||
|
width: 260px;
|
||
|
height: 169.9346405228758px;
|
||
|
left: 20%;
|
||
|
}
|
||
|
.craneOne div {
|
||
|
border: solid 1px ${craneDivBorderColor};
|
||
|
}
|
||
|
.craneOne .line {
|
||
|
height: 1px;
|
||
|
}
|
||
|
.craneOne .lineThree {
|
||
|
width: 1px;
|
||
|
}
|
||
|
.craneTwo {
|
||
|
width: 200px;
|
||
|
height: 130.718954248366px;
|
||
|
transform: scaleX(-1);
|
||
|
left: 40%;
|
||
|
z-index: -1;
|
||
|
}
|
||
|
.craneTwo div {
|
||
|
border: solid 1px ${craneDivBorderColor};
|
||
|
}
|
||
|
.craneTwo .line {
|
||
|
height: 0.769230769230769px;
|
||
|
}
|
||
|
.craneTwo .lineThree {
|
||
|
width: 0.714285714285714px;
|
||
|
animation-delay: 3s;
|
||
|
}
|
||
|
.craneTwo .cabin,
|
||
|
.craneTwo .arm,
|
||
|
.craneTwo .picker,
|
||
|
.craneTwo .weight {
|
||
|
animation-delay: 3s;
|
||
|
}
|
||
|
.craneThree {
|
||
|
width: 130px;
|
||
|
height: 84.9673202614379px;
|
||
|
left: 60%;
|
||
|
z-index: -1;
|
||
|
}
|
||
|
.craneThree div {
|
||
|
border: solid 1px ${craneDivBorderColor};
|
||
|
}
|
||
|
.craneThree .line {
|
||
|
height: 0.5px;
|
||
|
}
|
||
|
.craneThree .lineThree {
|
||
|
width: 0.5px;
|
||
|
animation-delay: 1.5s;
|
||
|
}
|
||
|
.craneThree .brickThree {
|
||
|
bottom: 5%;
|
||
|
}
|
||
|
.craneThree .brickOne,
|
||
|
.craneThree .brickTwo {
|
||
|
bottom: 0;
|
||
|
}
|
||
|
.craneThree .cabin,
|
||
|
.craneThree .arm,
|
||
|
.craneThree .picker,
|
||
|
.craneThree .weight {
|
||
|
animation-delay: 1.5s;
|
||
|
}
|
||
|
.crane {
|
||
|
perspective: 600px;
|
||
|
}
|
||
|
.lineOne {
|
||
|
transform-origin: right 0;
|
||
|
animation: moveLineOne 12s infinite alternate;
|
||
|
}
|
||
|
.lineTwo {
|
||
|
transform-origin: top left;
|
||
|
animation: moveLineTwo 12s infinite alternate;
|
||
|
}
|
||
|
.lineThree {
|
||
|
transform-origin: right center;
|
||
|
animation: moveLineThree 12s ease-in-out infinite alternate;
|
||
|
}
|
||
|
.cabin,
|
||
|
.arm,
|
||
|
.picker {
|
||
|
transform-origin: 80% center;
|
||
|
animation: moveCrane 12s infinite alternate;
|
||
|
}
|
||
|
.weight {
|
||
|
transform-origin: 0 center;
|
||
|
animation: moveWeight 12s infinite alternate;
|
||
|
}
|
||
|
html {
|
||
|
-ms-text-size-adjust: 100%;
|
||
|
-webkit-text-size-adjust: 100%;
|
||
|
-webkit-tap-highlight-color: transparent;
|
||
|
}
|
||
|
html,
|
||
|
body {
|
||
|
height: 100%;
|
||
|
}
|
||
|
* {
|
||
|
box-sizing: border-box;
|
||
|
}
|
||
|
body {
|
||
|
background: linear-gradient(to top, ${
|
||
|
bodyBackgroundColors[0]
|
||
|
}, ${bodyBackgroundColors[1]});
|
||
|
-webkit-font-smoothing: antialiased;
|
||
|
-moz-osx-font-smoothing: grayscale;
|
||
|
text-shadow: 1px 1px 1px rgba(0,0,0,0.004);
|
||
|
}
|
||
|
#content {
|
||
|
height: 100%;
|
||
|
width: 100%;
|
||
|
display: flex;
|
||
|
flex-direction: column;
|
||
|
align-items: center;
|
||
|
justify-content: center;
|
||
|
font-family: Ubuntu;
|
||
|
color: #fff;
|
||
|
}
|
||
|
|
||
|
</style>
|
||
|
<style>
|
||
|
#content h1,
|
||
|
#content p {
|
||
|
margin: -8rem 0 0 1rem;
|
||
|
}
|
||
|
#content p {
|
||
|
margin-top: 0.5rem;
|
||
|
}
|
||
|
#license {
|
||
|
position: absolute;
|
||
|
bottom: 0;
|
||
|
right: 5px;
|
||
|
}
|
||
|
@-moz-keyframes moveCrane {
|
||
|
0%, 20% {
|
||
|
transform: rotateY(0);
|
||
|
}
|
||
|
70%, 100% {
|
||
|
transform: rotateY(45deg);
|
||
|
}
|
||
|
}
|
||
|
@-webkit-keyframes moveCrane {
|
||
|
0%, 20% {
|
||
|
transform: rotateY(0);
|
||
|
}
|
||
|
70%, 100% {
|
||
|
transform: rotateY(45deg);
|
||
|
}
|
||
|
}
|
||
|
@-o-keyframes moveCrane {
|
||
|
0%, 20% {
|
||
|
transform: rotateY(0);
|
||
|
}
|
||
|
70%, 100% {
|
||
|
transform: rotateY(45deg);
|
||
|
}
|
||
|
}
|
||
|
@keyframes moveCrane {
|
||
|
0%, 20% {
|
||
|
transform: rotateY(0);
|
||
|
}
|
||
|
70%, 100% {
|
||
|
transform: rotateY(45deg);
|
||
|
}
|
||
|
}
|
||
|
@-moz-keyframes moveWeight {
|
||
|
0%, 20% {
|
||
|
transform: rotateY(0) translateX(0);
|
||
|
}
|
||
|
70%, 100% {
|
||
|
transform: rotateY(45deg) translateX(-50%);
|
||
|
}
|
||
|
}
|
||
|
@-webkit-keyframes moveWeight {
|
||
|
0%, 20% {
|
||
|
transform: rotateY(0) translateX(0);
|
||
|
}
|
||
|
70%, 100% {
|
||
|
transform: rotateY(45deg) translateX(-50%);
|
||
|
}
|
||
|
}
|
||
|
@-o-keyframes moveWeight {
|
||
|
0%, 20% {
|
||
|
transform: rotateY(0) translateX(0);
|
||
|
}
|
||
|
70%, 100% {
|
||
|
transform: rotateY(45deg) translateX(-50%);
|
||
|
}
|
||
|
}
|
||
|
@keyframes moveWeight {
|
||
|
0%, 20% {
|
||
|
transform: rotateY(0) translateX(0);
|
||
|
}
|
||
|
70%, 100% {
|
||
|
transform: rotateY(45deg) translateX(-50%);
|
||
|
}
|
||
|
}
|
||
|
@-moz-keyframes moveLineOne {
|
||
|
0%, 20% {
|
||
|
transform: rotateY(0) rotateZ(-10deg);
|
||
|
}
|
||
|
70%, 100% {
|
||
|
transform: rotateY(45deg) rotateZ(-10deg);
|
||
|
}
|
||
|
}
|
||
|
@-webkit-keyframes moveLineOne {
|
||
|
0%, 20% {
|
||
|
transform: rotateY(0) rotateZ(-10deg);
|
||
|
}
|
||
|
70%, 100% {
|
||
|
transform: rotateY(45deg) rotateZ(-10deg);
|
||
|
}
|
||
|
}
|
||
|
@-o-keyframes moveLineOne {
|
||
|
0%, 20% {
|
||
|
transform: rotateY(0) rotateZ(-10deg);
|
||
|
}
|
||
|
70%, 100% {
|
||
|
transform: rotateY(45deg) rotateZ(-10deg);
|
||
|
}
|
||
|
}
|
||
|
@keyframes moveLineOne {
|
||
|
0%, 20% {
|
||
|
transform: rotateY(0) rotateZ(-10deg);
|
||
|
}
|
||
|
70%, 100% {
|
||
|
transform: rotateY(45deg) rotateZ(-10deg);
|
||
|
}
|
||
|
}
|
||
|
@-moz-keyframes moveLineTwo {
|
||
|
0%, 20% {
|
||
|
transform: rotateY(0) rotateZ(29deg);
|
||
|
}
|
||
|
70%, 100% {
|
||
|
transform: rotateY(15deg) rotateZ(29deg);
|
||
|
}
|
||
|
}
|
||
|
@-webkit-keyframes moveLineTwo {
|
||
|
0%, 20% {
|
||
|
transform: rotateY(0) rotateZ(29deg);
|
||
|
}
|
||
|
70%, 100% {
|
||
|
transform: rotateY(15deg) rotateZ(29deg);
|
||
|
}
|
||
|
}
|
||
|
@-o-keyframes moveLineTwo {
|
||
|
0%, 20% {
|
||
|
transform: rotateY(0) rotateZ(29deg);
|
||
|
}
|
||
|
70%, 100% {
|
||
|
transform: rotateY(15deg) rotateZ(29deg);
|
||
|
}
|
||
|
}
|
||
|
@keyframes moveLineTwo {
|
||
|
0%, 20% {
|
||
|
transform: rotateY(0) rotateZ(29deg);
|
||
|
}
|
||
|
70%, 100% {
|
||
|
transform: rotateY(15deg) rotateZ(29deg);
|
||
|
}
|
||
|
}
|
||
|
@-moz-keyframes moveLineThree {
|
||
|
0% {
|
||
|
transform: translate(0, 0);
|
||
|
}
|
||
|
20% {
|
||
|
transform: translate(2500%, -18%);
|
||
|
}
|
||
|
60% {
|
||
|
transform: translate(11000%, -25%);
|
||
|
}
|
||
|
70% {
|
||
|
transform: translate(9100%, -25%);
|
||
|
height: 30%;
|
||
|
}
|
||
|
90%, 100% {
|
||
|
transform: translate(9100%, -15%);
|
||
|
height: 80%;
|
||
|
}
|
||
|
}
|
||
|
@-webkit-keyframes moveLineThree {
|
||
|
0% {
|
||
|
transform: translate(0, 0);
|
||
|
}
|
||
|
20% {
|
||
|
transform: translate(2500%, -18%);
|
||
|
}
|
||
|
60% {
|
||
|
transform: translate(11000%, -25%);
|
||
|
}
|
||
|
70% {
|
||
|
transform: translate(9100%, -25%);
|
||
|
height: 30%;
|
||
|
}
|
||
|
90%, 100% {
|
||
|
transform: translate(9100%, -15%);
|
||
|
height: 80%;
|
||
|
}
|
||
|
}
|
||
|
@-o-keyframes moveLineThree {
|
||
|
0% {
|
||
|
transform: translate(0, 0);
|
||
|
}
|
||
|
20% {
|
||
|
transform: translate(2500%, -18%);
|
||
|
}
|
||
|
60% {
|
||
|
transform: translate(11000%, -25%);
|
||
|
}
|
||
|
70% {
|
||
|
transform: translate(9100%, -25%);
|
||
|
height: 30%;
|
||
|
}
|
||
|
90%, 100% {
|
||
|
transform: translate(9100%, -15%);
|
||
|
height: 80%;
|
||
|
}
|
||
|
}
|
||
|
@keyframes moveLineThree {
|
||
|
0% {
|
||
|
transform: translate(0, 0);
|
||
|
}
|
||
|
20% {
|
||
|
transform: translate(2500%, -18%);
|
||
|
}
|
||
|
60% {
|
||
|
transform: translate(11000%, -25%);
|
||
|
}
|
||
|
70% {
|
||
|
transform: translate(9100%, -25%);
|
||
|
height: 30%;
|
||
|
}
|
||
|
90%, 100% {
|
||
|
transform: translate(9100%, -15%);
|
||
|
height: 80%;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
body {
|
||
|
background-color: lightblue;
|
||
|
}
|
||
|
|
||
|
.text {
|
||
|
font-size: 30px;
|
||
|
text-align: center;
|
||
|
z-index:9999999;
|
||
|
}
|
||
|
#content-title {
|
||
|
font-size: 40px;
|
||
|
text-align: center;
|
||
|
}
|
||
|
|
||
|
@media only screen and (min-device-width: 380px) {
|
||
|
.text {
|
||
|
font-size: 28px;
|
||
|
text-align: center;
|
||
|
z-index:9999999;
|
||
|
}
|
||
|
#content-title {
|
||
|
font-size: 58px;
|
||
|
text-align: center;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@media only screen and (max-device-width: 430px) {
|
||
|
.text {
|
||
|
font-size: 50px;
|
||
|
text-align: center;
|
||
|
z-index:9999999;
|
||
|
}
|
||
|
|
||
|
#content-title {
|
||
|
font-size: 80px;
|
||
|
text-align: center;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@media only screen and (min-device-width: 750px) {
|
||
|
.text {
|
||
|
font-size: 20px;
|
||
|
text-align: center;
|
||
|
z-index:9999999;
|
||
|
}
|
||
|
#content-title {
|
||
|
font-size: 40px;
|
||
|
text-align: center;
|
||
|
}
|
||
|
}
|
||
|
</style>
|
||
|
</head>
|
||
|
<body style="margin: 0px !important;">
|
||
|
<div id="content">
|
||
|
<h1 id="content-title">${contentTitle}</h1>
|
||
|
${texts
|
||
|
.map((text) => '<p class="text">' + text + "</p>")
|
||
|
.join("")}
|
||
|
<br><br><br>
|
||
|
${logged}
|
||
|
</div>
|
||
|
<div id="outerCraneContainer">
|
||
|
<div class="buildings">
|
||
|
<div></div>
|
||
|
<div class="1"></div>
|
||
|
<div class="2"></div>
|
||
|
<div class="3"></div>
|
||
|
<div class="4"></div>
|
||
|
</div>
|
||
|
<div class="crane craneThree">
|
||
|
<div class="line lineOne"></div>
|
||
|
<div class="line lineTwo"></div>
|
||
|
<div class="line lineThree"></div>
|
||
|
<div class="stand"></div>
|
||
|
<div class="weight"></div>
|
||
|
<div class="cabin"></div>
|
||
|
<div class="arm"></div>
|
||
|
</div>
|
||
|
<div class="crane craneTwo">
|
||
|
<div class="line lineOne"></div>
|
||
|
<div class="line lineTwo"></div>
|
||
|
<div class="line lineThree"></div>
|
||
|
<div class="stand"></div>
|
||
|
<div class="weight"></div>
|
||
|
<div class="cabin"></div>
|
||
|
<div class="arm"></div>
|
||
|
</div>
|
||
|
<div class="crane craneOne">
|
||
|
<div class="line lineOne"></div>
|
||
|
<div class="line lineTwo"></div>
|
||
|
<div class="line lineThree"></div>
|
||
|
<div class="stand"></div>
|
||
|
<div class="weight"></div>
|
||
|
<div class="cabin"></div>
|
||
|
<div class="arm"></div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</body>
|
||
|
</html>
|
||
|
`
|
||
|
}
|