_layout.svelte 1012 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <script lang="typescript" context="module">
  2. import type { AppSession, PageData, PreloadContext } from "src/utils/session";
  3. import { goto } from "@sapper/app";
  4. export async function preload(this: PreloadContext, { path }: PageData, session: AppSession) {
  5. if (path.startsWith("/login/")) {
  6. if (session?.userId) {
  7. return this.redirect(302, "/");
  8. } else {
  9. return {};
  10. }
  11. }
  12. if (path != "/" && !session?.userId) {
  13. return this.redirect(302, "/");
  14. }
  15. return {};
  16. }
  17. </script>
  18. <script lang="typescript">
  19. import { stores } from "@sapper/app";
  20. const { page } = stores();
  21. let path: string;
  22. $: path = $page.path.slice(1);
  23. </script>
  24. <style global>
  25. @import "tailwindcss/base";
  26. @import "tailwindcss/components";
  27. @import "tailwindcss/utilities";
  28. * {
  29. @apply font-sans;
  30. }
  31. </style>
  32. <svelte:head>
  33. <title>
  34. {path ? path.charAt(0).toUpperCase() + path.slice(1) : "Index"}
  35. </title>
  36. </svelte:head>
  37. <div class="flex items-center justify-center bg-gray-900 h-screen w-screen">
  38. <slot />
  39. </div>