pronounscc/frontend/src/routes/settings/+layout.svelte

73 lines
1.9 KiB
Svelte
Raw Normal View History

2023-03-14 00:16:19 +01:00
<script lang="ts">
import { page } from "$app/stores";
import type { LayoutData } from "./$types";
2023-03-14 15:17:24 +01:00
import { Button, ListGroup, ListGroupItem, Modal, ModalBody, ModalFooter } from "sveltestrap";
import { userStore } from "$lib/store";
import { goto } from "$app/navigation";
2023-03-14 00:16:19 +01:00
export let data: LayoutData;
2023-03-14 15:17:24 +01:00
let isOpen = false;
const toggle = () => (isOpen = !isOpen);
const logOut = () => {
userStore.set(null);
localStorage.removeItem("pronouns-token");
localStorage.removeItem("pronouns-user");
toggle();
goto("/");
};
</script>
<svelte:head>
<title>Settings - pronouns.cc</title>
</svelte:head>
<div class="grid">
<div class="row">
<div class="col-md-3 m-3">
<h1>Settings</h1>
<ListGroup>
2023-03-14 00:16:19 +01:00
<ListGroupItem tag="a" active={$page.url.pathname === "/settings"} href="/settings">
Your profile
</ListGroupItem>
{#if data.require_invite}
<ListGroupItem
tag="a"
active={$page.url.pathname === "/settings/invites"}
href="/settings/invites"
>
Invites
</ListGroupItem>
{/if}
<ListGroupItem
tag="a"
active={$page.url.pathname === "/settings/tokens"}
href="/settings/tokens"
>
Tokens
2023-03-14 00:16:19 +01:00
</ListGroupItem>
<ListGroupItem
tag="a"
active={$page.url.pathname === "/settings/export"}
href="/settings/export"
>
Data export
</ListGroupItem>
2023-03-14 15:17:24 +01:00
<ListGroupItem tag="button" on:click={toggle}>Log out</ListGroupItem>
</ListGroup>
</div>
<div class="col-md m-3">
<slot />
</div>
</div>
2023-03-14 15:17:24 +01:00
<Modal header="Log out" {isOpen} {toggle}>
<ModalBody>Are you sure you want to log out?</ModalBody>
<ModalFooter>
<Button color="primary" on:click={logOut}>Log out</Button>
<Button color="secondary" on:click={toggle}>Cancel</Button>
</ModalFooter>
</Modal>
</div>