mirror of
https://git.suyu.dev/suyu/website.git
synced 2026-01-04 13:44:25 +01:00
disable signup/account
This commit is contained in:
parent
a29636f8f9
commit
42e345b1e8
5 changed files with 147 additions and 18 deletions
28
src/routes/+error.svelte
Normal file
28
src/routes/+error.svelte
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
<script lang="ts">
|
||||||
|
import { page } from "$app/stores";
|
||||||
|
|
||||||
|
let initialStatusGot = false;
|
||||||
|
let status = 0;
|
||||||
|
let message = "";
|
||||||
|
page.subscribe((val) => {
|
||||||
|
if (val.status && !initialStatusGot) {
|
||||||
|
initialStatusGot = true;
|
||||||
|
status = val.status;
|
||||||
|
message = val.error?.message || "Unknown Error";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="flex h-[calc(100vh-300px)] w-full flex-col items-center justify-center gap-4 text-center"
|
||||||
|
>
|
||||||
|
<h1 class="text-[24px] leading-[1.41] md:text-[32px] md:leading-[1.1]">
|
||||||
|
Well, that's an error...
|
||||||
|
</h1>
|
||||||
|
<h1 class="text-[42px] leading-[1.41] md:text-[84px] md:leading-[1.1]">
|
||||||
|
{status}: "{message}"
|
||||||
|
</h1>
|
||||||
|
<p style="text-align: center;" class="max-w-[36rem] text-lg leading-relaxed text-[#A6A5A7]">
|
||||||
|
Sorry about that. Click the suyu logo to go home.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
@ -6,6 +6,11 @@
|
||||||
import { browser } from "$app/environment";
|
import { browser } from "$app/environment";
|
||||||
import { writable } from "svelte/store";
|
import { writable } from "svelte/store";
|
||||||
import { setContext } from "svelte";
|
import { setContext } from "svelte";
|
||||||
|
import type { TransitionConfig } from "svelte/transition";
|
||||||
|
import type { PageData } from "./$types";
|
||||||
|
import { bounceOut } from "svelte/easing";
|
||||||
|
|
||||||
|
export let data: PageData;
|
||||||
|
|
||||||
// TODO: refactor
|
// TODO: refactor
|
||||||
interface NavItem {
|
interface NavItem {
|
||||||
|
|
@ -39,6 +44,87 @@
|
||||||
const transition =
|
const transition =
|
||||||
"linear(0,0.006,0.025 2.8%,0.101 6.1%,0.539 18.9%,0.721 25.3%,0.849 31.5%,0.937 38.1%,0.968 41.8%,0.991 45.7%,1.006 50.1%,1.015 55%,1.017 63.9%,1.001)";
|
"linear(0,0.006,0.025 2.8%,0.101 6.1%,0.539 18.9%,0.721 25.3%,0.849 31.5%,0.937 38.1%,0.968 41.8%,0.991 45.7%,1.006 50.1%,1.015 55%,1.017 63.9%,1.001)";
|
||||||
|
|
||||||
|
function transitionIn(node: HTMLElement, { duration = 360 }: TransitionConfig) {
|
||||||
|
const UA = navigator.userAgent;
|
||||||
|
const ff = UA.indexOf("Firefox") > -1;
|
||||||
|
if (!dropdownCloseFinished) {
|
||||||
|
node.animate(
|
||||||
|
[
|
||||||
|
{
|
||||||
|
top: "160px",
|
||||||
|
opacity: "0",
|
||||||
|
filter: ff ? "" : "blur(20px)",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
top: "0",
|
||||||
|
opacity: "1",
|
||||||
|
filter: ff ? "" : "blur(0px)",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
{
|
||||||
|
easing: transition,
|
||||||
|
duration,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
return {
|
||||||
|
duration: 0,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
// FUCK YOUR DEFAULT SYSTEM, SVELTEKIT!!!
|
||||||
|
node.animate(
|
||||||
|
[
|
||||||
|
{
|
||||||
|
top: "-240px",
|
||||||
|
opacity: "0",
|
||||||
|
filter: ff ? "" : "blur(20px)",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
top: "0",
|
||||||
|
opacity: "1",
|
||||||
|
filter: ff ? "" : "blur(0px)",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
{
|
||||||
|
easing: transition,
|
||||||
|
duration,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
return {
|
||||||
|
duration,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function transitionOut(node: HTMLElement, { duration = 360 }: TransitionConfig) {
|
||||||
|
if (!dropdownCloseFinished)
|
||||||
|
return {
|
||||||
|
duration: 0,
|
||||||
|
};
|
||||||
|
const UA = navigator.userAgent;
|
||||||
|
const ff = UA.indexOf("Firefox") > -1;
|
||||||
|
node.animate(
|
||||||
|
[
|
||||||
|
{
|
||||||
|
top: "0",
|
||||||
|
opacity: "1",
|
||||||
|
filter: ff ? "" : "blur(0px)",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
top: "240px",
|
||||||
|
opacity: "0",
|
||||||
|
filter: ff ? "" : "blur(80px)",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
{
|
||||||
|
easing: transition,
|
||||||
|
duration,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
return {
|
||||||
|
duration,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
let dropdownOpen = false;
|
let dropdownOpen = false;
|
||||||
let dropdownCloseFinished = true;
|
let dropdownCloseFinished = true;
|
||||||
let dropdownOpenFinished = false;
|
let dropdownOpenFinished = false;
|
||||||
|
|
@ -108,7 +194,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function openDropdown() {
|
function toggleDropdown() {
|
||||||
dropdownOpen = !dropdownOpen;
|
dropdownOpen = !dropdownOpen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -153,7 +239,12 @@
|
||||||
: "mx-auto flex h-[120px] w-full max-w-[1300px] flex-row items-center justify-between px-8"}
|
: "mx-auto flex h-[120px] w-full max-w-[1300px] flex-row items-center justify-between px-8"}
|
||||||
>
|
>
|
||||||
<div class="flex w-full flex-row items-center justify-start gap-8">
|
<div class="flex w-full flex-row items-center justify-start gap-8">
|
||||||
<a href="/">
|
<a
|
||||||
|
href="/"
|
||||||
|
on:click={() => {
|
||||||
|
if (dropdownOpen && window.innerWidth < 625) toggleDropdown();
|
||||||
|
}}
|
||||||
|
>
|
||||||
<Logo size={28} />
|
<Logo size={28} />
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -182,15 +273,15 @@
|
||||||
>
|
>
|
||||||
<DiscordSolid />
|
<DiscordSolid />
|
||||||
</a>
|
</a>
|
||||||
<a href={$token ? "/account" : "/signup"} class="button-sm"
|
<!-- <a href={$token ? "/account" : "/signup"} class="button-sm"
|
||||||
>{$token ? "Account" : "Sign up"}</a
|
>{$token ? "Account" : "Sign up"}</a
|
||||||
>
|
> -->
|
||||||
</div>
|
</div>
|
||||||
<div class="relative mr-4 hidden flex-row gap-4 max-[625px]:flex">
|
<div class="relative mr-4 hidden flex-row gap-4 max-[625px]:flex">
|
||||||
<button
|
<button
|
||||||
aria-label={dropdownOpen ? "Close navigation" : "Open navigation"}
|
aria-label={dropdownOpen ? "Close navigation" : "Open navigation"}
|
||||||
aria-expanded={dropdownOpen}
|
aria-expanded={dropdownOpen}
|
||||||
on:click={openDropdown}
|
on:click={toggleDropdown}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
style="transition: 180ms; transition-property: opacity transform;"
|
style="transition: 180ms; transition-property: opacity transform;"
|
||||||
|
|
@ -214,7 +305,7 @@
|
||||||
<div
|
<div
|
||||||
style="transition: 180ms ease;"
|
style="transition: 180ms ease;"
|
||||||
aria-hidden={!dropdownOpenFinished && !dropdownOpen}
|
aria-hidden={!dropdownOpenFinished && !dropdownOpen}
|
||||||
class={`fixed left-0 z-10 h-screen w-full bg-black p-9 pt-[120px] ${dropdownOpen ? "pointer-events-auto visible opacity-100" : "pointer-events-none opacity-0"}`}
|
class={`fixed left-0 z-10 h-screen w-full bg-black p-9 pt-[120px] ${dropdownOpen ? "pointer-events-auto visible opacity-100" : "pointer-events-none opacity-0"} ${dropdownOpen && !dropdownCloseFinished} ? "z-[99999]" : ""`}
|
||||||
>
|
>
|
||||||
<div class={`flex flex-col gap-8`}>
|
<div class={`flex flex-col gap-8`}>
|
||||||
<!-- <a href="##"><h1 class="w-full text-5xl">Blog</h1></a>
|
<!-- <a href="##"><h1 class="w-full text-5xl">Blog</h1></a>
|
||||||
|
|
@ -263,6 +354,7 @@
|
||||||
? "translate-y-0 opacity-100 filter-none"
|
? "translate-y-0 opacity-100 filter-none"
|
||||||
: "-translate-y-24 opacity-0 blur-md"}
|
: "-translate-y-24 opacity-0 blur-md"}
|
||||||
href={item.href}
|
href={item.href}
|
||||||
|
on:click={() => toggleDropdown()}
|
||||||
>
|
>
|
||||||
<h1 class="w-full text-5xl">{item.name}</h1>
|
<h1 class="w-full text-5xl">{item.name}</h1>
|
||||||
</a>
|
</a>
|
||||||
|
|
@ -270,12 +362,16 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- svelte-ignore a11y-no-noninteractive-tabindex -->
|
<!-- svelte-ignore a11y-no-noninteractive-tabindex -->
|
||||||
<div
|
{#key data.url}
|
||||||
style="transition: 360ms {transition};"
|
<div
|
||||||
aria-hidden={dropdownOpenFinished && dropdownOpen}
|
in:transitionIn={{ duration: 500 }}
|
||||||
tabindex={dropdownOpen ? 0 : -1}
|
out:transitionOut={{ duration: 500 }}
|
||||||
class={`relative z-50 mx-auto flex w-full max-w-[1300px] flex-col px-8 pb-12 pt-[120px] ${dropdownOpen ? "pointer-events-none translate-y-[25vh] opacity-0" : ""} ${dropdownOpenFinished && dropdownOpen ? "invisible" : ""}`}
|
style="transition: 360ms {transition};"
|
||||||
>
|
aria-hidden={dropdownOpenFinished && dropdownOpen}
|
||||||
<slot />
|
tabindex={dropdownOpen ? 0 : -1}
|
||||||
</div>
|
class={`absolute left-[50%] z-50 mx-auto flex w-screen max-w-[1300px] translate-x-[-50%] flex-col px-8 pb-12 pt-[120px] ${dropdownOpen ? "pointer-events-none translate-y-[25vh] opacity-0" : ""} ${dropdownOpenFinished && dropdownOpen ? "invisible" : ""}`}
|
||||||
|
>
|
||||||
|
<slot />
|
||||||
|
</div>
|
||||||
|
{/key}
|
||||||
</main>
|
</main>
|
||||||
|
|
|
||||||
5
src/routes/+layout.ts
Normal file
5
src/routes/+layout.ts
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
export function load({ url }) {
|
||||||
|
return {
|
||||||
|
url: url.pathname,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<script lang="ts">
|
<!-- <script lang="ts">
|
||||||
import { browser } from "$app/environment";
|
import { browser } from "$app/environment";
|
||||||
import { goto } from "$app/navigation";
|
import { goto } from "$app/navigation";
|
||||||
import { getContext } from "svelte";
|
import { getContext } from "svelte";
|
||||||
|
|
@ -77,4 +77,4 @@
|
||||||
<a href="/account/rooms" class="button-sm">Rooms</a>
|
<a href="/account/rooms" class="button-sm">Rooms</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> -->
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<script lang="ts">
|
<!-- <script lang="ts">
|
||||||
import { browser } from "$app/environment";
|
import { browser } from "$app/environment";
|
||||||
import { goto } from "$app/navigation";
|
import { goto } from "$app/navigation";
|
||||||
import HCaptcha from "$components/HCaptcha.svelte";
|
import HCaptcha from "$components/HCaptcha.svelte";
|
||||||
|
|
@ -81,4 +81,4 @@
|
||||||
<button {disabled} on:click={signUp} class="cta-button mt-2">Sign up</button>
|
<button {disabled} on:click={signUp} class="cta-button mt-2">Sign up</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> -->
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue