From a8e54675f431788f21ebcd2a440888b6260203e6 Mon Sep 17 00:00:00 2001 From: Gabriel Simmer Date: Mon, 11 Jul 2022 18:31:40 +0100 Subject: [PATCH] Redesigning homepage, starting on admin page --- src/routes/__layout.svelte | 31 +++++++-- src/routes/datacollection.svelte | 49 +++++++++++-- src/routes/index.svelte | 99 ++++++++++++++++++++++++--- src/routes/invite/[code].svelte | 35 ++++++---- src/routes/servers/[id]/index.svelte | 2 +- src/routes/servers/__layout.svelte | 9 +++ src/routes/servers/index.svelte | 13 +++- src/routes/servers/new.svelte | 2 + static/Minecraftia.ttf | Bin 0 -> 18236 bytes static/licenses.txt | 1 + 10 files changed, 203 insertions(+), 38 deletions(-) create mode 100644 static/Minecraftia.ttf create mode 100644 static/licenses.txt diff --git a/src/routes/__layout.svelte b/src/routes/__layout.svelte index f231e6f..10bcc72 100644 --- a/src/routes/__layout.svelte +++ b/src/routes/__layout.svelte @@ -1,15 +1,38 @@ + + + + Minecraft Server Invites + + + + main { + background-color: #444a52f6; + color: white; + margin: 0 auto; + width: 50vw; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + padding: 10px; + border-radius: 5px; + border: 1px solid white; + } + @media (max-width: 700px) { + main { + width: 90vw; + } + } + a { + color: lightblue; + } + a:visited { + color: lightgrey; + } + \ No newline at end of file diff --git a/src/routes/index.svelte b/src/routes/index.svelte index 9132627..24a8ae2 100644 --- a/src/routes/index.svelte +++ b/src/routes/index.svelte @@ -14,24 +14,101 @@ } } }); + + const redirectToInvite = (e: Event) => { + const formData = new FormData(e.target); + const formProps = Object.fromEntries(formData); + if (formProps.token != "") { + goto(`/invite/${formProps.token}`); + } + } +
+
{#if !loggedIn} - Login +Login {:else} - Manage Servers +Manage Servers {/if} -

MC Invites

+

Minecraft Server Invites

+

discord-like invites for minecraft server whitelists

+

Free during beta!

+
-

discord-like invites for minecraft servers

- - +
+ + + +
+
+ h3 { + color: yellow; + } + header { + display: flex; + flex-direction: column; + } + form { + display: flex; + flex-direction: column; + margin: 10px 0; + } + input[type=text] { + color: white; + padding: 20px 5px; + margin: 0 auto; + text-align: center; + font-family: 'Minecraftia', monospace; + font-size: larger; + background-color: black; + border: 3px inset grey; + } + a, a:visited { + color: white; + } + + div { + background-color: #444a52f6; + color: white; + margin: 0 auto; + width: 50vw; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + padding: 10px; + border-radius: 5px; + border: 1px solid white; + position: absolute; + top: 40%; + left: 50%; + transform: translate(-50%, -50%); + } + @media (max-width: 700px) { + div { + width: 90vw; + } + } + input[type=submit] { + font-family: 'Minecraftia', monospace; + color: white; + margin: 10px 0; + height: 50px; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMQAAAAPCAAAAACe4j/AAAAEuElEQVRIx1WWS5Ibuw5EtddrdRRJJE4iSKrb4c2/AUuy30iK+jEBHCTwAICMCgAKiGhKVQUwKzJHQo4mQGBy7AIvk1E2AQKhFt6bUGD1gILy0DkD4dmzACkGyzCScgFgQmLZr4LpQpC56QB2wgSYE8i1fd6xd1yPHIAKwAs14Undx2LIHK0X6vdFbzTa6CNBLQE8Y5rapn7oAl3KSDKC6cLfL6sLnIVG7ffnyUgvQ6rwLjUZdIVqWz0iEXXCZ+TJsV8feUdoPHDk+a/IeAbq0ldLT59jtHweHwmKS6gFSUYCqKcVsPami1pEnqolkCMBiAS87FXTICp03geYUr8TV8un3KuyC0BfTUzihOCdwjUya1bkT9VWe+AaFOoJzHdtERXRe/eulyEDhC6pjYwr+JQuIDU9/0wQBnJEAkd+9i6IRTJrV7YWnGfwLA6ESphkBoCu88M0YH1CTTOiRUpDdwpGkkP5yL9phhwn+QVxDarAXq513y9bLKgxBGR/CjDyMl4ECd6lO82CaMLbEHGHp1R8ePDERj392ssaCOigNjJ+dXXl6OLUFfVx6dA1BFJLlHpkUHPam095C3QJLIjn6OLIOB3xe0JS85Zd+govg1/z/UhtG3RdVW98yxNp5I0Vtf/U+6y/dJ/yHtSK4q7G9ARscC3/Df/kXTwiT3d6ovjEISLJIVEvBwWeCXlALZTbpy85xqWuf3sNiBBUmYjI+BqN6aNQqDWpipSYf3W1nOV/WALoykjIiCPreSn97UigsjZdPA5s3AmCDIxaVO0Fa1fV/qkaiijPPz/bEeRyLSBDI8K8j37TO8aH7vmOqUUQ1DboYhvqd+FlFGEo+2T75MbLGnjvPeu7Pl521Ap14dcR3h7p75qv4xieqnNDoyCPLt/yKkf5gOUXl+6S3d9Syq/982fz+fhpsm28C5EhJcxsWWQke6KoPMA7tqm7kKcrn6FLhWcoqCNCxDPyQ8wEKR73nIlEX8GpARSJX7/rzeNtWPD/Dl2IwtOYMwV7osGsHYJanzeU7KqIZVCTcrT0IEbyD4d1e1dkBtW2qLhLXK7a1ogDqsjI1DR4PY7nHEqfF9tn8HUJL+eQ/lGOXdwI1++57CqgmDaReM9CZYLAk4D4ymqti4KZI9Htz9OnrcuOhCQEqJfXaxHPAFG/l/ee1GFJPXmPryYUiUGPutnRGXkagmnjHk5RNpm7xxiclm6CjJEQ4+MD4xPmuT9Ef4b3YT3B51a7d4Np76PF0cavuC+SoaH6PlilipEakoJBJETWT3k7Hf+1REPj2fIx95t5ct6u9S5v3KM2fv2Ve29ax9yC98zT2IZot61MHyYtdPF92nguZ29xfcVxSu9Nj5Gl8G3wcVoW8n1Q/f6BHFEAyy5R2aRIdYH8XfV4453vHKcnqarXPD6mdrD0rlVV5xBPF2xuJM5Oo0SdaaqGMjJva7ii6bYv74IzPMo5pGebpu72ghypwTR+WWDuhQOkFijGyAzF3GXh11lEH0hkPINZivpTqLEtVm2j1hVcn/S0//q0es5dbyxOErxKivQ+bHotvzcT3/XztPf20XqG6fJZMePT2X6ts+nlm9LoSYHMiHuJjGXniB7v2fo/5qT4nuxYg6AAAAAASUVORK5CYII=); + border-color: #aaa #565656 #565656 #aaa; + text-shadow: 3px 3px #4c4c4c; + outline: 2px solid #000; + } + + input[type=submit]:hover { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMQAAAAPCAMAAACMV5AuAAAAVFBMVEVtd7ZteLZverdwerdwe7hxfLhyfbl0frl1f7p2gLt4grx6hLx7hb18hr5+iL+AisCBi8GCjMGEjsKGkMOHkcSIksSKk8WLlMWLlcaMlcaNlsePmMdwBHmVAAAEjElEQVRIx1WW27YbKw5F3Ul2GYTWFAJX+pyd///PfgDsTg0/mSqQ1k08AEAeDkAA7kXyDAeyu2QCWREgCGSvAAbIE/D9U2m8Ji4Drw0CEhP7EMiqBFxmDMBEkHvd5AziDsjoCKQXddUl1nuZgMZrf0PMdj1kgNY+Ay+CJPg8kj1rR3X/GS9kxaoJVFaB6QkxIX5TBX65mpAZGQH3HaoCFMj6/GxuYgDyTsyup1hfxwxVN+F08ANGANyf8jqAPaBpranJvhxV+VV08JGPVScmcL8W4EIuAFWFHMZrUkUfNC3WtIsEaFogMWJRl839MES61w1cjMUsI1fb7GKaoENMOdFNykzXPz2mlwekkXjV4ioO9b15rZWZd4AaCL9cxdSutl8buIOUkd8JTgAy01IKoFoFPhAZr65SbDHgxFIGKi5IpLaKdlafAHxaVWDt2SSZ24LQhEx6aLGyj7RtELDLiA7EiD72ehBiQJo5oPq1nOQMYGAIYoY2AwIrImaA+25P8vZRa0KgqrjnQIaACiom/1G9Sla3GUHVLl/mMl/mxeUPGT0T5seAeeAQtF9WV2F7cX4niJ4DYmBd12oh7jymyRkBuq6M81mQuExHVv313beo9VH3ojfM2zZ8AkTG8X7EeDs6OZw+mrY7E5l/gqQJmZx+YySQAi1/dqQZy0as4FL1d7nrcfd1kjWTX1ZIYESTUCnuPZE7+anrqcxlz3diUX2HowHCf15S3AvxrnhRxeMwtQACGYGKZ7wGjNl7vH73MHdP8s/vSXM0FiRqMnPowfbjRsfe6n7nZ/FGIyfgF6+A/t1XTrcWB3Q42AxkMOfMfuJotRPgqGqFMfB8KO6eN+BEpO8F2eLZ18YO0GUdmEDcXMcNey+XuOfvP5P35guSVxAzWRYUpIoSuZiJrJ/p4zPouw0pwX+6XwpIcyNWEcJ/uf5Svuyx+ncTfhmotEhIBPe/8f961F/jI5aQfSs3WFOwChnZZxPk+HQjZu/WBuDFVwobZnoLISBOdkmNLFPE9iadiImsgTcdTDKA8dj1qBT518Xcg6+6L0Yl/nqCLeH+b46InkCSETTBzEQBRoPEwS9lKVUkpEx426M3oIMHYQLhK/B6jHvgXw6if4+YM4mlJdWDpLw4MhHgjwBZgIt+ZJdAVENOEkiv6mY4yy5nFPjnQmGfGVy0IqP+cmbsWF7Se/rT+5ZBzHPdKfajHW2ouWldPJaoTDJ3GUYTNMV/IyaiPYqQuX0VPXK+ra3Mc8c5Wlkp4D/e5S5htjXU3HnPPJsBXraRM/rSpOMX99zMoVradRl9AMxJdVPIYgf8Rhu0DvLM739A5rmjJ51QcW9SFXjcvR85oYOhSKTsd65pqdKWIV59ZO/7kKTDJLbvYw9XVRIyTXKJdfm4rOjE18yT8IHM/euZa0Z0fLvBSIh7h925QLoXR80WNfnqOHHP7Qk5aj+dTLX4E3hhIkafoGd15/IDT/lPTVSVr233dy6OkJtiLm0yBu+byeE2Yc59pVrDdKyPjxgD4h6r6vcFwpYNHMxVBaE2ApmfyTTjf5jQnWRymG7iAAAAAElFTkSuQmCC); + border-color: #bdc6ff #59639a #59639a #bdc6ff; + } + \ No newline at end of file diff --git a/src/routes/invite/[code].svelte b/src/routes/invite/[code].svelte index cba9fb9..a9284f1 100644 --- a/src/routes/invite/[code].svelte +++ b/src/routes/invite/[code].svelte @@ -6,6 +6,7 @@ const { code } = $page.params; let invite; + let loaded = false; let success = ''; let login = true; @@ -17,6 +18,10 @@ const request = await fetch(`/api/v1/invite/${code}`); if (request.ok) { invite = await request.json(); + loaded = true; + } + else { + loaded = true; } }); @@ -41,17 +46,22 @@
- {#if invite} - {#if success == ''} -

Invite {code} from {invite.creator.display_name}

-

Join {invite.server.name}?

- {#if login} - Login with Microsoft + {#if loaded} + {#if invite} + {#if success == ''} +

Invite {code} from {invite.creator.display_name}

+

Join {invite.server.name}?

+ {#if login} + Login with Microsoft + {:else} + + {/if} {:else} - +

You have been whitelisted! Connect at: {invite.server.address}

{/if} {:else} -

You have been whitelisted! Connect at: {invite.server.address}

+

Invite code not found!

+ Go home {/if} {:else}

Loading...

@@ -59,7 +69,6 @@
diff --git a/src/routes/servers/[id]/index.svelte b/src/routes/servers/[id]/index.svelte index 0c1167c..3e66f15 100644 --- a/src/routes/servers/[id]/index.svelte +++ b/src/routes/servers/[id]/index.svelte @@ -69,7 +69,7 @@ {#each invites as invite}
{invite.token} | Uses: {!invite.unlimited ? invite.uses : "unlimited"} - {#if invite.log.length > 0} + {#if invite.log && invite.log.length > 0} {#each invite.log as log}

{log.user.display_name} ({log.user.id})

{/each} diff --git a/src/routes/servers/__layout.svelte b/src/routes/servers/__layout.svelte index 6f5bc80..3dfa40e 100644 --- a/src/routes/servers/__layout.svelte +++ b/src/routes/servers/__layout.svelte @@ -20,3 +20,12 @@ {/if} + + diff --git a/src/routes/servers/index.svelte b/src/routes/servers/index.svelte index d537ac1..7692bf8 100644 --- a/src/routes/servers/index.svelte +++ b/src/routes/servers/index.svelte @@ -40,6 +40,13 @@ view +
+

{server.name}

+

Server Address: {server.address}

+

Server RCON Address: {server.rcon.address}

+ view + +
{/each} {/if} {:else} @@ -48,6 +55,10 @@ diff --git a/src/routes/servers/new.svelte b/src/routes/servers/new.svelte index 17db3ab..f8067f8 100644 --- a/src/routes/servers/new.svelte +++ b/src/routes/servers/new.svelte @@ -61,4 +61,6 @@ border-radius: 5px; font-size: large; } + form { + } diff --git a/static/Minecraftia.ttf b/static/Minecraftia.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2cf2af4708501a333ad5037dbd25c12b58c4d711 GIT binary patch literal 18236 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