diff --git a/src/routes/login/+layout@.svelte b/src/routes/login/+layout@.svelte new file mode 100644 index 0000000..2ea7e22 --- /dev/null +++ b/src/routes/login/+layout@.svelte @@ -0,0 +1,26 @@ + + + + + + + + +
+ +
+

🎯

+ bullseye +
+ + +
+ {@render children?.()} +
+
diff --git a/src/routes/login/+page.svelte b/src/routes/login/+page.svelte new file mode 100644 index 0000000..bee45c7 --- /dev/null +++ b/src/routes/login/+page.svelte @@ -0,0 +1,31 @@ + + +
+
+ + + Login + Sign Up + +
+ + {#if tabValue === 'login'} + + {/if} + + + + {#if tabValue === 'signup'} + + {/if} + +
+
+
+
diff --git a/src/routes/login/login-form.svelte b/src/routes/login/login-form.svelte new file mode 100644 index 0000000..1f47147 --- /dev/null +++ b/src/routes/login/login-form.svelte @@ -0,0 +1,52 @@ + + + + + Login to your account + Enter your email below to login to your account + + +
+ + + + + + Email + + {#each login.fields.email.issues() ?? [] as issue} + {issue.message} + {/each} + + + + + Password + + {#each login.fields.password.issues() ?? [] as issue} + {issue.message} + {/each} + + + {#each login.fields.allIssues() ?? [] as issue} + {#if !issue.path || issue.path.length === 0} + {issue.message} + {/if} + {/each} + + + + + + + + +
+
diff --git a/src/routes/login/signup-form.svelte b/src/routes/login/signup-form.svelte new file mode 100644 index 0000000..f306c31 --- /dev/null +++ b/src/routes/login/signup-form.svelte @@ -0,0 +1,79 @@ + + + + + Sign up for an account + Enter your email below to register for an account + + +
{ + try { + await submit(); + + // Check if there are any validation issues + const issues = signup.fields.allIssues(); + if (issues && issues.length > 0) { + return; + } + + // Move to login tab on success + // TODO: Fix previous errors showing on login form + form.reset(); + toast.success('Successfully registered!'); + tabValue = 'login'; + } catch (error) { + console.error('Unknown error occurred: ', error); + toast.error('Registration failed.'); + } + })} + > + + + + + + Email + + {#each signup.fields.email.issues() ?? [] as issue} + {issue.message} + {/each} + + + + + Name + + {#each signup.fields.name.issues() ?? [] as issue} + {issue.message} + {/each} + + + + + Password + + {#each signup.fields.password.issues() ?? [] as issue} + {issue.message} + {/each} + + + + + + + + + +
+