Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[UI] Update login with new designs #1376

9 changes: 9 additions & 0 deletions src/frontend/assets/heroic-icon.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
58 changes: 39 additions & 19 deletions src/frontend/screens/Login/components/Runner/index.css
Original file line number Diff line number Diff line change
@@ -1,34 +1,41 @@
.runnerWrapper {
background-color: var(--background-darker);
padding: var(--space-lg);
border-radius: var(--space-xs);
min-width: min(500px, 30%);
display: flex;
flex-direction: column;
flex-direction: row;
justify-content: space-between;
height: 300px;
align-items: center;
width: 100%;
height: 60px;
backdrop-filter: blur(var(--blur-light));
box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
}

.runnerWrapper > h1 {
color: var(--text-default);
}

.runnerLogin {
padding: var(--space-xs);
font-size: var(--text-xl);
padding: var(--space-lg);
font-size: var(--text-md);
border: none;
transition: 0.2s;
font-weight: 700;
text-transform: uppercase;
text-align: center;
}

.runnerLogin.alternative {
margin-top: 20px;
cursor: pointer;
color: var(--text-secondary);
}

.alternative > svg {
fill: var(--background-lighter) !important;
}

.runnerLogin:hover {
color: var(--text-hover);
color: var(--accent);
}

.logged {
Expand All @@ -40,27 +47,40 @@
color: var(--danger-hover);
}

.runnerIcon {
height: 100%;
width: 60px;
background-color: var(--text-default);
border-top-left-radius: 10px;
border-bottom-left-radius: 10px;
}

.runnerIcon img,
.runnerIcon svg {
width: 100%;
padding: 10px;
}

.runnerIcon.gog img {
margin-top: -1px;
}

.runnerWrapper img,
.runnerWrapper svg {
width: 100px;
margin: var(--space-lg);
fill: #fff;
height: 100%;
fill: var(--body-background);
}

.userData {
color: var(--text-secondary);
/* For longer nicknames */
font-size: var(--text-lg);
margin: var(--space-sm) 0;
padding-left: 10px;
padding-right: 10px;
}

.runnerWrapper.epic {
margin-right: var(--space-xl-fixed);
}
.runnerWrapper.gog {
margin-left: var(--space-xl-fixed);
}
.runnerWrapper.gog svg {
margin-top: var(--space-md-fixed);
.runnerButtons,
.userData {
flex: 1;
}
72 changes: 43 additions & 29 deletions src/frontend/screens/Login/components/Runner/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,40 +26,54 @@ export default function Runner(props: RunnerProps) {
//window.localStorage.clear()
}
return (
<div className={`runnerWrapper ${props.class}`}>
<div>{props.icon()}</div>
{props.isLoggedIn && (
<div className="userData">
<span>
{String(props.user).slice(0, maxNameLength) +
(String(props.user).length > maxNameLength ? '...' : '')}
</span>
</div>
)}
<div>
{!props.isLoggedIn ? (
<Link to={props.loginUrl}>
<div className="runnerLogin">{t('button.login', 'Login')}</div>
</Link>
) : (
<div
className="runnerLogin logged"
onClick={() => {
handleLogout()
}}
>
{t('userselector.logout', 'Logout')}
<>
<div className={`runnerWrapper ${props.class}`}>
<div className={`runnerIcon ${props.class}`}>{props.icon()}</div>
{props.isLoggedIn && (
<div className="userData">
<span>
{String(props.user).slice(0, maxNameLength) +
(String(props.user).length > maxNameLength ? '...' : '')}
</span>
</div>
)}
<div className="runnerButtons">
{!props.isLoggedIn ? (
<Link to={props.loginUrl}>
<div className="runnerLogin">{`${
arielj marked this conversation as resolved.
Show resolved Hide resolved
props.class === 'epic'
? props.class + ' Games Login'
: props.class + ' Login'
}`}</div>
arielj marked this conversation as resolved.
Show resolved Hide resolved
</Link>
) : (
<div
className="runnerLogin logged"
onClick={() => {
handleLogout()
}}
>
{t('userselector.logout', 'Logout')}
</div>
)}
</div>
</div>
{props.alternativeLoginAction && !props.isLoggedIn && (
<div
onClick={props.alternativeLoginAction}
className="runnerLogin alternative"
>
{t('login.externalLogin', 'External Login')}
<div className="runnerWrapper">
<div className="runnerIcon alternative">{props.icon()}</div>
<div className="runnerButtons">
<div
onClick={props.alternativeLoginAction}
className="runnerLogin alternative"
>
{`${props.class} Games ${t(
'login.externalLogin',
'External Login'
)}`}
</div>
</div>
</div>
)}
</div>
</>
)
}