parent
11f41ba528
commit
65d929c423
@ -0,0 +1,256 @@ |
|||||||
|
<!-- |
||||||
|
// Copyright (c) 2022-2023 Niko Bonnieure, Par le Peuple, NextGraph.org developers |
||||||
|
// All rights reserved. |
||||||
|
// Licensed under the Apache License, Version 2.0 |
||||||
|
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0> |
||||||
|
// or the MIT license <LICENSE-MIT or http://opensource.org/licenses/MIT>, |
||||||
|
// at your option. All files in the project carrying such |
||||||
|
// notice may not be copied, modified, or distributed except |
||||||
|
// according to those terms. |
||||||
|
--> |
||||||
|
<script> |
||||||
|
import { Button, Alert, Dropzone, Toggle } from "flowbite-svelte"; |
||||||
|
import { link, push } from "svelte-spa-router"; |
||||||
|
import CenteredLayout from "../lib/CenteredLayout.svelte"; |
||||||
|
import { version } from "../../package.json"; |
||||||
|
// @ts-ignore |
||||||
|
import Logo from "../assets/nextgraph.svg?component"; |
||||||
|
import { |
||||||
|
ArrowLeft, |
||||||
|
Signal, |
||||||
|
SignalSlash, |
||||||
|
ArrowRightOnRectangle, |
||||||
|
Cog6Tooth, |
||||||
|
PuzzlePiece, |
||||||
|
Key, |
||||||
|
User, |
||||||
|
Gift, |
||||||
|
InformationCircle, |
||||||
|
} from "svelte-heros-v2"; |
||||||
|
import { onMount, tick } from "svelte"; |
||||||
|
import { |
||||||
|
Sidebar, |
||||||
|
SidebarGroup, |
||||||
|
SidebarItem, |
||||||
|
SidebarWrapper, |
||||||
|
} from "flowbite-svelte"; |
||||||
|
|
||||||
|
import { online, close_active_wallet, active_session } from "../store"; |
||||||
|
|
||||||
|
import { |
||||||
|
NG_EU_BSP, |
||||||
|
NG_NET_BSP, |
||||||
|
APP_ACCOUNT_REGISTERED_SUFFIX, |
||||||
|
default as ng, |
||||||
|
} from "../api"; |
||||||
|
|
||||||
|
let tauri_platform = import.meta.env.TAURI_PLATFORM; |
||||||
|
let error; |
||||||
|
let mobile = tauri_platform == "android" || tauri_platform == "ios"; |
||||||
|
let nonActiveClass = |
||||||
|
"flex items-center p-2 text-base font-normal text-gray-900 rounded-lg dark:text-white hover:bg-gray-200 dark:hover:bg-gray-700"; |
||||||
|
|
||||||
|
let top; |
||||||
|
async function scrollToTop() { |
||||||
|
await tick(); |
||||||
|
top.scrollIntoView(); |
||||||
|
} |
||||||
|
onMount(async () => { |
||||||
|
if (!$active_session) { |
||||||
|
push("#/"); |
||||||
|
} else { |
||||||
|
await scrollToTop(); |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
function logout() { |
||||||
|
close_active_wallet(); |
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<CenteredLayout> |
||||||
|
<div class="container3" bind:this={top}> |
||||||
|
<div class="row mb-20"> |
||||||
|
<Sidebar {nonActiveClass}> |
||||||
|
<SidebarWrapper |
||||||
|
divClass="bg-gray-60 overflow-y-auto py-4 px-3 rounded dark:bg-gray-800" |
||||||
|
> |
||||||
|
<SidebarGroup ulClass="space-y-2"> |
||||||
|
<li> |
||||||
|
<h2 class="text-xl mb-6">User panel</h2> |
||||||
|
</li> |
||||||
|
<!-- svelte-ignore a11y-no-noninteractive-tabindex --> |
||||||
|
<li |
||||||
|
tabindex="0" |
||||||
|
class="flex items-center p-2 text-base font-normal text-gray-900 clickable rounded-lg dark:text-white hover:bg-gray-200 dark:hover:bg-gray-700" |
||||||
|
on:keypress={() => window.history.go(-1)} |
||||||
|
on:click={() => window.history.go(-1)} |
||||||
|
> |
||||||
|
<ArrowLeft |
||||||
|
tabindex="-1" |
||||||
|
class="w-7 h-7 text-black transition duration-75 dark:text-white group-hover:text-gray-900 dark:group-hover:text-white" |
||||||
|
/> |
||||||
|
<span class="ml-3">Back</span> |
||||||
|
</li> |
||||||
|
|
||||||
|
<li |
||||||
|
class="flex items-center p-2 text-base font-normal text-gray-900" |
||||||
|
> |
||||||
|
{#if $online} |
||||||
|
<Signal |
||||||
|
tabindex="-1" |
||||||
|
class="w-7 h-7 text-green-600 transition duration-75 dark:text-green-400 " |
||||||
|
/> |
||||||
|
<span class="ml-3 text-green-600 dark:text-green-400" |
||||||
|
>Online</span |
||||||
|
> |
||||||
|
{:else} |
||||||
|
<SignalSlash |
||||||
|
tabindex="-1" |
||||||
|
class="w-7 h-7 text-red-600 transition duration-75 dark:text-red-400 " |
||||||
|
/> |
||||||
|
<span class="ml-3 text-red-600 dark:text-red-400">Offline</span> |
||||||
|
{/if} |
||||||
|
</li> |
||||||
|
|
||||||
|
<!-- svelte-ignore a11y-no-noninteractive-tabindex --> |
||||||
|
<li |
||||||
|
tabindex="0" |
||||||
|
class="flex items-center p-2 text-base font-normal text-gray-900 clickable rounded-lg dark:text-white hover:bg-gray-200 dark:hover:bg-gray-700" |
||||||
|
on:keypress={logout} |
||||||
|
on:click={logout} |
||||||
|
> |
||||||
|
<ArrowRightOnRectangle |
||||||
|
tabindex="-1" |
||||||
|
class="w-7 h-7 text-black transition duration-75 dark:text-white group-hover:text-gray-900 dark:group-hover:text-white" |
||||||
|
/> |
||||||
|
<span class="ml-3">Logout</span> |
||||||
|
</li> |
||||||
|
|
||||||
|
<SidebarItem label="Settings" href="#/user/settings" class="p-2"> |
||||||
|
<svelte:fragment slot="icon"> |
||||||
|
<Cog6Tooth |
||||||
|
tabindex="-1" |
||||||
|
class="w-7 h-7 text-black transition duration-75 dark:text-white group-hover:text-gray-900 dark:group-hover:text-white" |
||||||
|
/> |
||||||
|
</svelte:fragment> |
||||||
|
</SidebarItem> |
||||||
|
<SidebarItem label="Wallet" href="#/wallet" class="p-2"> |
||||||
|
<svelte:fragment slot="icon"> |
||||||
|
<PuzzlePiece |
||||||
|
tabindex="-1" |
||||||
|
class="w-7 h-7 text-black transition duration-75 dark:text-white group-hover:text-gray-900 dark:group-hover:text-white" |
||||||
|
/> |
||||||
|
</svelte:fragment> |
||||||
|
</SidebarItem> |
||||||
|
<SidebarItem label="Admin" href="#/user/admin" class="p-2"> |
||||||
|
<svelte:fragment slot="icon"> |
||||||
|
<Key |
||||||
|
tabindex="-1" |
||||||
|
class="w-7 h-7 text-black transition duration-75 dark:text-white group-hover:text-gray-900 dark:group-hover:text-white" |
||||||
|
/> |
||||||
|
</svelte:fragment> |
||||||
|
</SidebarItem> |
||||||
|
<SidebarItem label="Accounts" href="#/user/accounts" class="p-2"> |
||||||
|
<svelte:fragment slot="icon"> |
||||||
|
<User |
||||||
|
tabindex="-1" |
||||||
|
class="w-7 h-7 text-black transition duration-75 dark:text-white group-hover:text-gray-900 dark:group-hover:text-white" |
||||||
|
/> |
||||||
|
</svelte:fragment> |
||||||
|
</SidebarItem> |
||||||
|
<li |
||||||
|
class="flex items-center p-2 text-base font-normal text-gray-900" |
||||||
|
> |
||||||
|
<Toggle checked={true}>Personal</Toggle> |
||||||
|
</li> |
||||||
|
</SidebarGroup> |
||||||
|
<SidebarGroup border> |
||||||
|
<SidebarItem |
||||||
|
label="Donate to NextGraph" |
||||||
|
href="https://nextgraph.org/donate" |
||||||
|
target="_blank" |
||||||
|
class="p-2" |
||||||
|
> |
||||||
|
<svelte:fragment slot="icon"> |
||||||
|
<Gift |
||||||
|
tabindex="-1" |
||||||
|
class="w-7 h-7 text-black transition duration-75 dark:text-white group-hover:text-gray-900 dark:group-hover:text-white" |
||||||
|
/> |
||||||
|
</svelte:fragment> |
||||||
|
</SidebarItem> |
||||||
|
<SidebarItem |
||||||
|
label="About NextGraph" |
||||||
|
href="https://nextgraph.org" |
||||||
|
target="_blank" |
||||||
|
class="p-2" |
||||||
|
> |
||||||
|
<svelte:fragment slot="icon"> |
||||||
|
<InformationCircle |
||||||
|
tabindex="-1" |
||||||
|
class="w-7 h-7 text-black transition duration-75 dark:text-white group-hover:text-gray-900 dark:group-hover:text-white" |
||||||
|
/> |
||||||
|
</svelte:fragment> |
||||||
|
</SidebarItem> |
||||||
|
<li |
||||||
|
class="flex items-center p-2 text-base font-normal text-gray-900" |
||||||
|
> |
||||||
|
Version: {version} |
||||||
|
</li> |
||||||
|
</SidebarGroup> |
||||||
|
</SidebarWrapper> |
||||||
|
</Sidebar> |
||||||
|
</div> |
||||||
|
{#if error} |
||||||
|
<div class=" max-w-6xl lg:px-8 mx-auto px-4 text-red-800"> |
||||||
|
<svg |
||||||
|
class="animate-bounce mt-10 h-16 w-16 mx-auto" |
||||||
|
fill="none" |
||||||
|
stroke="currentColor" |
||||||
|
stroke-width="1.5" |
||||||
|
viewBox="0 0 24 24" |
||||||
|
xmlns="http://www.w3.org/2000/svg" |
||||||
|
aria-hidden="true" |
||||||
|
> |
||||||
|
<path |
||||||
|
stroke-linecap="round" |
||||||
|
stroke-linejoin="round" |
||||||
|
d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" |
||||||
|
/> |
||||||
|
</svg> |
||||||
|
{#if error == "AlreadyExists"} |
||||||
|
<p class="max-w-xl md:mx-auto lg:max-w-2xl mb-5"> |
||||||
|
The user is already registered with the selected broker.<br /> Try logging |
||||||
|
in instead |
||||||
|
</p> |
||||||
|
<a use:link href="/"> |
||||||
|
<button |
||||||
|
tabindex="-1" |
||||||
|
class="text-white bg-primary-700 hover:bg-primary-700/90 focus:ring-4 focus:ring-primary-700/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-700/55 mb-2" |
||||||
|
> |
||||||
|
Login |
||||||
|
</button> |
||||||
|
</a> |
||||||
|
{:else} |
||||||
|
<p class="max-w-xl md:mx-auto lg:max-w-2xl mb-5"> |
||||||
|
An error occurred:<br />{error} |
||||||
|
</p> |
||||||
|
<a use:link href="/"> |
||||||
|
<button |
||||||
|
tabindex="-1" |
||||||
|
class="text-white bg-primary-700 hover:bg-primary-700/90 focus:ring-4 focus:ring-primary-700/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-700/55 mb-2" |
||||||
|
> |
||||||
|
Go back to homepage |
||||||
|
</button> |
||||||
|
</a> |
||||||
|
{/if} |
||||||
|
</div> |
||||||
|
{/if} |
||||||
|
</div> |
||||||
|
</CenteredLayout> |
||||||
|
|
||||||
|
<style> |
||||||
|
li.clickable { |
||||||
|
cursor: pointer; |
||||||
|
} |
||||||
|
</style> |
Loading…
Reference in new issue