fix: Improve login page appearance
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 157 KiB After Width: | Height: | Size: 157 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 14 KiB |
@@ -19,6 +19,8 @@ import { isUsername } from '../../../utils/validator';
|
|||||||
import AccessTokenSteps from '../../../constants/AccessTokenSteps';
|
import AccessTokenSteps from '../../../constants/AccessTokenSteps';
|
||||||
import TermsModal from './TermsModal';
|
import TermsModal from './TermsModal';
|
||||||
|
|
||||||
|
import logo from '../../../assets/images/logo.png';
|
||||||
|
|
||||||
import styles from './Content.module.scss';
|
import styles from './Content.module.scss';
|
||||||
|
|
||||||
const createMessage = (error) => {
|
const createMessage = (error) => {
|
||||||
@@ -175,19 +177,27 @@ const Content = React.memo(() => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={classNames(styles.wrapper, styles.fullHeight)}>
|
<div className={classNames(styles.wrapper, styles.fullHeight)}>
|
||||||
<Grid verticalAlign="middle" className={classNames(styles.grid, styles.fullHeight)}>
|
<Grid verticalAlign="middle" className={styles.grid}>
|
||||||
<Grid.Column computer={6} tablet={16} mobile={16}>
|
<Grid.Column computer={6} tablet={16} mobile={16} className={styles.gridItem}>
|
||||||
<div className={styles.loginWrapper}>
|
<div className={styles.login}>
|
||||||
<Header as="h1" textAlign="center" content="PLANKA" className={styles.formTitle} />
|
<div className={styles.form}>
|
||||||
<Header
|
<div className={styles.logoWrapper}>
|
||||||
as="h2"
|
<img src={logo} alt="" className={styles.logo} />
|
||||||
textAlign="center"
|
</div>
|
||||||
content={t('common.logIn', {
|
<Header
|
||||||
context: 'title',
|
as="h1"
|
||||||
})}
|
textAlign="center"
|
||||||
className={styles.formSubtitle}
|
content={bootstrap.instanceName || 'PLANKA'}
|
||||||
/>
|
className={styles.formTitle}
|
||||||
<div className={styles.formWrapper}>
|
/>
|
||||||
|
<Header
|
||||||
|
as="h2"
|
||||||
|
textAlign="center"
|
||||||
|
content={t('common.logIn', {
|
||||||
|
context: 'title',
|
||||||
|
})}
|
||||||
|
className={styles.formSubtitle}
|
||||||
|
/>
|
||||||
{message && (
|
{message && (
|
||||||
<Message
|
<Message
|
||||||
{...{
|
{...{
|
||||||
@@ -255,20 +265,22 @@ const Content = React.memo(() => {
|
|||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
<p className={styles.formFooter}>
|
<div className={styles.poweredBy}>
|
||||||
<Trans i18nKey="common.poweredByPlanka">
|
<p className={styles.poweredByText}>
|
||||||
{'Powered by '}
|
<Trans i18nKey="common.poweredByPlanka">
|
||||||
<a href="https://github.com/plankanban/planka" target="_blank" rel="noreferrer">
|
{'Powered by '}
|
||||||
PLANKA
|
<a href="https://github.com/plankanban/planka" target="_blank" rel="noreferrer">
|
||||||
</a>
|
PLANKA
|
||||||
</Trans>
|
</a>
|
||||||
</p>
|
</Trans>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Grid.Column>
|
</Grid.Column>
|
||||||
<Grid.Column
|
<Grid.Column
|
||||||
computer={10}
|
computer={10}
|
||||||
only="computer"
|
only="computer"
|
||||||
className={classNames(styles.cover, styles.fullHeight)}
|
className={classNames(styles.gridItem, styles.cover)}
|
||||||
>
|
>
|
||||||
<div className={styles.coverOverlay} />
|
<div className={styles.coverOverlay} />
|
||||||
</Grid.Column>
|
</Grid.Column>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
:global(#app) {
|
:global(#app) {
|
||||||
.cover {
|
.cover {
|
||||||
background: url("../../../assets/images/cover.jpg") left / cover;
|
background: url("../../../assets/images/login-cover.jpg") left / cover;
|
||||||
}
|
}
|
||||||
|
|
||||||
.coverOverlay {
|
.coverOverlay {
|
||||||
@@ -23,16 +23,16 @@
|
|||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
.formFooter {
|
.form {
|
||||||
color: #6b808c;
|
display: flex;
|
||||||
font-weight: lighter;
|
flex: 1;
|
||||||
text-align: center;
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.formTitle {
|
.formTitle {
|
||||||
font-size: 36px;
|
font-size: 36px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
margin-bottom: 36px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.formSubtitle {
|
.formSubtitle {
|
||||||
@@ -41,18 +41,16 @@
|
|||||||
margin-bottom: 32px;
|
margin-bottom: 32px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.formWrapper {
|
|
||||||
margin-bottom: 36px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fullHeight {
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.grid {
|
.grid {
|
||||||
|
height: 100%;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.gridItem {
|
||||||
|
height: 100%;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.inputLabel {
|
.inputLabel {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
@@ -63,10 +61,40 @@
|
|||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.loginWrapper {
|
.login {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
max-width: 440px;
|
max-width: 440px;
|
||||||
padding: 0 20px;
|
min-height: 100vh;
|
||||||
|
padding: 40px;
|
||||||
|
row-gap: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
max-height: 144px;
|
||||||
|
max-width: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logoWrapper {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.poweredBy {
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 10px;
|
||||||
|
justify-content: center;
|
||||||
|
margin-top: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.poweredByText {
|
||||||
|
color: #6b808c;
|
||||||
|
font-weight: lighter;
|
||||||
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.wrapper {
|
.wrapper {
|
||||||
|
|||||||
@@ -8,14 +8,14 @@ import { Image, Tab } from 'semantic-ui-react';
|
|||||||
|
|
||||||
import version from '../../../version';
|
import version from '../../../version';
|
||||||
|
|
||||||
import logo from '../../../assets/images/logo.png';
|
import aboutLogo from '../../../assets/images/about-logo.png';
|
||||||
|
|
||||||
import styles from './AboutPane.module.scss';
|
import styles from './AboutPane.module.scss';
|
||||||
|
|
||||||
const AboutPane = React.memo(() => (
|
const AboutPane = React.memo(() => (
|
||||||
<Tab.Pane attached={false} className={styles.wrapper}>
|
<Tab.Pane attached={false} className={styles.wrapper}>
|
||||||
<a href="https://github.com/plankanban/planka" target="_blank" rel="noreferrer">
|
<a href="https://github.com/plankanban/planka" target="_blank" rel="noreferrer">
|
||||||
<Image centered src={logo} size="large" />
|
<Image centered src={aboutLogo} size="large" />
|
||||||
</a>
|
</a>
|
||||||
<div className={styles.version}>{version}</div>
|
<div className={styles.version}>{version}</div>
|
||||||
</Tab.Pane>
|
</Tab.Pane>
|
||||||
|
|||||||
@@ -129,13 +129,6 @@ export default (state = initialState, { type, payload }) => {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
case ActionTypes.CONFIG_UPDATE__SUCCESS:
|
case ActionTypes.CONFIG_UPDATE__SUCCESS:
|
||||||
return {
|
|
||||||
...state,
|
|
||||||
config: {
|
|
||||||
...state.config,
|
|
||||||
...payload.config,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
case ActionTypes.CONFIG_UPDATE_HANDLE:
|
case ActionTypes.CONFIG_UPDATE_HANDLE:
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
* url:
|
* url:
|
||||||
* type: string
|
* type: string
|
||||||
* format: uri
|
* format: uri
|
||||||
* description: URL to access the full-size background image
|
* description: URL to the full-size background image
|
||||||
* example: https://storage.example.com/background-images/1357158568008091264/original.jpg
|
* example: https://storage.example.com/background-images/1357158568008091264/original.jpg
|
||||||
* thumbnailUrls:
|
* thumbnailUrls:
|
||||||
* type: object
|
* type: object
|
||||||
|
|||||||
@@ -77,7 +77,7 @@
|
|||||||
* cover180:
|
* cover180:
|
||||||
* type: string
|
* type: string
|
||||||
* format: uri
|
* format: uri
|
||||||
* description: URL for 180px cover thumbnail
|
* description: URL for 180px thumbnail version
|
||||||
* example: https://storage.example.com/user-avatars/1357158568008091264/cover-180.jpg
|
* example: https://storage.example.com/user-avatars/1357158568008091264/cover-180.jpg
|
||||||
* gravatarUrl:
|
* gravatarUrl:
|
||||||
* type: string
|
* type: string
|
||||||
|
|||||||
Reference in New Issue
Block a user