index.svelte 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <script context="module">
  2. export async function preload(page, session) {
  3. const { host, path, params, query } = page;
  4. const { user } = session;
  5. if (user) return this.redirect(300, "dashboard");
  6. if (query.error) return { errors: query.error.split(",") };
  7. }
  8. </script>
  9. <script>
  10. const errorTexts = {
  11. invalid_user: "The username is invalid!"
  12. };
  13. export let errors;
  14. </script>
  15. <style lang="css">
  16. .login-box {
  17. @apply .flex .flex-col .w-screen .h-screen .justify-center .items-center;
  18. }
  19. .box-item {
  20. @apply .w-1/4 .p-2 .rounded;
  21. }
  22. .login-button-list {
  23. @apply .flex .justify-center .m-2;
  24. }
  25. .discord-button {
  26. @apply .p-2 .bg-indigo-700 .rounded-sm;
  27. &:hover {
  28. @apply .bg-indigo-600;
  29. }
  30. }
  31. </style>
  32. <svelte:head>
  33. <title>Login</title>
  34. </svelte:head>
  35. <div class="login-box">
  36. {#if errors}
  37. {#each errors as errorId}
  38. <div class="bg-red-800 box-item mb-2">{errorTexts[errorId]}</div>
  39. {/each}
  40. {/if}
  41. <div class="bg-gray-dark box-item shadow-big text-center">
  42. <h1 class="text-4xl">NoctBot Login</h1>
  43. <div class="login-button-list">
  44. <a class="discord-button" href="/login/discord/do">
  45. <span class="icon">
  46. <i class="fab fa-discord" />
  47. </span>
  48. <span>Login with Discord</span>
  49. </a>
  50. </div>
  51. </div>
  52. </div>