linkylinky-dashboard/src/routes/login.svelte

69 lines
2.1 KiB
Svelte

<script>
import Apiclient from '$lib/Apiclient';
import UserStore from '$lib/UserStore';
$: username = "";
$: password = "";
$: error = "";
async function login() {
try {
const login = await Apiclient.login(username, password);
UserStore.login(login);
location.replace("./");
} catch (error) {
}
}
function handleKeydown(e) {
if (e.keyCode === 13) {
login();
}
}
</script>
<div class="w-full max-w-sm mx-auto overflow-hidden bg-white rounded-lg shadow-md dark:bg-gray-800">
<div class="px-6 py-4">
<h2 class="text-3xl font-bold text-center text-gray-700 dark:text-white">LinkyLinky</h2>
<h3 class="mt-1 text-xl font-medium text-center text-gray-600 dark:text-gray-200">
Welcome Back
</h3>
<p class="mt-1 text-center text-gray-500 dark:text-gray-400">Please login</p>
<div class="w-full mt-4">
<input
class="block w-full px-4 py-2 mt-2 text-gray-700 dark:text-gray-200 placeholder-gray-500 bg-white border border-gray-300 rounded-md dark:bg-gray-800 dark:border-gray-600 dark:placeholder-gray-400 focus:border-blue-500 dark:focus:border-blue-500 focus:outline-none focus:ring"
type="text"
placeholder="Username"
aria-label="Username"
bind:value={username}
on:keydown={handleKeydown}
/>
</div>
<div class="w-full mt-4">
<input
class="block w-full px-4 py-2 mt-2 text-gray-700 dark:text-gray-200 placeholder-gray-500 bg-white border border-gray-300 rounded-md dark:bg-gray-800 dark:border-gray-600 dark:placeholder-gray-400 focus:border-blue-500 dark:focus:border-blue-500 focus:outline-none focus:ring"
type="password"
placeholder="Password"
aria-label="Password"
bind:value={password}
on:keydown={handleKeydown}
/>
</div>
<div class="flex items-center justify-between mt-4">
<button on:click={login}
class="px-4 py-2 leading-5 text-white transition-colors duration-200 transform bg-gray-700 rounded hover:bg-gray-600 focus:outline-none"
type="button"
>
Login
</button>
</div>
</div>
</div>