feat(refactor): combine old useful func to new stuff + other
refactor LoginPage, add LandingPage, add Components for easy re-use, combine scss files / etc.feat/x_gpu/new_version
parent
91da004a7e
commit
b91896e6a5
|
|
@ -137,10 +137,10 @@ const TextInputGenerator = ({
|
||||||
input, info
|
input, info
|
||||||
}) => {
|
}) => {
|
||||||
return (
|
return (
|
||||||
<div className="input_generate">
|
<div className="form-field">
|
||||||
<div className="input_labels">
|
<label>
|
||||||
{input.name + ':'}
|
{input.name}
|
||||||
</div>
|
</label>
|
||||||
<input
|
<input
|
||||||
id={input.name + info.action + info.endpoint + 'Input'}
|
id={input.name + info.action + info.endpoint + 'Input'}
|
||||||
autoComplete='off'
|
autoComplete='off'
|
||||||
|
|
@ -169,10 +169,10 @@ const PasswordInputGenerator = ({
|
||||||
input, info
|
input, info
|
||||||
}) => {
|
}) => {
|
||||||
return (
|
return (
|
||||||
<div className="input_generate">
|
<div className="form-field">
|
||||||
<div className="input_labels">
|
<label>
|
||||||
{input.name + ':'}
|
{input.name}
|
||||||
</div>
|
</label>
|
||||||
<input
|
<input
|
||||||
id={input.name + info.action + info.endpoint + 'Input'}
|
id={input.name + info.action + info.endpoint + 'Input'}
|
||||||
autoComplete='off'
|
autoComplete='off'
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import React, { useState, useEffect } from 'react'
|
import React, { useState, useEffect } from 'react'
|
||||||
|
|
||||||
import { useSelector, useDispatch } from 'react-redux'
|
// import { useSelector, useDispatch } from 'react-redux'
|
||||||
|
|
||||||
import { userAuthSelector } from '../../../redux/slices/userAuthSlice'
|
// import { userAuthSelector } from '../../../redux/slices/userAuthSlice'
|
||||||
import userAuthAsyncThunk from '../../../redux/asyncThunks/userAuthAsyncThunk'
|
// import userAuthAsyncThunk from '../../../redux/asyncThunks/userAuthAsyncThunk'
|
||||||
|
|
||||||
import FormGenerator from '../formGenerator'
|
import FormGenerator from '../formGenerator'
|
||||||
|
|
||||||
|
|
@ -13,8 +13,9 @@ const UserLoginForm = () => {
|
||||||
const usernameInput = React.createRef()
|
const usernameInput = React.createRef()
|
||||||
const passwordInput = React.createRef()
|
const passwordInput = React.createRef()
|
||||||
|
|
||||||
const dispatch = useDispatch()
|
// const dispatch = useDispatch()
|
||||||
const { info } = useSelector( userAuthSelector )
|
// const { info } = useSelector( userAuthSelector )
|
||||||
|
const info = ""
|
||||||
|
|
||||||
let refList = [
|
let refList = [
|
||||||
usernameInput,
|
usernameInput,
|
||||||
|
|
@ -25,17 +26,17 @@ const UserLoginForm = () => {
|
||||||
{
|
{
|
||||||
type: 'info',
|
type: 'info',
|
||||||
action: 'Create',
|
action: 'Create',
|
||||||
endpint: 'user/auth/login',
|
endpint: 'user/auth',
|
||||||
button_value: 'Sign In'
|
button_value: 'CONTINUE'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'text',
|
type: 'text',
|
||||||
name: 'Username',
|
name: 'EMAIL',
|
||||||
ref: usernameInput
|
ref: usernameInput
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'password',
|
type: 'password',
|
||||||
name: 'Password',
|
name: 'PASSWORD',
|
||||||
ref: passwordInput
|
ref: passwordInput
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
@ -45,11 +46,11 @@ const UserLoginForm = () => {
|
||||||
username: refs[0].current.value,
|
username: refs[0].current.value,
|
||||||
password: refs[1].current.value
|
password: refs[1].current.value
|
||||||
}
|
}
|
||||||
dispatch(
|
// dispatch(
|
||||||
userAuthAsyncThunk.fetchLogin(
|
// userAuthAsyncThunk.fetchLogin(
|
||||||
pass
|
// pass
|
||||||
)
|
// )
|
||||||
)
|
// )
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
import '../styles/LoginPage.cube.scss';
|
||||||
|
|
||||||
|
|
||||||
|
const GraphicContainerComponent = () => {
|
||||||
|
return (
|
||||||
|
<div className="graphic-container">
|
||||||
|
<div className="cube">
|
||||||
|
<div className="front"></div>
|
||||||
|
<div className="back"></div>
|
||||||
|
<div className="right"></div>
|
||||||
|
<div className="left"></div>
|
||||||
|
<div className="top"></div>
|
||||||
|
<div className="bottom"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export default GraphicContainerComponent
|
||||||
|
|
@ -1,64 +1,11 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import '../styles/general.000.scss';
|
import LoginPage from './user/login.js';
|
||||||
import '../styles/LoginPage.cube.scss';
|
import LandingPage from './landing.js';
|
||||||
|
|
||||||
// import { Provider } from 'react-redux';
|
|
||||||
// import { store } from '../redux/store';
|
|
||||||
|
|
||||||
// import Root from './func_group/root';
|
|
||||||
|
|
||||||
// if you have problem with watchers - use it:
|
|
||||||
// echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
|
|
||||||
|
|
||||||
// const IndexPage = () => {
|
|
||||||
// if (typeof window !== `undefined` && store !== 0)
|
|
||||||
// return (
|
|
||||||
// <Provider store={ store }>
|
|
||||||
// <Root />
|
|
||||||
// </Provider>
|
|
||||||
// )
|
|
||||||
// else
|
|
||||||
// return (
|
|
||||||
// <>
|
|
||||||
// </>
|
|
||||||
// )
|
|
||||||
// }
|
|
||||||
|
|
||||||
const IndexPage = () => {
|
const IndexPage = () => {
|
||||||
return (
|
return (
|
||||||
<div className="login-container">
|
<LandingPage />
|
||||||
<header className="header">
|
|
||||||
<h1>X-GPU</h1>
|
|
||||||
</header>
|
|
||||||
<main className="main-content">
|
|
||||||
<div className="graphic-container">
|
|
||||||
<div className="cube">
|
|
||||||
<div className="front"></div>
|
|
||||||
<div className="back"></div>
|
|
||||||
<div className="right"></div>
|
|
||||||
<div className="left"></div>
|
|
||||||
<div className="top"></div>
|
|
||||||
<div className="bottom"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<form className="login-form">
|
|
||||||
<div className="form-field">
|
|
||||||
<label htmlFor="login">
|
|
||||||
EMAIL
|
|
||||||
</label>
|
|
||||||
<input type="text" id="login" name="login" />
|
|
||||||
</div>
|
|
||||||
<div className="form-field">
|
|
||||||
<label htmlFor="password">
|
|
||||||
PASSWORD
|
|
||||||
</label>
|
|
||||||
<input type="password" id="password" name="password" />
|
|
||||||
</div>
|
|
||||||
<button type="submit">CONTINUE</button>
|
|
||||||
</form>
|
|
||||||
</main>
|
|
||||||
</div>
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
import '../styles/general.scss';
|
||||||
|
|
||||||
|
import GraphicContainerComponent from '../components/graphic-container.js';
|
||||||
|
|
||||||
|
const LandingPage = () => {
|
||||||
|
return (
|
||||||
|
<div className="login-container">
|
||||||
|
<header className="landing">
|
||||||
|
<h2>Affordable. Efficient. Accessible.</h2>
|
||||||
|
<h1>GUARANTED.</h1>
|
||||||
|
<p>
|
||||||
|
Minimize your expenses without compromising on quality.
|
||||||
|
<br />
|
||||||
|
Our platform is built for individuals
|
||||||
|
<span className="span-white">
|
||||||
|
who need top-tier rendering without the top-tier investment.
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
<button>
|
||||||
|
GET A DEMO
|
||||||
|
</button>
|
||||||
|
<p>
|
||||||
|
<span className="span-first-color">
|
||||||
|
GPU Is Important...
|
||||||
|
</span>
|
||||||
|
<br />
|
||||||
|
...but
|
||||||
|
</p>
|
||||||
|
</header>
|
||||||
|
<main className="main-content">
|
||||||
|
<GraphicContainerComponent />
|
||||||
|
</main>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export default LandingPage
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
import '../../styles/general.scss';
|
||||||
|
import '../../styles/LoginPage.cube.scss';
|
||||||
|
|
||||||
|
import GraphicContainerComponent from '../../components/graphic-container.js';
|
||||||
|
import UserLoginForm from '../../components/forms/user_auth/userLogin.js';
|
||||||
|
|
||||||
|
|
||||||
|
const LoginPage = () => {
|
||||||
|
return (
|
||||||
|
<div className="login-container">
|
||||||
|
<header className="header">
|
||||||
|
<h1>XGPU</h1>
|
||||||
|
</header>
|
||||||
|
<main className="main-content">
|
||||||
|
<GraphicContainerComponent />
|
||||||
|
<UserLoginForm />
|
||||||
|
</main>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export default LoginPage
|
||||||
|
|
@ -1,70 +1,108 @@
|
||||||
|
$first-color: rgba(0, 90, 25, 1);
|
||||||
|
$secondary-color: white;
|
||||||
|
$third-color: #242b2f;
|
||||||
|
|
||||||
body {
|
$title-color: white;
|
||||||
|
$subtitle-color: #a6a6a6;
|
||||||
|
$marked-subtitle-color: $first-color;
|
||||||
|
|
||||||
|
$background-color: #242b2f;
|
||||||
|
$background-base-start: $first-color;
|
||||||
|
$background-base-end: rgb(51,54,51, 1);
|
||||||
|
$header-background: 0;
|
||||||
|
$form-background: rgba(0,0,0,0.5);
|
||||||
|
$header-color: $form-background;
|
||||||
|
$button-background: $first-color;
|
||||||
|
$border-color: $first-color;
|
||||||
|
$input-background: #222;
|
||||||
|
$font-family-default: neue-haas-unica, sans-serif;
|
||||||
|
|
||||||
|
|
||||||
|
body, html {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
|
height: 100%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
background:
|
font-family: $font-family-default;
|
||||||
linear-gradient(
|
tab-size: 4;
|
||||||
10deg,
|
background: $background-color;
|
||||||
black 0%,
|
// linear-gradient(
|
||||||
#0a670a 40%,
|
// 10deg,
|
||||||
#097309 50%,
|
// black 0%,
|
||||||
#0a670a 60%,
|
// #0a670a 40%,
|
||||||
black 100%
|
// #097309 50%,
|
||||||
);
|
// #0a670a 60%,
|
||||||
|
// black 100%
|
||||||
|
// );
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
input {
|
.header {
|
||||||
width: 200px;
|
text-align: center;
|
||||||
height: 30px;
|
padding: 20px;
|
||||||
margin-left: 20px;
|
background: $header-background;
|
||||||
margin-top:10px;
|
color: $header-color;
|
||||||
margin-bottom: 5px;
|
z-index: 3; // Ensure the login form is above the cube
|
||||||
// border: 0px;
|
position: relative; // Required for z-index to take effect
|
||||||
// border-radius: 10px;
|
|
||||||
font-size: 12pt;
|
|
||||||
text-align: center;
|
|
||||||
color: rgba(111,108,106,1);
|
|
||||||
background-color: rgba(0,0,0,0);
|
|
||||||
border-bottom: 2px solid;
|
|
||||||
border-right: 0px;
|
|
||||||
border-top: 0px;
|
|
||||||
border-left: 0px;
|
|
||||||
border-color: green;
|
|
||||||
|
|
||||||
transition-duration: 0.5s;
|
h1 {
|
||||||
|
font-size: 72px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.landing {
|
||||||
|
text-align: center;
|
||||||
|
padding: 20px;
|
||||||
|
background: $header-background;
|
||||||
|
color: $title-color;
|
||||||
|
z-index: 3; // Ensure the login form is above the cube
|
||||||
|
position: relative; // Required for z-index to take effect
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 60px;
|
||||||
|
font-weight: 800;
|
||||||
|
color: $title-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
input:hover {
|
h2 {
|
||||||
border-color: rgba(111,108,106,1);
|
font-size: 60px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: $title-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
input:active {
|
p {
|
||||||
background-color: rgba(0,128,0,1);
|
font-size: 20px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: $subtitle-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
.input_generate {
|
span {
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 400;
|
||||||
|
padding-left: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.span-white {
|
||||||
|
color: $title-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.span-first-color {
|
||||||
|
color: $first-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
button {
|
button {
|
||||||
height: 30px;
|
margin-top: 35px;
|
||||||
margin-left: 20px;
|
margin-bottom: 35px;
|
||||||
margin-top:10px;
|
padding-top: 20px;
|
||||||
margin-bottom: 5px;
|
padding: 25px;
|
||||||
// border: 0px;
|
border-radius: 5px;
|
||||||
border-radius: 10px;
|
background: $button-background;
|
||||||
font-size: 12pt;
|
font-size: 20px;
|
||||||
text-align: center;
|
font-family: $font-family-default;
|
||||||
color: green;
|
font-weight: 800;
|
||||||
background-color: rgba(0,0,0,0);
|
color: rgba(0,0,0,0.5);
|
||||||
border: 2px solid;
|
border: none;
|
||||||
border-color: green;
|
cursor: pointer;
|
||||||
|
|
||||||
padding-left: 20px;
|
|
||||||
padding-right: 20px;
|
|
||||||
padding-bottom: 30px;
|
|
||||||
padding-top: 12px;
|
|
||||||
transition-duration: 0.1s;
|
transition-duration: 0.1s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -72,6 +110,77 @@ body {
|
||||||
background-color: green;
|
background-color: green;
|
||||||
color: black
|
color: black
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.main-content {
|
||||||
|
//flex: 1;
|
||||||
|
//display: flex;
|
||||||
|
margin-top: 0%;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-evenly;
|
||||||
|
|
||||||
|
.form {
|
||||||
|
background: $form-background;
|
||||||
|
padding: 50px;
|
||||||
|
width: 350px;
|
||||||
|
color: $subtitle-color;
|
||||||
|
// border: 2px solid $border-color;
|
||||||
|
border-radius: 10px;
|
||||||
|
|
||||||
|
margin-top: -400px;
|
||||||
|
margin-right: auto;
|
||||||
|
margin-left: auto;
|
||||||
|
|
||||||
|
z-index: 2; // Ensure the login form is above the cube
|
||||||
|
position: relative; // Required for z-index to take effect
|
||||||
|
|
||||||
|
.form-field {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
|
||||||
|
label {
|
||||||
|
display: block;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
input {
|
||||||
|
width: 90%;
|
||||||
|
padding: 5%;
|
||||||
|
background: $input-background;
|
||||||
|
border: 1px solid $border-color;
|
||||||
|
border-radius: 5px;
|
||||||
|
color: white;
|
||||||
|
transition-duration: 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
input:hover {
|
||||||
|
border-color: rgba(111,108,106,1);
|
||||||
|
}
|
||||||
|
|
||||||
|
input:active {
|
||||||
|
background-color: rgba(0,128,0,1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
padding: 5%;
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 30px;
|
||||||
|
border-radius: 5px;
|
||||||
|
background: $button-background;
|
||||||
|
font-family: $font-family-default;
|
||||||
|
font-weight: 800;
|
||||||
|
color: rgba(0,0,0,0.5);
|
||||||
|
border: none;
|
||||||
|
cursor: pointer;
|
||||||
|
transition-duration: 0.1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
button:hover {
|
||||||
|
background-color: green;
|
||||||
|
color: black
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.navigation_bar {
|
.navigation_bar {
|
||||||
|
|
@ -122,7 +231,7 @@ body {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.float_form_auth {
|
.float_form_auth {
|
||||||
|
|
@ -137,7 +246,6 @@ body {
|
||||||
input {
|
input {
|
||||||
width: 75%;
|
width: 75%;
|
||||||
float: right;
|
float: right;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.input_generate {
|
.input_generate {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue