From e14af6b1ade10fd5fa1242b6386b47b49b05fffe Mon Sep 17 00:00:00 2001
From: Rotimi Best
Date: Mon, 28 Nov 2022 11:23:46 +0100
Subject: [PATCH] CLASSROOMIO-T-1: Login/Signup UI page
---
package-lock.json | 28 ++-
src/components/AuthUI/index.svelte | 68 +++++++
src/components/Form/TextField.svelte | 39 +++-
src/components/IconButton/index.svelte | 2 +
src/components/Icons/GoogleIconColored.svelte | 32 ++++
src/components/Icons/PasswordEye.svelte | 43 +++++
src/components/Navigation/index.svelte | 20 +-
src/components/PrimaryButton/constants.js | 13 +-
src/components/PrimaryButton/index.svelte | 4 +-
src/routes/_layout.svelte | 5 +
src/routes/login.svelte | 126 ++++++-------
src/routes/signup.svelte | 174 +++++++++++-------
12 files changed, 397 insertions(+), 157 deletions(-)
create mode 100644 src/components/AuthUI/index.svelte
create mode 100644 src/components/Icons/GoogleIconColored.svelte
create mode 100644 src/components/Icons/PasswordEye.svelte
diff --git a/package-lock.json b/package-lock.json
index ddb5fe27..736ed516 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1946,9 +1946,9 @@
"integrity": "sha512-S18o4Y9PqI/uabdlT/jI3MY7XBJjNxnfapFIkjkMwpz6qNxLFZOm2b22OMf4ZYDL9lpNWI+Ih4fEMVPwO1KHFQ=="
},
"carbon-icons-svelte": {
- "version": "10.28.0",
- "resolved": "https://registry.npmjs.org/carbon-icons-svelte/-/carbon-icons-svelte-10.28.0.tgz",
- "integrity": "sha512-C3K+U2PRy63WHFZme1HQNju89rhVIQmUkfgBrZzcezdutkhXbSPOY+o/MI0B2mDcQ7G9gfhEpqsXET8gBTWfJQ==",
+ "version": "10.45.1",
+ "resolved": "https://flipplib.jfrog.io/artifactory/api/npm/flipp-npm/carbon-icons-svelte/-/carbon-icons-svelte-10.45.1.tgz",
+ "integrity": "sha512-Uz3byPkSBzjpvLmjt/ZWYJkQG1omfqKh1vzF1FeFYOYqbGOCwc4sHbyF8oet2CseT2cECn1BbEyY4yWvlWYd/w==",
"dev": true
},
"caseless": {
@@ -3846,6 +3846,15 @@
"pinkie": "^2.0.0"
}
},
+ "polka": {
+ "version": "1.0.0-next.22",
+ "resolved": "https://flipplib.jfrog.io/artifactory/api/npm/flipp-npm/polka/-/polka-1.0.0-next.22.tgz",
+ "integrity": "sha512-a7tsZy5gFbJr0aUltZS97xCkbPglXuD67AMvTyZX7BTDBH384FWf0ZQF6rPvdutSxnO1vUlXM2zSLf5tCKk5RA==",
+ "requires": {
+ "@polka/url": "^1.0.0-next.21",
+ "trouter": "^3.1.0"
+ }
+ },
"postcss": {
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.0.tgz",
@@ -4166,6 +4175,11 @@
"@babel/runtime": "^7.8.4"
}
},
+ "regexparam": {
+ "version": "1.3.0",
+ "resolved": "https://flipplib.jfrog.io/artifactory/api/npm/flipp-npm/regexparam/-/regexparam-1.3.0.tgz",
+ "integrity": "sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g=="
+ },
"regexpu-core": {
"version": "4.7.1",
"resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz",
@@ -4929,6 +4943,14 @@
"resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
"integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM="
},
+ "trouter": {
+ "version": "3.2.0",
+ "resolved": "https://flipplib.jfrog.io/artifactory/api/npm/flipp-npm/trouter/-/trouter-3.2.0.tgz",
+ "integrity": "sha512-rLLXbhTObLy2MBVjLC+jTnoIKw99n0GuJs9ov10J870vDw5qhTurPzsDrudNtBf5w/CZ9ctZy2p2IMmhGcel2w==",
+ "requires": {
+ "regexparam": "^1.3.0"
+ }
+ },
"true-case-path": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
diff --git a/src/components/AuthUI/index.svelte b/src/components/AuthUI/index.svelte
new file mode 100644
index 00000000..757aa4f6
--- /dev/null
+++ b/src/components/AuthUI/index.svelte
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+

+
ClassroomIO
+
+
+
+
or sign up with:
+
+
+ Sign up with Google
+
+
+
+
+ {#if isLogin}
+ Not registered yet?
Sign up
+ {:else}
+ Already have an account?
Log In
+ {/if}
+
+
+
+
+
diff --git a/src/components/Form/TextField.svelte b/src/components/Form/TextField.svelte
index 3fc2b846..3ec548b7 100644
--- a/src/components/Form/TextField.svelte
+++ b/src/components/Form/TextField.svelte
@@ -1,5 +1,8 @@
-
{/if}
+
+
diff --git a/src/components/IconButton/index.svelte b/src/components/IconButton/index.svelte
index 6f893cc5..07a4f589 100644
--- a/src/components/IconButton/index.svelte
+++ b/src/components/IconButton/index.svelte
@@ -6,6 +6,7 @@
export let buttonClassName = '';
export let contained = false;
export let value = '';
+ export let type = 'button';
export let size = 'large';
export let color = '';
export let toolTipProps = {
@@ -28,6 +29,7 @@
class="root {color} {selected && 'active'} {size} {contained &&
'contained'} {buttonClassName}"
{disabled}
+ {type}
on:click={handleClick}
>
diff --git a/src/components/Icons/GoogleIconColored.svelte b/src/components/Icons/GoogleIconColored.svelte
new file mode 100644
index 00000000..e00ffa9c
--- /dev/null
+++ b/src/components/Icons/GoogleIconColored.svelte
@@ -0,0 +1,32 @@
+
diff --git a/src/components/Icons/PasswordEye.svelte b/src/components/Icons/PasswordEye.svelte
new file mode 100644
index 00000000..5c0df3e5
--- /dev/null
+++ b/src/components/Icons/PasswordEye.svelte
@@ -0,0 +1,43 @@
+
+
+{#if isClosed}
+
+{:else}
+
+{/if}
diff --git a/src/components/Navigation/index.svelte b/src/components/Navigation/index.svelte
index fb42d7ee..28b86a6b 100644
--- a/src/components/Navigation/index.svelte
+++ b/src/components/Navigation/index.svelte
@@ -3,6 +3,7 @@
import Avatar from '../Avatar/index.svelte';
import { user, profile } from '../../utils/store/user';
import PrimaryButton from '../PrimaryButton/index.svelte';
+ import { VARIANTS } from '../PrimaryButton/constants';
export let segment;
export let disableLogin;
@@ -88,11 +89,20 @@
/>
{:else if !disableLogin}
- goto('/login')}
- />
+
+
goto('/login')}
+ />
+ goto('/signup')}
+ />
+
{/if}
-
-
- {/if}
-
+ {:else if success}
+
+
+ A link has been sent to your email. Please check both your
+ spam and your inbox.
+
+
+ If our email is in your spam, do make sure you mark our email address
+ as safe, then move it from your spam to your inbox.
+
+
+ {:else}
+ Welcome back
+
+
+
+ {/if}
-
-
+ {#if !success}
+
+ {/if}
+
diff --git a/src/routes/signup.svelte b/src/routes/signup.svelte
index 47001579..e5591f53 100644
--- a/src/routes/signup.svelte
+++ b/src/routes/signup.svelte
@@ -5,39 +5,49 @@
- Join ClassroomIO
+ Sign Up - ClassroomIO
-