Merge branch 'theming_session_button' into theming_left_pane

pull/2521/head
William Grant 3 years ago
commit 3949f62887

@ -72,148 +72,6 @@ textarea {
margin-inline-end: 5px;
}
.session-button {
@mixin transparent-background($textAndBorderColor) {
background-color: Transparent;
background-repeat: no-repeat;
overflow: hidden;
outline: none;
color: $textAndBorderColor;
border: 2px solid $textAndBorderColor;
}
width: auto;
display: flex;
justify-content: center;
align-items: center;
font-weight: 700;
user-select: none;
white-space: nowrap;
cursor: pointer;
transition: var(--default-duration);
background-color: var(--color-transparent-color);
&.disabled {
cursor: not-allowed;
}
&.default,
&.square,
&.brand {
color: var(--color-foreground-primary);
&:not(.disabled):hover {
background: var(--color-clickable-hovered);
}
&.green {
background-color: var(--color-accent-button);
color: var(--color-text-opposite);
}
&.white {
color: var(--color-text);
}
&.primary {
background-color: var(--color-background-primary);
color: var(--color-white-color);
.session-icon {
fill: var(--color-foreground-primary);
}
}
&.secondary {
background-color: var(--color-darkest-gray-color);
}
&.success {
/* TODO is this correct? */
background-color: var(--color-text);
}
&.danger {
background-color: var(--color-destructive);
}
&.danger-alt {
background-color: var(--color-destructive-alt);
}
&.warning {
background-color: var(--color-light-gray-color);
}
}
&.brand-outline,
&.default-outline,
&.square-outline {
border: none;
&.green {
@include transparent-background(var(--color-button-green));
}
&.white {
@include transparent-background(var(--color-text));
}
&.primary {
@include transparent-background(var(--color-dark-gray-color));
}
&.secondary {
@include transparent-background(var(--color-darkest-gray-color));
}
&.danger {
@include transparent-background(var(--color-destructive));
}
&.warning {
@include transparent-background(var(--color-warning));
}
&.warning,
&.danger,
&.secondary,
&.primary,
&.white,
&.green {
&.disabled {
@include transparent-background(var(--color-text-subtle));
&:hover {
@include transparent-background(var(--color-text-subtle));
}
}
}
}
&.brand {
min-width: 165px;
height: 34px;
align-items: center;
padding: 0px var(--margins-lg);
font-size: $session-font-md;
font-family: $session-font-accent;
border-radius: 500px;
&:not(.disabled):hover {
color: var(--color-text);
border-color: var(--color-text);
}
}
&.default,
&.square,
&.default-outline,
&.square-outline {
border-radius: 2px;
height: 33px;
padding: 0px 18px;
font-size: $session-font-sm;
}
&.square,
&.square-outline {
border-radius: 0px;
}
& > *:hover:not(svg) {
filter: brightness(80%);
}
}
.session-label {
color: var(--color-white-color);
padding: var(--margins-sm);
@ -365,10 +223,6 @@ label {
visibility: hidden;
}
.session-button div[role='button'] {
cursor: pointer;
}
.Toastify__toast {
background: var(--color-cell-background);
color: var(--color-text);

@ -176,9 +176,3 @@ $session-transition-duration: 0.25s;
opacity: 1;
}
}
// //////////////////////////////////////////////
// ///////////////// Various ////////////////////
// //////////////////////////////////////////////
$composition-container-height: 60px;

@ -74,7 +74,7 @@
float: left;
}
.session-button.default.danger {
.session-button.danger {
display: flex;
}
}
@ -184,51 +184,6 @@
width: 30px;
}
}
.send-message-input {
cursor: text;
display: flex;
align-items: center;
flex-grow: 1;
min-height: $composition-container-height;
padding: var(--margins-xs) 0;
z-index: 1;
background-color: inherit;
ul {
max-height: 70vh;
overflow: auto;
}
textarea {
font-family: $session-font-default;
min-height: calc($composition-container-height / 3);
max-height: 3 * $composition-container-height;
margin-right: var(--margins-md);
color: var(--color-text);
background: transparent;
resize: none;
display: flex;
flex-grow: 1;
outline: none;
border: none;
font-size: 14px;
line-height: $session-font-h2;
letter-spacing: 0.5px;
}
&__emoji-overlay {
// Should have identical properties to the textarea above to line up perfectly.
position: absolute;
font-size: 14px;
font-family: $session-font-default;
margin-left: 2px;
line-height: $session-font-h2;
letter-spacing: 0.5px;
color: var(--color-transparent-color);
}
}
}
.session-emoji-panel {
@ -325,7 +280,7 @@
}
.session-recording {
height: $composition-container-height;
height: var(--composition-container-height);
display: flex;
justify-content: space-between;
align-items: center;

@ -63,18 +63,6 @@
border-top: none;
}
// bottom button
.session-button.square-outline.danger {
margin-top: auto;
width: 100%;
border: none;
height: $composition-container-height;
flex-shrink: 0;
align-items: center;
border: none;
border-top: var(--border-session);
}
.module-empty-state {
text-align: center;
}

@ -133,6 +133,7 @@ $session-compose-margin: 20px;
}
.session-button {
min-width: 160px;
width: fit-content;
margin-top: 1rem;
margin-bottom: 3rem;

@ -5,9 +5,6 @@
background-color: var(--color-white-color);
}
&-content {
.session-button.brand-outline.brand.green:hover {
background-color: var(--color-accent);
}
&-accent {
&-text {
font-family: $session-font-accent;
@ -197,7 +194,7 @@
justify-content: center;
padding: 20px;
border-radius: 13px;
border: 1px solid subtle(var(--color-darker-gray-color));
border: 1px solid var(--border-color);
margin-bottom: 20px;
textarea {

@ -6,7 +6,7 @@ import {
switchHtmlToLightTheme,
} from '../themes/SessionTheme';
import { fetch } from '../util/logging';
import { SessionButton } from './basic/SessionButton';
import { SessionButton, SessionButtonType } from './basic/SessionButton';
const StyledContent = styled.div`
background-color: var(--color-modal-background);
@ -52,6 +52,7 @@ const DebugLogButtons = (props: { content: string }) => {
<div className="buttons">
<SessionButton
text={window.i18n('saveLogToDesktop')}
buttonType={SessionButtonType.Simple}
onClick={() => {
if (props.content.length <= 20) {
// loading

@ -4,7 +4,7 @@ import classNames from 'classnames';
import { SessionIcon } from './icon';
import { withTheme } from 'styled-components';
import autoBind from 'auto-bind';
import { SessionButton, SessionButtonColor, SessionButtonType } from './basic/SessionButton';
import { SessionButton, SessionButtonColor } from './basic/SessionButton';
import { Constants } from '../session';
import { SessionSpinner } from './basic/SessionSpinner';
@ -172,22 +172,20 @@ class SessionPasswordPromptInner extends React.PureComponent<{}, State> {
return (
<div className={classNames(showResetElements && 'button-group')}>
<SessionButton
text={window.i18n('unlock')}
buttonColor={SessionButtonColor.Primary}
onClick={this.initLogin}
/>
{showResetElements && (
<>
<SessionButton
text="Reset Database"
buttonType={SessionButtonType.BrandOutline}
buttonColor={SessionButtonColor.Danger}
onClick={this.initClearDataView}
/>
</>
)}
<SessionButton
text={window.i18n('unlock')}
buttonType={SessionButtonType.BrandOutline}
buttonColor={SessionButtonColor.Green}
onClick={this.initLogin}
/>
</div>
);
}
@ -195,21 +193,17 @@ class SessionPasswordPromptInner extends React.PureComponent<{}, State> {
private renderClearDataViewButtons(): JSX.Element {
return (
<div className="button-group">
<SessionButton
text={window.i18n('clearAllData')}
buttonColor={SessionButtonColor.Danger}
onClick={window.clearLocalData}
/>
<SessionButton
text={window.i18n('cancel')}
buttonType={SessionButtonType.Default}
buttonColor={SessionButtonColor.Primary}
onClick={() => {
this.setState({ clearDataView: false });
}}
/>
<SessionButton
text={window.i18n('clearAllData')}
buttonType={SessionButtonType.Default}
buttonColor={SessionButtonColor.Danger}
onClick={window.clearLocalData}
/>
</div>
);
}

@ -5,7 +5,7 @@ import { SessionIconButton } from './icon/';
// tslint:disable-next-line: no-submodule-imports
import useKey from 'react-use/lib/useKey';
import { SessionButton } from './basic/SessionButton';
import { SessionButton, SessionButtonColor, SessionButtonType } from './basic/SessionButton';
export type SessionWrapperModalType = {
title?: string;
@ -113,16 +113,20 @@ export const SessionWrapperModal = (props: SessionWrapperModalType) => {
{props.children}
<div className="session-modal__button-group">
{onClose && showClose ? (
<SessionButton onClick={props.onClose}>
{cancelText || window.i18n('close')}
</SessionButton>
) : null}
{onConfirm ? (
<SessionButton onClick={props.onConfirm}>
<SessionButton buttonType={SessionButtonType.Simple} onClick={props.onConfirm}>
{confirmText || window.i18n('ok')}
</SessionButton>
) : null}
{onClose && showClose ? (
<SessionButton
buttonType={SessionButtonType.Simple}
buttonColor={SessionButtonColor.Danger}
onClick={props.onClose}
>
{cancelText || window.i18n('close')}
</SessionButton>
) : null}
</div>
</div>
</div>

@ -1,32 +1,114 @@
import React, { ReactNode } from 'react';
import classNames from 'classnames';
import styled from 'styled-components';
export enum SessionButtonType {
Brand = 'brand',
BrandOutline = 'brand-outline',
Default = 'default',
DefaultOutline = 'default-outline',
Square = 'square',
SquareOutline = 'square-outline',
Outline = 'outline',
Simple = 'simple',
Solid = 'solid',
}
export enum SessionButtonShape {
Round = 'round',
Square = 'square',
}
// NOTE References ts/themes/colors.tsx
export enum SessionButtonColor {
Green = 'green',
Blue = 'blue',
Yellow = 'yellow',
Pink = 'pink',
Purple = 'purple',
Orange = 'orange',
Red = 'red',
White = 'white',
Primary = 'primary',
Secondary = 'secondary',
Success = 'success',
Danger = 'danger',
Warning = 'warning',
None = '',
None = 'transparent',
}
const StyledButton = styled.div<{
color: string | undefined;
buttonType: SessionButtonType;
buttonShape: SessionButtonShape;
}>`
width: auto;
display: flex;
justify-content: center;
align-items: center;
font-size: var(--font-size-md);
font-weight: 700;
user-select: none;
white-space: nowrap;
cursor: pointer;
transition: var(--default-duration);
background-repeat: no-repeat;
overflow: hidden;
height: 34px;
padding: 0px 18px;
background-color: ${props =>
props.buttonType === SessionButtonType.Solid && props.color
? `var(--${props.color}-color)`
: `var(--button-${props.buttonType}-background-color)`};
color: ${props =>
props.color
? props.buttonType !== SessionButtonType.Solid
? `var(--${props.color}-color)`
: 'var(--white-color)'
: `var(--button-${props.buttonType}-text-color)`};
${props =>
props.buttonType === SessionButtonType.Outline &&
`outline: none; border: 1px solid ${
props.color ? `var(--${props.color}-color)` : 'var(--button-outline-border-color)'
}`};
${props =>
props.buttonType === SessionButtonType.Solid &&
'box-shadow: 0px 0px 6px var(--button-solid-shadow-color);'}
border-radius: ${props => (props.buttonShape === SessionButtonShape.Round ? '17px' : '6px')};
.session-icon {
fill: var(--background-primary-color);
}
& > *:hover:not(svg) {
filter: brightness(80%);
}
&.disabled {
cursor: not-allowed;
outline: none;
${props =>
props.buttonType === SessionButtonType.Solid
? 'background-color: var(--button-solid-disabled-color)'
: props.buttonType === SessionButtonType.Outline
? 'border: 1px solid var(--button-outline-disabled-color)'
: ''};
color: ${props =>
props.buttonType === SessionButtonType.Solid
? 'var(--button-solid-text-color)'
: `var(--button-${props.buttonType}-disabled-color)`};
}
&:not(.disabled) {
&:hover {
${props =>
props.buttonType &&
`background-color: var(--button-${props.buttonType}-background-hover-color);`};
${props => props.color && `color: var(--button-${props.buttonType}-text-color);`}
${props =>
props.buttonType === SessionButtonType.Outline &&
'outline: none; border: 1px solid var(--button-outline-border-hover-color);'};
}
}
`;
type Props = {
text?: string;
disabled?: boolean;
buttonType: SessionButtonType;
buttonColor: SessionButtonColor;
buttonShape: SessionButtonShape;
buttonColor?: SessionButtonColor; // will override theme
onClick: any;
children?: ReactNode;
margin?: string;
@ -34,7 +116,16 @@ type Props = {
};
export const SessionButton = (props: Props) => {
const { buttonType, dataTestId, buttonColor, text, disabled, onClick, margin } = props;
const {
buttonType,
buttonShape,
dataTestId,
buttonColor,
text,
disabled,
onClick,
margin,
} = props;
const clickHandler = (e: any) => {
if (onClick) {
@ -42,31 +133,33 @@ export const SessionButton = (props: Props) => {
onClick();
}
};
const buttonTypes = [];
const onClickFn = disabled ? () => null : clickHandler;
buttonTypes.push(buttonType);
if (buttonType.includes('-outline')) {
buttonTypes.push(buttonType.replace('-outline', ''));
}
return (
<div
className={classNames('session-button', ...buttonTypes, buttonColor, disabled && 'disabled')}
<StyledButton
color={buttonColor}
buttonShape={buttonShape}
buttonType={buttonType}
className={classNames(
'session-button',
buttonShape,
buttonType,
buttonColor ?? '',
disabled && 'disabled'
)}
role="button"
onClick={onClickFn}
data-testid={dataTestId}
style={{ margin }}
>
{props.children || text}
</div>
</StyledButton>
);
};
SessionButton.defaultProps = {
disabled: false,
buttonType: SessionButtonType.Default,
buttonColor: SessionButtonColor.Primary,
buttonShape: SessionButtonShape.Round,
buttonType: SessionButtonType.Outline,
onClick: null,
} as Partial<Props>;

@ -8,7 +8,7 @@ import { CallManager } from '../../session/utils';
import { callTimeoutMs } from '../../session/utils/calling/CallManager';
import { getHasIncomingCall, getHasIncomingCallFrom } from '../../state/selectors/call';
import { Avatar, AvatarSize } from '../avatar/Avatar';
import { SessionButton, SessionButtonColor } from '../basic/SessionButton';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import { SessionWrapperModal } from '../SessionWrapperModal';
export const CallWindow = styled.div`
@ -79,16 +79,17 @@ export const IncomingCallDialog = () => {
<Avatar size={AvatarSize.XL} pubkey={incomingCallFromPubkey} />
</IncomingCallAvatarContainer>
<div className="session-modal__button-group">
<SessionButton
text={window.i18n('accept')}
buttonType={SessionButtonType.Simple}
onClick={handleAcceptIncomingCall}
/>
<SessionButton
text={window.i18n('decline')}
buttonColor={SessionButtonColor.Danger}
buttonType={SessionButtonType.Simple}
onClick={handleDeclineIncomingCall}
/>
<SessionButton
text={window.i18n('accept')}
onClick={handleAcceptIncomingCall}
buttonColor={SessionButtonColor.Green}
/>
</div>
</SessionWrapperModal>
);

@ -39,7 +39,12 @@ import {
useIsKickedFromGroup,
useIsRequest,
} from '../../hooks/useParamSelector';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import {
SessionButton,
SessionButtonColor,
SessionButtonShape,
SessionButtonType,
} from '../basic/SessionButton';
import { SessionIconButton } from '../icon';
import { ConversationHeaderMenu } from '../menu/ConversationHeaderMenu';
import { Flex } from '../basic/Flex';
@ -117,15 +122,17 @@ const SelectionOverlay = () => {
<div className="button-group">
{!isOnlyServerDeletable && (
<SessionButton
buttonType={SessionButtonType.Default}
buttonColor={SessionButtonColor.Danger}
buttonShape={SessionButtonShape.Square}
buttonType={SessionButtonType.Solid}
text={deleteMessageButtonText}
onClick={onDeleteSelectedMessages}
/>
)}
<SessionButton
buttonType={SessionButtonType.Default}
buttonColor={SessionButtonColor.Danger}
buttonShape={SessionButtonShape.Square}
buttonType={SessionButtonType.Solid}
text={deleteForEveryoneMessageButtonText}
onClick={onDeleteSelectedMessagesForEveryone}
/>

@ -11,7 +11,7 @@ import {
getSelectedConversation,
hasSelectedConversationIncomingMessages,
} from '../../state/selectors/conversations';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import { SessionButton, SessionButtonColor } from '../basic/SessionButton';
const handleDeclineConversationRequest = (convoId: string) => {
declineConversationWithConfirm(convoId, true);
@ -42,8 +42,7 @@ export const ConversationMessageRequestButtons = () => {
<ConversationRequestBanner>
<ConversationBannerRow>
<SessionButton
buttonColor={SessionButtonColor.Green}
buttonType={SessionButtonType.BrandOutline}
buttonColor={SessionButtonColor.Primary}
onClick={async () => {
await handleAcceptConversationRequest(selectedConversation.id);
}}
@ -52,7 +51,6 @@ export const ConversationMessageRequestButtons = () => {
/>
<SessionButton
buttonColor={SessionButtonColor.Danger}
buttonType={SessionButtonType.BrandOutline}
text={window.i18n('decline')}
onClick={() => {
handleDeclineConversationRequest(selectedConversation.id);

@ -11,7 +11,7 @@ import {
isMessageSelectionMode,
} from '../../state/selectors/conversations';
import { getAudioAutoplay } from '../../state/selectors/userConfig';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import { SessionButton, SessionButtonType } from '../basic/SessionButton';
import { SessionIcon } from '../icon';
const StyledSpeedButton = styled.div`
@ -25,10 +25,8 @@ const StyledSpeedButton = styled.div`
.session-button {
transition: none;
&:hover {
color: var(--color-text-opposite);
}
width: 34px;
padding: 0px;
}
`;
@ -126,7 +124,6 @@ export const AudioPlayerWithEncryptedFile = (props: {
setPlaybackSpeed(playbackSpeed === 1 ? 1.5 : 1);
}}
buttonType={SessionButtonType.Simple}
buttonColor={SessionButtonColor.None}
/>
</StyledSpeedButton>,
]}

@ -27,6 +27,7 @@ import { SpacerLG } from '../basic/Text';
import { MediaItemType } from '../lightbox/LightboxGallery';
import { MediaGallery } from './media-gallery/MediaGallery';
import { getAbsoluteAttachmentPath } from '../../types/MessageAttachment';
import styled from 'styled-components';
async function getMediaGalleryProps(
conversationId: string
@ -141,6 +142,25 @@ const HeaderItem = () => {
);
};
const StyledLeaveButton = styled.div`
width: 100%;
.session-button {
margin-top: auto;
width: 100%;
height: var(--composition-container-height);
flex-shrink: 0;
align-items: center;
border-top: var(--border-color);
border-radius: 0px;
&:not(.disabled) {
&:hover {
background-color: var(--button-solid-background-hover-color);
}
}
}
`;
// tslint:disable: cyclomatic-complexity
// tslint:disable: max-func-body-length
export const SessionRightPanelWithDetails = () => {
@ -302,13 +322,15 @@ export const SessionRightPanelWithDetails = () => {
<MediaGallery documents={documents} media={media} />
{isGroup && (
// tslint:disable-next-line: use-simple-attributes
<SessionButton
text={leaveGroupString}
buttonColor={SessionButtonColor.Danger}
disabled={isKickedFromGroup || left}
buttonType={SessionButtonType.SquareOutline}
onClick={deleteConvoAction}
/>
<StyledLeaveButton>
<SessionButton
text={leaveGroupString}
buttonColor={SessionButtonColor.Danger}
buttonType={SessionButtonType.Simple}
disabled={isKickedFromGroup || left}
onClick={deleteConvoAction}
/>
</StyledLeaveButton>
)}
</div>
);

@ -218,7 +218,7 @@ const StyledSendMessageInput = styled.div`
display: flex;
align-items: center;
flex-grow: 1;
min-height: var(--compositionContainerHeight);
min-height: var(--composition-container-height);
padding: var(--margins-xs) 0;
z-index: 1;
background-color: inherit;
@ -230,8 +230,8 @@ const StyledSendMessageInput = styled.div`
textarea {
font-family: var(--font-default);
min-height: calc(var(--compositionContainerHeight) / 3);
max-height: 3 * var(--compositionContainerHeight);
min-height: calc(var(--composition-container-height) / 3);
max-height: 3 * var(--composition-container-height);
margin-right: var(--margins-md);
color: var(--color-text);

@ -2,7 +2,7 @@ import React, { useState } from 'react';
import { SpacerLG } from '../basic/Text';
import { getConversationController } from '../../session/conversations';
import { adminLeaveClosedGroup } from '../../state/ducks/modalDialog';
import { SessionButton, SessionButtonColor } from '../basic/SessionButton';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import { SessionWrapperModal } from '../SessionWrapperModal';
type Props = {
@ -37,8 +37,17 @@ export const AdminLeaveClosedGroupDialog = (props: Props) => {
<p>{warningAsAdmin}</p>
<div className="session-modal__button-group">
<SessionButton text={cancelText} onClick={closeDialog} />
<SessionButton text={okText} onClick={onClickOK} buttonColor={SessionButtonColor.Danger} />
<SessionButton
text={okText}
buttonColor={SessionButtonColor.Danger}
buttonType={SessionButtonType.Simple}
onClick={onClickOK}
/>
<SessionButton
text={cancelText}
buttonType={SessionButtonType.Simple}
onClick={closeDialog}
/>
</div>
</SessionWrapperModal>
);

@ -141,8 +141,7 @@ export const BanOrUnBanUserDialog = (props: {
/>
<Flex container={true}>
<SessionButton
buttonType={SessionButtonType.Square}
buttonColor={SessionButtonColor.Primary}
buttonType={SessionButtonType.Simple}
onClick={banOrUnBanUser}
text={buttonText}
disabled={inProgress}
@ -151,7 +150,7 @@ export const BanOrUnBanUserDialog = (props: {
<>
<SpacerSM />
<SessionButton
buttonType={SessionButtonType.Square}
buttonType={SessionButtonType.Simple}
buttonColor={SessionButtonColor.Danger}
onClick={startBanAndDeleteAllSequence}
text={i18n('banUserAndDeleteAll')}

@ -5,7 +5,7 @@ import { forceNetworkDeletion } from '../../session/apis/snode_api/SNodeAPI';
import { forceSyncConfigurationNowIfNeeded } from '../../session/utils/syncUtils';
import { updateConfirmModal, updateDeleteAccountModal } from '../../state/ducks/modalDialog';
import { SpacerLG } from '../basic/Text';
import { SessionButton, SessionButtonColor } from '../basic/SessionButton';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import { SessionHtmlRenderer } from '../basic/SessionHTMLRenderer';
import { SessionSpinner } from '../basic/SessionSpinner';
import { SessionWrapperModal } from '../SessionWrapperModal';
@ -193,6 +193,7 @@ export const DeleteAccountModal = () => {
<SessionButton
text={window.i18n('entireAccount')}
buttonColor={SessionButtonColor.Danger}
buttonType={SessionButtonType.Simple}
onClick={() => {
setDeleteEverythingWithNetwork(true);
}}
@ -201,7 +202,7 @@ export const DeleteAccountModal = () => {
<SessionButton
text={window.i18n('deviceOnly')}
buttonColor={SessionButtonColor.Primary}
buttonType={SessionButtonType.Simple}
onClick={() => {
setDeleteDeviceOnly(true);
}}
@ -232,6 +233,7 @@ export const DeleteAccountModal = () => {
<SessionButton
text={window.i18n('iAmSure')}
buttonColor={SessionButtonColor.Danger}
buttonType={SessionButtonType.Simple}
onClick={() => {
if (deleteDeviceOnly) {
void onDeleteEverythingLocallyOnly();
@ -244,7 +246,7 @@ export const DeleteAccountModal = () => {
<SessionButton
text={window.i18n('cancel')}
buttonColor={SessionButtonColor.Primary}
buttonType={SessionButtonType.Simple}
onClick={() => {
dispatch(updateDeleteAccountModal(null));
}}

@ -9,11 +9,10 @@ import { SyncUtils, ToastUtils, UserUtils } from '../../session/utils';
import { ConversationModel } from '../../models/conversation';
import { getConversationController } from '../../session/conversations';
import { SpacerLG, SpacerMD } from '../basic/Text';
import autoBind from 'auto-bind';
import { editProfileModal } from '../../state/ducks/modalDialog';
import { uploadOurAvatar } from '../../interactions/conversationInteractions';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import { SessionButton, SessionButtonType } from '../basic/SessionButton';
import { SessionSpinner } from '../basic/SessionSpinner';
import { SessionIconButton } from '../icon';
import { MAX_USERNAME_LENGTH } from '../registration/RegistrationStages';
@ -98,8 +97,6 @@ export class EditProfileDialog extends React.Component<{}, State> {
headerIconButtons={backButton}
showExitIcon={true}
>
<SpacerMD />
{viewQR && <QRView sessionID={sessionID} />}
{viewDefault && this.renderDefaultView()}
{viewEdit && this.renderEditView()}
@ -108,14 +105,12 @@ export class EditProfileDialog extends React.Component<{}, State> {
<YourSessionIDPill />
<YourSessionIDSelectable />
<SpacerLG />
<SessionSpinner loading={this.state.loading} />
{viewDefault || viewQR ? (
<SessionButton
text={window.i18n('editMenuCopy')}
buttonType={SessionButtonType.BrandOutline}
buttonColor={SessionButtonColor.Green}
buttonType={SessionButtonType.Simple}
onClick={() => {
window.clipboard.writeText(sessionID);
ToastUtils.pushCopiedToClipBoard();
@ -126,16 +121,13 @@ export class EditProfileDialog extends React.Component<{}, State> {
!this.state.loading && (
<SessionButton
text={window.i18n('save')}
buttonType={SessionButtonType.BrandOutline}
buttonColor={SessionButtonColor.Green}
buttonType={SessionButtonType.Simple}
onClick={this.onClickOK}
disabled={this.state.loading}
dataTestId="save-button-profile-update"
/>
)
)}
<SpacerLG />
</div>
</SessionWrapperModal>
</div>

@ -11,7 +11,7 @@ import { useDispatch, useSelector } from 'react-redux';
import { updateInviteContactModal } from '../../state/ducks/modalDialog';
// tslint:disable-next-line: no-submodule-imports
import useKey from 'react-use/lib/useKey';
import { SessionButton, SessionButtonColor } from '../basic/SessionButton';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import { MemberListItem } from '../MemberListItem';
import { SessionWrapperModal } from '../SessionWrapperModal';
import { getPrivateContactsPubkeys } from '../../state/selectors/conversations';
@ -177,12 +177,17 @@ const InviteContactsDialogInner = (props: Props) => {
<SpacerLG />
<div className="session-modal__button-group">
<SessionButton text={cancelText} onClick={closeDialog} />
<SessionButton
text={okText}
buttonType={SessionButtonType.Simple}
disabled={!hasContacts}
onClick={onClickOK}
buttonColor={SessionButtonColor.Green}
/>
<SessionButton
text={cancelText}
buttonColor={SessionButtonColor.Danger}
buttonType={SessionButtonType.Simple}
onClick={closeDialog}
/>
</div>
</SessionWrapperModal>

@ -5,7 +5,7 @@ import { Flex } from '../basic/Flex';
import { getConversationController } from '../../session/conversations';
import { useDispatch, useSelector } from 'react-redux';
import { updateAddModeratorsModal } from '../../state/ducks/modalDialog';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import { SessionButton, SessionButtonType } from '../basic/SessionButton';
import { SessionSpinner } from '../basic/SessionSpinner';
import { SessionWrapperModal } from '../SessionWrapperModal';
import { sogsV3AddAdmin } from '../../session/apis/open_group_api/sogsv3/sogsV3AddRemoveMods';
@ -93,8 +93,7 @@ export const AddModeratorsDialog = (props: Props) => {
autoFocus={true}
/>
<SessionButton
buttonType={SessionButtonType.Brand}
buttonColor={SessionButtonColor.Primary}
buttonType={SessionButtonType.Simple}
onClick={addAsModerator}
text={i18n('add')}
disabled={addingInProgress}

@ -105,15 +105,14 @@ export const RemoveModeratorsDialog = (props: Props) => {
<div className="session-modal__button-group">
<SessionButton
buttonType={SessionButtonType.Brand}
buttonColor={SessionButtonColor.Green}
buttonType={SessionButtonType.Simple}
onClick={removeModsCall}
disabled={removingInProgress}
text={i18n('ok')}
/>
<SessionButton
buttonType={SessionButtonType.Brand}
buttonColor={SessionButtonColor.Primary}
buttonType={SessionButtonType.Simple}
buttonColor={SessionButtonColor.Danger}
onClick={closeDialog}
disabled={removingInProgress}
text={i18n('cancel')}

@ -66,8 +66,6 @@ export const ReactClearAllModal = (props: Props): ReactElement => {
.get(convoId)
.toOpenGroupV2();
const confirmButtonColor = darkMode ? SessionButtonColor.Green : SessionButtonColor.Secondary;
const handleClose = () => {
dispatch(updateReactClearAllModal(null));
};
@ -99,15 +97,14 @@ export const ReactClearAllModal = (props: Props): ReactElement => {
<StyledButtonContainer className="session-modal__button-group">
<SessionButton
text={window.i18n('clear')}
buttonColor={confirmButtonColor}
buttonType={SessionButtonType.BrandOutline}
buttonColor={SessionButtonColor.Danger}
buttonType={SessionButtonType.Simple}
onClick={handleClearAll}
disabled={clearingInProgress}
/>
<SessionButton
text={window.i18n('cancel')}
buttonColor={SessionButtonColor.Danger}
buttonType={SessionButtonType.BrandOutline}
buttonType={SessionButtonType.Simple}
onClick={handleClose}
disabled={clearingInProgress}
/>

@ -16,6 +16,7 @@ import { nativeEmojiData } from '../../util/emoji';
import { Reactions } from '../../util/reactions';
import { Avatar, AvatarSize } from '../avatar/Avatar';
import { Flex } from '../basic/Flex';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import { SessionHtmlRenderer } from '../basic/SessionHTMLRenderer';
import { ContactName } from '../conversation/ContactName';
import { MessageReactions } from '../conversation/message/message-content/MessageReactions';
@ -61,6 +62,11 @@ const StyledReactionBar = styled(Flex)`
margin-right: 8px;
}
}
.session-button {
font-weight: 400;
padding: 0px;
}
`;
const StyledReactionSender = styled(Flex)`
@ -76,12 +82,6 @@ const StyledReactionSender = styled(Flex)`
}
`;
const StyledClearButton = styled.button`
font-size: var(--font-size-sm);
color: var(--color-destructive);
border: none;
`;
type ReactionSendersProps = {
messageId: string;
currentReact: string;
@ -348,9 +348,12 @@ export const ReactListModal = (props: Props): ReactElement => {
)}
</p>
{isPublic && weAreModerator && (
<StyledClearButton onClick={handleClearReactions}>
{window.i18n('clearAll')}
</StyledClearButton>
<SessionButton
text={window.i18n('clearAll')}
buttonColor={SessionButtonColor.Danger}
buttonType={SessionButtonType.Simple}
onClick={handleClearReactions}
/>
)}
</StyledReactionBar>
{senders && senders.length > 0 && (

@ -2,7 +2,7 @@ import React, { useState } from 'react';
import { SessionHtmlRenderer } from '../basic/SessionHTMLRenderer';
import { updateConfirmModal } from '../../state/ducks/modalDialog';
import { SpacerLG } from '../basic/Text';
import { SessionButton, SessionButtonColor } from '../basic/SessionButton';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import { SessionSpinner } from '../basic/SessionSpinner';
import { SessionIcon, SessionIconSize, SessionIconType } from '../icon';
import { SessionWrapperModal } from '../SessionWrapperModal';
@ -45,8 +45,8 @@ export const SessionConfirm = (props: SessionConfirmDialogProps) => {
title = '',
message = '',
messageSub = '',
okTheme = SessionButtonColor.Primary,
closeTheme = SessionButtonColor.Primary,
okTheme,
closeTheme = SessionButtonColor.Danger,
onClickOk,
onClickClose,
hideCancel = false,
@ -133,6 +133,7 @@ export const SessionConfirm = (props: SessionConfirmDialogProps) => {
<SessionButton
text={okText}
buttonColor={okTheme}
buttonType={SessionButtonType.Simple}
onClick={onClickOkHandler}
dataTestId="session-confirm-ok-button"
/>
@ -140,6 +141,7 @@ export const SessionConfirm = (props: SessionConfirmDialogProps) => {
<SessionButton
text={cancelText}
buttonColor={closeTheme}
buttonType={SessionButtonType.Simple}
onClick={onClickCancelHandler}
dataTestId="session-confirm-cancel-button"
/>

@ -5,7 +5,7 @@ import _ from 'lodash';
import { SpacerLG } from '../basic/Text';
import { useDispatch } from 'react-redux';
import { changeNickNameModal } from '../../state/ducks/modalDialog';
import { SessionButton, SessionButtonColor } from '../basic/SessionButton';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import { SessionWrapperModal } from '../SessionWrapperModal';
type Props = {
@ -70,11 +70,16 @@ export const SessionNicknameDialog = (props: Props) => {
/>
<div className="session-modal__button-group">
<SessionButton text={window.i18n('cancel')} onClick={onClickClose} />
<SessionButton
text={window.i18n('ok')}
buttonType={SessionButtonType.Simple}
onClick={saveNickname}
buttonColor={SessionButtonColor.Green}
/>
<SessionButton
text={window.i18n('cancel')}
buttonColor={SessionButtonColor.Danger}
buttonType={SessionButtonType.Simple}
onClick={onClickClose}
/>
</div>
</SessionWrapperModal>

@ -7,7 +7,7 @@ import { SpacerLG, SpacerSM } from '../basic/Text';
import autoBind from 'auto-bind';
import { sessionPassword } from '../../state/ducks/modalDialog';
import { LocalizerKeys } from '../../types/LocalizerKeys';
import { SessionButton, SessionButtonColor } from '../basic/SessionButton';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import { SessionWrapperModal } from '../SessionWrapperModal';
import { matchesHash, validatePassword } from '../../util/passwordUtils';
@ -59,8 +59,6 @@ export class SessionPasswordDialog extends React.Component<Props, State> {
]
: [window.i18n('enterPassword'), window.i18n('confirmPassword')];
const confirmButtonColor =
passwordAction === 'remove' ? SessionButtonColor.Danger : SessionButtonColor.Green;
// do this separately so typescript's compiler likes it
const localizedKeyAction: LocalizerKeys =
passwordAction === 'change'
@ -108,12 +106,18 @@ export class SessionPasswordDialog extends React.Component<Props, State> {
{this.showError()}
<div className="session-modal__button-group">
<SessionButton text={window.i18n('cancel')} onClick={this.closeDialog} />
<SessionButton
text={window.i18n('ok')}
buttonColor={confirmButtonColor}
buttonColor={passwordAction === 'remove' ? SessionButtonColor.Danger : undefined}
buttonType={SessionButtonType.Simple}
onClick={this.setPassword}
/>
<SessionButton
text={window.i18n('cancel')}
buttonColor={passwordAction !== 'remove' ? SessionButtonColor.Danger : undefined}
buttonType={SessionButtonType.Simple}
onClick={this.closeDialog}
/>
</div>
</SessionWrapperModal>
);

@ -8,7 +8,7 @@ import { mn_decode } from '../../session/crypto/mnemonic';
import { SpacerLG, SpacerSM, SpacerXS } from '../basic/Text';
import { recoveryPhraseModal } from '../../state/ducks/modalDialog';
import { useDispatch } from 'react-redux';
import { SessionButton, SessionButtonColor } from '../basic/SessionButton';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import { SessionWrapperModal } from '../SessionWrapperModal';
import { getCurrentRecoveryPhrase } from '../../util/storage';
@ -72,8 +72,17 @@ const Password = (props: PasswordProps) => {
<SpacerLG />
<div className="session-modal__button-group">
<SessionButton text={i18n('cancel')} onClick={onClose} />
<SessionButton text={i18n('ok')} onClick={confirmPassword} />
<SessionButton
text={i18n('ok')}
buttonType={SessionButtonType.Simple}
onClick={confirmPassword}
/>
<SessionButton
text={i18n('cancel')}
buttonType={SessionButtonType.Simple}
buttonColor={SessionButtonColor.Danger}
onClick={onClose}
/>
</div>
</>
);
@ -105,27 +114,26 @@ const Seed = (props: SeedProps) => {
return (
<>
<div className="session-modal__centered text-center">
<p className="session-modal__description">{i18n('recoveryPhraseSavePromptMain')}</p>
<SpacerXS />
<p className="session-modal__description" style={{ marginTop: '0px' }}>
{i18n('recoveryPhraseSavePromptMain')}
</p>
<i data-testid="recovery-phrase-seed-modal" className="session-modal__text-highlight">
{recoveryPhrase}
</i>
</div>
<SpacerLG />
<div className="qr-image">
<QRCode value={hexEncodedSeed} bgColor={bgColor} fgColor={fgColor} level="L" />
</div>
<div className="session-modal__button-group">
<SessionButton
text={i18n('editMenuCopy')}
buttonColor={SessionButtonColor.Green}
buttonType={SessionButtonType.Simple}
onClick={() => {
copyRecoveryPhrase(recoveryPhrase);
}}
/>
</div>
<SpacerLG />
<div className="qr-image">
<QRCode value={hexEncodedSeed} bgColor={bgColor} fgColor={fgColor} level="L" />
</div>
</>
);
};

@ -5,7 +5,7 @@ import { ToastUtils, UserUtils } from '../../session/utils';
import _ from 'lodash';
import { SpacerLG, Text } from '../basic/Text';
import { updateGroupMembersModal } from '../../state/ducks/modalDialog';
import { SessionButton, SessionButtonColor } from '../basic/SessionButton';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import { MemberListItem } from '../MemberListItem';
import { SessionWrapperModal } from '../SessionWrapperModal';
import { useDispatch } from 'react-redux';
@ -243,10 +243,15 @@ export const UpdateGroupMembersDialog = (props: Props) => {
<SpacerLG />
<div className="session-modal__button-group">
<SessionButton text={cancelText} onClick={closeDialog} />
{weAreAdmin && (
<SessionButton text={okText} onClick={onClickOK} buttonColor={SessionButtonColor.Green} />
<SessionButton text={okText} onClick={onClickOK} buttonType={SessionButtonType.Simple} />
)}
<SessionButton
text={cancelText}
buttonColor={weAreAdmin ? SessionButtonColor.Danger : undefined}
buttonType={SessionButtonType.Simple}
onClick={closeDialog}
/>
</div>
</SessionWrapperModal>
);

@ -8,7 +8,7 @@ import autoBind from 'auto-bind';
import { ConversationModel } from '../../models/conversation';
import { getConversationController } from '../../session/conversations';
import { SessionWrapperModal } from '../SessionWrapperModal';
import { SessionButton, SessionButtonColor } from '../basic/SessionButton';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import { initiateOpenGroupUpdate } from '../../session/group/open-group';
import { initiateClosedGroupUpdate } from '../../session/group/closed-group';
import { pickFileForAvatar } from '../../types/attachments/VisualAttachment';
@ -129,12 +129,16 @@ export class UpdateGroupNameDialog extends React.Component<Props, State> {
) : null}
<div className="session-modal__button-group">
<SessionButton text={cancelText} onClick={this.closeDialog} />
<SessionButton
text={okText}
onClick={this.onClickOK}
buttonColor={SessionButtonColor.Green}
buttonType={SessionButtonType.Simple}
/>
<SessionButton
text={cancelText}
buttonColor={SessionButtonColor.Danger}
buttonType={SessionButtonType.Simple}
onClick={this.closeDialog}
/>
</div>
</SessionWrapperModal>

@ -10,7 +10,7 @@ import { ToastUtils } from '../../session/utils';
import { openConversationWithMessages } from '../../state/ducks/conversations';
import { updateUserDetailsModal, UserDetailsModalState } from '../../state/ducks/modalDialog';
import { Avatar, AvatarSize } from '../avatar/Avatar';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import { SessionButton, SessionButtonType } from '../basic/SessionButton';
import { SessionIdEditable } from '../basic/SessionIdEditable';
import { SpacerLG } from '../basic/Text';
import { SessionWrapperModal } from '../SessionWrapperModal';
@ -73,21 +73,19 @@ export const UserDetailsDialog = (props: UserDetailsModalState) => {
<SessionIdEditable editable={false} text={props.conversationId} />
<div className="session-modal__button-group__center">
<SessionButton
text={window.i18n('startConversation')}
buttonType={SessionButtonType.Simple}
onClick={onClickStartConversation}
/>
<SessionButton
text={window.i18n('editMenuCopy')}
buttonType={SessionButtonType.Default}
buttonColor={SessionButtonColor.Primary}
buttonType={SessionButtonType.Simple}
onClick={() => {
copyToClipboard(props.conversationId);
ToastUtils.pushCopiedToClipBoard();
}}
/>
<SessionButton
text={window.i18n('startConversation')}
buttonType={SessionButtonType.Default}
buttonColor={SessionButtonColor.Green}
onClick={onClickStartConversation}
/>
</div>
</SessionWrapperModal>
);

@ -7,7 +7,7 @@ import { recoveryPhraseModal } from '../../state/ducks/modalDialog';
import { Flex } from '../basic/Flex';
import { getFocusedSection, getOverlayMode } from '../../state/selectors/section';
import { SectionType } from '../../state/ducks/section';
import { SessionButton, SessionButtonType } from '../basic/SessionButton';
import { SessionButton } from '../basic/SessionButton';
import { isSignWithRecoveryPhrase } from '../../util/storage';
import { MenuButton } from '../button/MenuButton';
@ -59,7 +59,7 @@ const StyledBannerInner = styled.div`
}
.session-button {
margin-top: var(--margins-sm);
margin-top: var(--margins-md);
}
`;
@ -75,7 +75,6 @@ const BannerInner = () => {
<StyledBannerInner>
<p>{window.i18n('recoveryPhraseRevealMessage')}</p>
<SessionButton
buttonType={SessionButtonType.Default}
text={window.i18n('recoveryPhraseRevealButtonText')}
onClick={showRecoveryPhraseModal}
dataTestId="reveal-recovery-phrase"

@ -2,7 +2,7 @@ import React, { useState } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../../basic/SessionButton';
import { SessionButton } from '../../basic/SessionButton';
import { SessionIdEditable } from '../../basic/SessionIdEditable';
import { SessionSpinner } from '../../basic/SessionSpinner';
import { MemberListItem } from '../../MemberListItem';
@ -135,8 +135,6 @@ export const OverlayClosedGroup = () => {
<SpacerLG style={{ flexShrink: 0 }} />
<SessionButton
buttonColor={SessionButtonColor.Green}
buttonType={SessionButtonType.BrandOutline}
text={buttonText}
disabled={disableCreateButton}
onClick={onEnterPressed}

@ -3,7 +3,7 @@ import React, { useState } from 'react';
import { SessionJoinableRooms } from './SessionJoinableDefaultRooms';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../../basic/SessionButton';
import { SessionButton } from '../../basic/SessionButton';
import { SessionIdEditable } from '../../basic/SessionIdEditable';
import { SessionSpinner } from '../../basic/SessionSpinner';
import { OverlayHeader } from './OverlayHeader';
@ -100,13 +100,7 @@ export const OverlayCommunity = () => {
/>
</div>
<SessionButton
buttonColor={SessionButtonColor.Green}
buttonType={SessionButtonType.BrandOutline}
text={buttonText}
disabled={!groupUrl}
onClick={onTryJoinRoom}
/>
<SessionButton text={buttonText} disabled={!groupUrl} onClick={onTryJoinRoom} />
<SessionSpinner loading={loading} />
<SessionJoinableRooms onJoinClick={onTryJoinRoom} alreadyJoining={loading} />

@ -2,7 +2,7 @@ import React, { useState } from 'react';
// tslint:disable: use-simple-attributes no-submodule-imports
import { useDispatch } from 'react-redux';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../../basic/SessionButton';
import { SessionButton } from '../../basic/SessionButton';
import { SessionIdEditable } from '../../basic/SessionIdEditable';
import { SessionSpinner } from '../../basic/SessionSpinner';
import { OverlayHeader } from './OverlayHeader';
@ -128,8 +128,6 @@ export const OverlayMessage = () => {
<SessionIconButton iconSize="small" iconType="copy" onClick={copyOurSessionID} />
</Flex>
<SessionButton
buttonColor={SessionButtonColor.Green}
buttonType={SessionButtonType.BrandOutline}
text={buttonText}
disabled={disableNextButton}
onClick={handleMessageButtonClick}

@ -9,7 +9,7 @@ import {
} from '../../../state/selectors/conversations';
import { MemoConversationListItemWithDetails } from '../conversation-list-item/ConversationListItem';
import styled from 'styled-components';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../../basic/SessionButton';
import { SessionButton, SessionButtonColor } from '../../basic/SessionButton';
import { resetOverlayMode, SectionType, showLeftPaneSection } from '../../../state/ducks/section';
import { getConversationController } from '../../../session/conversations';
import { forceSyncConfigurationNowIfNeeded } from '../../../session/utils/syncUtils';
@ -131,7 +131,6 @@ export const OverlayMessageRequest = () => {
<SpacerLG />
<SessionButton
buttonColor={SessionButtonColor.Danger}
buttonType={SessionButtonType.BrandOutline}
text={buttonText}
onClick={() => {
handleClearAllRequestsClick(messageRequests);

@ -1,7 +1,7 @@
import React, { useContext, useState } from 'react';
import { sanitizeSessionUsername } from '../../session/utils/String';
import { Flex } from '../basic/Flex';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import { SessionButton } from '../basic/SessionButton';
import { SessionSpinner } from '../basic/SessionSpinner';
import { SpacerLG } from '../basic/Text';
import {
@ -26,8 +26,6 @@ const LinkDeviceButton = (props: { onLinkDeviceButtonClicked: () => any }) => {
return (
<SessionButton
onClick={props.onLinkDeviceButtonClicked}
buttonType={SessionButtonType.BrandOutline}
buttonColor={SessionButtonColor.Green}
text={window.i18n('linkDevice')}
dataTestId="link-device"
/>
@ -38,8 +36,6 @@ const RestoreUsingRecoveryPhraseButton = (props: { onRecoveryButtonClicked: () =
return (
<SessionButton
onClick={props.onRecoveryButtonClicked}
buttonType={SessionButtonType.BrandOutline}
buttonColor={SessionButtonColor.Green}
text={window.i18n('restoreUsingRecoveryPhrase')}
dataTestId="restore-using-recovery"
/>
@ -53,8 +49,6 @@ const ContinueYourSessionButton = (props: {
return (
<SessionButton
onClick={props.handleContinueYourSessionClick}
buttonType={SessionButtonType.Brand}
buttonColor={SessionButtonColor.Green}
text={window.i18n('continueYourSession')}
disabled={props.disabled}
dataTestId="continue-session-button"

@ -1,7 +1,7 @@
import React, { useContext, useEffect, useState } from 'react';
import { sanitizeSessionUsername } from '../../session/utils/String';
import { Flex } from '../basic/Flex';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import { SessionButton } from '../basic/SessionButton';
import { SessionIdEditable } from '../basic/SessionIdEditable';
import { SessionIconButton } from '../icon';
import { RegistrationContext, RegistrationPhase, signUp } from './RegistrationStages';
@ -16,25 +16,11 @@ export enum SignUpMode {
}
const CreateSessionIdButton = ({ createSessionID }: { createSessionID: any }) => {
return (
<SessionButton
onClick={createSessionID}
buttonType={SessionButtonType.BrandOutline}
buttonColor={SessionButtonColor.Green}
text={window.i18n('createSessionID')}
/>
);
return <SessionButton onClick={createSessionID} text={window.i18n('createSessionID')} />;
};
const ContinueSignUpButton = ({ continueSignUp }: { continueSignUp: any }) => {
return (
<SessionButton
onClick={continueSignUp}
buttonType={SessionButtonType.Brand}
buttonColor={SessionButtonColor.Green}
text={window.i18n('continue')}
/>
);
return <SessionButton onClick={continueSignUp} text={window.i18n('continue')} />;
};
const SignUpDefault = (props: { createSessionID: () => void }) => {
@ -153,8 +139,6 @@ export const SignUpTab = () => {
/>
<SessionButton
onClick={signUpWithDetails}
buttonType={SessionButtonType.Brand}
buttonColor={SessionButtonColor.Green}
text={window.i18n('getStarted')}
disabled={!enableCompleteSignUp}
/>

@ -6,7 +6,7 @@ import styled from 'styled-components';
import { useSet } from '../../hooks/useSet';
import { ToastUtils } from '../../session/utils';
import { BlockedNumberController } from '../../util';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import { SessionButton, SessionButtonColor } from '../basic/SessionButton';
import { SpacerLG } from '../basic/Text';
import { SessionIconButton } from '../icon';
import { MemberListItem } from '../MemberListItem';
@ -130,7 +130,6 @@ export const BlockedContactsList = () => {
{hasAtLeastOneSelected && expanded ? (
<SessionButton
buttonColor={SessionButtonColor.Danger}
buttonType={SessionButtonType.BrandOutline}
text={window.i18n('unblockUser')}
onClick={unBlockThoseUsers}
/>

@ -4,7 +4,7 @@ import useUpdate from 'react-use/lib/useUpdate';
import styled from 'styled-components';
import { SettingsKey } from '../../data/settings-key';
import { Notifications } from '../../util/notifications';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import { SessionButton } from '../basic/SessionButton';
import { SessionRadioGroup } from '../basic/SessionRadioGroup';
import { SpacerLG } from '../basic/Text';
import { SessionSettingsItemWrapper, SessionToggleWithDescription } from './SessionSettingListItem';
@ -100,12 +100,7 @@ export const SessionNotificationGroupSettings = (props: { hasPassword: boolean |
/>
<StyledButtonContainer>
<SpacerLG />
<SessionButton
text={window.i18n('notificationPreview')}
buttonColor={SessionButtonColor.Green}
onClick={onClickPreview}
buttonType={SessionButtonType.BrandOutline}
/>
<SessionButton text={window.i18n('notificationPreview')} onClick={onClickPreview} />
</StyledButtonContainer>
</SessionSettingsItemWrapper>
) : null}

@ -1,5 +1,10 @@
import React from 'react';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import {
SessionButton,
SessionButtonColor,
SessionButtonShape,
SessionButtonType,
} from '../basic/SessionButton';
import { SessionToggle } from '../basic/SessionToggle';
import { SessionConfirmDialogProps } from '../dialog/SessionConfirm';
import styled from 'styled-components';
@ -8,8 +13,9 @@ import { SessionIconButton } from '../icon';
type ButtonSettingsProps = {
title?: string;
description?: string;
buttonColor: SessionButtonColor;
buttonType: SessionButtonType;
buttonColor?: SessionButtonColor;
buttonType?: SessionButtonType;
buttonShape?: SessionButtonShape;
buttonText: string;
dataTestId?: string;
onClick: () => void;
@ -145,7 +151,16 @@ export const SessionToggleWithDescription = (props: {
};
export const SessionSettingButtonItem = (props: ButtonSettingsProps) => {
const { title, description, buttonColor, buttonType, buttonText, dataTestId, onClick } = props;
const {
title,
description,
buttonColor,
buttonType,
buttonShape,
buttonText,
dataTestId,
onClick,
} = props;
return (
<SessionSettingsItemWrapper title={title} description={description} inline={true}>
@ -153,8 +168,9 @@ export const SessionSettingButtonItem = (props: ButtonSettingsProps) => {
dataTestId={dataTestId}
text={buttonText}
buttonColor={buttonColor}
onClick={onClick}
buttonType={buttonType}
buttonShape={buttonShape}
onClick={onClick}
/>
</SessionSettingsItemWrapper>
);

@ -9,7 +9,7 @@ import { SessionNotificationGroupSettings } from './SessionNotificationGroupSett
import { CategoryConversations } from './section/CategoryConversations';
import { SettingsCategoryPrivacy } from './section/CategoryPrivacy';
import { SettingsCategoryAppearance } from './section/CategoryAppearance';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
import { SessionButton, SessionButtonType } from '../basic/SessionButton';
import { Data } from '../../data/data';
import { matchesHash } from '../../util/passwordUtils';
import { SettingsCategoryPermissions } from './section/CategoryPermissions';
@ -126,8 +126,7 @@ const PasswordLock = ({
{pwdLockError && <div className="session-label warning">{pwdLockError}</div>}
<SessionButton
buttonType={SessionButtonType.BrandOutline}
buttonColor={SessionButtonColor.Green}
buttonType={SessionButtonType.Simple}
text={window.i18n('ok')}
onClick={validatePasswordLock}
/>

@ -1,6 +1,6 @@
import { ipcRenderer, shell } from 'electron';
import React from 'react';
import { SessionButtonColor, SessionButtonType } from '../../basic/SessionButton';
import { SessionButtonShape } from '../../basic/SessionButton';
import { SessionSettingButtonItem, SessionSettingsTitleWithLink } from '../SessionSettingListItem';
@ -12,8 +12,7 @@ export const SettingsCategoryHelp = (props: { hasPassword: boolean | null }) =>
onClick={() => {
ipcRenderer.send('show-debug-log');
}}
buttonColor={SessionButtonColor.Primary}
buttonType={SessionButtonType.Square}
buttonShape={SessionButtonShape.Square}
buttonText={window.i18n('showDebugLog')}
title={window.i18n('reportIssue')}
description={window.i18n('shareBugDetails')}

@ -5,7 +5,7 @@ import { Data, hasLinkPreviewPopupBeenDisplayed } from '../../../data/data';
import { SettingsKey } from '../../../data/settings-key';
import { ConversationTypeEnum } from '../../../models/conversationAttributes';
import { sessionPassword, updateConfirmModal } from '../../../state/ducks/modalDialog';
import { SessionButtonColor, SessionButtonType } from '../../basic/SessionButton';
import { SessionButtonColor } from '../../basic/SessionButton';
import { SpacerLG } from '../../basic/Text';
import { TypingBubble } from '../../conversation/TypingBubble';
import { PasswordAction } from '../../dialog/SessionPasswordDialog';
@ -99,8 +99,6 @@ export const SettingsCategoryPrivacy = (props: {
onClick={() => {
displayPasswordModal('set', props.onPasswordUpdated);
}}
buttonColor={SessionButtonColor.Green}
buttonType={SessionButtonType.BrandOutline}
buttonText={window.i18n('setPassword')}
dataTestId={'set-password-button'}
/>
@ -112,8 +110,6 @@ export const SettingsCategoryPrivacy = (props: {
onClick={() => {
displayPasswordModal('change', props.onPasswordUpdated);
}}
buttonColor={SessionButtonColor.Green}
buttonType={SessionButtonType.BrandOutline}
buttonText={window.i18n('changePassword')}
/>
)}
@ -125,7 +121,6 @@ export const SettingsCategoryPrivacy = (props: {
displayPasswordModal('remove', props.onPasswordUpdated);
}}
buttonColor={SessionButtonColor.Danger}
buttonType={SessionButtonType.BrandOutline}
buttonText={window.i18n('removePassword')}
/>
)}

@ -382,7 +382,7 @@ export const SessionGlobalStyles = createGlobalStyle`
--border-session: ${lightColorSessionBorder};
/* CONSTANTS */
--compositionContainerHeight: 60px;
--composition-container-height: 60px;
--search-input-height: 34px;
/* COLORS NOT CHANGING BETWEEN THEMES */
@ -534,10 +534,14 @@ export const SessionGlobalStyles = createGlobalStyle`
--button-solid-background-hover-color: ${THEMES.CLASSIC_LIGHT.COLOR4};
--button-solid-text-color: var(--text-primary-color);
--button-solid-text-hover-color: var(--text-primary-color);
--button-solid-disabled-color: var(--text-secondary-color);
--button-solid-disabled-color: ${THEMES.CLASSIC_LIGHT.COLOR4};
/* TODO Theming - Only light themes have shadows? */
--button-solid-shadow-color: rgba(${hexColorToRGB(THEMES.CLASSIC_LIGHT.COLOR0)}, 0.25);
/* Simple */
/* TODO Theming - Should this be different? */
--button-simple-disabled-color: var(--text-primary-color);
/* Icons */
--button-icon-background-color: var(--transparent-color);
--button-icon-stroke-color: var(--text-secondary-color);

Loading…
Cancel
Save