mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
2740884e3c
Summary: - Move css module for the login page css to core/, to be reusable in core/ pages. - Move /welcome/teams implementation to WelcomeSitePicker.ts - List users for personal sites, as well as team sites. - Add org param to setSessionActive() API method and end endpoint, to allow switching the specified org to another user. - Add a little safety to getOrgUrl() function. Test Plan: Added a test case for the new behaviors of the /welcome/teams page. Reviewers: georgegevoian Reviewed By: georgegevoian Differential Revision: https://phab.getgrist.com/D3914
217 lines
4.4 KiB
TypeScript
217 lines
4.4 KiB
TypeScript
import {bigPrimaryButton as gristBigPrimaryButton,
|
|
bigPrimaryButtonLink as gristBigPrimaryButtonLink,
|
|
textButton as gristTextButton} from 'app/client/ui2018/buttons';
|
|
import {colors, mediaXSmall, theme} from 'app/client/ui2018/cssVars';
|
|
import {textInput} from 'app/client/ui/inputs';
|
|
import {styled} from 'grainjs';
|
|
|
|
export const text = styled('div', `
|
|
color: ${theme.text};
|
|
font-weight: 400;
|
|
line-height: 20px;
|
|
font-size: 14px;
|
|
`);
|
|
|
|
export const lightText = styled(text, `
|
|
color: ${theme.lightText};
|
|
`);
|
|
|
|
export const lightColor = styled('span', `
|
|
color: ${theme.lightText};
|
|
`);
|
|
|
|
export const centeredText = styled(text, `
|
|
text-align: center;
|
|
`);
|
|
|
|
export const lightlyBolded = styled('span', `
|
|
font-weight: 500;
|
|
`);
|
|
|
|
export const input = textInput;
|
|
|
|
export const codeInput = styled(input, `
|
|
width: 200px;
|
|
`);
|
|
|
|
export const label = styled('label', `
|
|
color: ${theme.text};
|
|
display: inline-block;
|
|
line-height: 20px;
|
|
font-size: 14px;
|
|
font-weight: 500;
|
|
`);
|
|
|
|
export const formLabel = styled(label, `
|
|
margin-bottom: 8px;
|
|
`);
|
|
|
|
export const googleButton = styled('button', `
|
|
/* Resets */
|
|
position: relative;
|
|
border-style: none;
|
|
|
|
/* Vars */
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
height: 48px;
|
|
gap: 12px;
|
|
font-size: 15px;
|
|
font-weight: 500;
|
|
line-height: 16px;
|
|
padding: 16px;
|
|
color: ${colors.dark};
|
|
background-color: ${colors.lightGrey};
|
|
border: 1px solid ${colors.darkGrey};
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
width: 100%;
|
|
|
|
&:hover {
|
|
background-color: ${colors.mediumGrey};
|
|
}
|
|
`);
|
|
|
|
export const image = styled('div', `
|
|
display: inline-block;
|
|
background-size: contain;
|
|
background-repeat: no-repeat;
|
|
background-position: center;
|
|
`);
|
|
|
|
export const gristLogo = styled(image, `
|
|
width: 100%;
|
|
height: 32px;
|
|
background-image: var(--icon-GristLogo);
|
|
`);
|
|
|
|
export const googleLogo = styled(image, `
|
|
width: 24px;
|
|
height: 24px;
|
|
background-image: var(--icon-GoogleLogo);
|
|
`);
|
|
|
|
export const loginMethodsSeparator = styled('div', `
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
margin: 24px 0px 24px 0px;
|
|
`);
|
|
|
|
export const horizontalLine = styled('hr', `
|
|
border: 1px solid ${theme.loginPageLine};
|
|
flex-grow: 1;
|
|
`);
|
|
|
|
/**
|
|
* TODO: Consider using our own outline.
|
|
*
|
|
* We revert here to improve accessibility on the login pages. We could also
|
|
* leave the default outline alone, since it doesn't seem to appear on
|
|
* click anymore (in modern browsers, at least).
|
|
*/
|
|
export const bigPrimaryButton = styled(gristBigPrimaryButton, `
|
|
outline: revert;
|
|
font-weight: 500;
|
|
height: 48px;
|
|
font-size: 15px;
|
|
line-height: 16px;
|
|
`);
|
|
|
|
export const bigPrimaryButtonLink = styled(gristBigPrimaryButtonLink, `
|
|
outline: revert;
|
|
padding: 16px 32px 16px 32px;
|
|
font-weight: 500;
|
|
font-size: 15px;
|
|
line-height: 16px;
|
|
`);
|
|
|
|
export const textButton = styled(gristTextButton, `
|
|
outline: revert;
|
|
font-size: 14px;
|
|
`);
|
|
|
|
export const pageContainer = styled('div', `
|
|
min-height: 100%;
|
|
background-color: ${theme.loginPageBackdrop};
|
|
|
|
@media ${mediaXSmall} {
|
|
& {
|
|
background-color: ${theme.loginPageBg};
|
|
}
|
|
}
|
|
`);
|
|
|
|
export const centeredFlexContainer = styled('div', `
|
|
display: flex;
|
|
justify-content: center;
|
|
`);
|
|
|
|
export const formContainer = styled('div', `
|
|
background-color: ${theme.loginPageBg};
|
|
max-width: 576px;
|
|
width: 100%;
|
|
margin: 60px 25px 60px 25px;
|
|
padding: 40px 56px 40px 56px;
|
|
border-radius: 8px;
|
|
|
|
@media ${mediaXSmall} {
|
|
& {
|
|
margin: 0px;
|
|
padding: 25px 20px 25px 20px;
|
|
}
|
|
}
|
|
`);
|
|
|
|
export const formHeading = styled('div', `
|
|
font-weight: 500;
|
|
font-size: 32px;
|
|
line-height: 40px;
|
|
margin-bottom: 8px;
|
|
color: ${theme.text};
|
|
|
|
@media ${mediaXSmall} {
|
|
& {
|
|
font-size: 24px;
|
|
line-height: 32px;
|
|
margin-bottom: 16px;
|
|
}
|
|
}
|
|
`);
|
|
|
|
export const formInstructions = styled('div', `
|
|
margin-bottom: 32px;
|
|
`);
|
|
|
|
export const formError = styled(text, `
|
|
color: ${theme.errorText};
|
|
margin-bottom: 16px;
|
|
`);
|
|
|
|
export const centeredFormError = styled(formError, `
|
|
text-align: center;
|
|
`);
|
|
|
|
export const formButtons = styled('div', `
|
|
margin: 32px 0px 0px 0px;
|
|
`);
|
|
|
|
export const formFooter = styled(text, `
|
|
margin-top: 24px;
|
|
`);
|
|
|
|
export const formBody = styled('div', ``);
|
|
|
|
export const resendCode = styled(text, `
|
|
margin-top: 16px;
|
|
`);
|
|
|
|
export const spinner = styled('div', `
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
width: 100%;
|
|
height: 250px;
|
|
`);
|