diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 623484c05..d8c8cd9fb 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -586,7 +586,9 @@ "privacyPolicy": "Privacy Policy", "displayNamePick": "Pick your display name", "displayNameDescription": "It can be your real name, an alias, or anything else you like — and you can change it any time.", - "invalidDisplayNameTooLong": "Please enter a shorter display name.", + "displayNameErrorDescriptionShorter": "Please pick a shorter display name", "onboardingAccountCreated": "Account Created", - "onboardingBubbleWelcomeToSession": "Welcome to Session" + "onboardingBubbleWelcomeToSession": "Welcome to Session", + "conversationsNone": "You don't have any conversations yet", + "onboardingHitThePlusButton": "Hit the plus button to start a chat, create a group, or join an official community!" } diff --git a/ts/components/EmptyMessageView.tsx b/ts/components/EmptyMessageView.tsx index fc4fa0a2b..d2a6064b9 100644 --- a/ts/components/EmptyMessageView.tsx +++ b/ts/components/EmptyMessageView.tsx @@ -2,6 +2,7 @@ import { useState } from 'react'; import { useMount } from 'react-use'; import styled from 'styled-components'; import { Flex } from './basic/Flex'; +import { Spacer2XL, SpacerXS } from './basic/Text'; const StyledPlaceholder = styled(Flex)` margin: auto; @@ -31,22 +32,40 @@ const StyledPartyPopper = styled.img` -webkit-user-drag: none; `; -const StyledHeading = styled.p` - padding: 0; +const StyledP = styled.p` margin: 0; - font-size: var(--font-size-h1); + padding: 0; + text-align: center; +`; + +const StyledHeading = styled(StyledP)` + margin: 0 0 var(--margins-md); + line-height: 1; + font-size: 48px; font-weight: 700; `; -const StyledSessionWelcome = styled.p` - padding: 0; - margin: 0; +const StyledSessionWelcome = styled(StyledP)` + line-height: 1; color: var(--primary-color); - font-size: var(--font-size-h2); + font-size: 32px; +`; + +const StyledHR = styled.hr` + color: var(--text-secondary-color); + opacity: 0.5; + width: 300px; + border-width: 0.5px; + margin: 40px 0 var(--margins-lg); +`; + +const StyledNoConversations = styled(StyledP)` + font-size: 24px; + font-weight: 700; `; export const EmptyMessageView = () => { - const [newAccountCreated, setNewAccountCreated] = useState(false); + const [newAccountCreated, setNewAccountCreated] = useState(true); useMount(() => { const launchCount = window.getSettingValue('launch-count'); @@ -57,25 +76,6 @@ export const EmptyMessageView = () => { } }); - if (newAccountCreated) { - return ( - - - {window.i18n('onboardingAccountCreated')} - - {window.i18n('onboardingBubbleWelcomeToSession')} - - - ); - } - return ( { alignItems="center" margin="auto" > - - full-brand-logo - full-brand-text - + {newAccountCreated ? ( + <> + + + {window.i18n('onboardingAccountCreated')} + + {window.i18n('onboardingBubbleWelcomeToSession')} + + + ) : ( + + full-brand-logo + full-brand-text + + )} + + {window.i18n('conversationsNone')} + + {window.i18n('onboardingHitThePlusButton')} ); }; diff --git a/ts/components/basic/Text.tsx b/ts/components/basic/Text.tsx index f53d54195..db7556021 100644 --- a/ts/components/basic/Text.tsx +++ b/ts/components/basic/Text.tsx @@ -31,13 +31,17 @@ export const TextWithChildren = (props: Omit & { children: Re }; type SpacerProps = { - size: 'xl' | 'lg' | 'md' | 'sm' | 'xs'; + size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl'; style?: CSSProperties; }; const SpacerStyled = styled.div` height: ${props => - props.size === 'xl' + props.size === '3xl' + ? 'var(--margins-3xl)' + : props.size === '2xl' + ? 'var(--margins-2xl)' + : props.size === 'xl' ? 'var(--margins-xl)' : props.size === 'lg' ? 'var(--margins-lg)' @@ -48,7 +52,11 @@ const SpacerStyled = styled.div` : 'var(--margins-xs)'}; width: ${props => - props.size === 'xl' + props.size === '3xl' + ? 'var(--margins-3xl)' + : props.size === '2xl' + ? 'var(--margins-2xl)' + : props.size === 'xl' ? 'var(--margins-xl)' : props.size === 'lg' ? 'var(--margins-lg)' @@ -63,23 +71,39 @@ const Spacer = (props: SpacerProps) => { return ; }; -export const SpacerXL = (props: { style?: CSSProperties }) => { - return ; +/** 5px */ +export const SpacerXS = (props: { style?: CSSProperties }) => { + return ; }; -export const SpacerLG = (props: { style?: CSSProperties }) => { - return ; +/** 10px */ +export const SpacerSM = (props: { style?: CSSProperties }) => { + return ; }; +/** 15px */ export const SpacerMD = (props: { style?: CSSProperties }) => { return ; }; -export const SpacerSM = (props: { style?: CSSProperties }) => { - return ; + +/** 20px */ +export const SpacerLG = (props: { style?: CSSProperties }) => { + return ; }; -export const SpacerXS = (props: { style?: CSSProperties }) => { - return ; +/** 25px */ +export const SpacerXL = (props: { style?: CSSProperties }) => { + return ; +}; + +/** 30px */ +export const Spacer2XL = (props: { style?: CSSProperties }) => { + return ; +}; + +/** 35px */ +export const Spacer3XL = (props: { style?: CSSProperties }) => { + return ; }; type H3Props = { diff --git a/ts/components/registration/stages/CreateAccount.tsx b/ts/components/registration/stages/CreateAccount.tsx index 479b0dda1..9ce925669 100644 --- a/ts/components/registration/stages/CreateAccount.tsx +++ b/ts/components/registration/stages/CreateAccount.tsx @@ -50,7 +50,7 @@ function sanitizeDisplayNameOrToast( setDisplayNameError(!trimName ? window.i18n('displayNameEmpty') : undefined); } catch (e) { setDisplayName(displayName); - setDisplayNameError(window.i18n('invalidDisplayNameTooLong')); + setDisplayNameError(window.i18n('displayNameErrorDescriptionShorter')); } } diff --git a/ts/themes/globals.tsx b/ts/themes/globals.tsx index 20085dd91..7afad7b75 100644 --- a/ts/themes/globals.tsx +++ b/ts/themes/globals.tsx @@ -24,6 +24,7 @@ export type ThemeGlobals = { '--margins-lg': string; '--margins-xl': string; '--margins-2xl': string; + '--margins-3xl': string; /* Padding */ '--padding-message-content': string; @@ -115,6 +116,7 @@ export const THEME_GLOBALS: ThemeGlobals = { '--margins-lg': '20px', '--margins-xl': '25px', '--margins-2xl': '30px', + '--margins-3xl': '35px', '--padding-message-content': '7px 13px', '--padding-link-preview': '-7px -13px 7px -13px', // bottom has positive value because a link preview has always a body below diff --git a/ts/types/LocalizerKeys.ts b/ts/types/LocalizerKeys.ts index 5715c45c1..82068ac43 100644 --- a/ts/types/LocalizerKeys.ts +++ b/ts/types/LocalizerKeys.ts @@ -101,6 +101,7 @@ export type LocalizerKeys = | 'continue' | 'continueYourSession' | 'conversationsHeader' + | 'conversationsNone' | 'conversationsSettingsTitle' | 'copiedToClipboard' | 'copyErrorAndQuit' @@ -161,6 +162,7 @@ export type LocalizerKeys = | 'displayName' | 'displayNameDescription' | 'displayNameEmpty' + | 'displayNameErrorDescriptionShorter' | 'displayNamePick' | 'displayNameTooLong' | 'document' @@ -236,7 +238,6 @@ export type LocalizerKeys = | 'imageCaptionIconAlt' | 'incomingCallFrom' | 'incomingError' - | 'invalidDisplayNameTooLong' | 'invalidGroupNameTooLong' | 'invalidGroupNameTooShort' | 'invalidNumberError' @@ -358,6 +359,7 @@ export type LocalizerKeys = | 'ok' | 'onboardingAccountCreated' | 'onboardingBubbleWelcomeToSession' + | 'onboardingHitThePlusButton' | 'onboardingTosPrivacy' | 'oneNonImageAtATimeToast' | 'onionPathIndicatorDescription'