@@ -0,0 +1,11 @@ | |||||
<svg xmlns="http://www.w3.org/2000/svg" width="301.408" height="77.587" viewBox="0 0 301.408 77.587"> | |||||
<g id="Group_304" data-name="Group 304" transform="translate(-48.863 -25.337)"> | |||||
<path id="Path_291" data-name="Path 291" d="M1760.163,46.053C1681.265,38.564,1599.1,35.5,1553.7,81.309s119.183,42.6,75.535-16.783-130.787,0-130.787,0" transform="translate(-1449.307 -10.375)" fill="none" stroke="#707070" stroke-width="1" stroke-dasharray="9 5"/> | |||||
<g id="Group_34" data-name="Group 34" transform="translate(-1386.263 122.15)"> | |||||
<path id="Path_292" data-name="Path 292" d="M1705.353-77.281l-5.371,16.673,36.4-4.267Z" transform="translate(0 -9.541)" fill="#f8c657"/> | |||||
<path id="Path_293" data-name="Path 293" d="M1741.614-74.36,1710.382-86.8l2.67-10.016Z" transform="translate(-5.081)" fill="#f8c657"/> | |||||
<path id="Path_294" data-name="Path 294" d="M1736.726-64.794l-31.232-12.437-5.118.971Z" transform="translate(-0.192 -9.566)" fill="#ddb04e"/> | |||||
<path id="Path_295" data-name="Path 295" d="M1704.835-73.973l-.745,2.278-3.682-3.67Z" transform="translate(-0.208 -10.477)" fill="#efbe53"/> | |||||
</g> | |||||
</g> | |||||
</svg> |
@@ -3,6 +3,7 @@ import { IonApp, IonRouterOutlet } from '@ionic/react'; | |||||
import { IonReactRouter } from '@ionic/react-router'; | import { IonReactRouter } from '@ionic/react-router'; | ||||
import WelcomePage from './pages/onboarding/Welcome'; | import WelcomePage from './pages/onboarding/Welcome'; | ||||
import LoginPage from './pages/login/Login'; | import LoginPage from './pages/login/Login'; | ||||
import SignupPage from './pages/signup/Signup'; | |||||
/* Core CSS required for Ionic components to work properly */ | /* Core CSS required for Ionic components to work properly */ | ||||
import '@ionic/react/css/core.css'; | import '@ionic/react/css/core.css'; | ||||
@@ -34,6 +35,9 @@ const App: React.FC = () => ( | |||||
<Route exact path="/login"> | <Route exact path="/login"> | ||||
<LoginPage /> | <LoginPage /> | ||||
</Route> | </Route> | ||||
<Route exact path="/signup"> | |||||
<SignupPage /> | |||||
</Route> | |||||
<Route exact path="/"> | <Route exact path="/"> | ||||
<Redirect to="/welcome" /> | <Redirect to="/welcome" /> | ||||
</Route> | </Route> | ||||
@@ -3,6 +3,7 @@ import { personOutline, lockOpenOutline } from 'ionicons/icons'; | |||||
import { Component } from 'react'; | import { Component } from 'react'; | ||||
import InputWidget from '../../components/input/InputWidget'; | import InputWidget from '../../components/input/InputWidget'; | ||||
import styles from './Login.module.scss'; | import styles from './Login.module.scss'; | ||||
import { BrowserRouter as Router, Route, Link } from "react-router-dom" | |||||
type Props = { }; | type Props = { }; | ||||
@@ -22,10 +23,10 @@ class LoginPage extends Component<Props, OwnState> { | |||||
<section className={styles.upfold}> | <section className={styles.upfold}> | ||||
<div className={styles.container}> | <div className={styles.container}> | ||||
<figure> | <figure> | ||||
<img src="assets/images/welcome/upfold.svg" alt="upfold image"/> | |||||
<img src='assets/images/welcome/upfold.svg' alt='upfold image'/> | |||||
</figure> | </figure> | ||||
<h2> Welcome Back! </h2> | <h2> Welcome Back! </h2> | ||||
<p> Enter your email-id & password </p> | |||||
<p> Please enter your email-id & password </p> | |||||
</div> | </div> | ||||
</section> | </section> | ||||
@@ -40,11 +41,11 @@ class LoginPage extends Component<Props, OwnState> { | |||||
<div className={ styles.actionLink }> <a> Forgot Password? </a> </div> | <div className={ styles.actionLink }> <a> Forgot Password? </a> </div> | ||||
<div className={styles.actionButtonsHolder}> | <div className={styles.actionButtonsHolder}> | ||||
<IonButton className={styles.actionButton} expand="block"> Login </IonButton> | |||||
<IonButton className={styles.actionButton} expand='block'> Login </IonButton> | |||||
</div> | </div> | ||||
</section> | </section> | ||||
<div className={ styles.navigationLink }> Don't have an account? <a> Sign up </a> </div> | |||||
<div className={ styles.navigationLink }> Don't have an account? <Link to='/signup'> <span> Signup </span> </Link> </div> | |||||
</IonContent> | </IonContent> | ||||
</IonPage> | </IonPage> | ||||
}; | }; | ||||
@@ -17,7 +17,6 @@ class WelcomePage extends Component<Props, OwnState> { | |||||
render() { | render() { | ||||
return <IonPage> | return <IonPage> | ||||
<IonContent fullscreen> | <IonContent fullscreen> | ||||
<section className={styles.upfold}> | <section className={styles.upfold}> | ||||
<figure> | <figure> | ||||
<img src="assets/images/welcome/upfold.svg" alt="upfold image"/> | <img src="assets/images/welcome/upfold.svg" alt="upfold image"/> | ||||
@@ -0,0 +1,128 @@ | |||||
.upfold { | |||||
background-color: var(--charcoal); | |||||
height: auto; | |||||
transform: translateY(-50vh); | |||||
width: 100%; | |||||
border-bottom-right-radius: 30px; | |||||
border-bottom-left-radius: 30px; | |||||
position: relative; | |||||
z-index: 1; | |||||
box-shadow: 0px 0px 10px 5px var(--black-rock); | |||||
animation: riseDown 1s forwards; | |||||
display: flex; | |||||
align-items: center; | |||||
justify-content: center; | |||||
.container { | |||||
padding: 30px 5%; | |||||
text-align: center; | |||||
} | |||||
h2 { | |||||
font-size: 26px; | |||||
color: white; | |||||
} | |||||
p { | |||||
font-size: 14px; | |||||
color: var(--grey-rock); | |||||
} | |||||
figure { | |||||
position: absolute; | |||||
left: 0; | |||||
top: 0; | |||||
z-index: 0; | |||||
display: block; | |||||
width: 100%; | |||||
height: 100%; | |||||
margin: 10px 0; | |||||
animation: fadeIn 1s forwards; | |||||
opacity: 0; | |||||
transform: translateY(10vh); | |||||
} | |||||
img { | |||||
margin: 5px auto 0; | |||||
width: 70%; | |||||
display: block; | |||||
} | |||||
@keyframes riseDown { | |||||
from { | |||||
transform: translateY(-50vh); | |||||
} | |||||
to { | |||||
transform: translateY(0vh); | |||||
} | |||||
} | |||||
} | |||||
.inputForm { | |||||
width: 80%; | |||||
margin: 40px auto 0; | |||||
opacity: 0; | |||||
transform: translateY(10vh); | |||||
position: relative; | |||||
animation: fadeIn 1s forwards; | |||||
.input { | |||||
margin: 20px 0; | |||||
} | |||||
.actionLink { | |||||
text-align: right; | |||||
margin: 20px 0; | |||||
span { | |||||
font-size: 14px; | |||||
color: var(--rock); | |||||
text-decoration: none; | |||||
} | |||||
} | |||||
.actionButtonsHolder { | |||||
width: 60%; | |||||
margin: 20px auto; | |||||
.actionButton { | |||||
height: 50px; | |||||
text-transform: none; | |||||
font-size: 16px; | |||||
--border-radius: 30px; | |||||
--border-color: var(--shamrock); | |||||
font-weight: 500; | |||||
&:nth-child(1) { | |||||
--background: var(--shamrock); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
.navigationLink { | |||||
position: absolute; | |||||
left: 0; | |||||
width: 100%; | |||||
bottom: 10px; | |||||
text-align: center; | |||||
font-size: 14px; | |||||
color: var(--rock); | |||||
span { | |||||
color: var(--shamrock); | |||||
text-decoration: none; | |||||
} | |||||
} | |||||
@keyframes fadeIn { | |||||
from { | |||||
opacity: 0; | |||||
transform: translateY(10vh); | |||||
} | |||||
to { | |||||
opacity: 1; | |||||
transform: translateY(0vh); | |||||
} | |||||
} |
@@ -0,0 +1,51 @@ | |||||
import { IonContent, IonPage, IonButton } from '@ionic/react'; | |||||
import { personOutline, lockOpenOutline } from 'ionicons/icons'; | |||||
import { Component } from 'react'; | |||||
import InputWidget from '../../components/input/InputWidget'; | |||||
import styles from './Signup.module.scss'; | |||||
type Props = { }; | |||||
type OwnState = { }; | |||||
class SignupPage extends Component<Props, OwnState> { | |||||
constructor( | |||||
props: Props | |||||
) { | |||||
super(props); | |||||
this.state = {}; | |||||
} | |||||
render() { | |||||
return <IonPage> | |||||
<IonContent fullscreen> | |||||
<section className={styles.upfold}> | |||||
<div className={styles.container}> | |||||
<figure> | |||||
<img src="assets/images/signup/rocket.svg" alt="rocket image"/> | |||||
</figure> | |||||
<h2> Let's Create </h2> | |||||
<p> Please provide few details below. </p> | |||||
</div> | |||||
</section> | |||||
<section className={styles.inputForm}> | |||||
<div className={styles.input}> | |||||
<InputWidget type={'TEXT'} icon={personOutline} placeholder={'Email'} /> | |||||
</div> | |||||
<div className={styles.input}> | |||||
<InputWidget type={'PASSWORD'} icon={lockOpenOutline} placeholder={'Password'} /> | |||||
</div> | |||||
<div className={styles.actionButtonsHolder}> | |||||
<IonButton className={styles.actionButton} expand="block"> Login </IonButton> | |||||
</div> | |||||
</section> | |||||
<div className={ styles.navigationLink }> Already have an account? <a> Login </a> </div> | |||||
</IonContent> | |||||
</IonPage> | |||||
}; | |||||
}; | |||||
export default SignupPage; |