summaryrefslogtreecommitdiff
path: root/ui/lib/components/LogIn.svelte
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2024-10-10 21:51:10 -0400
committerOwen Jacobson <owen@grimoire.ca>2024-10-10 21:52:26 -0400
commit215b0c5cb2ff0ef0b2c7b5549704e23d651a4df9 (patch)
tree356484ce699539f2937b768d1a1c9b83f0c7a402 /ui/lib/components/LogIn.svelte
parent4401dce2b5545ce8117818812d8e3c8919f5f7fd (diff)
Hoist the UI one step up further
Diffstat (limited to 'ui/lib/components/LogIn.svelte')
-rw-r--r--ui/lib/components/LogIn.svelte35
1 files changed, 35 insertions, 0 deletions
diff --git a/ui/lib/components/LogIn.svelte b/ui/lib/components/LogIn.svelte
new file mode 100644
index 0000000..2836e6d
--- /dev/null
+++ b/ui/lib/components/LogIn.svelte
@@ -0,0 +1,35 @@
+<script>
+ import { logIn } from '$lib/apiServer';
+ import { currentUser } from '$lib/store';
+
+ let disabled = false;
+ let username = '';
+ let password = '';
+
+ async function handleLogin(event) {
+ disabled = true;
+ const response = await logIn(username, password);
+ if (200 <= response.status && response.status < 300) {
+ currentUser.update(() => ({ username }));
+ username = '';
+ password = '';
+ }
+ disabled = false;
+ }
+</script>
+
+<div class="card m-4 p-4">
+ <form on:submit|preventDefault={handleLogin}>
+ <label class="label" for="username">
+ username
+ <input class="input" name="username" type="text" placeholder="username" bind:value={username} disabled={disabled}>
+ </label>
+ <label class="label" for="password">
+ password
+ <input class="input" name="password" type="password" placeholder="password" bind:value={password} disabled={disabled}>
+ </label>
+ <button class="btn variant-filled" type="submit">
+ sign in or up
+ </button>
+ </form>
+</div>