mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-01 22:02:11 +03:00
Refined invite-only signup page
no refs. - added default invitation icon for sites without icon - refined copy and position of invite only notification
This commit is contained in:
parent
46366d5066
commit
59e729e7bd
@ -16,7 +16,7 @@ const DEV_MODE_DATA = {
|
|||||||
showPopup: true,
|
showPopup: true,
|
||||||
site: Fixtures.site,
|
site: Fixtures.site,
|
||||||
member: Fixtures.member.paid,
|
member: Fixtures.member.paid,
|
||||||
page: 'accountHome'
|
page: 'signup'
|
||||||
};
|
};
|
||||||
export default class App extends React.Component {
|
export default class App extends React.Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
|
@ -6,7 +6,7 @@ import {ReactComponent as EnvelopeIcon} from '../../images/icons/envelope.svg';
|
|||||||
const React = require('react');
|
const React = require('react');
|
||||||
|
|
||||||
export const MagicLinkStyles = `
|
export const MagicLinkStyles = `
|
||||||
.gh-portal-envelope {
|
.gh-portal-icon-envelope {
|
||||||
width: 44px;
|
width: 44px;
|
||||||
margin: 0 0 2px;
|
margin: 0 0 2px;
|
||||||
}
|
}
|
||||||
@ -30,7 +30,7 @@ export default class MagicLinkPage extends React.Component {
|
|||||||
return (
|
return (
|
||||||
<section className='gh-portal-inbox-notification'>
|
<section className='gh-portal-inbox-notification'>
|
||||||
<header className='gh-portal-header'>
|
<header className='gh-portal-header'>
|
||||||
<EnvelopeIcon className='gh-portal-icon gh-portal-envelope' />
|
<EnvelopeIcon className='gh-portal-icon gh-portal-icon-envelope' />
|
||||||
<h2>Check your inbox!</h2>
|
<h2>Check your inbox!</h2>
|
||||||
</header>
|
</header>
|
||||||
<p>Check your inbox and click on the login link to complete the signin.</p>
|
<p>Check your inbox and click on the login link to complete the signin.</p>
|
||||||
|
@ -6,6 +6,7 @@ import InputForm from '../common/InputForm';
|
|||||||
import {ValidateInputForm} from '../../utils/form';
|
import {ValidateInputForm} from '../../utils/form';
|
||||||
import CalculateDiscount from '../../utils/discount';
|
import CalculateDiscount from '../../utils/discount';
|
||||||
import {getSitePlans, hasOnlyFreePlan} from '../../utils/helpers';
|
import {getSitePlans, hasOnlyFreePlan} from '../../utils/helpers';
|
||||||
|
import {ReactComponent as InvitationIcon} from '../../images/icons/invitation.svg';
|
||||||
|
|
||||||
const React = require('react');
|
const React = require('react');
|
||||||
|
|
||||||
@ -111,6 +112,28 @@ export const SignupPageStyles = `
|
|||||||
.gh-portal-content.signin + footer.gh-portal-signin-footer {
|
.gh-portal-content.signin + footer.gh-portal-signin-footer {
|
||||||
height: 120px;
|
height: 120px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
footer.gh-portal-signup-footer.invite-only {
|
||||||
|
height: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gh-portal-invite-only-notification {
|
||||||
|
margin: 8px 32px;
|
||||||
|
padding: 0;
|
||||||
|
text-align: center;
|
||||||
|
color: var(--grey2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.gh-portal-icon-invitation {
|
||||||
|
width: 44px;
|
||||||
|
margin: 12px 0 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gh-portal-icon-invitation path,
|
||||||
|
.gh-portal-icon-invitation circle,
|
||||||
|
.gh-portal-icon-invitation line {
|
||||||
|
stroke-width: 1.2px;
|
||||||
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
class SignupPage extends React.Component {
|
class SignupPage extends React.Component {
|
||||||
@ -378,7 +401,7 @@ class SignupPage extends React.Component {
|
|||||||
return (
|
return (
|
||||||
<section>
|
<section>
|
||||||
<div className='gh-portal-section'>
|
<div className='gh-portal-section'>
|
||||||
This site is invite only. Contact owner if you'd like to sign up.
|
<p className='gh-portal-invite-only-notification'>This site is invite-only, contact the owner for access.</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
);
|
);
|
||||||
@ -398,6 +421,7 @@ class SignupPage extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
renderSiteLogo() {
|
renderSiteLogo() {
|
||||||
|
const plansData = this.getPlans();
|
||||||
const {site} = this.context;
|
const {site} = this.context;
|
||||||
const siteLogo = site.icon;
|
const siteLogo = site.icon;
|
||||||
|
|
||||||
@ -408,6 +432,10 @@ class SignupPage extends React.Component {
|
|||||||
return (
|
return (
|
||||||
<img className='gh-portal-signup-logo' src={siteLogo} alt={site.title} />
|
<img className='gh-portal-signup-logo' src={siteLogo} alt={site.title} />
|
||||||
);
|
);
|
||||||
|
} else if (plansData.length === 0) {
|
||||||
|
return (
|
||||||
|
<InvitationIcon className='gh-portal-icon gh-portal-icon-invitation' />
|
||||||
|
);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -428,6 +456,7 @@ class SignupPage extends React.Component {
|
|||||||
const plansData = this.getPlans();
|
const plansData = this.getPlans();
|
||||||
const fields = this.getInputFields({state: this.state});
|
const fields = this.getInputFields({state: this.state});
|
||||||
let sectionClass = '';
|
let sectionClass = '';
|
||||||
|
let footerClass = '';
|
||||||
|
|
||||||
if (plansData.length <= 1) {
|
if (plansData.length <= 1) {
|
||||||
if ((plansData.length === 1 && plansData[0].type === 'free') || plansData.length === 0) {
|
if ((plansData.length === 1 && plansData[0].type === 'free') || plansData.length === 0) {
|
||||||
@ -435,6 +464,9 @@ class SignupPage extends React.Component {
|
|||||||
if (fields.length === 1) {
|
if (fields.length === 1) {
|
||||||
sectionClass = 'single-field';
|
sectionClass = 'single-field';
|
||||||
}
|
}
|
||||||
|
if (plansData.length === 0) {
|
||||||
|
footerClass = 'invite-only';
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
sectionClass = 'singleplan';
|
sectionClass = 'singleplan';
|
||||||
}
|
}
|
||||||
@ -447,7 +479,7 @@ class SignupPage extends React.Component {
|
|||||||
{this.renderFormHeader()}
|
{this.renderFormHeader()}
|
||||||
{this.renderForm()}
|
{this.renderForm()}
|
||||||
</div>
|
</div>
|
||||||
<footer className='gh-portal-signup-footer'>
|
<footer className={'gh-portal-signup-footer ' + footerClass}>
|
||||||
{this.renderSubmitButton()}
|
{this.renderSubmitButton()}
|
||||||
{this.renderLoginMessage()}
|
{this.renderLoginMessage()}
|
||||||
</footer>
|
</footer>
|
||||||
|
1
ghost/portal/src/images/icons/invitation.svg
Normal file
1
ghost/portal/src/images/icons/invitation.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><defs><style>.a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;}</style></defs><title>invitation</title><path class="a" d="M12,13.5H3.75A1.5,1.5,0,0,1,2.25,12V2.25A1.5,1.5,0,0,1,3.75.75h16.5a1.5,1.5,0,0,1,1.5,1.5V12a1.5,1.5,0,0,1-1.5,1.5h-4.5"/><line class="a" x1="12.9" y1="3.75" x2="18.75" y2="3.75"/><path class="a" d="M15.75,13.5V9.375a1.875,1.875,0,0,0-3.75,0v5.1l-.488,1.949a5.593,5.593,0,0,0,0,2.925A14.112,14.112,0,0,0,12.75,21.3v1.95H19.5c0-4.414-.189-3.769.557-6.8"/><path class="a" d="M11.633,15.941a4.34,4.34,0,0,1-1.516,1.946c-.59.309-1.867.115-1.867-.975V13.5"/><circle class="a" cx="7.5" cy="6.375" r="2.25"/></svg>
|
After Width: | Height: | Size: 735 B |
Loading…
Reference in New Issue
Block a user