upgrade flowbite, full-layout

pull/19/head
Niko PLP 1 year ago
parent c8f6416bc7
commit a2f1cf8316
  1. 3
      ng-app/package.json
  2. 2
      ng-app/src/App.svelte
  3. 16
      ng-app/src/assets/nextgraph-gray.svg
  4. 13
      ng-app/src/lib/CenteredLayout.svelte
  5. 212
      ng-app/src/lib/Home.svelte
  6. 14
      ng-app/src/lib/Install.svelte
  7. 81
      ng-app/src/lib/NoWallet.svelte
  8. 2
      ng-app/src/lib/Test.svelte
  9. 7
      ng-app/src/routes/Home.svelte
  10. 3
      ng-app/src/routes/Install.svelte
  11. 3
      ng-app/src/routes/NotFound.svelte
  12. 11
      ng-app/src/routes/UserRegistered.svelte
  13. 204
      ng-app/src/routes/WalletCreate.svelte
  14. 15
      ng-app/src/routes/WalletLogin.svelte
  15. 2
      ng-app/src/store.ts
  16. 7
      ng-app/src/styles.css
  17. 6
      ngaccount/web/src/routes/Create.svelte
  18. 4
      ngaccount/web/src/routes/Delete.svelte
  19. 6
      ngone/web/src/routes/Home.svelte
  20. 10
      ngone/web/src/routes/WalletCreate.svelte
  21. 54
      pnpm-lock.yaml

@ -22,7 +22,7 @@
"async-proxy": "^0.4.1", "async-proxy": "^0.4.1",
"classnames": "^2.3.2", "classnames": "^2.3.2",
"flowbite": "^1.6.5", "flowbite": "^1.6.5",
"flowbite-svelte": "^0.37.1", "flowbite-svelte": "^0.43.3",
"ng-sdk-js": "workspace:^0.1.0", "ng-sdk-js": "workspace:^0.1.0",
"svelte-spa-router": "^3.3.0", "svelte-spa-router": "^3.3.0",
"vite-plugin-top-level-await": "^1.3.1" "vite-plugin-top-level-await": "^1.3.1"
@ -41,6 +41,7 @@
"shx": "^0.3.4", "shx": "^0.3.4",
"svelte": "^3.54.0", "svelte": "^3.54.0",
"svelte-check": "^3.0.0", "svelte-check": "^3.0.0",
"svelte-heros-v2": "^0.10.12",
"svelte-preprocess": "^5.0.3", "svelte-preprocess": "^5.0.3",
"tailwindcss": "^3.3.1", "tailwindcss": "^3.3.1",
"tslib": "^2.4.1", "tslib": "^2.4.1",

@ -158,7 +158,6 @@
}); });
</script> </script>
<main class="">
<!-- <p> <!-- <p>
{JSON.stringify(Object.keys($wallets))} {JSON.stringify(Object.keys($wallets))}
{JSON.stringify($active_wallet)} {JSON.stringify($active_wallet)}
@ -166,4 +165,3 @@
{JSON.stringify($active_session)} {JSON.stringify($active_session)}
</p> --> </p> -->
<Router {routes} /> <Router {routes} />
</main>

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 225 225"
>
<g>
<circle
r="106.98013"
cy="112.90476"
cx="109.88096"
style="fill:#ffffff;stroke:none;stroke-width:0.268375" />
<path
d="M 98.343352,190.26108 C 80.403778,187.53354 65.011938,179.57839 52.608228,166.62327 38.602093,151.99448 31.178059,133.41381 31.178059,112.98841 c 0,-10.21889 1.700058,-19.44396 5.221234,-28.332119 4.28678,-10.820699 10.037295,-19.39063 18.535095,-27.62263 4.72982,-4.58187 6.60687,-6.10643 11.28099,-9.16256 11.89869,-7.779841 24.173884,-11.879991 38.095802,-12.724761 19.80437,-1.2017 39.11165,5.11306 54.60284,17.858751 1.50718,1.24006 2.72951,2.35934 2.71628,2.48729 -0.0132,0.12795 -3.85821,3.63443 -8.54442,7.79217 -4.6862,4.157729 -10.04724,8.96276 -11.91342,10.677819 -1.86617,1.715071 -3.54094,3.11831 -3.7217,3.11831 -0.18075,0 -1.39985,-0.745188 -2.70911,-1.655969 -7.53011,-5.23834 -15.99428,-7.82188 -25.62597,-7.82188 -12.731628,0 -23.249192,4.3379 -32.143882,13.257541 -6.39594,6.413868 -10.70387,14.555268 -12.50018,23.623578 -0.69099,3.48832 -0.68968,13.53072 0.002,17.00893 3.70508,18.62577 18.31886,33.10194 36.642322,36.29729 4.16439,0.72621 11.98099,0.71223 15.98975,-0.0286 14.03187,-2.59311 25.86047,-11.36806 32.26533,-23.93578 0.77379,-1.51834 1.26018,-2.88461 1.08086,-3.03616 -0.17934,-0.15156 -6.87448,-1.1779 -14.87813,-2.28078 -9.7795,-1.34758 -14.92353,-2.21379 -15.68471,-2.64117 -1.52067,-0.85379 -2.83611,-2.88806 -2.83611,-4.3859 0,-1.1732 2.02687,-15.86876 2.49085,-18.05962 0.29676,-1.40127 2.42559,-3.4934 3.84317,-3.77691 0.62227,-0.12445 8.82712,0.85555 18.28065,2.18348 9.43343,1.32511 17.26269,2.29453 17.39833,2.15427 0.13566,-0.14026 1.11808,-6.54833 2.18313,-14.24014 1.10778,-8.000208 2.20407,-14.60184 2.56177,-15.426229 0.34392,-0.792599 1.11019,-1.849131 1.70287,-2.34782 2.06321,-1.736079 3.1433,-1.785011 12.20439,-0.55291 9.63637,1.310309 10.70873,1.56224 12.28077,2.88503 1.64359,1.382979 2.2732,2.810909 2.25906,5.123309 -0.007,1.10173 -0.92172,8.29645 -2.03332,15.98826 -1.11158,7.69182 -1.97159,14.04091 -1.91113,14.1091 0.0605,0.0682 7.16644,1.11143 15.79109,2.31832 11.10566,1.55407 16.00827,2.38757 16.80223,2.85657 1.53015,0.90389 2.48023,2.64785 2.45017,4.49756 -0.0462,2.84349 -2.41252,18.12279 -2.97521,19.21089 -0.66164,1.27949 -2.60244,2.54696 -3.92109,2.56074 -0.51973,0.005 -7.87449,-0.95937 -16.34391,-2.144 -8.46944,-1.18464 -15.47588,-2.077 -15.56986,-1.98301 -0.094,0.094 -1.18792,7.34163 -2.43097,16.10589 -1.44004,10.15311 -2.49792,16.43621 -2.91556,17.31631 -0.72531,1.52848 -2.76261,3.06291 -4.53817,3.41802 -0.95688,0.19138 -10.90014,-0.92798 -13.59859,-1.53084 -0.5471,-0.12223 -1.89146,0.67252 -4.50941,2.66588 -11.2627,8.57562 -24.34195,13.90917 -38.35741,15.64164 -4.40038,0.54395 -15.72658,0.43298 -19.853658,-0.19451 z"
style="fill:#888;fill-opacity:1;stroke:#888;stroke-width:0.377976;stroke-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

@ -0,0 +1,13 @@
<div class="centered">
<slot />
</div>
<style>
.centered {
/*max-width: 1280px;*/
margin: 0 auto;
padding: 0rem;
text-align: center;
width: fit-content;
}
</style>

@ -9,109 +9,157 @@
// according to those terms. // according to those terms.
--> -->
<script> <script lang="ts">
import { Button } from "flowbite-svelte"; import {
import { link } from "svelte-spa-router"; Sidebar,
SidebarGroup,
SidebarItem,
SidebarWrapper,
} from "flowbite-svelte";
import { link, location } from "svelte-spa-router";
// @ts-ignore // @ts-ignore
import Logo from "../assets/nextgraph.svg?component"; import Logo from "../assets/nextgraph.svg?component";
import { close_active_wallet } from "../store"; // @ts-ignore
import LogoGray from "../assets/nextgraph-gray.svg?component";
import { close_active_wallet, online } from "../store";
import { onMount } from "svelte"; import { onMount } from "svelte";
export let display_login_create = false;
import {
Home,
Bolt,
MagnifyingGlass,
PlusCircle,
PaperAirplane,
Bell,
User,
ArrowRightOnRectangle,
} from "svelte-heros-v2";
let width: number;
let breakPoint: number = 660;
let mobile = false;
$: if (width >= breakPoint) {
mobile = false;
} else {
mobile = true;
}
$: activeUrl = "#" + $location;
function logout() { function logout() {
close_active_wallet(); close_active_wallet();
} }
</script>
{#if display_login_create} let asideClass = "w-48";
<main class="container3"> let spanClass = "flex-1 ml-3 whitespace-nowrap";
<div class="row"> let nonActiveClass =
<Logo class="logo block h-40" alt="NextGraph Logo" /> "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";
</div> </script>
<h1 class="text-2xl mb-10">Welcome to NextGraph</h1>
<p class="max-w-sm"> <div class="full-layout">
We could not find a wallet saved on this device.<br /> If you already have <Sidebar {activeUrl} {asideClass} {nonActiveClass} class="fixed">
a wallet, select "Log in", otherwise, select "Create Wallet" here below <SidebarWrapper class="bg-gray-60">
</p> <SidebarGroup>
<div class="row mt-10"> <SidebarItem label="NextGraph" href="#/user">
<a href="/wallet/create" use:link> <svelte:fragment slot="icon">
<button {#if $online}
<Logo class="w-10 h-10" />
{:else}
<LogoGray class="w-10 h-10" />
{/if}
</svelte:fragment>
</SidebarItem>
<SidebarItem label="Home" href="#/">
<svelte:fragment slot="icon">
<Home
tabindex="-1" tabindex="-1"
class="text-white bg-primary-700 hover:bg-primary-700/90 focus:ring-4 focus:outline-none 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 mr-2 mb-2" class="w-7 h-7 text-black transition duration-75 dark:text-white group-hover:text-gray-900 dark:group-hover:text-white"
>
<svg
class="w-8 h-8 mr-2 -ml-1"
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="M19 7.5v3m0 0v3m0-3h3m-3 0h-3m-2.25-4.125a3.375 3.375 0 11-6.75 0 3.375 3.375 0 016.75 0zM4 19.235v-.11a6.375 6.375 0 0112.75 0v.109A12.318 12.318 0 0110.374 21c-2.331 0-4.512-.645-6.374-1.766z"
/> />
</svg> </svelte:fragment>
Create wallet </SidebarItem>
</button> <SidebarItem label="Stream" href="#/stream">
</a> <svelte:fragment slot="icon">
</div> <Bolt
<div class="row mt-10">
<a href="/wallet/login" use:link>
<button
tabindex="-1" tabindex="-1"
class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2" class="w-7 h-7 text-black transition duration-75 dark:text-white group-hover:text-gray-900 dark:group-hover:text-white"
> />
<svg </svelte:fragment>
class="w-8 h-8 mr-2 -ml-1" </SidebarItem>
fill="currentColor" <SidebarItem label="Search" href="#/search">
stroke="currentColor" <svelte:fragment slot="icon">
stroke-width="2" <MagnifyingGlass
viewBox="0 0 24 24" tabindex="-1"
xmlns="http://www.w3.org/2000/svg" class="w-7 h-7 text-black transition duration-75 dark:text-white group-hover:text-gray-900 dark:group-hover:text-white"
aria-hidden="true" />
</svelte:fragment>
</SidebarItem>
<SidebarItem label="Create" href="#/create">
<svelte:fragment slot="icon">
<PlusCircle
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="Site" href="#/site">
<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>
<SidebarItem label="Messages" href="#/messages">
<svelte:fragment slot="icon">
<PaperAirplane
tabindex="-1"
class="-rotate-45 w-7 h-7 text-black transition duration-75 dark:text-white group-hover:text-gray-900 dark:group-hover:text-white"
/>
<span
class="inline-flex justify-center items-center p-3 mt-1 -ml-3 w-3 h-3 text-sm font-medium text-primary-600 bg-primary-200 rounded-full dark:bg-primary-900 dark:text-primary-200"
> >
<path 3
stroke-linecap="round" </span>
stroke-linejoin="round" </svelte:fragment>
d="M15.75 6a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0zM4.501 20.118a7.5 7.5 0 0114.998 0A17.933 17.933 0 0112 21.75c-2.676 0-5.216-.584-7.499-1.632z" </SidebarItem>
<SidebarItem label="Notifications" href="#/notifications">
<svelte:fragment slot="icon">
<Bell
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"
/> />
</svg> <span
Log in class="inline-flex justify-center items-center p-3 mt-1 -ml-3 w-3 h-3 text-sm font-medium text-primary-600 bg-primary-200 rounded-full dark:bg-primary-900 dark:text-primary-200"
</button> >
</a> 10
</div> </span>
</main> </svelte:fragment>
{:else} </SidebarItem>
<main class="container3"> </SidebarGroup>
<h1>Welcome to test</h1> </SidebarWrapper>
</Sidebar>
<main class="ml-48">
<h1>Welcoe {mobile}</h1>
<div class="row mt-10"> <div class="row mt-10">
<button <button
on:click={logout} on:click={logout}
class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2" class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2"
>
<svg
class="w-8 h-8 mr-2 -ml-1"
fill="none"
stroke="currentColor"
stroke-width="1.5"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
aria-hidden="true"
> >
<path <ArrowRightOnRectangle tabindex="-1" class="w-8 h-8 mr-2 -ml-1" />
stroke-linecap="round"
stroke-linejoin="round"
d="M15.75 9V5.25A2.25 2.25 0 0013.5 3h-6a2.25 2.25 0 00-2.25 2.25v13.5A2.25 2.25 0 007.5 21h6a2.25 2.25 0 002.25-2.25V15m3 0l3-3m0 0l-3-3m3 3H9"
/>
</svg>
Logout Logout
</button> </button>
</div> </div>
</main> </main>
{/if} </div>
<svelte:window bind:innerWidth={width} />
<style>
.full-layout {
height: 100vh;
}
</style>

@ -55,7 +55,7 @@
<a href="#"> <a href="#">
<button <button
tabindex="-1" tabindex="-1"
class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2" class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2"
> >
<svg <svg
role="img" role="img"
@ -75,7 +75,7 @@
<a href="https://nextgraph.org/download/#android"> <a href="https://nextgraph.org/download/#android">
<button <button
tabindex="-1" tabindex="-1"
class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2" class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2"
> >
<svg <svg
role="img" role="img"
@ -95,7 +95,7 @@
<a href="#"> <a href="#">
<button <button
tabindex="-1" tabindex="-1"
class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2" class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2"
> >
<svg <svg
role="img" role="img"
@ -116,7 +116,7 @@
<a href="https://nextgraph.org/download/#macos"> <a href="https://nextgraph.org/download/#macos">
<button <button
tabindex="-1" tabindex="-1"
class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2" class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2"
> >
<svg <svg
role="img" role="img"
@ -137,7 +137,7 @@
<a href="https://nextgraph.org/download/#linux"> <a href="https://nextgraph.org/download/#linux">
<button <button
tabindex="-1" tabindex="-1"
class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2" class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2"
> >
<svg <svg
role="img" role="img"
@ -158,7 +158,7 @@
<a href="https://nextgraph.org/download/#windows"> <a href="https://nextgraph.org/download/#windows">
<button <button
tabindex="-1" tabindex="-1"
class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2" class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2"
> >
<svg <svg
role="img" role="img"
@ -179,7 +179,7 @@
<a href="https://nextgraph.org/self-host"> <a href="https://nextgraph.org/self-host">
<button <button
tabindex="-1" tabindex="-1"
class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2" class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2"
> >
<svg <svg
fill="currentColor" fill="currentColor"

@ -0,0 +1,81 @@
<!--
// 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>
// @ts-ignore
import Logo from "../assets/nextgraph.svg?component";
import { link } from "svelte-spa-router";
import CenteredLayout from "./CenteredLayout.svelte";
</script>
<CenteredLayout>
<div class="container3">
<div class="row">
<Logo class="logo block h-40" alt="NextGraph Logo" />
</div>
<h1 class="text-2xl mb-10">Welcome to NextGraph</h1>
<p class="max-w-sm">
We could not find a wallet saved on this device.<br /> If you already have
a wallet, select "Log in", otherwise, select "Create Wallet" here below
</p>
<div class="row mt-10">
<a href="/wallet/create" use:link>
<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 mr-2 mb-2"
>
<svg
class="w-8 h-8 mr-2 -ml-1"
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="M19 7.5v3m0 0v3m0-3h3m-3 0h-3m-2.25-4.125a3.375 3.375 0 11-6.75 0 3.375 3.375 0 016.75 0zM4 19.235v-.11a6.375 6.375 0 0112.75 0v.109A12.318 12.318 0 0110.374 21c-2.331 0-4.512-.645-6.374-1.766z"
/>
</svg>
Create wallet
</button>
</a>
</div>
<div class="row mt-10">
<a href="/wallet/login" use:link>
<button
tabindex="-1"
class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2"
>
<svg
class="w-8 h-8 mr-2 -ml-1"
fill="currentColor"
stroke="currentColor"
stroke-width="2"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
aria-hidden="true"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="M15.75 6a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0zM4.501 20.118a7.5 7.5 0 0114.998 0A17.933 17.933 0 0112 21.75c-2.676 0-5.216-.584-7.499-1.632z"
/>
</svg>
Log in
</button>
</a>
</div>
</div>
</CenteredLayout>

@ -85,7 +85,7 @@
on:click={() => { on:click={() => {
fileinput.click(); fileinput.click();
}} }}
class="text-white bg-primary-700 hover:bg-primary-700/90 focus:ring-4 focus:outline-none 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 mr-2 mb-2" 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 mr-2 mb-2"
> >
<svg <svg
class="w-8 h-8 mr-2 -ml-1" class="w-8 h-8 mr-2 -ml-1"

@ -13,6 +13,7 @@
import { Button } from "flowbite-svelte"; import { Button } from "flowbite-svelte";
import { link } from "svelte-spa-router"; import { link } from "svelte-spa-router";
import Home from "../lib/Home.svelte"; import Home from "../lib/Home.svelte";
import NoWallet from "../lib/NoWallet.svelte";
import { push } from "svelte-spa-router"; import { push } from "svelte-spa-router";
import { onMount, onDestroy } from "svelte"; import { onMount, onDestroy } from "svelte";
import { import {
@ -44,4 +45,8 @@
}); });
</script> </script>
<Home {display_login_create} /> {#if display_login_create}
<NoWallet />
{:else}
<Home />
{/if}

@ -15,6 +15,7 @@
import Install from "../lib/Install.svelte"; import Install from "../lib/Install.svelte";
import { push } from "svelte-spa-router"; import { push } from "svelte-spa-router";
import { onMount, onDestroy } from "svelte"; import { onMount, onDestroy } from "svelte";
import CenteredLayout from "../lib/CenteredLayout.svelte";
import { import {
wallets, wallets,
active_wallet, active_wallet,
@ -33,4 +34,6 @@
}); });
</script> </script>
<CenteredLayout>
<Install {display_has_wallets_warning} /> <Install {display_has_wallets_warning} />
</CenteredLayout>

@ -11,10 +11,13 @@
<script> <script>
import { Alert } from "flowbite-svelte"; import { Alert } from "flowbite-svelte";
import CenteredLayout from "../lib/CenteredLayout.svelte";
</script> </script>
<CenteredLayout>
<div class="p-8"> <div class="p-8">
<Alert color="red"> <Alert color="red">
<span class="font-medium">404</span> Page not found. <span class="font-medium">404</span> Page not found.
</Alert> </Alert>
</div> </div>
</CenteredLayout>

@ -12,6 +12,7 @@
<script> <script>
import { Button, Alert, Dropzone, Toggle } from "flowbite-svelte"; import { Button, Alert, Dropzone, Toggle } from "flowbite-svelte";
import { link, querystring } from "svelte-spa-router"; import { link, querystring } from "svelte-spa-router";
import CenteredLayout from "../lib/CenteredLayout.svelte";
// @ts-ignore // @ts-ignore
import Logo from "../assets/nextgraph.svg?component"; import Logo from "../assets/nextgraph.svg?component";
@ -44,7 +45,8 @@
}); });
</script> </script>
<main class="container3"> <CenteredLayout>
<div class="container3">
<div class="row"> <div class="row">
<a href="#/"> <a href="#/">
<Logo class="logo block h-40" alt="NextGraph Logo" /> <Logo class="logo block h-40" alt="NextGraph Logo" />
@ -75,7 +77,7 @@
<a use:link href="/"> <a use:link href="/">
<button <button
tabindex="-1" tabindex="-1"
class="text-white bg-primary-700 hover:bg-primary-700/90 focus:ring-4 focus:outline-none 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" 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 Login
</button> </button>
@ -87,7 +89,7 @@
<a use:link href="/"> <a use:link href="/">
<button <button
tabindex="-1" tabindex="-1"
class="text-white bg-primary-700 hover:bg-primary-700/90 focus:ring-4 focus:outline-none 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" 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 Go back to homepage
</button> </button>
@ -117,7 +119,8 @@
</p> </p>
</div> </div>
{/if} {/if}
</main> </div>
</CenteredLayout>
<style> <style>
</style> </style>

@ -12,6 +12,7 @@
<script lang="ts"> <script lang="ts">
import { Button, Alert, Dropzone, Toggle } from "flowbite-svelte"; import { Button, Alert, Dropzone, Toggle } from "flowbite-svelte";
import { link, querystring } from "svelte-spa-router"; import { link, querystring } from "svelte-spa-router";
import CenteredLayout from "../lib/CenteredLayout.svelte";
// @ts-ignore // @ts-ignore
import EULogo from "../assets/EU.svg?component"; import EULogo from "../assets/EU.svg?component";
// @ts-ignore // @ts-ignore
@ -388,6 +389,7 @@
}; };
</script> </script>
<CenteredLayout>
{#if wait} {#if wait}
<div class=" max-w-6xl lg:px-8 mx-auto px-4 text-primary-700"> <div class=" max-w-6xl lg:px-8 mx-auto px-4 text-primary-700">
{#if wait === true} {#if wait === true}
@ -418,7 +420,7 @@
</svg> </svg>
</div> </div>
{:else} {:else}
<main class="container3" bind:this={top}> <div class="container3" bind:this={top}>
<div class="row"> <div class="row">
<a href="#/"> <a href="#/">
<Logo class="logo block h-40" alt="NextGraph Logo" /> <Logo class="logo block h-40" alt="NextGraph Logo" />
@ -443,13 +445,13 @@
</svg> </svg>
{#if registration_error == "AlreadyExists"} {#if registration_error == "AlreadyExists"}
<p class="max-w-xl md:mx-auto lg:max-w-2xl mb-5"> <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 The user is already registered with the selected broker.<br /> Try
in instead logging in instead
</p> </p>
<a use:link href="/wallet/login"> <a use:link href="/wallet/login">
<button <button
tabindex="-1" tabindex="-1"
class="text-white bg-primary-700 hover:bg-primary-700/90 focus:ring-4 focus:outline-none 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" 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 Login
</button> </button>
@ -461,7 +463,7 @@
<a use:link href="/"> <a use:link href="/">
<button <button
tabindex="-1" tabindex="-1"
class="text-white bg-primary-700 hover:bg-primary-700/90 focus:ring-4 focus:outline-none 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" 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 Go back to homepage
</button> </button>
@ -472,8 +474,8 @@
<div class=" max-w-6xl lg:px-8 mx-auto px-4"> <div class=" max-w-6xl lg:px-8 mx-auto px-4">
<p class="max-w-xl md:mx-auto lg:max-w-2xl"> <p class="max-w-xl md:mx-auto lg:max-w-2xl">
A <b>NextGraph Wallet</b> is unique to each person. It stores your A <b>NextGraph Wallet</b> is unique to each person. It stores your
credentials and authorizations to access documents. <br /><br />If you credentials and authorizations to access documents. <br /><br />If
already have a wallet, you should not create a new one, instead, you already have a wallet, you should not create a new one, instead,
<a href="/wallet/login" use:link <a href="/wallet/login" use:link
>login here with your existing wallet.</a >login here with your existing wallet.</a
> >
@ -495,7 +497,9 @@
<h2 class="pb-5 text-xl"> <h2 class="pb-5 text-xl">
What is a wallet? <span class="text-sm">Please read</span> What is a wallet? <span class="text-sm">Please read</span>
</h2> </h2>
<ul class="mb-8 space-y-4 text-left text-gray-500 dark:text-gray-400"> <ul
class="mb-8 space-y-4 text-left text-gray-500 dark:text-gray-400"
>
<li class="flex space-x-3"> <li class="flex space-x-3">
<!-- Icon --> <!-- Icon -->
<svg <svg
@ -559,10 +563,11 @@
/> />
</svg> </svg>
<span <span
>In order to open it, you will need to enter your <b>pazzle</b> >In order to open it, you will need to enter your <b>pazzle</b
>
and a and a
<b>PIN code</b> of 4 digits. Your personal pazzle (contraction of <b>PIN code</b> of 4 digits. Your personal pazzle (contraction
puzzle and password) is composed of 9 images you should remember. of puzzle and password) is composed of 9 images you should remember.
The order of the images is important too.</span The order of the images is important too.</span
> >
</li> </li>
@ -585,10 +590,10 @@
/> />
</svg> </svg>
<span <span
>Don't worry, it is easier to remember 9 images than a password >Don't worry, it is easier to remember 9 images than a
like "69$g&ms%C*%", and it has the same strength as a complex password like "69$g&ms%C*%", and it has the same strength as a
password. The entropy of your pazzle is <b>66bits</b>, which is complex password. The entropy of your pazzle is <b>66bits</b>,
considered very high by all standards.</span which is considered very high by all standards.</span
> >
</li> </li>
@ -611,10 +616,10 @@
<span <span
>You should only create <b>one unique wallet for yourself</b>. >You should only create <b>one unique wallet for yourself</b>.
All your accounts, identities and permissions will be added to All your accounts, identities and permissions will be added to
this unique wallet later on. Do not create another wallet if you this unique wallet later on. Do not create another wallet if
already have one. Instead, you will you already have one. Instead, you will
<b>import</b> your existing wallet in all the apps and websites where <b>import</b> your existing wallet in all the apps and websites
you need it</span where you need it</span
> >
</li> </li>
<li class="flex space-x-3"> <li class="flex space-x-3">
@ -635,9 +640,9 @@
/> />
</svg> </svg>
<span <span
>Your wallet can be imported with the help of a small file that >Your wallet can be imported with the help of a small file
you download, or with a QRcode. In any case, you should never that you download, or with a QRcode. In any case, you should
share this file or QRcode with anybody else.</span never share this file or QRcode with anybody else.</span
> >
</li> </li>
<li class="flex space-x-3"> <li class="flex space-x-3">
@ -681,11 +686,12 @@
/> />
</svg> </svg>
<span <span
>For the same reason, we won't be able to help you if you forget >For the same reason, we won't be able to help you if you
your pazzle or PIN code, or if you loose the wallet file. There forget your pazzle or PIN code, or if you loose the wallet
is no "password recovery" option in this case. You can note your file. There is no "password recovery" option in this case. You
pazzle down on a piece of paper until you remember it, but don't can note your pazzle down on a piece of paper until you
forget to destroy this note after a while.</span remember it, but don't forget to destroy this note after a
while.</span
> >
</li> </li>
</ul> </ul>
@ -695,7 +701,7 @@
<button <button
on:click|once={create_wallet} on:click|once={create_wallet}
role="button" role="button"
class="text-white bg-primary-700 hover:bg-primary-700/90 focus:ring-4 focus:outline-none 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" 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"
> >
<svg <svg
class="w-8 h-8 mr-2 -ml-1" class="w-8 h-8 mr-2 -ml-1"
@ -719,8 +725,8 @@
<div class=" max-w-6xl lg:px-8 mx-auto px-4"> <div class=" max-w-6xl lg:px-8 mx-auto px-4">
<p class="max-w-xl md:mx-auto lg:max-w-2xl"> <p class="max-w-xl md:mx-auto lg:max-w-2xl">
NextGraph is based on an efficient decentralized P2P network, and in NextGraph is based on an efficient decentralized P2P network, and in
order to join this network and start using the app, you need to first order to join this network and start using the app, you need to
select a <b>broker&nbsp;server</b>. first select a <b>broker&nbsp;server</b>.
</p> </p>
</div> </div>
<div <div
@ -730,7 +736,9 @@
<h2 class="pb-5 text-xl"> <h2 class="pb-5 text-xl">
What is a broker? <span class="text-sm">Please read</span> What is a broker? <span class="text-sm">Please read</span>
</h2> </h2>
<ul class="mb-8 space-y-4 text-left text-gray-500 dark:text-gray-400"> <ul
class="mb-8 space-y-4 text-left text-gray-500 dark:text-gray-400"
>
<li class="flex space-x-3"> <li class="flex space-x-3">
<svg <svg
fill="none" fill="none"
@ -748,10 +756,10 @@
/> />
</svg> </svg>
<span> <span>
The broker helps you keep all your data in <b>sync</b>, as it is The broker helps you keep all your data in <b>sync</b>, as it
connected to the internet 24/7 and keeps a copy of the updates is connected to the internet 24/7 and keeps a copy of the
for you. This way, even if the devices of the other participants updates for you. This way, even if the devices of the other
are offline, you can still see their changes</span participants are offline, you can still see their changes</span
> >
</li> </li>
<li class="flex space-x-3"> <li class="flex space-x-3">
@ -771,9 +779,9 @@
/> />
</svg> </svg>
<span> <span>
All your data is secure and <b>end-to-end encrypted</b>, and the All your data is secure and <b>end-to-end encrypted</b>, and
broker cannot see the content of the documents as it does not the broker cannot see the content of the documents as it does
have the keys to decrypt them.</span not have the keys to decrypt them.</span
> >
</li> </li>
<li class="flex space-x-3"> <li class="flex space-x-3">
@ -864,9 +872,9 @@
<span> <span>
Soon we will offer you the opportunity to host your own broker Soon we will offer you the opportunity to host your own broker
at <b>home</b> at <b>home</b>
or <b>office</b>. Instead of using a "broker service provider", or <b>office</b>. Instead of using a "broker service
you will own a small device that you connect behind your provider", you will own a small device that you connect behind
internet router. It is called <b>NG Box</b> and will be available your internet router. It is called <b>NG Box</b> and will be available
soon.</span soon.</span
> >
</li> </li>
@ -897,7 +905,9 @@
> >
</li> </li>
</ul> </ul>
<h2 class="mt-3 text-xl">Please choose one broker among the list</h2> <h2 class="mt-3 text-xl">
Please choose one broker among the list
</h2>
</div> </div>
</div> </div>
{#if pre_invitation} {#if pre_invitation}
@ -906,7 +916,7 @@
on:click|once={async () => { on:click|once={async () => {
await select_bsp(pre_invitation.V0.url, pre_invitation.V0.name); await select_bsp(pre_invitation.V0.url, pre_invitation.V0.name);
}} }}
class="choice-button text-white bg-primary-700 hover:bg-primary-700/90 focus:ring-4 focus:outline-none 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" class="choice-button 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"
> >
<svg <svg
fill="none" fill="none"
@ -930,7 +940,7 @@
<div class="row mt-5"> <div class="row mt-5">
<button <button
on:click|once={selectEU} on:click|once={selectEU}
class="choice-button text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mb-2" class="choice-button text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mb-2"
> >
<EULogo class="mr-4 block h-10 w-10" alt="European Union flag" /> <EULogo class="mr-4 block h-10 w-10" alt="European Union flag" />
For European Union citizens For European Union citizens
@ -940,7 +950,7 @@
<div class="row mt-5"> <div class="row mt-5">
<button <button
on:click|once={selectNET} on:click|once={selectNET}
class="choice-button text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mb-2" class="choice-button text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mb-2"
> >
<svg <svg
fill="none" fill="none"
@ -967,7 +977,7 @@
disabled disabled
style="justify-content: left;" style="justify-content: left;"
on:click|once={enterINVITE} on:click|once={enterINVITE}
class="choice-button text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mb-2" class="choice-button text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mb-2"
> >
<svg <svg
fill="none" fill="none"
@ -992,7 +1002,7 @@
<div class="row mt-5"> <div class="row mt-5">
<button <button
on:click|once={enterQRcode} on:click|once={enterQRcode}
class="choice-button text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mb-2" class="choice-button text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mb-2"
><svg ><svg
class="mr-4 block h-10 w-10" class="mr-4 block h-10 w-10"
fill="none" fill="none"
@ -1021,7 +1031,7 @@
<div class="row mt-5"> <div class="row mt-5">
<button <button
on:click={displaySelfHost} on:click={displaySelfHost}
class="choice-button text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mb-2" class="choice-button text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mb-2"
> >
<svg <svg
fill="none" fill="none"
@ -1044,7 +1054,7 @@
<div class="row mt-5 mb-12"> <div class="row mt-5 mb-12">
<button <button
on:click={displayNGbox} on:click={displayNGbox}
class="choice-button text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mb-2" class="choice-button text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mb-2"
> >
<svg <svg
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
@ -1185,9 +1195,9 @@
PIN on malicious sites and apps. PIN on malicious sites and apps.
<Alert color="red" class="mt-5"> <Alert color="red" class="mt-5">
Every time you will use your wallet, if you do not see and Every time you will use your wallet, if you do not see and
recognize your own security phrase and image before entering your recognize your own security phrase and image before entering
pazzle, please stop and DO NOT enter your pazzle, as you would be your pazzle, please stop and DO NOT enter your pazzle, as you
the victim of a phishing attempt. would be the victim of a phishing attempt.
</Alert> </Alert>
</p> </p>
<p class="text-left mt-5"> <p class="text-left mt-5">
@ -1199,14 +1209,16 @@
It should be something you will remember, but not something too It should be something you will remember, but not something too
personal. personal.
</li> </li>
<li>Do not enter your full name, nor address, nor phone number.</li>
<li> <li>
Instead, you can enter a quote, a small sentence that you like, or Do not enter your full name, nor address, nor phone number.
something meaningless to others, but unique to you. </li>
<li>
Instead, you can enter a quote, a small sentence that you like,
or something meaningless to others, but unique to you.
</li> </li>
<li> <li>
The image should be minimum 150x150px. There is no need to provide The image should be minimum 150x150px. There is no need to
more than 400x400px as it will be scaled down anyway. provide more than 400x400px as it will be scaled down anyway.
</li> </li>
<li> <li>
We accept several formats like JPEG, PNG, GIF, WEBP and more. We accept several formats like JPEG, PNG, GIF, WEBP and more.
@ -1215,14 +1227,16 @@
The image should be unique to you. But it should not be too The image should be unique to you. But it should not be too
personal neither. personal neither.
</li> </li>
<li>Do not upload your face picture, this is not a profile pic.</li> <li>
Do not upload your face picture, this is not a profile pic.
</li>
<li> <li>
The best would be a landscape you like or any other picture that The best would be a landscape you like or any other picture that
you will recognize as unique. you will recognize as unique.
</li> </li>
<li> <li>
Please be aware that other people who are sharing this device with Please be aware that other people who are sharing this device
you, will be able to see this image and phrase. with you, will be able to see this image and phrase.
</li> </li>
</ul> </ul>
<input <input
@ -1239,7 +1253,7 @@
<button <button
on:click|once={save_security} on:click|once={save_security}
bind:this={validate_button} bind:this={validate_button}
class="animate-bounce mt-10 text-white bg-primary-700 hover:bg-primary-700/90 focus:ring-4 focus:outline-none 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" class="animate-bounce mt-10 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"
> >
<svg <svg
class="w-8 h-8 mr-2 -ml-1" class="w-8 h-8 mr-2 -ml-1"
@ -1275,8 +1289,8 @@
{#if mobile} {#if mobile}
<span class="font-semibold">Tap to upload an image</span> <span class="font-semibold">Tap to upload an image</span>
{:else} {:else}
<span class="font-semibold">Click to select an image</span> or drag <span class="font-semibold">Click to select an image</span> or
and drop drag and drop
{/if} {/if}
</p> </p>
<svg <svg
@ -1319,22 +1333,23 @@
<div class=" max-w-6xl lg:px-8 mx-auto px-4" bind:this={info_options}> <div class=" max-w-6xl lg:px-8 mx-auto px-4" bind:this={info_options}>
<p class="max-w-xl mb-10 md:mx-auto lg:max-w-2xl"> <p class="max-w-xl mb-10 md:mx-auto lg:max-w-2xl">
<span class="text-xl">We are almost done !</span><br /> <span class="text-xl">We are almost done !</span><br />
There are 4 options to choose before we can create your wallet. Those options There are 4 options to choose before we can create your wallet. Those
can help you to use and keep your wallet. But we also want to be careful options can help you to use and keep your wallet. But we also want to
with your security and privacy.<br /><br /> be careful with your security and privacy.<br /><br />
Remember that in any case, once your wallet will be created, you will download Remember that in any case, once your wallet will be created, you will
a file that you should keep privately somewhere on your device, USB key download a file that you should keep privately somewhere on your device,
or hard-disk. This is the default way you can use and keep your wallet. USB key or hard-disk. This is the default way you can use and keep your
Now let's look at some options that can make your life a bit easier. wallet. Now let's look at some options that can make your life a bit
easier.
</p> </p>
<p class="max-w-xl md:mx-auto lg:max-w-2xl text-left"> <p class="max-w-xl md:mx-auto lg:max-w-2xl text-left">
<span class="text-xl">Do you trust this device? </span> <br /> <span class="text-xl">Do you trust this device? </span> <br />
If you do, if this device is yours or is used by few trusted persons of If you do, if this device is yours or is used by few trusted persons
your family or workplace, and you would like to login again from this device of your family or workplace, and you would like to login again from this
in the future, then you can save your wallet on this device. To the contrary, device in the future, then you can save your wallet on this device. To
if this device is public and shared by strangers, do not save your wallet the contrary, if this device is public and shared by strangers, do not
here. {#if !tauri_platform}By selecting this option, you agree to save save your wallet here. {#if !tauri_platform}By selecting this
some cookies on your browser.{/if}<br /> option, you agree to save some cookies on your browser.{/if}<br />
<Toggle class="mt-3" bind:checked={options.trusted} <Toggle class="mt-3" bind:checked={options.trusted}
>Save my wallet on this device?</Toggle >Save my wallet on this device?</Toggle
> >
@ -1345,8 +1360,8 @@
this would happen, your wallet would be lost forever, together with all this would happen, your wallet would be lost forever, together with all
your documents. We can keep an encrypted copy of your wallet in our cloud. your documents. We can keep an encrypted copy of your wallet in our cloud.
Only you will be able to download it with a special link. You would have Only you will be able to download it with a special link. You would have
to keep this link safely though. By selecting this option, you agree to to keep this link safely though. By selecting this option, you agree
the to the
<a target="_blank" href="https://nextgraph.one/#/tos" <a target="_blank" href="https://nextgraph.one/#/tos"
>Terms of Service of our cloud</a >Terms of Service of our cloud</a
>. >.
@ -1356,12 +1371,13 @@
> >
</p> </p>
<p class="max-w-xl md:mx-auto mt-10 lg:max-w-2xl text-left"> <p class="max-w-xl md:mx-auto mt-10 lg:max-w-2xl text-left">
<span class="text-xl">Create a PDF file of your wallet? </span> <br /> <span class="text-xl">Create a PDF file of your wallet? </span>
<br />
We can prepare for you a PDF file containing all the information of your We can prepare for you a PDF file containing all the information of your
wallet, unencrypted. You should print this file and then delete the PDF wallet, unencrypted. You should print this file and then delete the PDF
(and empty the trash). Keep this printed document in a safe place. It contains (and empty the trash). Keep this printed document in a safe place. It
all the information to regenerate your wallet in case you lost access to contains all the information to regenerate your wallet in case you lost
it. access to it.
<br /> <br />
<Toggle disabled class="mt-3" bind:checked={options.pdf} <Toggle disabled class="mt-3" bind:checked={options.pdf}
>Create a PDF of my wallet?</Toggle >Create a PDF of my wallet?</Toggle
@ -1372,12 +1388,12 @@
<span class="text-xl" <span class="text-xl"
>Create a link to access your wallet easily? >Create a link to access your wallet easily?
</span> <br /> </span> <br />
When you want to use your wallet on the web or from other devices, we When you want to use your wallet on the web or from other devices,
can help you find your wallet by creating a simple link accessible from we can help you find your wallet by creating a simple link accessible
anywhere. Only you will have access to this link. In order to do so, from anywhere. Only you will have access to this link. In order to
we will keep your wallet ID and some information about your broker on do so, we will keep your wallet ID and some information about your
our cloud servers. If you prefer to opt out, just uncheck this option. broker on our cloud servers. If you prefer to opt out, just uncheck
By selecting this option, you agree to the this option. By selecting this option, you agree to the
<a target="_blank" href="https://nextgraph.one/#/tos" <a target="_blank" href="https://nextgraph.one/#/tos"
>Terms of Service of our cloud</a >Terms of Service of our cloud</a
>. >.
@ -1389,7 +1405,7 @@
{/if} {/if}
<button <button
on:click|once={do_wallet} on:click|once={do_wallet}
class="mt-10 mb-20 text-white bg-primary-700 hover:bg-primary-700/90 focus:ring-4 focus:outline-none 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" class="mt-10 mb-20 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"
> >
<svg <svg
class="w-8 h-8 mr-2 -ml-1" class="w-8 h-8 mr-2 -ml-1"
@ -1461,7 +1477,7 @@
tabindex="-1" tabindex="-1"
class:animate-bounce={animateDownload} class:animate-bounce={animateDownload}
on:click={() => (animateDownload = false)} on:click={() => (animateDownload = false)}
class="mt-10 mb-8 text-white bg-primary-700 hover:bg-primary-700/90 focus:ring-4 focus:outline-none 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" class="mt-10 mb-8 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"
> >
<svg <svg
class="w-8 h-8 mr-2 -ml-1" class="w-8 h-8 mr-2 -ml-1"
@ -1496,12 +1512,13 @@
<br /><br /> <br /><br />
Copy it on a piece of paper.<br /> Use that until you memorized it,<br Copy it on a piece of paper.<br /> Use that until you memorized it,<br
/> />
then throw it away.<br /> The order of each image is important.<br /> then throw it away.<br /> The order of each image is important.<br
/>
Now click on "Continue to Login"<br /><br /> Now click on "Continue to Login"<br /><br />
<a href="/wallet/login" use:link> <a href="/wallet/login" use:link>
<button <button
tabindex="-1" tabindex="-1"
class="mb-20 text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2" class="mb-20 text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2"
> >
<svg <svg
class="w-8 h-8 mr-2 -ml-1" class="w-8 h-8 mr-2 -ml-1"
@ -1559,8 +1576,9 @@
</button> </button>
</div> </div>
{/if} {/if}
</main> </div>
{/if} {/if}
</CenteredLayout>
<style> <style>
</style> </style>

@ -13,6 +13,7 @@
import { onMount, onDestroy } from "svelte"; import { onMount, onDestroy } from "svelte";
import { link, push } from "svelte-spa-router"; import { link, push } from "svelte-spa-router";
import Login from "../lib/Login.svelte"; import Login from "../lib/Login.svelte";
import CenteredLayout from "../lib/CenteredLayout.svelte";
import ng from "../api"; import ng from "../api";
import { Fileupload, Button } from "flowbite-svelte"; import { Fileupload, Button } from "flowbite-svelte";
// @ts-ignore // @ts-ignore
@ -135,6 +136,7 @@
} }
</script> </script>
<CenteredLayout>
{#if error} {#if error}
<div class=" max-w-6xl lg:px-8 mx-auto px-4 text-red-800"> <div class=" max-w-6xl lg:px-8 mx-auto px-4 text-red-800">
<svg <svg
@ -162,7 +164,7 @@
error = undefined; error = undefined;
wallet = undefined; wallet = undefined;
}} }}
class="text-white bg-primary-700 hover:bg-primary-700/90 focus:ring-4 focus:outline-none 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" 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"
> >
Start over Start over
</button> </button>
@ -175,7 +177,6 @@
on:cancel={cancelLogin} on:cancel={cancelLogin}
/> />
{:else if !$active_wallet && !selected} {:else if !$active_wallet && !selected}
<main class="">
<div class="row"> <div class="row">
<Logo class="logo block h-40" alt="NextGraph Logo" /> <Logo class="logo block h-40" alt="NextGraph Logo" />
</div> </div>
@ -217,7 +218,7 @@
on:change={handleWalletUpload} on:change={handleWalletUpload}
/> />
<button <button
class=" mt-1 text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none 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-100/55 mb-2" class=" mt-1 text-primary-700 bg-primary-100 hover:bg-primary-100/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-100/55 mb-2"
on:click={() => { on:click={() => {
document.getElementById("import_wallet_file").click(); document.getElementById("import_wallet_file").click();
}} }}
@ -242,7 +243,7 @@
<Button <Button
style="min-width: 250px;justify-content: left;" style="min-width: 250px;justify-content: left;"
disabled disabled
class="disabled mt-1 text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-700/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center justify-center dark:focus:ring-primary-100/55 mb-2" class="disabled mt-1 text-primary-700 bg-primary-100 hover:bg-primary-100/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 justify-center dark:focus:ring-primary-100/55 mb-2"
> >
<svg <svg
class="w-8 h-8 mr-2 -ml-1" class="w-8 h-8 mr-2 -ml-1"
@ -269,7 +270,7 @@
<Button <Button
style="min-width: 250px;justify-content: left;" style="min-width: 250px;justify-content: left;"
disabled disabled
class="mt-1 text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none 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-100/55 mb-2" class="mt-1 text-primary-700 bg-primary-100 hover:bg-primary-100/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-100/55 mb-2"
> >
<svg <svg
class="w-8 h-8 mr-2 -ml-1" class="w-8 h-8 mr-2 -ml-1"
@ -292,7 +293,7 @@
<a href="/wallet/create" use:link> <a href="/wallet/create" use:link>
<button <button
tabindex="-1" tabindex="-1"
class="mt-1 text-white bg-primary-700 hover:bg-primary-700/90 focus:ring-4 focus:outline-none focus:ring-primary-100/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" class="mt-1 text-white bg-primary-700 hover:bg-primary-700/90 focus:ring-4 focus:ring-primary-100/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"
> >
<svg <svg
class="w-8 h-8 mr-2 -ml-1" class="w-8 h-8 mr-2 -ml-1"
@ -314,9 +315,9 @@
</a> </a>
</div> </div>
</div> </div>
</main>
{:else if step == "security"}{:else if step == "qrcode"}{:else if step == "cloud"}{:else if step == "loggedin"}you {:else if step == "security"}{:else if step == "qrcode"}{:else if step == "cloud"}{:else if step == "loggedin"}you
are logged in{/if} are logged in{/if}
</CenteredLayout>
<style> <style>
.wallet-box { .wallet-box {

@ -19,6 +19,8 @@ export const active_wallet = writable(undefined);
export const wallets = writable({}); export const wallets = writable({});
export const online = writable(false);
export const has_wallets = derived(wallets,($wallets) => Object.keys($wallets).length); export const has_wallets = derived(wallets,($wallets) => Object.keys($wallets).length);
export const active_session = writable(undefined); export const active_session = writable(undefined);

@ -63,11 +63,14 @@ body {
} }
#app { #app {
/*max-width: 1280px;*/ width: 100%;
}
/* #app {
/*max-width: 1280px;
margin: 0 auto; margin: 0 auto;
padding: 0rem; padding: 0rem;
text-align: center; text-align: center;
} } */
/* .container2 { /* .container2 {
padding-top: 10vh; padding-top: 10vh;

@ -169,7 +169,7 @@
{#if go_back} {#if go_back}
<button <button
on:click|once={close} on:click|once={close}
class="text-white bg-primary-700 hover:bg-primary-700/90 focus:ring-4 focus:outline-none 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" 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 Go back
</button> </button>
@ -374,7 +374,7 @@
<div class="row mb-20"> <div class="row mb-20">
<button <button
on:click|once={accept} on:click|once={accept}
class="mr-5 text-white bg-primary-700 hover:bg-primary-700/90 focus:ring-4 focus:outline-none 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" class="mr-5 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"
> >
<svg <svg
class="w-8 h-8 mr-2 -ml-1" class="w-8 h-8 mr-2 -ml-1"
@ -395,7 +395,7 @@
</button> </button>
<button <button
on:click|once={refuse} on:click|once={refuse}
class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2" class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2"
> >
I refuse I refuse
</button> </button>

@ -157,7 +157,7 @@
<div class="row mb-20"> <div class="row mb-20">
<button <button
on:click|once={accept} on:click|once={accept}
class="mr-5 text-white bg-primary-700 hover:bg-primary-700/90 focus:ring-4 focus:outline-none 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" class="mr-5 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"
> >
<svg <svg
class="w-8 h-8 mr-2 -ml-1" class="w-8 h-8 mr-2 -ml-1"
@ -178,7 +178,7 @@
</button> </button>
<button <button
on:click|once={refuse} on:click|once={refuse}
class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2" class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2"
> >
Cancel Cancel
</button> </button>

@ -12,7 +12,7 @@
<script> <script>
import { Button } from "flowbite-svelte"; import { Button } from "flowbite-svelte";
import { link } from "svelte-spa-router"; import { link } from "svelte-spa-router";
import Home from "../../../../ng-app/src/lib/Home.svelte"; import NoWallet from "../../../../ng-app/src/lib/NoWallet.svelte";
import { onMount } from "svelte"; import { onMount } from "svelte";
@ -52,4 +52,6 @@
onMount(() => bootstrap()); onMount(() => bootstrap());
</script> </script>
<Home {display_login_create} /> {#if display_login_create}
<NoWallet />
{/if}

@ -69,7 +69,7 @@
<a href="https://nextgraph.eu/#/wallet/create"> <a href="https://nextgraph.eu/#/wallet/create">
<button <button
tabindex="-1" tabindex="-1"
class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2" class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2"
> >
<EULogo class="mr-4 block h-10 w-10" alt="European Union flag" /> <EULogo class="mr-4 block h-10 w-10" alt="European Union flag" />
For European Union citizens For European Union citizens
@ -81,7 +81,7 @@
<a href="https://nextgraph.net/#/wallet/create"> <a href="https://nextgraph.net/#/wallet/create">
<button <button
tabindex="-1" tabindex="-1"
class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2" class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2"
> >
<svg <svg
fill="none" fill="none"
@ -106,7 +106,7 @@
<a href="/install" use:link> <a href="/install" use:link>
<button <button
tabindex="-1" tabindex="-1"
class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2" class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2"
> >
<svg <svg
fill="none" fill="none"
@ -189,7 +189,7 @@
<a href="https://nextgraph.org/self-host"> <a href="https://nextgraph.org/self-host">
<button <button
tabindex="-1" tabindex="-1"
class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2" class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2"
> >
<svg <svg
fill="none" fill="none"
@ -214,7 +214,7 @@
<a href="https://nextgraph.org/ng-box/"> <a href="https://nextgraph.org/ng-box/">
<button <button
tabindex="-1" tabindex="-1"
class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:outline-none focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2" class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2"
> >
<svg <svg
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"

@ -19,7 +19,7 @@ importers:
classnames: ^2.3.2 classnames: ^2.3.2
cross-env: ^7.0.3 cross-env: ^7.0.3
flowbite: ^1.6.5 flowbite: ^1.6.5
flowbite-svelte: ^0.37.1 flowbite-svelte: ^0.43.3
internal-ip: ^7.0.0 internal-ip: ^7.0.0
ng-sdk-js: workspace:^0.1.0 ng-sdk-js: workspace:^0.1.0
node-gzip: ^1.1.2 node-gzip: ^1.1.2
@ -28,6 +28,7 @@ importers:
shx: ^0.3.4 shx: ^0.3.4
svelte: ^3.54.0 svelte: ^3.54.0
svelte-check: ^3.0.0 svelte-check: ^3.0.0
svelte-heros-v2: ^0.10.12
svelte-preprocess: ^5.0.3 svelte-preprocess: ^5.0.3
svelte-spa-router: ^3.3.0 svelte-spa-router: ^3.3.0
tailwindcss: ^3.3.1 tailwindcss: ^3.3.1
@ -45,7 +46,7 @@ importers:
async-proxy: 0.4.1 async-proxy: 0.4.1
classnames: 2.3.2 classnames: 2.3.2
flowbite: 1.6.5 flowbite: 1.6.5
flowbite-svelte: 0.37.3_svelte@3.59.1 flowbite-svelte: 0.43.3_svelte@3.59.1
ng-sdk-js: link:../ng-sdk-js/pkg ng-sdk-js: link:../ng-sdk-js/pkg
svelte-spa-router: 3.3.0 svelte-spa-router: 3.3.0
vite-plugin-top-level-await: 1.3.1_vite@4.3.9 vite-plugin-top-level-await: 1.3.1_vite@4.3.9
@ -63,6 +64,7 @@ importers:
shx: 0.3.4 shx: 0.3.4
svelte: 3.59.1 svelte: 3.59.1
svelte-check: 3.4.3_sxhny56dlbcmwov4vk7qwrzshi svelte-check: 3.4.3_sxhny56dlbcmwov4vk7qwrzshi
svelte-heros-v2: 0.10.12_svelte@3.59.1
svelte-preprocess: 5.0.4_vmz4xia4c7tzh4ii3qac2x3tom svelte-preprocess: 5.0.4_vmz4xia4c7tzh4ii3qac2x3tom
tailwindcss: 3.3.2 tailwindcss: 3.3.2
tslib: 2.5.3 tslib: 2.5.3
@ -287,6 +289,23 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/@floating-ui/core/1.5.0:
resolution: {integrity: sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==}
dependencies:
'@floating-ui/utils': 0.1.4
dev: false
/@floating-ui/dom/1.5.3:
resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==}
dependencies:
'@floating-ui/core': 1.5.0
'@floating-ui/utils': 0.1.4
dev: false
/@floating-ui/utils/0.1.4:
resolution: {integrity: sha512-qprfWkn82Iw821mcKofJ5Pk9wgioHicxcQMxx+5zt5GSKoqdWvgG5AxVmpmUUjzTLPVSH5auBrhI93Deayn/DA==}
dev: false
/@jridgewell/gen-mapping/0.3.3: /@jridgewell/gen-mapping/0.3.3:
resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
engines: {node: '>=6.0.0'} engines: {node: '>=6.0.0'}
@ -993,6 +1012,18 @@ packages:
svelte: 3.59.1 svelte: 3.59.1
dev: false dev: false
/flowbite-svelte/0.43.3_svelte@3.59.1:
resolution: {integrity: sha512-yxaBPT/TEZe8g5JQ/O8Tuw1FGz3OYOwPwGdnMxe3laACPgnFnc2fJsWVqvrgxnH0J5lOdfVy9/0XwmDsv/RRgQ==}
engines: {node: '>=16.0.0', npm: '>=7.0.0'}
peerDependencies:
svelte: ^3.55.1 || ^4.0.0
dependencies:
'@floating-ui/dom': 1.5.3
flowbite: 1.8.1
svelte: 3.59.1
tailwind-merge: 1.14.0
dev: false
/flowbite/1.6.5: /flowbite/1.6.5:
resolution: {integrity: sha512-eI4h3pIRI9d7grlYq14r0A01KUtw7189sPLLx/O2i7JyPEWpbleScfYuEc48XTeNjk1xxm/JHgZkD9kjyOWAlA==} resolution: {integrity: sha512-eI4h3pIRI9d7grlYq14r0A01KUtw7189sPLLx/O2i7JyPEWpbleScfYuEc48XTeNjk1xxm/JHgZkD9kjyOWAlA==}
dependencies: dependencies:
@ -1000,6 +1031,13 @@ packages:
mini-svg-data-uri: 1.4.4 mini-svg-data-uri: 1.4.4
dev: false dev: false
/flowbite/1.8.1:
resolution: {integrity: sha512-lXTcO8a6dRTPFpINyOLcATCN/pK1Of/jY4PryklPllAiqH64tSDUsOdQpar3TO59ZXWwugm2e92oaqwH6X90Xg==}
dependencies:
'@popperjs/core': 2.11.8
mini-svg-data-uri: 1.4.4
dev: false
/fraction.js/4.2.0: /fraction.js/4.2.0:
resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
dev: true dev: true
@ -1654,6 +1692,14 @@ packages:
- sugarss - sugarss
dev: true dev: true
/svelte-heros-v2/0.10.12_svelte@3.59.1:
resolution: {integrity: sha512-0wspy0z9UFS9f/iPKQQ1JDHlNY6e7h+LVW+wJ0qJnuWDpvsJllmoCX2g0frYbMPDWZJEwh2pkO25Dp3lDGCxGQ==}
peerDependencies:
svelte: ^3.54.0 || ^4.0.0
dependencies:
svelte: 3.59.1
dev: true
/svelte-hmr/0.15.2_svelte@3.59.1: /svelte-hmr/0.15.2_svelte@3.59.1:
resolution: {integrity: sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==} resolution: {integrity: sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==}
engines: {node: ^12.20 || ^14.13.1 || >= 16} engines: {node: ^12.20 || ^14.13.1 || >= 16}
@ -1832,6 +1878,10 @@ packages:
picocolors: 1.0.0 picocolors: 1.0.0
dev: true dev: true
/tailwind-merge/1.14.0:
resolution: {integrity: sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==}
dev: false
/tailwindcss/3.3.2: /tailwindcss/3.3.2:
resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==} resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}

Loading…
Cancel
Save