mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
Remove unused components (#24189)
* Remove unused components * i18n-extract * Fix tests --------- Co-authored-by: Mattermost Build <build@mattermost.com>
This commit is contained in:
parent
b19233d3e3
commit
4a4bf82440
@ -1,121 +0,0 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`components/picture_selector should match snapshot, default picture provided 1`] = `
|
||||
<div
|
||||
className="PictureSelector"
|
||||
>
|
||||
<input
|
||||
accept=".jpeg,.jpg,.png,.bmp"
|
||||
aria-hidden={true}
|
||||
className="PictureSelector__input hidden"
|
||||
data-testid="PictureSelector__input-picture_selector_test"
|
||||
name="picture_selector_test"
|
||||
onChange={[Function]}
|
||||
tabIndex={-1}
|
||||
type="file"
|
||||
/>
|
||||
<div
|
||||
className="PictureSelector__imageContainer"
|
||||
>
|
||||
<div
|
||||
aria-label="Picture selector image"
|
||||
className="PictureSelector__image"
|
||||
style={
|
||||
Object {
|
||||
"backgroundImage": "url(undefined)",
|
||||
}
|
||||
}
|
||||
/>
|
||||
<button
|
||||
aria-label="Select picture"
|
||||
className="PictureSelector__selectButton"
|
||||
data-testid="PictureSelector__selectButton"
|
||||
onClick={[Function]}
|
||||
>
|
||||
<i
|
||||
className="icon icon-pencil-outline"
|
||||
/>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
exports[`components/picture_selector should match snapshot, existing picture provided 1`] = `
|
||||
<div
|
||||
className="PictureSelector"
|
||||
>
|
||||
<input
|
||||
accept=".jpeg,.jpg,.png,.bmp"
|
||||
aria-hidden={true}
|
||||
className="PictureSelector__input hidden"
|
||||
data-testid="PictureSelector__input-picture_selector_test"
|
||||
name="picture_selector_test"
|
||||
onChange={[Function]}
|
||||
tabIndex={-1}
|
||||
type="file"
|
||||
/>
|
||||
<div
|
||||
className="PictureSelector__imageContainer"
|
||||
>
|
||||
<div
|
||||
aria-label="Picture selector image"
|
||||
className="PictureSelector__image"
|
||||
style={
|
||||
Object {
|
||||
"backgroundImage": "url(undefined)",
|
||||
}
|
||||
}
|
||||
/>
|
||||
<button
|
||||
aria-label="Select picture"
|
||||
className="PictureSelector__selectButton"
|
||||
data-testid="PictureSelector__selectButton"
|
||||
onClick={[Function]}
|
||||
>
|
||||
<i
|
||||
className="icon icon-pencil-outline"
|
||||
/>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
exports[`components/picture_selector should match snapshot, no picture selected 1`] = `
|
||||
<div
|
||||
className="PictureSelector"
|
||||
>
|
||||
<input
|
||||
accept=".jpeg,.jpg,.png,.bmp"
|
||||
aria-hidden={true}
|
||||
className="PictureSelector__input hidden"
|
||||
data-testid="PictureSelector__input-picture_selector_test"
|
||||
name="picture_selector_test"
|
||||
onChange={[Function]}
|
||||
tabIndex={-1}
|
||||
type="file"
|
||||
/>
|
||||
<div
|
||||
className="PictureSelector__imageContainer"
|
||||
>
|
||||
<div
|
||||
aria-label="Picture selector image"
|
||||
className="PictureSelector__image"
|
||||
style={
|
||||
Object {
|
||||
"backgroundImage": "url(undefined)",
|
||||
}
|
||||
}
|
||||
/>
|
||||
<button
|
||||
aria-label="Select picture"
|
||||
className="PictureSelector__selectButton"
|
||||
data-testid="PictureSelector__selectButton"
|
||||
onClick={[Function]}
|
||||
>
|
||||
<i
|
||||
className="icon icon-pencil-outline"
|
||||
/>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
@ -1,37 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import React from 'react';
|
||||
|
||||
type Props = {
|
||||
defaultExpandedKey: string;
|
||||
children: (setExpanded: (expandedKey: string) => void, expandedKey: string) => React.ReactNode;
|
||||
};
|
||||
|
||||
type State = {
|
||||
expandedKey: string;
|
||||
};
|
||||
|
||||
export default class Accordion extends React.PureComponent<Props, State> {
|
||||
constructor(props: Props) {
|
||||
super(props);
|
||||
|
||||
this.state = {
|
||||
expandedKey: props.defaultExpandedKey,
|
||||
};
|
||||
}
|
||||
|
||||
setExpanded = (expandedKey: string) => {
|
||||
this.setState({expandedKey});
|
||||
};
|
||||
|
||||
render() {
|
||||
return (
|
||||
<div
|
||||
className={'Accordion'}
|
||||
>
|
||||
{this.props.children(this.setExpanded, this.state.expandedKey)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
@ -1,71 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import React from 'react';
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
|
||||
import Permissions from 'mattermost-redux/constants/permissions';
|
||||
|
||||
import PermissionGroup from './permission_group';
|
||||
|
||||
interface Props {
|
||||
role: Record<string, string>;
|
||||
scope: string;
|
||||
selectRow: any;
|
||||
readOnly: boolean;
|
||||
onToggle: (a: string, b: string[]) => void;
|
||||
}
|
||||
|
||||
export const playbooksGroups: any[] = [
|
||||
{
|
||||
id: 'runs',
|
||||
permissions: [
|
||||
Permissions.RUN_CREATE,
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
const PermissionsTreeRuns = (props: Props) => {
|
||||
const toggleGroup = (ids: string[]) => {
|
||||
if (props.readOnly) {
|
||||
return;
|
||||
}
|
||||
props.onToggle(props.role.name, ids);
|
||||
};
|
||||
|
||||
return (
|
||||
<div className='permissions-tree'>
|
||||
<div className='permissions-tree--header'>
|
||||
<div className='permission-name'>
|
||||
<FormattedMessage
|
||||
id='admin.permissions.permissionsTree.permission'
|
||||
defaultMessage='Permission'
|
||||
/>
|
||||
</div>
|
||||
<div className='permission-description'>
|
||||
<FormattedMessage
|
||||
id='admin.permissions.permissionsTree.description'
|
||||
defaultMessage='Description'
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className='permissions-tree--body'>
|
||||
<PermissionGroup
|
||||
key='all'
|
||||
id='all'
|
||||
uniqId={props.role.name}
|
||||
selectRow={props.selectRow}
|
||||
readOnly={props.readOnly}
|
||||
permissions={playbooksGroups}
|
||||
role={props.role}
|
||||
scope={props.scope}
|
||||
combined={false}
|
||||
onChange={toggleGroup}
|
||||
root={true}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default PermissionsTreeRuns;
|
@ -42,7 +42,7 @@ import SendButton from './send_button';
|
||||
import {IconContainer} from './formatting_bar/formatting_icon';
|
||||
|
||||
import './advanced_text_editor.scss';
|
||||
import ToggleFormattingBar from './toggle_formatting_bar/toggle_formatting_bar';
|
||||
import ToggleFormattingBar from './toggle_formatting_bar';
|
||||
|
||||
type Props = {
|
||||
|
||||
|
@ -10,7 +10,7 @@ import OverlayTrigger from 'components/overlay_trigger';
|
||||
import Tooltip from 'components/tooltip';
|
||||
import Constants from 'utils/constants';
|
||||
|
||||
import {IconContainer} from '../formatting_bar/formatting_icon';
|
||||
import {IconContainer} from './formatting_bar/formatting_icon';
|
||||
|
||||
interface ToggleFormattingBarProps {
|
||||
onClick: React.MouseEventHandler;
|
@ -1,4 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
export {default} from './toggle_formatting_bar';
|
@ -1,201 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import React, {useState, useEffect, useRef} from 'react';
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
import {RouteComponentProps, withRouter} from 'react-router-dom';
|
||||
import {useSelector, useDispatch} from 'react-redux';
|
||||
|
||||
import {ModalIdentifiers} from 'utils/constants';
|
||||
import {GlobalState} from 'types/store';
|
||||
import {subscribeCloudSubscription} from 'actions/cloud';
|
||||
import {closeModal} from 'actions/views/modals';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {Feedback, Product} from '@mattermost/types/cloud';
|
||||
import {t} from 'utils/i18n';
|
||||
import {isModalOpen} from 'selectors/views/modals';
|
||||
import FullScreenModal from 'components/widgets/modals/full_screen_modal';
|
||||
import CreditCardSvg from 'components/common/svg_images_components/credit_card_svg';
|
||||
import PaymentSuccessStandardSvg from 'components/common/svg_images_components/payment_success_standard_svg';
|
||||
import PaymentFailedSvg from 'components/common/svg_images_components/payment_failed_svg';
|
||||
import IconMessage from 'components/purchase_modal/icon_message';
|
||||
import ProgressBar, {ProcessState} from 'components/icon_message_with_progress_bar';
|
||||
import {DispatchFunc} from 'mattermost-redux/types/actions';
|
||||
|
||||
type Props = RouteComponentProps & {
|
||||
onBack: () => void;
|
||||
onClose?: () => void;
|
||||
teamToKeep?: Team;
|
||||
selectedProduct?: Product | null | undefined;
|
||||
downgradeFeedback?: Feedback;
|
||||
};
|
||||
|
||||
const MIN_PROCESSING_MILLISECONDS = 8000;
|
||||
const MAX_FAKE_PROGRESS = 95;
|
||||
|
||||
function CloudSubscribeWithLoad(props: Props) {
|
||||
const intervalId = useRef<NodeJS.Timeout>({} as NodeJS.Timeout);
|
||||
const [progress, setProgress] = useState(0);
|
||||
const dispatch = useDispatch<DispatchFunc>();
|
||||
const [error, setError] = useState(false);
|
||||
const [processingState, setProcessingState] = useState(ProcessState.PROCESSING);
|
||||
const modalOpen = useSelector((state: GlobalState) =>
|
||||
isModalOpen(state, ModalIdentifiers.CLOUD_SUBSCRIBE_WITH_LOADING_MODAL),
|
||||
);
|
||||
useEffect(() => {
|
||||
handleSubscribe();
|
||||
intervalId.current = setInterval(
|
||||
updateProgress,
|
||||
MIN_PROCESSING_MILLISECONDS / MAX_FAKE_PROGRESS,
|
||||
);
|
||||
}, []);
|
||||
|
||||
const handleSubscribe = async () => {
|
||||
const start = new Date();
|
||||
const result = await dispatch(subscribeCloudSubscription(
|
||||
props.selectedProduct?.id as string, undefined, 0, props.downgradeFeedback,
|
||||
));
|
||||
|
||||
// the action subscribeCloudSubscription returns a true boolean when successful and an error when it fails
|
||||
if (result.error) {
|
||||
setError(true);
|
||||
setProcessingState(ProcessState.FAILED);
|
||||
return;
|
||||
}
|
||||
|
||||
const end = new Date();
|
||||
const millisecondsElapsed = end.valueOf() - start.valueOf();
|
||||
if (millisecondsElapsed < MIN_PROCESSING_MILLISECONDS) {
|
||||
setTimeout(
|
||||
completeSubscribe,
|
||||
MIN_PROCESSING_MILLISECONDS - millisecondsElapsed,
|
||||
);
|
||||
return;
|
||||
}
|
||||
completeSubscribe();
|
||||
};
|
||||
|
||||
const completeSubscribe = () => {
|
||||
clearInterval(intervalId.current);
|
||||
setProcessingState(ProcessState.SUCCESS);
|
||||
setProgress(100);
|
||||
};
|
||||
|
||||
const updateProgress = () => {
|
||||
setProgress((progress) => {
|
||||
if (progress >= MAX_FAKE_PROGRESS) {
|
||||
clearInterval(intervalId.current);
|
||||
}
|
||||
return progress + 3 > MAX_FAKE_PROGRESS ? MAX_FAKE_PROGRESS : progress + 3;
|
||||
},
|
||||
);
|
||||
};
|
||||
|
||||
const handleGoBack = () => {
|
||||
clearInterval(intervalId.current);
|
||||
setProgress(0);
|
||||
setError(false);
|
||||
setProcessingState(ProcessState.PROCESSING);
|
||||
props.onBack();
|
||||
};
|
||||
|
||||
const handleClose = () => {
|
||||
dispatch(
|
||||
closeModal(
|
||||
ModalIdentifiers.CLOUD_SUBSCRIBE_WITH_LOADING_MODAL,
|
||||
),
|
||||
);
|
||||
if (typeof props.onClose === 'function') {
|
||||
props.onClose();
|
||||
}
|
||||
};
|
||||
|
||||
const successPage = () => {
|
||||
const formattedBtnText = (
|
||||
<FormattedMessage
|
||||
defaultMessage='Return to {team}'
|
||||
id='admin.billing.subscription.returnToTeam'
|
||||
values={{team: props.teamToKeep?.display_name}}
|
||||
/>
|
||||
);
|
||||
const productName = props.selectedProduct?.name;
|
||||
const title = (
|
||||
<FormattedMessage
|
||||
id={'admin.billing.subscription.downgradedSuccess'}
|
||||
defaultMessage={"You're now subscribed to {productName}"}
|
||||
values={{productName}}
|
||||
/>
|
||||
);
|
||||
|
||||
const formattedSubtitle = (
|
||||
<FormattedMessage
|
||||
id='success_modal.subtitle'
|
||||
defaultMessage='Your final bill will be prorated. Your workspace now has {plan} limits.'
|
||||
values={{plan: productName}}
|
||||
/>
|
||||
);
|
||||
return (
|
||||
<IconMessage
|
||||
formattedTitle={title}
|
||||
formattedSubtitle={formattedSubtitle}
|
||||
error={error}
|
||||
icon={
|
||||
<PaymentSuccessStandardSvg
|
||||
width={444}
|
||||
height={313}
|
||||
/>
|
||||
}
|
||||
formattedButtonText={formattedBtnText}
|
||||
buttonHandler={handleClose}
|
||||
className={'success'}
|
||||
tertiaryBtnText={t('admin.billing.subscription.viewBilling')}
|
||||
tertiaryButtonHandler={() => {
|
||||
handleClose();
|
||||
props.history.push('/admin_console/billing/subscription');
|
||||
}}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
return (
|
||||
<FullScreenModal
|
||||
show={modalOpen}
|
||||
onClose={handleClose}
|
||||
>
|
||||
<div className='loading-modal'>
|
||||
<ProgressBar
|
||||
processingState={processingState}
|
||||
processingCopy={{
|
||||
title: t('admin.billing.subscription.downgrading'),
|
||||
subtitle: '',
|
||||
icon: (
|
||||
<CreditCardSvg
|
||||
width={444}
|
||||
height={313}
|
||||
/>
|
||||
),
|
||||
}}
|
||||
failedCopy={{
|
||||
title: t('admin.billing.subscription.paymentVerificationFailed'),
|
||||
subtitle: t('admin.billing.subscription.paymentFailed'),
|
||||
icon: (
|
||||
<PaymentFailedSvg
|
||||
width={444}
|
||||
height={313}
|
||||
/>
|
||||
),
|
||||
buttonText: t('admin.billing.subscription.goBackTryAgain'),
|
||||
linkText:
|
||||
t('admin.billing.subscription.constCloudCard.contactSupport'),
|
||||
}}
|
||||
progress={progress}
|
||||
successPage={successPage}
|
||||
handleGoBack={handleGoBack}
|
||||
error={error}
|
||||
/>
|
||||
</div>
|
||||
</FullScreenModal>
|
||||
);
|
||||
}
|
||||
|
||||
export default withRouter(CloudSubscribeWithLoad);
|
@ -1,11 +0,0 @@
|
||||
.CloudUsageMiniModal {
|
||||
.modal-body {
|
||||
// not overridden with classes because the classes needed depend on the context of where this is used
|
||||
// and the existing rule is already 5 selectors deep
|
||||
padding-bottom: 26px !important;
|
||||
}
|
||||
|
||||
.GenericModal__body {
|
||||
color: var(--center-channel-color);
|
||||
}
|
||||
}
|
@ -1,55 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import React from 'react';
|
||||
import {useSelector} from 'react-redux';
|
||||
|
||||
import {getTheme} from 'mattermost-redux/selectors/entities/preferences';
|
||||
import {Limits, CloudUsage} from '@mattermost/types/cloud';
|
||||
|
||||
import {Message} from 'utils/i18n';
|
||||
|
||||
import CompassThemeProvider from 'components/compass_theme_provider/compass_theme_provider';
|
||||
import {GenericModal} from '@mattermost/components';
|
||||
|
||||
import WorkspaceLimitsPanel, {messageToElement} from './workspace_limits_panel';
|
||||
|
||||
import './mini_modal.scss';
|
||||
|
||||
interface Props {
|
||||
limits: Limits;
|
||||
usage: CloudUsage;
|
||||
showIcons?: boolean;
|
||||
title: Message | React.ReactNode;
|
||||
onClose: () => void;
|
||||
needsTheme?: boolean;
|
||||
}
|
||||
|
||||
export default function MiniModal(props: Props) {
|
||||
const theme = useSelector(getTheme);
|
||||
|
||||
const modal = (
|
||||
<GenericModal
|
||||
compassDesign={true}
|
||||
onExited={props.onClose}
|
||||
modalHeaderText={messageToElement(props.title)}
|
||||
className='CloudUsageMiniModal'
|
||||
>
|
||||
<WorkspaceLimitsPanel
|
||||
showIcons={true}
|
||||
limits={props.limits}
|
||||
usage={props.usage}
|
||||
/>
|
||||
</GenericModal>
|
||||
);
|
||||
|
||||
if (!props.needsTheme) {
|
||||
return modal;
|
||||
}
|
||||
|
||||
return (
|
||||
<CompassThemeProvider theme={theme}>
|
||||
{modal}
|
||||
</CompassThemeProvider>
|
||||
);
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import React from 'react';
|
||||
|
||||
import './accordion.scss';
|
||||
|
||||
type Props = {
|
||||
title: string;
|
||||
description: string;
|
||||
severity: 'info' | 'warning' | 'error';
|
||||
}
|
||||
|
||||
const MessageItem = ({title, description}: Props): JSX.Element | null => {
|
||||
return (
|
||||
<div className='message-item'>
|
||||
<h2 className='message-item-title'>
|
||||
<button className='message-item-btn'>{title}</button>
|
||||
</h2>
|
||||
<div className='message-item-container'>
|
||||
<div className='message-item-description'>{description}</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default MessageItem;
|
@ -1,40 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {useEffect, useState} from 'react';
|
||||
import {useDispatch, useSelector} from 'react-redux';
|
||||
|
||||
import {
|
||||
getCloudSubscription as getCloudSubscriptionAction,
|
||||
} from 'mattermost-redux/actions/cloud';
|
||||
import {getLicense} from 'mattermost-redux/selectors/entities/general';
|
||||
|
||||
import {Product} from '@mattermost/types/cloud';
|
||||
import {getCloudSubscription, getCloudProducts, getSubscriptionProduct} from 'mattermost-redux/selectors/entities/cloud';
|
||||
|
||||
export default function useGetSubscription(): Product | undefined {
|
||||
const cloudSubscription = useSelector(getCloudSubscription);
|
||||
const cloudProducts = useSelector(getCloudProducts);
|
||||
const license = useSelector(getLicense);
|
||||
const retrievedCloudSub = Boolean(cloudSubscription);
|
||||
const retrievedCloudProducts = Boolean(cloudProducts);
|
||||
const dispatch = useDispatch();
|
||||
const [requestedSubscription, setRequestedSubscription] = useState(false);
|
||||
const [requestedProducts, setRequestedProducts] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
if (license.Cloud === 'true' && !retrievedCloudSub && !requestedSubscription) {
|
||||
dispatch(getCloudSubscriptionAction());
|
||||
setRequestedSubscription(true);
|
||||
}
|
||||
}, [requestedSubscription, retrievedCloudSub, license]);
|
||||
useEffect(() => {
|
||||
if (license.Cloud === 'true' && !retrievedCloudProducts && !requestedProducts) {
|
||||
dispatch(getCloudSubscriptionAction());
|
||||
setRequestedProducts(true);
|
||||
}
|
||||
}, [requestedProducts, retrievedCloudProducts, license]);
|
||||
|
||||
return useSelector(getSubscriptionProduct);
|
||||
}
|
||||
|
@ -1,27 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {useDispatch} from 'react-redux';
|
||||
|
||||
import {openModal} from 'actions/views/modals';
|
||||
import {ModalIdentifiers} from 'utils/constants';
|
||||
import TrialBenefitsModal, {Props} from 'components/trial_benefits_modal/trial_benefits_modal';
|
||||
|
||||
interface Options {
|
||||
trialJustStarted?: boolean;
|
||||
}
|
||||
|
||||
export default function useOpenTrialBenefitsModal(options: Options) {
|
||||
const dispatch = useDispatch();
|
||||
const dialogProps: Omit<Props, 'onExited'> = {};
|
||||
if (options.trialJustStarted) {
|
||||
dialogProps.trialJustStarted = true;
|
||||
}
|
||||
return () => {
|
||||
return dispatch(openModal({
|
||||
modalId: ModalIdentifiers.TRIAL_BENEFITS_MODAL,
|
||||
dialogType: TrialBenefitsModal,
|
||||
dialogProps,
|
||||
}));
|
||||
};
|
||||
}
|
@ -1,161 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {useState, useRef, useEffect} from 'react';
|
||||
|
||||
import debounce from 'lodash/debounce';
|
||||
|
||||
import {Client4} from 'mattermost-redux/client';
|
||||
|
||||
import {cleanUpUrlable, BadUrlReasons, teamNameToUrl} from 'utils/url';
|
||||
import Constants from 'utils/constants';
|
||||
|
||||
function makeIdGetter() {
|
||||
let id = Number.MIN_SAFE_INTEGER;
|
||||
return function idGetter(): number {
|
||||
id++;
|
||||
return id;
|
||||
};
|
||||
}
|
||||
|
||||
type DebounceOptions = {
|
||||
interval?: number;
|
||||
trailing?: boolean;
|
||||
leading?: boolean;
|
||||
}
|
||||
|
||||
const defaultDebounceOptions = {
|
||||
interval: 333,
|
||||
trailing: true,
|
||||
leading: true,
|
||||
};
|
||||
|
||||
type ValidateOptions = {
|
||||
doAsyncCheck: boolean;
|
||||
debounceOptions: DebounceOptions;
|
||||
}
|
||||
|
||||
const defaultValidateOptions = {
|
||||
doAsyncCheck: true,
|
||||
debounceOptions: defaultDebounceOptions,
|
||||
};
|
||||
|
||||
type TeamValidator = {
|
||||
verifying: boolean;
|
||||
result: ValidationResult;
|
||||
validate: (url: string) => void;
|
||||
}
|
||||
|
||||
type VerifyingStatus = {
|
||||
verifying: boolean;
|
||||
eventId: number;
|
||||
}
|
||||
|
||||
type ValidationResult = {
|
||||
valid: boolean;
|
||||
error: false | typeof BadUrlReasons[keyof typeof BadUrlReasons] | string;
|
||||
}
|
||||
|
||||
function synchronousChecks(teamName: string): [boolean, typeof BadUrlReasons[keyof typeof BadUrlReasons] | false] {
|
||||
// borrowed from team_url, which has some peculiarities tied to being a part of a two screen UI
|
||||
// that allows more variation between team name and url than we allow in usages of this function
|
||||
const nameAsUrl = cleanUpUrlable(teamName.trim());
|
||||
|
||||
if (!nameAsUrl.length) {
|
||||
return [false, BadUrlReasons.Empty];
|
||||
}
|
||||
|
||||
if (nameAsUrl.length < Constants.MIN_TEAMNAME_LENGTH || nameAsUrl.length > Constants.MAX_TEAMNAME_LENGTH) {
|
||||
return [false, BadUrlReasons.Length];
|
||||
}
|
||||
|
||||
if (Constants.RESERVED_TEAM_NAMES.some((reservedName) => nameAsUrl.startsWith(reservedName))) {
|
||||
return [false, BadUrlReasons.Reserved];
|
||||
}
|
||||
|
||||
return [true, false];
|
||||
}
|
||||
|
||||
const makeValidator = (options: ValidateOptions) => debounce((
|
||||
reportResult: (result: ValidationResult) => void,
|
||||
teamName: string,
|
||||
) => {
|
||||
const [newValid, newError] = synchronousChecks(teamName);
|
||||
if (!newValid || !options.doAsyncCheck) {
|
||||
const result = {
|
||||
valid: newValid,
|
||||
error: newError,
|
||||
};
|
||||
if (teamName.length === 1) {
|
||||
// in this case, we don't want to bother user if they are still typing
|
||||
setTimeout(() => {
|
||||
reportResult(result);
|
||||
}, 300);
|
||||
} else {
|
||||
reportResult(result);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
Client4.checkIfTeamExists(teamNameToUrl(teamName).url).then((response) => {
|
||||
if (response.exists) {
|
||||
reportResult({
|
||||
valid: false,
|
||||
error: BadUrlReasons.Taken,
|
||||
});
|
||||
} else {
|
||||
reportResult({
|
||||
valid: true,
|
||||
error: false,
|
||||
});
|
||||
}
|
||||
}).catch((error: Error) => {
|
||||
reportResult({
|
||||
valid: false,
|
||||
error: error.message,
|
||||
});
|
||||
});
|
||||
}, options.debounceOptions.interval, {trailing: options.debounceOptions.trailing, leading: options.debounceOptions.leading});
|
||||
|
||||
export default function useValidateTeam(options: ValidateOptions = defaultValidateOptions): TeamValidator {
|
||||
const [verifying, setVerifying] = useState<VerifyingStatus>({verifying: false, eventId: Number.MIN_SAFE_INTEGER});
|
||||
const [result, setResult] = useState<ValidationResult>({
|
||||
valid: false,
|
||||
error: false,
|
||||
});
|
||||
const {current: getId} = useRef<() => number>(makeIdGetter());
|
||||
const validateRef = useRef(makeValidator(options));
|
||||
useEffect(() => {
|
||||
validateRef.current = makeValidator(options);
|
||||
}, [options]);
|
||||
|
||||
return {
|
||||
result,
|
||||
verifying: verifying.verifying,
|
||||
validate: (url: string) => {
|
||||
const eventId = getId();
|
||||
|
||||
setVerifying((presentVerifying: VerifyingStatus) => {
|
||||
if (presentVerifying.eventId > eventId) {
|
||||
return presentVerifying;
|
||||
}
|
||||
return {
|
||||
verifying: true,
|
||||
eventId,
|
||||
};
|
||||
});
|
||||
|
||||
const reportResult = (result: ValidationResult) => {
|
||||
setVerifying((presentVerifying: VerifyingStatus) => {
|
||||
if (presentVerifying.eventId > eventId) {
|
||||
return presentVerifying;
|
||||
}
|
||||
setResult(result);
|
||||
return {verifying: false, eventId};
|
||||
});
|
||||
};
|
||||
|
||||
validateRef.current(reportResult, url);
|
||||
},
|
||||
};
|
||||
}
|
@ -1,145 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {useState, useRef, useEffect} from 'react';
|
||||
|
||||
import debounce from 'lodash/debounce';
|
||||
|
||||
import {Client4} from 'mattermost-redux/client';
|
||||
|
||||
function makeIdGetter() {
|
||||
let id = Number.MIN_SAFE_INTEGER;
|
||||
return function idGetter(): number {
|
||||
id++;
|
||||
return id;
|
||||
};
|
||||
}
|
||||
|
||||
type DebounceOptions = {
|
||||
interval?: number;
|
||||
trailing?: boolean;
|
||||
leading?: boolean;
|
||||
}
|
||||
|
||||
const defaultDebounceOptions = {
|
||||
interval: 333,
|
||||
trailing: true,
|
||||
leading: true,
|
||||
};
|
||||
|
||||
type ValidateUrlOptions = {
|
||||
doAsyncCheck: boolean;
|
||||
debounceOptions: DebounceOptions;
|
||||
}
|
||||
|
||||
const defaultValidateUrlOptions = {
|
||||
doAsyncCheck: true,
|
||||
debounceOptions: defaultDebounceOptions,
|
||||
};
|
||||
|
||||
type UrlValidator = {
|
||||
verifying: boolean;
|
||||
result: ValidationResult;
|
||||
validate: (url: string) => void;
|
||||
}
|
||||
|
||||
type VerifyingStatus = {
|
||||
verifying: boolean;
|
||||
eventId: number;
|
||||
}
|
||||
|
||||
type ValidationResult = {
|
||||
valid: boolean;
|
||||
error: string | null;
|
||||
inferredProtocol: 'https' | 'http' | null;
|
||||
}
|
||||
|
||||
function synchronousChecks(url: string): [boolean, string | null] {
|
||||
if (!url.length) {
|
||||
return [false, 'Empty'];
|
||||
}
|
||||
return [true, null];
|
||||
}
|
||||
|
||||
const makeValidator = (options: ValidateUrlOptions) => debounce((
|
||||
reportResult: (result: ValidationResult) => void,
|
||||
url: string,
|
||||
) => {
|
||||
const [newValid, newError] = synchronousChecks(url);
|
||||
if (!newValid || !options.doAsyncCheck) {
|
||||
reportResult({
|
||||
valid: newValid,
|
||||
error: newError,
|
||||
inferredProtocol: null,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
let effectiveUrl = url;
|
||||
let inferredProtocol: 'http' | 'https' | null = null;
|
||||
if (effectiveUrl.startsWith('localhost')) {
|
||||
effectiveUrl = 'http://' + effectiveUrl;
|
||||
inferredProtocol = 'http';
|
||||
} else if (!effectiveUrl.startsWith('http://') && !effectiveUrl.startsWith('https://')) {
|
||||
effectiveUrl = 'https://' + effectiveUrl;
|
||||
inferredProtocol = 'https';
|
||||
}
|
||||
|
||||
Client4.testSiteURL(effectiveUrl).then(() => {
|
||||
reportResult({
|
||||
valid: true,
|
||||
error: null,
|
||||
inferredProtocol,
|
||||
});
|
||||
}).catch((error: Error) => {
|
||||
reportResult({
|
||||
valid: false,
|
||||
error: error.message,
|
||||
inferredProtocol,
|
||||
});
|
||||
});
|
||||
}, options.debounceOptions.interval, {trailing: options.debounceOptions.trailing, leading: options.debounceOptions.leading});
|
||||
|
||||
export default function useValidateUrl(options: ValidateUrlOptions = defaultValidateUrlOptions): UrlValidator {
|
||||
const [verifying, setVerifying] = useState<VerifyingStatus>({verifying: false, eventId: Number.MIN_SAFE_INTEGER});
|
||||
const [result, setResult] = useState<ValidationResult>({
|
||||
valid: false,
|
||||
error: null,
|
||||
inferredProtocol: null,
|
||||
});
|
||||
const {current: getId} = useRef<() => number>(makeIdGetter());
|
||||
const validateRef = useRef(makeValidator(options));
|
||||
useEffect(() => {
|
||||
validateRef.current = makeValidator(options);
|
||||
}, [options]);
|
||||
|
||||
return {
|
||||
result,
|
||||
verifying: verifying.verifying,
|
||||
validate: (url: string) => {
|
||||
const eventId = getId();
|
||||
|
||||
setVerifying((presentVerifying: VerifyingStatus) => {
|
||||
if (presentVerifying.eventId > eventId) {
|
||||
return presentVerifying;
|
||||
}
|
||||
return {
|
||||
verifying: true,
|
||||
eventId,
|
||||
};
|
||||
});
|
||||
|
||||
const reportResult = (result: ValidationResult) => {
|
||||
setVerifying((presentVerifying: VerifyingStatus) => {
|
||||
if (presentVerifying.eventId > eventId) {
|
||||
return presentVerifying;
|
||||
}
|
||||
setResult(result);
|
||||
return {verifying: false, eventId};
|
||||
});
|
||||
};
|
||||
|
||||
validateRef.current(reportResult, url);
|
||||
},
|
||||
};
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import React from 'react';
|
||||
|
||||
export default () => (
|
||||
<svg
|
||||
width='104'
|
||||
height='104'
|
||||
viewBox='0 0 104 104'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<path
|
||||
d='M30.8107 30.8445C36.3625 25.2589 43.3547 22.3795 51.7872 22.2063C60.1391 22.3835 67.0909 25.2629 72.6427 30.8445C78.1945 36.4261 81.0995 43.3849 81.3577 51.7211C81.0954 60.0492 78.1904 67.0081 72.6427 72.5977C67.0949 78.1874 60.1431 81.0728 51.7872 81.254C43.3506 81.0808 36.3585 78.2035 30.8107 72.6219C25.263 67.0403 22.358 60.0814 22.0957 51.7453C22.3499 43.393 25.2549 36.4261 30.8107 30.8445Z'
|
||||
fill='white'
|
||||
/>
|
||||
<path
|
||||
d='M51.7873 83.8094C42.6648 83.5516 35.0694 80.4145 29.0012 74.398C22.933 68.3815 19.8122 60.8225 19.6387 51.7212C19.8122 42.6964 22.933 35.1577 29.0012 29.1049C35.0694 23.0522 42.6648 19.8969 51.7873 19.6392C60.8291 19.8929 68.3821 23.0501 74.4463 29.111C80.5104 35.1718 83.6314 42.7106 83.8089 51.7273C83.6354 60.8326 80.5145 68.3915 74.4463 74.404C68.378 80.4165 60.8251 83.5516 51.7873 83.8094ZM51.7873 25.6859C44.3836 25.9436 38.2307 28.5008 33.3285 33.3576C28.4263 38.2143 25.8865 44.3355 25.7089 51.7212C25.8784 59.107 28.4182 65.2483 33.3285 70.1453C38.2387 75.0423 44.3917 77.5774 51.7873 77.7506C59.1023 77.5774 65.2149 75.0423 70.1251 70.1453C75.0354 65.2483 77.5732 59.107 77.7386 51.7212C77.5692 44.3315 75.0314 38.2102 70.1251 33.3576C65.2189 28.5049 59.1063 25.9456 51.7873 25.6798V25.6859Z'
|
||||
fill='#FFBC1F'
|
||||
/>
|
||||
<path
|
||||
d='M51.7866 71.0513C46.2792 70.8741 41.7179 69.0055 38.1028 65.4455C34.4877 61.8855 32.5934 57.3107 32.4199 51.7211C32.4199 46.3086 34.2073 41.7982 37.7821 38.1899C41.3568 34.5816 45.9827 32.6486 51.6595 32.3909C57.1669 32.4754 61.7503 34.344 65.4098 37.9966C69.0693 41.6492 70.9414 46.224 71.0262 51.7211C70.9414 57.2181 69.0693 61.7708 65.4098 65.3791C61.7841 68.9715 56.8952 71.007 51.7866 71.0513ZM52.0468 38.9631H51.7866C47.998 39.1323 44.8993 40.3988 42.4906 42.7627C41.2994 43.9314 40.3721 45.3406 39.7708 46.896C39.1696 48.4514 38.9084 50.1171 39.0046 51.7815C38.9927 53.4594 39.3181 55.1226 39.9616 56.6727C40.6051 58.2229 41.5535 59.6284 42.7508 60.8063C44.234 62.2942 46.0608 63.3954 48.0706 64.0131C50.0803 64.6307 52.2114 64.7459 54.2762 64.3484C56.341 63.9509 58.2763 63.0529 59.9117 61.7335C61.5472 60.4141 62.8326 58.7137 63.6549 56.7819C64.4773 54.8501 64.8113 52.7462 64.6277 50.6553C64.444 48.5644 63.7482 46.5507 62.6016 44.7912C61.455 43.0318 59.8927 41.5806 58.0522 40.5654C56.2117 39.5501 54.1495 39.002 52.0468 38.9692V38.9631Z'
|
||||
fill='#FFBC1F'
|
||||
/>
|
||||
<path
|
||||
d='M47.9806 48.0304C48.992 47.0754 50.3315 46.5432 51.7238 46.5432C53.1161 46.5432 54.4555 47.0754 55.467 48.0304C56.4224 49.0152 56.9566 50.3323 56.9566 51.7031C56.9566 53.074 56.4224 54.3911 55.467 55.3759C54.4555 56.3309 53.1161 56.8631 51.7238 56.8631C50.3315 56.8631 48.992 56.3309 47.9806 55.3759C47.0293 54.3889 46.498 53.0726 46.498 51.7031C46.498 50.3337 47.0293 49.0174 47.9806 48.0304Z'
|
||||
fill='#FFBC1F'
|
||||
/>
|
||||
<path
|
||||
d='M52.2649 52.4886C52.0775 52.6755 51.8232 52.7805 51.5581 52.7805C51.293 52.7805 51.0388 52.6755 50.8513 52.4886C50.6639 52.3016 50.5586 52.0481 50.5586 51.7838C50.5586 51.5195 50.6639 51.266 50.8513 51.0791L54.8334 47.1145L56.1146 48.524L52.2649 52.4886Z'
|
||||
fill='#818698'
|
||||
/>
|
||||
<path
|
||||
d='M84.0617 28.9231C84.4908 31.3222 80.4265 33.1216 71.8689 34.3212L59.4235 48.2661C59.1507 48.5518 58.822 48.7785 58.4578 48.9322C58.0936 49.0859 57.7016 49.1634 57.3061 49.1598C56.4885 49.1609 55.7036 48.8397 55.1226 48.2661C54.8197 48.0037 54.5769 47.6793 54.4108 47.315C54.2448 46.9507 54.1593 46.5551 54.1602 46.1549C54.1695 45.324 54.489 44.5263 55.0564 43.9177L69.0478 31.6341C70.2508 23.1052 72.0554 19.0307 74.4614 19.4105C76.8675 19.7904 77.08 22.7893 75.099 28.4073C80.649 26.364 83.6366 26.536 84.0617 28.9231Z'
|
||||
fill='#1E325C'
|
||||
/>
|
||||
</svg>
|
||||
);
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,137 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import React from 'react';
|
||||
|
||||
export default () => (
|
||||
<svg
|
||||
width='200'
|
||||
height='200'
|
||||
viewBox='0 0 200 200'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<ellipse
|
||||
cx='100'
|
||||
cy='163.5'
|
||||
rx='91'
|
||||
ry='5.5'
|
||||
fill='black'
|
||||
fillOpacity='0.08'
|
||||
/>
|
||||
<path
|
||||
d='M29.4042 139.894H170.594C171.633 139.879 172.624 139.445 173.35 138.687C174.076 137.929 174.478 136.909 174.467 135.85V39.6821C174.478 38.6229 174.076 37.6027 173.35 36.8448C172.624 36.0869 171.633 35.653 170.594 35.6382H29.4042C28.3657 35.6545 27.3757 36.0888 26.6502 36.8464C25.9247 37.604 25.5225 38.6233 25.5314 39.6821V135.855C25.524 136.913 25.9268 137.931 26.6522 138.687C27.3775 139.444 28.3667 139.877 29.4042 139.894Z'
|
||||
fill='#3F4350'
|
||||
/>
|
||||
<path
|
||||
d='M13.8301 153.723C13.8301 158.51 17.7205 163.298 22.439 163.298H177.567C182.013 163.298 186.171 158.522 186.171 153.723H13.8301Z'
|
||||
fill='#767D93'
|
||||
/>
|
||||
<path
|
||||
d='M171.809 139.894H28.1913L13.8301 153.723H186.171L171.809 139.894Z'
|
||||
fill='#D1D4DB'
|
||||
/>
|
||||
<path
|
||||
d='M167.515 140.958H32.4808L27.6602 146.809H172.341L167.515 140.958Z'
|
||||
fill='#AFB3C0'
|
||||
/>
|
||||
<path
|
||||
d='M114.805 148.936H85.2004L82.9785 152.128H117.021L114.805 148.936Z'
|
||||
fill='#24262E'
|
||||
/>
|
||||
<rect
|
||||
width='131.915'
|
||||
height='85.1064'
|
||||
transform='translate(34.043 44.6807)'
|
||||
fill='white'
|
||||
/>
|
||||
<rect
|
||||
x='34.043'
|
||||
y='44.6807'
|
||||
width='132'
|
||||
height='85'
|
||||
fill='#3F4350'
|
||||
fillOpacity='0.72'
|
||||
/>
|
||||
<path
|
||||
d='M100.001 38.2979C100.422 38.2979 100.833 38.4226 101.183 38.6564C101.533 38.8902 101.805 39.2225 101.966 39.6113C102.127 40.0001 102.17 40.4279 102.087 40.8406C102.005 41.2533 101.803 41.6324 101.505 41.93C101.208 42.2275 100.829 42.4302 100.416 42.5123C100.003 42.5944 99.5753 42.5522 99.1865 42.3912C98.7977 42.2302 98.4654 41.9575 98.2316 41.6076C97.9978 41.2577 97.873 40.8463 97.873 40.4255C97.873 39.8612 98.0972 39.32 98.4963 38.921C98.8953 38.522 99.4364 38.2979 100.001 38.2979Z'
|
||||
fill='#989DAE'
|
||||
/>
|
||||
<path
|
||||
d='M112.258 160.106H87.1942C86.3291 160.106 84.043 160.106 84.043 156.915H115.426C115.426 160.106 113.072 160.106 112.258 160.106Z'
|
||||
fill='#3F4350'
|
||||
/>
|
||||
<path
|
||||
d='M125.916 87C125.915 91.8922 124.53 96.6844 121.92 100.822C119.311 104.96 115.584 108.275 111.17 110.384C106.756 112.492 101.835 113.308 96.9772 112.738C92.119 112.167 87.5215 110.232 83.7163 107.158C79.9111 104.084 77.0536 99.9955 75.4741 95.3653C73.8946 90.7351 73.6577 85.7524 74.7907 80.9932C75.9237 76.234 78.3804 71.8927 81.8768 68.4713C85.3731 65.0498 89.7663 62.6878 94.5484 61.6585H95.2819L95.8077 61.4048C96.2321 61.3402 96.6611 61.2802 97.0901 61.2295L98.0127 61.2572L98.6446 61.1049H99.0136L100.033 61.248L100.707 61.0957H101.094L102.515 61.4555L104.194 61.4094L104.789 61.5109L110.933 65.4277L117.64 67.9789C120.259 70.4054 122.346 73.3485 123.771 76.6223C125.195 79.8961 125.925 83.4297 125.916 87Z'
|
||||
fill='#1C58D9'
|
||||
/>
|
||||
<path
|
||||
d='M101.26 69.2618C102.948 69.8016 102.879 68.7359 103.945 69.9769C104.558 70.692 105.665 71.993 106.98 72.3159C107.164 72.362 107.575 71.9653 107.575 71.6516C107.575 71.3379 106.652 70.6735 106.145 70.5351C105.638 70.3967 106.352 69.4187 105.656 69.1188C104.959 68.8189 104.189 67.7071 103.912 66.8352C103.636 65.9632 102.409 66.6968 101.989 66.5215C101.569 66.3462 101.066 66.4523 100.605 67.1166C100.144 67.7809 100.826 69.1234 101.26 69.2618Z'
|
||||
fill='#FFBC1F'
|
||||
/>
|
||||
<path
|
||||
d='M110.403 93.6758C110.403 93.3113 107.063 91.4936 106.657 91.4706C105.993 91.4291 105.089 91.0969 104.48 91.4706C104.223 91.6166 104.005 91.8223 103.843 92.0703C103.728 92.2872 103.078 91.8858 102.829 92.0196C102.229 92.3379 101.906 91.2999 102.058 90.9031C102.478 89.9297 100.997 90.5433 100.845 90.2757C101.025 90.594 100.794 87.5077 100.278 89.2469C99.8857 90.5664 98.3496 89.0578 98.5341 88.0982C98.8201 86.6173 101.053 86.4004 101.542 86.6634C101.791 86.7972 102.7 88.112 102.815 88.0751C103.064 87.9967 102.667 86.525 102.616 86.3312C102.441 85.6116 103.816 85.3717 103.913 84.6197C103.996 83.983 104.429 84.2045 104.835 83.8677C105.458 83.3741 104.969 82.4514 105.758 81.9808C106.03 81.8193 107.049 81.704 107.183 81.418C107.317 81.1319 106.325 80.4445 107.183 80.2415C107.94 80.057 108.71 80.3846 108.918 79.2912C109.102 78.2993 107.995 78.0732 107.677 77.3028C107.575 77.0721 107.451 75.7435 106.98 75.988C106.404 76.2925 106.058 77.026 105.569 76.1541C104.715 74.5809 102.603 73.9027 103.594 76.3755C104.102 77.6534 102.211 81.5425 101.92 77.9487C101.823 76.6984 98.0867 76.3248 99.3414 74.9407C100.596 73.5567 102.354 73.4921 102.824 71.3377C103.479 68.3482 101.408 70.8763 100.352 70.3135C98.774 69.4508 100.112 69.9167 99.2952 71.0332C98.9862 71.4576 97.9714 70.7656 97.5193 70.8348C97.0673 70.904 96.0293 71.8221 95.7387 71.2454C95.2129 70.1889 91.5088 69.5384 90.5078 69.9121C88.4182 70.6964 87.694 69.6353 85.609 69.2247C84.8848 69.0817 81.3283 68.9802 81.5589 70.212C81.725 70.6635 81.9192 71.1041 82.1401 71.5314C82.3662 72.2096 81.3467 71.6883 81.1115 71.8498C81.5268 72.2181 81.961 72.5646 82.4123 72.8878C82.7537 73.2384 81.1069 73.6628 80.9408 74.2441C80.6133 75.4251 83.2057 75.0884 82.7306 76.5093C82.583 76.9383 81.1023 77.6442 80.9593 79.0974C80.9316 79.3742 82.8044 77.2982 84.0129 77.7134C85.0785 78.1009 84.9863 75.2037 86.3194 75.2037C88.7918 75.2037 89.2716 77.6119 90.5724 79.2266C91.1813 79.9786 91.6702 80.2923 91.781 81.275C91.8917 82.2576 91.6841 83.3048 92.0162 84.1768C92.3483 85.0487 92.9757 85.0672 93.4001 85.7407C93.9075 86.5296 94.1934 87.3001 94.8808 87.9875C95.8771 88.9886 97.5746 90.5202 99.143 90.2942C99.4521 90.248 100.619 90.9123 100.882 91.1107C101.246 91.4531 101.557 91.8481 101.805 92.2825C102.081 92.6516 102.958 92.4209 103.341 92.5962C103.724 92.7716 102.45 95.3643 102.912 96.0286C103.373 96.693 103.414 97.6203 104.166 98.2108C104.918 98.8013 105.089 98.8151 105.186 99.7885C105.329 101.366 104.868 102.963 104.489 104.434C104.291 105.186 104.688 106.021 104.392 106.741C104.023 107.641 103.774 108.416 104.097 109.417C104.655 111.156 107.787 111.437 105.942 109.92C105.154 109.274 106.796 107.714 106.284 107.567C105.403 107.198 106.445 106.866 106.56 106.483C106.796 105.721 110.288 102.57 110.546 102.049C110.763 101.611 110.624 101.159 110.98 100.78C111.335 100.402 111.902 100.508 112.363 100.213C113.286 99.5948 112.954 98.5475 113.337 97.6941C114.093 96.0009 114.411 96.6699 113.374 95.3458C112.981 94.8661 110.472 95.0413 110.403 93.6758Z'
|
||||
fill='#FFBC1F'
|
||||
/>
|
||||
<path
|
||||
d='M91.7214 68.0574C92.3579 68.7218 92.9899 67.7114 93.1052 68.0574C93.2205 68.4034 93.2298 69.0678 93.9863 69.1185C94.7428 69.1693 93.2805 69.6629 93.7695 69.8705C94.2584 70.0781 95.3055 70.7424 95.6884 70.4656C96.0713 70.1888 96.5279 69.9766 96.6986 70.1842C96.8693 70.3918 97.921 70.1519 97.6212 69.8013C97.3213 69.4507 96.5233 68.6249 96.5556 68.1497C96.5879 67.6745 97.4782 66.452 96.4864 66.5581C96.2472 66.5882 96.0292 66.7107 95.8791 66.8996C95.7291 67.0884 95.659 67.3285 95.6838 67.5684C95.6838 67.919 94.7612 67.0471 94.5675 67.0609C94.3737 67.0748 93.728 65.9999 93.4835 65.9999C93.239 65.9999 91.6014 65.4739 91.7398 65.9999C91.8782 66.5258 91.0848 67.3931 91.7214 68.0574Z'
|
||||
fill='#FFBC1F'
|
||||
/>
|
||||
<path
|
||||
d='M106.362 73.0491C105.868 72.7677 104.932 71.4805 104.517 71.8957C104.101 72.3109 104.623 73.2798 104.978 73.6765C105.333 74.0733 106.795 75.0052 106.583 74.5992C106.371 74.1932 107.33 73.6073 106.362 73.0491Z'
|
||||
fill='#FFBC1F'
|
||||
/>
|
||||
<path
|
||||
d='M92.6847 64.173C92.9384 64.1499 93.3351 65.0311 93.7087 65.128C94.0824 65.2248 94.2669 65.6631 94.4053 65.7646C94.5437 65.8661 96.1074 65.2664 96.4764 65.128C96.8455 64.9896 96.0152 64.1269 95.7061 63.5225C95.397 62.9181 95.6369 64.5236 95.1987 64.2606C94.7605 63.9977 94.825 63.6378 94.2761 63.6378C93.7272 63.6378 94.11 62.5445 93.4366 62.7751C92.7631 63.0058 92.431 64.1961 92.6847 64.173Z'
|
||||
fill='#FFBC1F'
|
||||
/>
|
||||
<path
|
||||
d='M98.2947 66.2677C97.8334 66.36 97.9211 66.6599 97.6627 66.9182C97.5422 67.0415 97.4746 67.2071 97.4746 67.3796C97.4746 67.552 97.5422 67.7176 97.6627 67.8409C97.898 68.1408 98.267 68.6759 98.5484 68.1638C98.8298 67.6517 98.5484 67.2412 98.5484 66.909C98.5484 66.5768 98.5207 66.2216 98.2947 66.2677Z'
|
||||
fill='#FFBC1F'
|
||||
/>
|
||||
<path
|
||||
d='M99.2212 67.8963C99.3365 68.1731 99.5487 67.4073 100.001 67.0105C100.453 66.6138 99.7794 65.6265 99.3596 66.1294C99.0782 66.4754 99.1059 67.6149 99.2212 67.8963Z'
|
||||
fill='#FFBC1F'
|
||||
/>
|
||||
<path
|
||||
d='M99.1384 68.2419C98.8986 68.5833 98.7048 69.4967 99.1384 69.5705C99.2334 69.5815 99.3296 69.5659 99.4162 69.5255C99.5029 69.485 99.5766 69.4214 99.6292 69.3415C99.6818 69.2616 99.7112 69.1687 99.7141 69.0732C99.7171 68.9776 99.6934 68.8831 99.6458 68.8001C99.4429 68.4541 99.2399 68.1035 99.1384 68.2419Z'
|
||||
fill='#FFBC1F'
|
||||
/>
|
||||
<path
|
||||
d='M100.895 62.3554C100.48 62.5446 101.504 62.8906 100.803 63.0797C100.102 63.2689 100.083 63.8456 99.479 63.3565C98.8747 62.8675 98.2151 63.5226 98.6718 63.8179C99.1284 64.1131 99.8941 64.8421 99.8711 65.2388C99.848 65.6356 100.595 65.8201 101.292 65.774C101.988 65.7278 102.828 65.9354 102.851 65.6356C102.874 65.3357 102.957 65.2065 102.874 64.9805C102.754 64.6529 102.454 64.33 101.735 64.6114C101.015 64.8928 100.545 64.7498 100.443 64.3992C100.342 64.0485 101.855 63.375 102.523 63.8409C103.192 64.3069 103.829 63.5872 103.34 63.2597C102.851 62.9321 103.178 62.5861 103.515 62.54C103.76 62.5077 103.976 61.8895 104.161 61.4097C103.135 61.2437 102.1 61.1405 101.061 61.1006C101.066 61.7603 101.31 62.1663 100.895 62.3554Z'
|
||||
fill='#FFBC1F'
|
||||
/>
|
||||
<path
|
||||
d='M94.7097 61.7742C95.171 61.9725 95.9368 61.7742 95.7938 61.4189C95.374 61.4928 94.9542 61.5712 94.5391 61.6588C94.5852 61.7112 94.644 61.7509 94.7097 61.7742Z'
|
||||
fill='#FFBC1F'
|
||||
/>
|
||||
<path
|
||||
d='M94.9959 62.1661C94.3408 61.8294 94.3778 62.6551 94.6776 62.9827C94.9774 63.3102 95.8446 62.5813 94.9959 62.1661Z'
|
||||
fill='#FFBC1F'
|
||||
/>
|
||||
<path
|
||||
d='M98.9805 61.1005C99.1817 61.1369 99.3699 61.2255 99.5262 61.3574C99.6824 61.4894 99.8012 61.6601 99.8707 61.8525C99.9584 62.1478 100.664 61.5065 100.673 61.0867H99.9999C99.6586 61.0821 99.3218 61.0867 98.9805 61.1005Z'
|
||||
fill='#FFBC1F'
|
||||
/>
|
||||
<path
|
||||
d='M97.5974 62.0695C97.3022 62.4755 97.5559 62.9645 97.9065 62.5585C98.257 62.1525 97.9757 61.1238 98.2524 61.5666C98.5292 62.0095 99.0459 62.7108 99.3918 62.7431C99.7378 62.7754 99.4379 62.3325 99.3918 61.9634C99.3457 61.5943 98.52 61.2437 98.6122 61.1191C98.0956 61.1468 97.5836 61.1883 97.0762 61.2437C97.4406 61.4836 97.8235 61.7789 97.5974 62.0695Z'
|
||||
fill='#FFBC1F'
|
||||
/>
|
||||
<path
|
||||
d='M99.1393 65.5665C99.5499 65.7325 99.1393 64.7314 99.1393 64.7314C98.7103 64.9852 98.7334 65.3958 99.1393 65.5665Z'
|
||||
fill='#FFBC1F'
|
||||
/>
|
||||
<path
|
||||
d='M97.6613 64.9342C97.7305 65.2157 98.1734 65.3079 98.4086 64.9342C98.6439 64.5606 98.4086 63.2042 98.0765 63.6333C97.7444 64.0623 97.3615 63.8639 96.6926 63.6333C96.0238 63.4026 97.5968 64.639 97.6613 64.9342Z'
|
||||
fill='#FFBC1F'
|
||||
/>
|
||||
<path
|
||||
d='M102.211 88.7025C102.783 88.6333 103.133 89.3299 103.779 89.2976C104.425 89.2653 105.403 90.2433 105.961 89.6621C106.422 89.2007 103.968 88.8086 103.193 88.3887C102.418 87.9689 101.643 88.7717 102.211 88.7025Z'
|
||||
fill='#FFBC1F'
|
||||
/>
|
||||
<path
|
||||
d='M105.06 62.4709C105.863 62.8584 105.725 62.8446 105.236 63.2182C104.747 63.5919 104.922 64.4039 106.001 64.3485C107.081 64.2932 107.75 63.2182 108.239 64.7314C108.728 66.2446 108.377 67.8962 109.004 68.3622C109.632 68.8281 109.11 69.1418 109.004 69.5755C108.898 70.0092 109.18 70.3229 109.669 70.1845C110.158 70.0461 110.019 70.9549 109.669 71.3378C109.318 71.7207 108.903 72.4543 109.982 73.7829C111.062 75.1116 111.205 74.9317 111.551 75.3884C111.897 75.8451 112.183 75.2177 112.284 74.6918C112.386 74.1658 112.04 72.3159 113.28 72.3159C113.667 72.3117 114.042 72.1835 114.35 71.9501C114.658 71.7167 114.883 71.3905 114.992 71.0195C115.13 70.7058 116.108 70.7381 116.629 70.286C117.151 69.8339 117.612 69.5432 117.626 67.9793C114.041 64.6517 109.584 62.4118 104.774 61.5205C104.659 61.8804 104.664 62.2863 105.06 62.4709Z'
|
||||
fill='#FFBC1F'
|
||||
/>
|
||||
</svg>
|
||||
);
|
@ -1,413 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import React from 'react';
|
||||
|
||||
export default () => (
|
||||
<svg
|
||||
width='200'
|
||||
height='200'
|
||||
viewBox='0 0 200 200'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<ellipse
|
||||
cx='100'
|
||||
cy='163.5'
|
||||
rx='91'
|
||||
ry='5.5'
|
||||
fill='black'
|
||||
fillOpacity='0.08'
|
||||
/>
|
||||
<path
|
||||
d='M29.4042 139.894H170.594C171.633 139.879 172.624 139.445 173.35 138.687C174.076 137.929 174.478 136.909 174.467 135.85V39.6821C174.478 38.6229 174.076 37.6027 173.35 36.8448C172.624 36.0869 171.633 35.653 170.594 35.6382H29.4042C28.3657 35.6545 27.3757 36.0888 26.6502 36.8464C25.9247 37.604 25.5225 38.6233 25.5314 39.6821V135.855C25.524 136.913 25.9268 137.931 26.6522 138.687C27.3775 139.444 28.3667 139.877 29.4042 139.894Z'
|
||||
fill='#3F4350'
|
||||
/>
|
||||
<path
|
||||
d='M13.8301 153.723C13.8301 158.511 17.7205 163.298 22.439 163.298H177.567C182.013 163.298 186.171 158.522 186.171 153.723H13.8301Z'
|
||||
fill='#767D93'
|
||||
/>
|
||||
<path
|
||||
d='M171.809 139.894H28.1913L13.8301 153.723H186.171L171.809 139.894Z'
|
||||
fill='#D1D4DB'
|
||||
/>
|
||||
<path
|
||||
d='M167.515 140.957H32.4808L27.6602 146.808H172.341L167.515 140.957Z'
|
||||
fill='#AFB3C0'
|
||||
/>
|
||||
<path
|
||||
d='M114.805 148.936H85.2004L82.9785 152.128H117.021L114.805 148.936Z'
|
||||
fill='#24262E'
|
||||
/>
|
||||
<g
|
||||
clipPath='url(#clip0_360_92235)'
|
||||
>
|
||||
<rect
|
||||
width='131.915'
|
||||
height='85.1064'
|
||||
transform='translate(34.043 44.6809)'
|
||||
fill='white'
|
||||
/>
|
||||
<rect
|
||||
x='34.043'
|
||||
y='44.6809'
|
||||
width='39.3617'
|
||||
height='85.6383'
|
||||
fill='#1E325C'
|
||||
/>
|
||||
<ellipse
|
||||
opacity='0.32'
|
||||
cx='40.4265'
|
||||
cy='51.5957'
|
||||
rx='3.7234'
|
||||
ry='3.7234'
|
||||
fill='white'
|
||||
/>
|
||||
<rect
|
||||
opacity='0.32'
|
||||
x='46.8086'
|
||||
y='50.532'
|
||||
width='17.5532'
|
||||
height='1.59574'
|
||||
rx='0.797872'
|
||||
fill='white'
|
||||
/>
|
||||
<rect
|
||||
opacity='0.32'
|
||||
x='37.7656'
|
||||
y='60.1064'
|
||||
width='11.7021'
|
||||
height='1.59575'
|
||||
rx='0.797873'
|
||||
fill='white'
|
||||
/>
|
||||
<rect
|
||||
opacity='0.32'
|
||||
x='37.7656'
|
||||
y='111.17'
|
||||
width='11.7021'
|
||||
height='1.59575'
|
||||
rx='0.797874'
|
||||
fill='white'
|
||||
/>
|
||||
<ellipse
|
||||
opacity='0.32'
|
||||
cx='39.6273'
|
||||
cy='66.7553'
|
||||
rx='1.8617'
|
||||
ry='1.8617'
|
||||
fill='white'
|
||||
/>
|
||||
<rect
|
||||
opacity='0.32'
|
||||
x='43.6172'
|
||||
y='65.9573'
|
||||
width='22.0745'
|
||||
height='1.52728'
|
||||
rx='0.763642'
|
||||
fill='white'
|
||||
/>
|
||||
<ellipse
|
||||
opacity='0.32'
|
||||
cx='39.6273'
|
||||
cy='85.9042'
|
||||
rx='1.8617'
|
||||
ry='1.8617'
|
||||
fill='white'
|
||||
/>
|
||||
<rect
|
||||
opacity='0.32'
|
||||
x='43.6172'
|
||||
y='85.1062'
|
||||
width='21.8085'
|
||||
height='1.59575'
|
||||
rx='0.797873'
|
||||
fill='white'
|
||||
/>
|
||||
<ellipse
|
||||
opacity='0.32'
|
||||
cx='39.6273'
|
||||
cy='73.1383'
|
||||
rx='1.8617'
|
||||
ry='1.8617'
|
||||
fill='white'
|
||||
/>
|
||||
<rect
|
||||
opacity='0.32'
|
||||
x='43.6172'
|
||||
y='72.3403'
|
||||
width='19.1489'
|
||||
height='1.59575'
|
||||
rx='0.797873'
|
||||
fill='white'
|
||||
/>
|
||||
<ellipse
|
||||
opacity='0.32'
|
||||
cx='39.6273'
|
||||
cy='92.2872'
|
||||
rx='1.8617'
|
||||
ry='1.8617'
|
||||
fill='white'
|
||||
/>
|
||||
<rect
|
||||
opacity='0.32'
|
||||
x='43.6172'
|
||||
y='91.4893'
|
||||
width='19.1489'
|
||||
height='1.59575'
|
||||
rx='0.797873'
|
||||
fill='white'
|
||||
/>
|
||||
<ellipse
|
||||
opacity='0.32'
|
||||
cx='39.6273'
|
||||
cy='79.5214'
|
||||
rx='1.8617'
|
||||
ry='1.8617'
|
||||
fill='white'
|
||||
/>
|
||||
<rect
|
||||
opacity='0.32'
|
||||
x='43.6172'
|
||||
y='78.7234'
|
||||
width='25'
|
||||
height='1.59575'
|
||||
rx='0.797873'
|
||||
fill='white'
|
||||
/>
|
||||
<ellipse
|
||||
opacity='0.32'
|
||||
cx='39.6273'
|
||||
cy='98.6703'
|
||||
rx='1.8617'
|
||||
ry='1.8617'
|
||||
fill='white'
|
||||
/>
|
||||
<rect
|
||||
opacity='0.32'
|
||||
x='43.6172'
|
||||
y='97.8723'
|
||||
width='25'
|
||||
height='1.59575'
|
||||
rx='0.797874'
|
||||
fill='white'
|
||||
/>
|
||||
<ellipse
|
||||
opacity='0.32'
|
||||
cx='39.6273'
|
||||
cy='117.819'
|
||||
rx='1.8617'
|
||||
ry='1.8617'
|
||||
fill='white'
|
||||
/>
|
||||
<rect
|
||||
opacity='0.32'
|
||||
x='43.6172'
|
||||
y='117.021'
|
||||
width='25'
|
||||
height='1.59575'
|
||||
rx='0.797874'
|
||||
fill='white'
|
||||
/>
|
||||
<ellipse
|
||||
opacity='0.32'
|
||||
cx='39.6273'
|
||||
cy='105.053'
|
||||
rx='1.8617'
|
||||
ry='1.86171'
|
||||
fill='white'
|
||||
/>
|
||||
<rect
|
||||
opacity='0.32'
|
||||
x='43.6172'
|
||||
y='104.255'
|
||||
width='16.4894'
|
||||
height='1.59574'
|
||||
rx='0.797869'
|
||||
fill='white'
|
||||
/>
|
||||
<ellipse
|
||||
cx='80.8516'
|
||||
cy='67.0213'
|
||||
rx='3.19149'
|
||||
ry='3.19149'
|
||||
fill='#3F4350'
|
||||
fillOpacity='0.24'
|
||||
/>
|
||||
<rect
|
||||
x='87.2344'
|
||||
y='64.3618'
|
||||
width='18.0851'
|
||||
height='1.59575'
|
||||
rx='0.797873'
|
||||
fill='#3F4350'
|
||||
fillOpacity='0.24'
|
||||
/>
|
||||
<rect
|
||||
x='87.2344'
|
||||
y='69.1489'
|
||||
width='54.7872'
|
||||
height='1.06383'
|
||||
rx='0.531916'
|
||||
fill='#3F4350'
|
||||
fillOpacity='0.24'
|
||||
/>
|
||||
<rect
|
||||
x='87.2344'
|
||||
y='73.4043'
|
||||
width='61.7021'
|
||||
height='1.06383'
|
||||
rx='0.531915'
|
||||
fill='#3F4350'
|
||||
fillOpacity='0.24'
|
||||
/>
|
||||
<circle
|
||||
cx='80.8516'
|
||||
cy='88.8299'
|
||||
r='3.19149'
|
||||
fill='#3F4350'
|
||||
fillOpacity='0.24'
|
||||
/>
|
||||
<rect
|
||||
x='87.2344'
|
||||
y='86.1704'
|
||||
width='18.0851'
|
||||
height='1.59575'
|
||||
rx='0.797873'
|
||||
fill='#3F4350'
|
||||
fillOpacity='0.24'
|
||||
/>
|
||||
<rect
|
||||
x='87.2344'
|
||||
y='90.9575'
|
||||
width='54.7872'
|
||||
height='1.06383'
|
||||
rx='0.531914'
|
||||
fill='#3F4350'
|
||||
fillOpacity='0.24'
|
||||
/>
|
||||
<rect
|
||||
x='87.2344'
|
||||
y='95.2129'
|
||||
width='61.7021'
|
||||
height='1.06383'
|
||||
rx='0.531914'
|
||||
fill='#3F4350'
|
||||
fillOpacity='0.24'
|
||||
/>
|
||||
<ellipse
|
||||
cx='80.8516'
|
||||
cy='109.043'
|
||||
rx='3.19149'
|
||||
ry='3.19149'
|
||||
fill='#3F4350'
|
||||
fillOpacity='0.24'
|
||||
/>
|
||||
<rect
|
||||
x='87.2344'
|
||||
y='106.383'
|
||||
width='18.0851'
|
||||
height='1.59574'
|
||||
rx='0.797871'
|
||||
fill='#3F4350'
|
||||
fillOpacity='0.24'
|
||||
/>
|
||||
<rect
|
||||
x='87.2344'
|
||||
y='111.17'
|
||||
width='54.7872'
|
||||
height='1.06384'
|
||||
rx='0.531918'
|
||||
fill='#3F4350'
|
||||
fillOpacity='0.24'
|
||||
/>
|
||||
<rect
|
||||
x='87.2344'
|
||||
y='115.426'
|
||||
width='61.7021'
|
||||
height='1.06383'
|
||||
rx='0.531914'
|
||||
fill='#3F4350'
|
||||
fillOpacity='0.24'
|
||||
/>
|
||||
<ellipse
|
||||
cx='97.3418'
|
||||
cy='51.5957'
|
||||
rx='1.59574'
|
||||
ry='1.59575'
|
||||
fill='#3F4350'
|
||||
fillOpacity='0.24'
|
||||
/>
|
||||
<ellipse
|
||||
cx='125.533'
|
||||
cy='51.5957'
|
||||
rx='1.59575'
|
||||
ry='1.59575'
|
||||
fill='#3F4350'
|
||||
fillOpacity='0.24'
|
||||
/>
|
||||
<ellipse
|
||||
cx='152.66'
|
||||
cy='51.5957'
|
||||
rx='1.59575'
|
||||
ry='1.59575'
|
||||
fill='#3F4350'
|
||||
fillOpacity='0.24'
|
||||
/>
|
||||
<ellipse
|
||||
cx='157.447'
|
||||
cy='51.5957'
|
||||
rx='1.59574'
|
||||
ry='1.59575'
|
||||
fill='#3F4350'
|
||||
fillOpacity='0.24'
|
||||
/>
|
||||
<ellipse
|
||||
cx='101.596'
|
||||
cy='51.5957'
|
||||
rx='1.59575'
|
||||
ry='1.59575'
|
||||
fill='#3F4350'
|
||||
fillOpacity='0.24'
|
||||
/>
|
||||
<rect
|
||||
x='77.6602'
|
||||
y='51.0637'
|
||||
width='16.4894'
|
||||
height='1.06383'
|
||||
rx='0.531915'
|
||||
fill='#3F4350'
|
||||
fillOpacity='0.24'
|
||||
/>
|
||||
<rect
|
||||
x='128.725'
|
||||
y='50.532'
|
||||
width='20.7447'
|
||||
height='2.12766'
|
||||
rx='1.06383'
|
||||
fill='#3F4350'
|
||||
fillOpacity='0.24'
|
||||
/>
|
||||
</g>
|
||||
<path
|
||||
d='M100.001 38.2979C100.422 38.2979 100.833 38.4226 101.183 38.6564C101.533 38.8902 101.805 39.2225 101.966 39.6113C102.127 40.0001 102.17 40.4279 102.087 40.8406C102.005 41.2533 101.803 41.6324 101.505 41.93C101.208 42.2275 100.829 42.4302 100.416 42.5123C100.003 42.5944 99.5753 42.5522 99.1865 42.3912C98.7977 42.2302 98.4654 41.9575 98.2316 41.6076C97.9978 41.2577 97.873 40.8463 97.873 40.4255C97.873 39.8612 98.0972 39.32 98.4963 38.921C98.8953 38.522 99.4364 38.2979 100.001 38.2979Z'
|
||||
fill='#989DAE'
|
||||
/>
|
||||
<path
|
||||
d='M112.258 160.106H87.1942C86.3291 160.106 84.043 160.106 84.043 156.915H115.426C115.426 160.106 113.072 160.106 112.258 160.106Z'
|
||||
fill='#3F4350'
|
||||
/>
|
||||
<defs>
|
||||
<clipPath
|
||||
id='clip0_360_92235'
|
||||
>
|
||||
<rect
|
||||
width='131.915'
|
||||
height='85.1064'
|
||||
fill='white'
|
||||
transform='translate(34.043 44.6809)'
|
||||
/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
);
|
File diff suppressed because one or more lines are too long
@ -1,37 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import React, {SVGProps} from 'react';
|
||||
|
||||
const NewspaperSvg = (props: SVGProps<SVGSVGElement>) => (
|
||||
<svg
|
||||
width={props.width || 20}
|
||||
height={props.height || 20}
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
{...props}
|
||||
>
|
||||
<path
|
||||
d='M15.638 6.163v9.086a.643.643 0 0 1-.206.489.81.81 0 0 1-.5.22h-9.81a.81.81 0 0 0 .5-.22.643.643 0 0 0 .208-.489V3.99h7.662a.228.228 0 0 1 .22.22v.537l.342 1.198h.122v-1.05l1.22 1.05h.024a.229.229 0 0 1 .22.22h-.002Z'
|
||||
fill='#fff'
|
||||
/>
|
||||
<path
|
||||
d='M15.638 6.163v9.086a.643.643 0 0 1-.206.489.81.81 0 0 1-.5.22h-9.81a.81.81 0 0 0 .5-.22.643.643 0 0 0 .208-.489V3.99h7.662a.228.228 0 0 1 .22.22v.537l.342 1.198h.122v-1.05l1.22 1.05h.024a.229.229 0 0 1 .22.22h-.002Z'
|
||||
fill='#E8E9ED'
|
||||
/>
|
||||
<path
|
||||
d='M8.148 5.236H7.1V5.04h1.048v.196Zm6.223 3.174H7.1v.22h7.27v-.22Zm0 6.717H7.1v-.22h7.27v.22ZM10.906 11H7.1v-.44h3.806V11Zm.024.635H7.1v.415h3.83v-.415Zm0 1.05H7.1v.44h3.83v-.44Zm0 1.075H7.1v.415h3.83v-.415Zm3.44 0h-2.806v.415h2.806v-.415Z'
|
||||
fill='#BABEC9'
|
||||
/>
|
||||
<path
|
||||
d='M12.809 5.748a.228.228 0 0 1 .22.22v.855a.252.252 0 0 1-.22.196H7.294a.209.209 0 0 1-.195-.196v-.855a.2.2 0 0 1 .195-.22h5.515ZM7.097 9.73a.172.172 0 0 0 .194.195h3.417a.198.198 0 0 0 .22-.195v-.44a.198.198 0 0 0-.22-.196H7.291a.172.172 0 0 0-.194.196v.44Zm7.271-.44a.201.201 0 0 0-.22-.196h-2.386a.174.174 0 0 0-.195.196v3.615a.198.198 0 0 0 .195.22h2.391a.229.229 0 0 0 .22-.22l-.005-3.615Z'
|
||||
fill='#1E325C'
|
||||
/>
|
||||
<path
|
||||
d='M15.614 6.066h-1.976v-1.98l1.927 1.907.05.073Z'
|
||||
fill='#AFB3C0'
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
|
||||
export default NewspaperSvg;
|
File diff suppressed because one or more lines are too long
@ -1,63 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import React from 'react';
|
||||
|
||||
export default () => (
|
||||
<svg
|
||||
width='104'
|
||||
height='104'
|
||||
viewBox='0 0 104 104'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<path
|
||||
d='M56.0038 86.2168C54.4665 88.5698 50.995 88.909 48.2957 87.0036L17.8171 65.5384C16.8225 64.8673 16.1254 63.838 15.8713 62.6654C15.6171 61.4928 15.8255 60.2673 16.453 59.2446L43.2653 18.2847C44.005 17.2775 45.066 16.5527 46.2732 16.2299C47.4804 15.9071 48.7615 16.0056 49.9052 16.5091L84.5049 31.7311C87.565 33.0808 88.8353 36.0617 87.3124 38.4507L56.0038 86.2168Z'
|
||||
fill='#FFBC1F'
|
||||
/>
|
||||
<path
|
||||
d='M51.1532 83.4309L19.7363 61.9513L47.3713 19.7427L82.3824 35.7297L51.1532 83.4309Z'
|
||||
fill='white'
|
||||
/>
|
||||
<path
|
||||
d='M71.0443 32.7343C70.7753 33.0723 70.398 33.3072 69.9759 33.3992C69.5538 33.4913 69.1129 33.4348 68.7276 33.2395L55.5128 27.0324C55.3417 26.97 55.1867 26.8701 55.0593 26.74C54.9318 26.6098 54.8352 26.4528 54.7763 26.2805C54.7175 26.1081 54.698 25.9248 54.7193 25.7439C54.7406 25.563 54.8021 25.3892 54.8993 25.2352L56.9706 22.0667C57.2153 21.7425 57.5641 21.5125 57.9584 21.4152C58.3527 21.318 58.7685 21.3594 59.1358 21.5326L72.5239 27.4799C72.7097 27.5394 72.8797 27.6401 73.0212 27.7743C73.1628 27.9086 73.2723 28.0729 73.3416 28.2553C73.4109 28.4376 73.4383 28.6332 73.4217 28.8276C73.4051 29.022 73.3449 29.2102 73.2457 29.3781L71.0443 32.7343Z'
|
||||
fill='#8D93A5'
|
||||
/>
|
||||
<path
|
||||
d='M68.5184 28.6204L60.002 24.7517L62.1022 21.5399C62.3517 21.2219 62.6999 20.9961 63.092 20.8981C63.4841 20.8 63.8977 20.8354 64.2674 20.9986L69.933 23.4526C70.1169 23.5088 70.2856 23.606 70.4265 23.7369C70.5673 23.8678 70.6767 24.029 70.7462 24.2083C70.8156 24.3876 70.8435 24.5804 70.8277 24.772C70.8118 24.9637 70.7527 25.1492 70.6547 25.3147L68.5184 28.6204Z'
|
||||
fill='#2D3039'
|
||||
/>
|
||||
<path
|
||||
d='M69.14 46.0219L51.4648 36.9493L52.3887 35.5347L70.1288 44.5134L69.14 46.0219Z'
|
||||
fill='#3DB887'
|
||||
/>
|
||||
<path
|
||||
d='M45.8924 36.0254C45.8511 36.0522 45.8042 36.0693 45.7553 36.0753C45.7064 36.0813 45.6568 36.0761 45.6102 36.0601C45.5636 36.0441 45.5213 36.0177 45.4864 35.9829C45.4515 35.9482 45.425 35.9059 45.4088 35.8594L44.3262 32.6548C44.3123 32.6067 44.3089 32.5562 44.3163 32.5067C44.3238 32.4573 44.3418 32.41 44.3692 32.3682C44.3966 32.3263 44.4328 32.2909 44.4752 32.2644C44.5176 32.2379 44.5653 32.2209 44.6149 32.2145L45.0263 32.1279C45.1333 32.1054 45.2448 32.1203 45.342 32.1703C45.4393 32.2202 45.5163 32.3021 45.5604 32.4022L46.1378 34.0767C46.153 34.123 46.1787 34.1652 46.2129 34.2C46.2471 34.2348 46.2888 34.2613 46.3349 34.2773C46.381 34.2934 46.4302 34.2986 46.4786 34.2926C46.527 34.2866 46.5734 34.2695 46.6141 34.2426L49.8907 32.3949C49.9925 32.3434 50.1085 32.3268 50.2206 32.3476C50.3328 32.3685 50.435 32.4257 50.5115 32.5104L50.7713 32.8208C50.8058 32.8585 50.8311 32.9036 50.8452 32.9527C50.8594 33.0018 50.8621 33.0535 50.853 33.1038C50.8439 33.1541 50.8234 33.2016 50.7929 33.2427C50.7625 33.2837 50.7229 33.3172 50.6774 33.3404L45.8924 36.0254Z'
|
||||
fill='#3DB887'
|
||||
/>
|
||||
<path
|
||||
d='M63.358 54.8492L46.0293 45.2497L46.9603 43.8279L64.3468 53.3407L63.358 54.8492Z'
|
||||
fill='#BABEC9'
|
||||
/>
|
||||
<path
|
||||
d='M42.7095 45.5816L37.5996 42.709L40.5443 38.198L45.7191 40.984L42.7095 45.5816Z'
|
||||
fill='#BABEC9'
|
||||
/>
|
||||
<path
|
||||
d='M57.5766 63.6835L40.6016 53.5427L41.5254 52.1208L58.5654 62.175L57.5766 63.6835Z'
|
||||
fill='#BABEC9'
|
||||
/>
|
||||
<path
|
||||
d='M37.3252 53.8099L32.3164 50.7713L35.2683 46.2603L40.342 49.2123L37.3252 53.8099Z'
|
||||
fill='#BABEC9'
|
||||
/>
|
||||
<path
|
||||
d='M51.7953 72.5106L35.1738 61.8358L36.0976 60.4211L52.784 71.0021L51.7953 72.5106Z'
|
||||
fill='#BABEC9'
|
||||
/>
|
||||
<path
|
||||
d='M31.941 62.0305L27.0332 58.8331L29.9923 54.3293L34.9578 57.4329L31.941 62.0305Z'
|
||||
fill='#BABEC9'
|
||||
/>
|
||||
</svg>
|
||||
);
|
@ -1,160 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import React from 'react';
|
||||
|
||||
type SvgProps = {
|
||||
width: number;
|
||||
height: number;
|
||||
}
|
||||
|
||||
const Svg = (props: SvgProps) => (
|
||||
<svg
|
||||
width={props.width?.toString() || '304'}
|
||||
height={props.height?.toString() || '273'}
|
||||
viewBox='0 0 304 273'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<rect
|
||||
width='223.235'
|
||||
height='132.605'
|
||||
rx='66.3026'
|
||||
transform='matrix(0.708339 -0.705872 0.708339 0.705872 24.7637 171.987)'
|
||||
fill='var(--center-channel-bg)'
|
||||
/>
|
||||
<rect
|
||||
width='223.235'
|
||||
height='132.605'
|
||||
rx='66.3026'
|
||||
transform='matrix(0.708339 -0.705872 0.708339 0.705872 24.7637 171.987)'
|
||||
fill='var(--center-channel-color)'
|
||||
fillOpacity='0.08'
|
||||
/>
|
||||
<rect
|
||||
x='135.791'
|
||||
y='230.106'
|
||||
width='26.1549'
|
||||
height='4.46808'
|
||||
rx='2.23404'
|
||||
fill='#8D93A5'
|
||||
/>
|
||||
<path
|
||||
fillRule='evenodd'
|
||||
clipRule='evenodd'
|
||||
d='M200.913 244.197C197.988 247.181 193.817 249.468 189.243 249.468H109.24C104.666 249.468 100.496 247.181 97.5708 244.197C94.6395 241.207 92.4482 237.001 92.4482 232.448V47.5518C92.4482 42.9984 94.6357 38.7922 97.5667 35.801C100.491 32.8161 104.66 30.532 109.233 30.532H189.243C193.816 30.532 197.986 32.8156 200.912 35.7997C203.845 38.7903 206.035 42.9968 206.035 47.5518V232.448C206.035 237.001 203.844 241.207 200.913 244.197ZM189.243 245C195.398 245 201.552 238.717 201.552 232.448V47.5518C201.552 41.2759 195.398 35.0001 189.243 35.0001H109.233C103.079 35.0001 96.9319 41.2759 96.9319 47.5518V232.448C96.9319 238.717 103.086 245 109.24 245H189.243Z'
|
||||
fill='#14213E'
|
||||
/>
|
||||
<path
|
||||
d='M201.552 232.448C201.552 238.717 195.397 245 189.243 245H109.24C103.086 245 96.9319 238.717 96.9319 232.448V47.5517C96.9319 41.2758 103.079 35 109.233 35H189.243C195.397 35 201.552 41.2758 201.552 47.5517V232.448Z'
|
||||
fill='var(--center-channel-color)'
|
||||
/>
|
||||
<path
|
||||
d='M158.209 45.7954C158.209 46.4145 157.816 46.915 157.32 46.915H141.17C140.681 46.915 140.274 46.399 140.274 45.7954C140.274 45.1917 140.681 44.6809 141.17 44.6809H157.292C157.789 44.6809 158.209 45.1814 158.209 45.7954Z'
|
||||
fill='#8D93A5'
|
||||
/>
|
||||
<rect
|
||||
width='95.6523'
|
||||
height='164.574'
|
||||
transform='translate(101.416 58.0852)'
|
||||
fill='var(--center-channel-bg)'
|
||||
/>
|
||||
<path
|
||||
d='M80.4561 131.227H24.3578C23.3297 131.223 22.311 131.421 21.3599 131.809C20.4087 132.197 19.5438 132.768 18.8143 133.488C18.0849 134.209 17.5054 135.065 17.1087 136.008C16.7121 136.952 16.5062 137.963 16.5027 138.986V174.44C16.5062 175.462 16.7121 176.474 17.1087 177.417C17.5054 178.36 18.0849 179.217 18.8143 179.937C19.5438 180.657 20.4087 181.228 21.3599 181.616C22.311 182.004 23.3297 182.202 24.3578 182.199H32.6367V195.47L45.0552 182.199H80.4362C81.4643 182.202 82.4829 182.004 83.4341 181.616C84.3852 181.228 85.2502 180.657 85.9796 179.937C86.709 179.217 87.2886 178.36 87.6852 177.417C88.0819 176.474 88.2878 175.462 88.2913 174.44V138.986C88.2843 136.924 87.4555 134.95 85.9866 133.495C84.5178 132.041 82.5289 131.225 80.4561 131.227V131.227Z'
|
||||
fill='var(--away-indicator)'
|
||||
/>
|
||||
<path
|
||||
d='M45.0552 182.198H80.4362C81.4642 182.202 82.4829 182.004 83.4341 181.616C84.3852 181.228 85.2502 180.657 85.9796 179.937C86.709 179.216 87.2886 178.36 87.6852 177.417C88.0818 176.474 88.2878 175.462 88.2912 174.44V152.916C88.2912 152.916 85.8208 172.819 85.377 174.571C84.9333 176.323 84.0524 178.945 79.8798 179.379C75.7072 179.814 45.0552 182.198 45.0552 182.198Z'
|
||||
fill='#CC8F00'
|
||||
/>
|
||||
<path
|
||||
d='M33.2459 151.644C34.2454 151.644 35.2224 151.939 36.0534 152.491C36.8845 153.043 37.5322 153.828 37.9147 154.747C38.2972 155.665 38.3973 156.675 38.2023 157.65C38.0073 158.625 37.526 159.52 36.8192 160.223C36.1125 160.926 35.212 161.405 34.2318 161.598C33.2515 161.792 32.2354 161.693 31.312 161.313C30.3886 160.932 29.5993 160.288 29.0441 159.462C28.4888 158.635 28.1924 157.664 28.1924 156.67C28.1915 156.009 28.3216 155.356 28.5753 154.746C28.8289 154.135 29.2011 153.581 29.6706 153.114C30.14 152.647 30.6974 152.277 31.311 152.025C31.9245 151.773 32.582 151.643 33.2459 151.644V151.644Z'
|
||||
fill='var(--center-channel-bg)'
|
||||
/>
|
||||
<path
|
||||
d='M52.4073 151.644C53.4067 151.644 54.3838 151.939 55.2148 152.491C56.0459 153.043 56.6936 153.828 57.0761 154.747C57.4585 155.665 57.5586 156.675 57.3636 157.65C57.1686 158.625 56.6873 159.52 55.9806 160.223C55.2739 160.926 54.3734 161.405 53.3931 161.598C52.4129 161.792 51.3968 161.693 50.4734 161.313C49.55 160.932 48.7607 160.288 48.2054 159.462C47.6501 158.635 47.3538 157.664 47.3538 156.67C47.3529 156.009 47.483 155.356 47.7367 154.746C47.9903 154.135 48.3625 153.581 48.832 153.114C49.3014 152.647 49.8588 152.277 50.4723 152.025C51.0858 151.773 51.7434 151.643 52.4073 151.644V151.644Z'
|
||||
fill='var(--center-channel-bg)'
|
||||
/>
|
||||
<path
|
||||
d='M71.5478 151.644C72.5476 151.643 73.5253 151.937 74.3572 152.488C75.1891 153.039 75.8379 153.824 76.2214 154.742C76.6049 155.66 76.7059 156.671 76.5117 157.646C76.3174 158.621 75.8366 159.517 75.1302 160.221C74.4237 160.924 73.5233 161.404 72.5428 161.598C71.5623 161.792 70.5459 161.693 69.6221 161.313C68.6983 160.933 67.9087 160.289 67.3531 159.462C66.7975 158.636 66.501 157.664 66.501 156.67C66.5001 156.01 66.63 155.357 66.8832 154.747C67.1365 154.137 67.5081 153.583 67.9768 153.117C68.4456 152.65 69.0022 152.28 69.615 152.027C70.2277 151.774 70.8845 151.644 71.5478 151.644V151.644Z'
|
||||
fill='var(--center-channel-bg)'
|
||||
/>
|
||||
<path
|
||||
d='M22.3246 146.073C22.8946 144.066 23.8581 142.192 25.1596 140.557C26.4611 138.923 28.0749 137.56 29.9081 136.549C30.0167 136.494 30.104 136.405 30.1563 136.296C30.2087 136.187 30.2231 136.063 30.1973 135.945C30.1716 135.827 30.1071 135.721 30.014 135.643C29.9209 135.565 29.8045 135.52 29.6829 135.515C26.1461 135.304 19.0064 136.055 21.245 146.02C21.2686 146.142 21.3326 146.252 21.4267 146.333C21.5208 146.414 21.6396 146.462 21.764 146.468C21.8884 146.474 22.0113 146.438 22.1129 146.366C22.2146 146.295 22.2891 146.191 22.3246 146.073V146.073Z'
|
||||
fill='#FFD470'
|
||||
/>
|
||||
<path
|
||||
d='M200.117 78.1873H272.403C273.728 78.1828 275.04 78.4379 276.266 78.9379C277.491 79.4379 278.606 80.1731 279.546 81.1014C280.486 82.0298 281.233 83.1332 281.744 84.3485C282.255 85.5639 282.52 86.8675 282.525 88.1849V133.87C282.52 135.187 282.255 136.491 281.744 137.706C281.233 138.921 280.486 140.025 279.546 140.953C278.606 141.881 277.491 142.617 276.266 143.117C275.04 143.617 273.728 143.872 272.403 143.867H261.735V160.968L245.733 143.867H200.143C198.818 143.872 197.505 143.617 196.28 143.117C195.054 142.617 193.94 141.881 193 140.953C192.06 140.025 191.313 138.921 190.802 137.706C190.291 136.491 190.025 135.187 190.021 133.87V88.1849C190.03 85.5288 191.098 82.9846 192.991 81.1105C194.883 79.2363 197.446 78.1851 200.117 78.1873V78.1873Z'
|
||||
fill='#1C58D9'
|
||||
/>
|
||||
<path
|
||||
d='M245.733 143.867H200.142C198.818 143.872 197.505 143.617 196.28 143.117C195.054 142.617 193.939 141.881 192.999 140.953C192.06 140.025 191.313 138.921 190.802 137.706C190.291 136.491 190.025 135.187 190.021 133.87V106.135C190.021 106.135 193.204 131.782 193.776 134.039C194.348 136.297 195.483 139.675 200.859 140.235C206.236 140.795 245.733 143.867 245.733 143.867Z'
|
||||
fill='black'
|
||||
fillOpacity='0.16'
|
||||
/>
|
||||
<path
|
||||
d='M260.95 104.497C259.662 104.497 258.403 104.876 257.332 105.588C256.261 106.299 255.427 107.311 254.934 108.494C254.441 109.677 254.312 110.979 254.563 112.235C254.815 113.491 255.435 114.645 256.345 115.551C257.256 116.457 258.416 117.073 259.68 117.323C260.943 117.573 262.252 117.445 263.442 116.955C264.632 116.465 265.649 115.635 266.364 114.57C267.08 113.505 267.462 112.253 267.462 110.972C267.463 110.121 267.295 109.279 266.968 108.493C266.641 107.707 266.162 106.992 265.557 106.391C264.952 105.789 264.234 105.312 263.443 104.987C262.653 104.662 261.805 104.495 260.95 104.497V104.497Z'
|
||||
fill='var(--center-channel-bg)'
|
||||
/>
|
||||
<path
|
||||
d='M236.26 104.497C234.972 104.497 233.713 104.876 232.642 105.588C231.571 106.299 230.736 107.311 230.244 108.494C229.751 109.677 229.622 110.979 229.873 112.235C230.124 113.491 230.744 114.645 231.655 115.551C232.566 116.457 233.726 117.073 234.989 117.323C236.252 117.573 237.562 117.445 238.751 116.955C239.941 116.465 240.958 115.635 241.674 114.57C242.389 113.505 242.771 112.253 242.771 110.972C242.772 110.121 242.605 109.279 242.278 108.493C241.951 107.707 241.471 106.992 240.867 106.391C240.262 105.789 239.543 105.312 238.753 104.987C237.962 104.662 237.115 104.495 236.26 104.497V104.497Z'
|
||||
fill='var(--center-channel-bg)'
|
||||
/>
|
||||
<path
|
||||
d='M211.596 104.497C210.308 104.495 209.048 104.873 207.976 105.584C206.904 106.294 206.068 107.305 205.574 108.488C205.08 109.671 204.949 110.973 205.2 112.23C205.45 113.487 206.07 114.641 206.98 115.548C207.89 116.454 209.051 117.072 210.314 117.323C211.577 117.573 212.887 117.445 214.077 116.955C215.268 116.466 216.285 115.636 217.001 114.571C217.717 113.505 218.099 112.253 218.099 110.972C218.1 110.122 217.933 109.28 217.607 108.495C217.28 107.709 216.801 106.995 216.197 106.394C215.593 105.792 214.876 105.315 214.087 104.99C213.297 104.664 212.451 104.497 211.596 104.497V104.497Z'
|
||||
fill='var(--center-channel-bg)'
|
||||
/>
|
||||
<path
|
||||
d='M275.023 97.3169C274.288 94.7316 273.047 92.3163 271.37 90.2102C269.693 88.104 267.613 86.3485 265.251 85.0449C265.111 84.9746 264.998 84.8601 264.931 84.7193C264.864 84.5786 264.845 84.4196 264.878 84.2672C264.911 84.1148 264.994 83.9777 265.114 83.8773C265.234 83.7769 265.384 83.7189 265.541 83.7125C270.098 83.4409 279.298 84.4084 276.414 97.249C276.383 97.4058 276.301 97.5478 276.18 97.6524C276.058 97.757 275.905 97.8181 275.745 97.826C275.585 97.8338 275.426 97.7879 275.295 97.6956C275.164 97.6033 275.068 97.47 275.023 97.3169V97.3169Z'
|
||||
fill='var(--center-channel-bg)'
|
||||
fillOpacity='0.16'
|
||||
/>
|
||||
<g clipPath='url(#clip0_522_242930)'>
|
||||
<path
|
||||
d='M185.946 120.277L184.327 112.017C184.084 110.796 183.376 109.719 182.354 109.014C174.762 103.757 164.697 101.019 151.505 101.019C138.312 101.019 128.238 103.757 120.673 109.032C119.654 109.74 118.947 110.816 118.7 112.035L117.046 120.277C116.942 120.795 116.983 121.331 117.164 121.828C117.346 122.324 117.66 122.76 118.073 123.088C120.255 124.794 121.246 127.049 121.71 129.896C122.231 132.891 122.107 135.963 121.346 138.905C114.591 165.528 125.965 177.64 151.459 186C176.917 177.64 188.319 165.528 181.563 138.905C180.807 135.962 180.683 132.891 181.199 129.896C181.7 127.049 182.691 124.794 184.836 123.088C185.265 122.771 185.597 122.339 185.793 121.842C185.989 121.345 186.042 120.802 185.946 120.277Z'
|
||||
fill='#CC8F00'
|
||||
/>
|
||||
<path
|
||||
d='M151.505 179.264C128.338 171.251 122.292 161.266 127.565 140.474C128.553 136.652 128.711 132.662 128.029 128.774C127.533 125.341 126.019 122.138 123.683 119.583L124.811 113.924C131.43 109.525 140.167 107.389 151.505 107.389C162.843 107.389 171.571 109.525 178.19 113.924L179.318 119.583C176.985 122.139 175.473 125.342 174.981 128.774C174.299 132.662 174.457 136.652 175.444 140.474C180.691 161.257 174.672 171.296 151.505 179.264Z'
|
||||
fill='var(--away-indicator)'
|
||||
/>
|
||||
<path
|
||||
d='M151.505 179.264C128.338 171.251 122.292 161.266 127.565 140.474C128.553 136.652 128.711 132.662 128.029 128.774C127.533 125.341 126.019 122.138 123.683 119.583L124.811 113.924C131.43 109.525 140.167 107.389 151.505 107.389C162.843 107.389 171.571 109.525 178.19 113.924L179.318 119.583C176.985 122.139 175.473 125.342 174.981 128.774C174.299 132.662 174.457 136.652 175.444 140.474C180.691 161.257 174.672 171.296 151.505 179.264Z'
|
||||
fill='var(--away-indicator)'
|
||||
/>
|
||||
<path
|
||||
d='M151.505 137.234V107.407C140.167 107.407 131.43 109.543 124.811 113.942L123.683 119.601C126.019 122.157 127.533 125.359 128.029 128.792C128.517 131.587 128.569 134.441 128.184 137.253L151.505 137.234Z'
|
||||
fill='var(--away-indicator)'
|
||||
/>
|
||||
<path
|
||||
d='M151.505 179.264C174.672 171.296 180.691 161.256 175.445 140.474C175.174 139.407 174.965 138.325 174.817 137.234H151.505V179.264Z'
|
||||
fill='var(--away-indicator)'
|
||||
/>
|
||||
<path
|
||||
d='M127.566 140.474C122.292 161.266 128.338 171.251 151.505 179.264V137.234H128.184C128.039 138.325 127.833 139.407 127.566 140.474V140.474Z'
|
||||
fill='#FFD791'
|
||||
/>
|
||||
<path
|
||||
d='M151.505 107.407V137.253H174.817C174.43 134.441 174.485 131.586 174.981 128.792C175.474 125.36 176.985 122.157 179.318 119.601L178.19 113.942C171.599 109.525 162.834 107.407 151.505 107.407Z'
|
||||
fill='#FFD791'
|
||||
/>
|
||||
<path
|
||||
d='M165.134 127.861L146.368 148.579L140.922 144.435H137.894L146.368 158.244L168.162 127.861H165.134Z'
|
||||
fill='#66320A'
|
||||
/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id='clip0_522_242930'>
|
||||
<rect
|
||||
width='69'
|
||||
height='85'
|
||||
fill='var(--center-channel-bg)'
|
||||
transform='translate(117 101)'
|
||||
/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
||||
);
|
||||
|
||||
export default Svg;
|
@ -1,99 +0,0 @@
|
||||
.MultiInput {
|
||||
&.Input_container {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.Input_wrapper {
|
||||
padding: 0;
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.Input {
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
|
||||
> div {
|
||||
min-height: 70px;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
&.Input___focus .a11y--focused {
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
.Input_legend {
|
||||
margin-left: 12px;
|
||||
}
|
||||
|
||||
input {
|
||||
padding-left: 8px !important;
|
||||
}
|
||||
}
|
||||
|
||||
.MultiInput__multiValueRemove {
|
||||
> div {
|
||||
padding: 0 4px;
|
||||
|
||||
&:hover {
|
||||
background-color: unset;
|
||||
color: unset;
|
||||
cursor: pointer;
|
||||
|
||||
i {
|
||||
color: rgba(var(--center-channel-color-rgb), 0.56);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
i {
|
||||
color: rgba(var(--center-channel-color-rgb), 0.32);
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
|
||||
&::before {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.MultiInput__multiValueContainer {
|
||||
> div {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 2px 0 2px 8px;
|
||||
margin: 4px;
|
||||
background-color: rgba(var(--center-channel-color-rgb), 0.08);
|
||||
border-radius: 12px;
|
||||
|
||||
> div {
|
||||
padding: 0;
|
||||
color: var(--center-channel-color);
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
line-height: 18px;
|
||||
}
|
||||
}
|
||||
|
||||
&.error > div {
|
||||
border: 1px solid var(--error-text);
|
||||
}
|
||||
|
||||
& + div input {
|
||||
padding-left: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
.MultiInput__placeholder {
|
||||
padding-left: 8px;
|
||||
opacity: 0.64;
|
||||
|
||||
> div {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
& + div input {
|
||||
padding-left: 0 !important;
|
||||
}
|
||||
}
|
@ -1,126 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import React, {useState, CSSProperties} from 'react';
|
||||
import ReactSelect, {components, Props as SelectProps, ActionMeta} from 'react-select';
|
||||
import classNames from 'classnames';
|
||||
|
||||
import './multi_input.scss';
|
||||
|
||||
// TODO: This component needs work, should not be used outside of InviteMembersStep until this comment is removed.
|
||||
|
||||
type ValueType = {
|
||||
label: string;
|
||||
value: string;
|
||||
}
|
||||
|
||||
type Props<T> = Omit<SelectProps<T>, 'onChange'> & {
|
||||
value: T[];
|
||||
legend?: string;
|
||||
onChange: (value: T[], action: ActionMeta<T[]>) => void;
|
||||
};
|
||||
|
||||
const baseStyles = {
|
||||
input: (provided: CSSProperties) => ({
|
||||
...provided,
|
||||
color: 'var(--center-channel-color)',
|
||||
}),
|
||||
};
|
||||
|
||||
const MultiValueContainer = (props: any) => {
|
||||
return (
|
||||
<div className={classNames('MultiInput__multiValueContainer', {error: props.data.error})}>
|
||||
<components.MultiValueContainer {...props}/>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
const MultiValueRemove = (props: any) => {
|
||||
return (
|
||||
<div className='MultiInput__multiValueRemove'>
|
||||
<components.MultiValueRemove {...props}>
|
||||
<i className='icon icon-close-circle'/>
|
||||
</components.MultiValueRemove>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
const Placeholder = (props: any) => {
|
||||
return (
|
||||
<div className='MultiInput__placeholder'>
|
||||
<components.Placeholder {...props}/>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
const MultiInput = <T extends ValueType>(props: Props<T>) => {
|
||||
const {value, placeholder, className, addon, name, textPrefix, legend, onChange, styles, ...otherProps} = props;
|
||||
|
||||
const [focused, setFocused] = useState(false);
|
||||
|
||||
const onInputFocus = (event: React.FocusEvent<HTMLElement>) => {
|
||||
const {onFocus} = props;
|
||||
|
||||
setFocused(true);
|
||||
|
||||
if (onFocus) {
|
||||
onFocus(event);
|
||||
}
|
||||
};
|
||||
|
||||
const onInputBlur = (event: React.FocusEvent<HTMLElement>) => {
|
||||
const {onBlur} = props;
|
||||
|
||||
setFocused(false);
|
||||
|
||||
if (onBlur) {
|
||||
onBlur(event);
|
||||
}
|
||||
};
|
||||
|
||||
const showLegend = Boolean(focused || value.length);
|
||||
|
||||
return (
|
||||
<div className='MultiInput Input_container'>
|
||||
<fieldset
|
||||
className={classNames('Input_fieldset', className, {
|
||||
Input_fieldset___legend: showLegend,
|
||||
})}
|
||||
>
|
||||
<legend className={classNames('Input_legend', {Input_legend___focus: showLegend})}>
|
||||
{showLegend ? (legend || placeholder) : null}
|
||||
</legend>
|
||||
<div
|
||||
className='Input_wrapper'
|
||||
onFocus={onInputFocus}
|
||||
onBlur={onInputBlur}
|
||||
>
|
||||
{textPrefix && <span>{textPrefix}</span>}
|
||||
<ReactSelect
|
||||
id={`MultiInput_${name}`}
|
||||
components={{
|
||||
Menu: () => null,
|
||||
IndicatorsContainer: () => null,
|
||||
MultiValueContainer,
|
||||
MultiValueRemove,
|
||||
Placeholder,
|
||||
}}
|
||||
isMulti={true}
|
||||
isClearable={false}
|
||||
openMenuOnFocus={false}
|
||||
menuIsOpen={false}
|
||||
placeholder={focused ? '' : placeholder}
|
||||
className={classNames('Input', className, {Input__focus: showLegend})}
|
||||
value={value}
|
||||
onChange={onChange as any} // types are not working correctly for multiselect
|
||||
styles={{...baseStyles, ...styles}}
|
||||
{...otherProps}
|
||||
/>
|
||||
</div>
|
||||
{addon}
|
||||
</fieldset>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default MultiInput;
|
@ -1,80 +0,0 @@
|
||||
.PictureSelector {
|
||||
display: flex;
|
||||
width: 96px;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.PictureSelector__imageContainer {
|
||||
position: relative;
|
||||
height: 96px;
|
||||
}
|
||||
|
||||
.PictureSelector__image {
|
||||
height: 100%;
|
||||
border: 1px solid rgba(var(--center-channel-color-rgb), 0.08);
|
||||
background-position: 50% 50%;
|
||||
background-size: cover;
|
||||
border-radius: 100%;
|
||||
}
|
||||
|
||||
.PictureSelector__selectButton {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
display: flex;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
justify-content: center;
|
||||
padding: 4px;
|
||||
border: 1px solid rgba(var(--center-channel-color-rgb), 0.08);
|
||||
background: var(--center-channel-bg);
|
||||
border-radius: 100%;
|
||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.12);
|
||||
|
||||
i {
|
||||
align-self: center;
|
||||
color: rgba(var(--center-channel-color-rgb), 0.56);
|
||||
font-size: 16px;
|
||||
line-height: 18px;
|
||||
|
||||
&::before {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
border: 1px solid rgba(var(--center-channel-color-rgb), 0.16);
|
||||
box-shadow: 0 6px 14px rgba(0, 0, 0, 0.12);
|
||||
|
||||
i {
|
||||
color: rgba(var(--center-channel-color-rgb), 0.72);
|
||||
}
|
||||
}
|
||||
|
||||
&:active {
|
||||
border: 1px solid rgba(var(--button-bg-rgb), 0.16);
|
||||
background: linear-gradient(0deg, rgba(var(--button-bg-rgb), 0.08), rgba(var(--button-bg-rgb), 0.08)), var(--center-channel-bg);
|
||||
|
||||
i {
|
||||
color: var(--button-bg);
|
||||
}
|
||||
}
|
||||
|
||||
&:focus {
|
||||
border: 2px solid var(--button-bg);
|
||||
}
|
||||
}
|
||||
|
||||
.PictureSelector__removeButton {
|
||||
padding: 0;
|
||||
border: none;
|
||||
margin-top: 12px;
|
||||
background-color: transparent;
|
||||
color: var(--button-bg);
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
|
||||
&:focus {
|
||||
text-decoration-line: underline;
|
||||
}
|
||||
}
|
@ -1,50 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import React from 'react';
|
||||
import {shallow} from 'enzyme';
|
||||
|
||||
import PictureSelector from 'components/picture_selector';
|
||||
|
||||
describe('components/picture_selector', () => {
|
||||
const baseProps = {
|
||||
name: 'picture_selector_test',
|
||||
onSelect: jest.fn(),
|
||||
onRemove: jest.fn(),
|
||||
};
|
||||
|
||||
test('should match snapshot, no picture selected', () => {
|
||||
const wrapper = shallow(
|
||||
<PictureSelector {...baseProps}/>,
|
||||
);
|
||||
|
||||
expect(wrapper).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('should match snapshot, existing picture provided', () => {
|
||||
const props = {
|
||||
...baseProps,
|
||||
src: 'http:///url.com/picture.jpg',
|
||||
defaultSrc: 'http:///url.com/default-picture.jpg',
|
||||
};
|
||||
|
||||
const wrapper = shallow(
|
||||
<PictureSelector {...props}/>,
|
||||
);
|
||||
|
||||
expect(wrapper).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('should match snapshot, default picture provided', () => {
|
||||
const props = {
|
||||
...baseProps,
|
||||
defaultSrc: 'http:///url.com/default-picture.jpg',
|
||||
};
|
||||
|
||||
const wrapper = shallow(
|
||||
<PictureSelector {...props}/>,
|
||||
);
|
||||
|
||||
expect(wrapper).toMatchSnapshot();
|
||||
});
|
||||
});
|
@ -1,142 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import React, {useState, useEffect} from 'react';
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
|
||||
import {localizeMessage} from 'utils/utils';
|
||||
import {Constants} from 'utils/constants';
|
||||
import * as FileUtils from 'utils/file_utils';
|
||||
|
||||
import './picture_selector.scss';
|
||||
|
||||
type Props = {
|
||||
name: string;
|
||||
src?: string;
|
||||
defaultSrc?: string;
|
||||
placeholder?: React.ReactNode;
|
||||
loadingPicture?: boolean;
|
||||
onOpenDialog?: () => void;
|
||||
onSelect: (file: File) => void;
|
||||
onRemove: () => void;
|
||||
};
|
||||
|
||||
const PictureSelector: React.FC<Props> = (props: Props) => {
|
||||
const {name, src, defaultSrc, placeholder, loadingPicture, onSelect, onRemove} = props;
|
||||
|
||||
const [image, setImage] = useState<string>();
|
||||
const [orientationStyles, setOrientationStyles] = useState<{transform: any; transformOrigin: any}>();
|
||||
|
||||
const inputRef: React.RefObject<HTMLInputElement> = React.createRef();
|
||||
const selectButton: React.RefObject<HTMLButtonElement> = React.createRef();
|
||||
|
||||
const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
if (e.target.files && e.target.files[0]) {
|
||||
const file = e.target.files[0];
|
||||
|
||||
const reader = new FileReader();
|
||||
reader.onload = (ev) => {
|
||||
setImage(URL.createObjectURL(file));
|
||||
|
||||
const orientation = FileUtils.getExifOrientation(ev.target!.result! as ArrayBuffer);
|
||||
setOrientationStyles(FileUtils.getOrientationStyles(orientation));
|
||||
};
|
||||
reader.readAsArrayBuffer(file);
|
||||
|
||||
onSelect(file);
|
||||
}
|
||||
};
|
||||
|
||||
const handleInputFile = () => {
|
||||
if (props.onOpenDialog) {
|
||||
props.onOpenDialog();
|
||||
}
|
||||
|
||||
if (!inputRef || !inputRef.current) {
|
||||
return;
|
||||
}
|
||||
|
||||
selectButton.current?.blur();
|
||||
|
||||
inputRef.current.value = '';
|
||||
inputRef.current.click();
|
||||
};
|
||||
|
||||
const handleRemove = () => {
|
||||
onRemove();
|
||||
if (defaultSrc) {
|
||||
setImage(defaultSrc);
|
||||
} else {
|
||||
setImage(undefined);
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
if (!image) {
|
||||
if (src) {
|
||||
setImage(src);
|
||||
} else if (defaultSrc) {
|
||||
setImage(defaultSrc);
|
||||
}
|
||||
}
|
||||
}, [src, image]);
|
||||
|
||||
let removeButton;
|
||||
if (image && image !== defaultSrc) {
|
||||
removeButton = (
|
||||
<button
|
||||
data-testid='PictureSelector__removeButton'
|
||||
className='PictureSelector__removeButton'
|
||||
disabled={loadingPicture}
|
||||
onClick={handleRemove}
|
||||
>
|
||||
<FormattedMessage
|
||||
id='picture_selector.remove_picture'
|
||||
defaultMessage='Remove picture'
|
||||
/>
|
||||
</button>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<div className='PictureSelector'>
|
||||
<input
|
||||
name={name}
|
||||
data-testid={`PictureSelector__input-${name}`}
|
||||
ref={inputRef}
|
||||
className='PictureSelector__input hidden'
|
||||
accept={Constants.ACCEPT_STATIC_IMAGE}
|
||||
type='file'
|
||||
onChange={handleFileChange}
|
||||
disabled={loadingPicture}
|
||||
aria-hidden={true}
|
||||
tabIndex={-1}
|
||||
/>
|
||||
<div className='PictureSelector__imageContainer'>
|
||||
<div
|
||||
aria-label={localizeMessage('picture_selector.image.ariaLabel', 'Picture selector image')}
|
||||
className='PictureSelector__image'
|
||||
style={{
|
||||
backgroundImage: 'url(' + image + ')',
|
||||
...orientationStyles,
|
||||
}}
|
||||
>
|
||||
{!image && placeholder}
|
||||
</div>
|
||||
<button
|
||||
ref={selectButton}
|
||||
data-testid='PictureSelector__selectButton'
|
||||
className='PictureSelector__selectButton'
|
||||
disabled={loadingPicture}
|
||||
onClick={handleInputFile}
|
||||
aria-label={localizeMessage('picture_selector.select_button.ariaLabel', 'Select picture')}
|
||||
>
|
||||
<i className='icon icon-pencil-outline'/>
|
||||
</button>
|
||||
</div>
|
||||
{removeButton}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default PictureSelector;
|
@ -1,31 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {connect} from 'react-redux';
|
||||
|
||||
import {getPost, makeGetCommentCountForPost} from 'mattermost-redux/selectors/entities/posts';
|
||||
import {isCollapsedThreadsEnabled} from 'mattermost-redux/selectors/entities/preferences';
|
||||
|
||||
import {GlobalState} from 'types/store';
|
||||
|
||||
import CommentIcon from 'components/common/comment_icon';
|
||||
|
||||
type OwnProps = {
|
||||
postId: string;
|
||||
}
|
||||
|
||||
function makeMapStateToProps() {
|
||||
const getReplyCount = makeGetCommentCountForPost();
|
||||
|
||||
return (state: GlobalState, ownProps: OwnProps) => {
|
||||
const post = getPost(state, ownProps.postId);
|
||||
|
||||
const collapsedThreadsEnabled = isCollapsedThreadsEnabled(state);
|
||||
|
||||
return {
|
||||
commentCount: collapsedThreadsEnabled ? 0 : getReplyCount(state, post),
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
export default connect(makeMapStateToProps)(CommentIcon);
|
@ -1,12 +0,0 @@
|
||||
.ProgressBar {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.ProgressBar__progress {
|
||||
flex-grow: 0;
|
||||
flex-shrink: 0;
|
||||
background-color: white;
|
||||
transition: all 0.25s ease-in;
|
||||
}
|
@ -1,58 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import React from 'react';
|
||||
import {mount} from 'enzyme';
|
||||
|
||||
import ProgressBar from 'components/progress_bar';
|
||||
|
||||
describe('components/progress_bar', () => {
|
||||
test('should show no progress', () => {
|
||||
const props = {
|
||||
current: 0,
|
||||
total: 10,
|
||||
};
|
||||
const wrapper = mount(
|
||||
<ProgressBar {...props}/>,
|
||||
);
|
||||
|
||||
expect(wrapper.find('.ProgressBar__progress').prop('style')).toHaveProperty('flexGrow', 0);
|
||||
});
|
||||
|
||||
test('should show 50% progress', () => {
|
||||
const props = {
|
||||
current: 5,
|
||||
total: 10,
|
||||
};
|
||||
const wrapper = mount(
|
||||
<ProgressBar {...props}/>,
|
||||
);
|
||||
|
||||
expect(wrapper.find('.ProgressBar__progress').prop('style')).toHaveProperty('flexGrow', 0.5);
|
||||
});
|
||||
|
||||
test('should show full progress', () => {
|
||||
const props = {
|
||||
current: 7,
|
||||
total: 7,
|
||||
};
|
||||
const wrapper = mount(
|
||||
<ProgressBar {...props}/>,
|
||||
);
|
||||
|
||||
expect(wrapper.find('.ProgressBar__progress').prop('style')).toHaveProperty('flexGrow', 1);
|
||||
});
|
||||
|
||||
test('should have flex basis', () => {
|
||||
const props = {
|
||||
current: 0,
|
||||
total: 7,
|
||||
basePercentage: 10,
|
||||
};
|
||||
const wrapper = mount(
|
||||
<ProgressBar {...props}/>,
|
||||
);
|
||||
|
||||
expect(wrapper.find('.ProgressBar__progress').prop('style')).toHaveProperty('flexBasis', '10%');
|
||||
});
|
||||
});
|
@ -1,28 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import React from 'react';
|
||||
|
||||
import './progress_bar.scss';
|
||||
|
||||
type Props = {
|
||||
total: number;
|
||||
current: number;
|
||||
basePercentage?: number;
|
||||
};
|
||||
|
||||
const ProgressBar: React.FC<Props> = (props: Props) => {
|
||||
return (
|
||||
<div className='ProgressBar'>
|
||||
<div
|
||||
className='ProgressBar__progress'
|
||||
style={{
|
||||
flexBasis: props.basePercentage ? `${props.basePercentage}%` : '',
|
||||
flexGrow: props.current / props.total,
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default ProgressBar;
|
@ -27,7 +27,7 @@ import Constants, {
|
||||
RHSStates,
|
||||
} from 'utils/constants';
|
||||
import CollapsedReplyThreadsModal
|
||||
from 'components/tours/crt_tour/collapsed_reply_threads_modal/collapsed_reply_threads_modal';
|
||||
from 'components/tours/crt_tour/collapsed_reply_threads_modal';
|
||||
|
||||
import {openModal} from 'actions/views/modals';
|
||||
|
||||
|
@ -16,7 +16,7 @@ import {Constants, ModalIdentifiers, Preferences} from 'utils/constants';
|
||||
import * as Keyboard from 'utils/keyboard';
|
||||
|
||||
import './collapsed_reply_threads_modal.scss';
|
||||
import {AutoTourStatus, TTNameMapToATStatusKey, TutorialTourName} from '../../constant';
|
||||
import {AutoTourStatus, TTNameMapToATStatusKey, TutorialTourName} from '../constant';
|
||||
|
||||
type Props = {
|
||||
onExited: () => void;
|
@ -1,4 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
export {default} from './collapsed_reply_threads_modal';
|
@ -1,22 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import React from 'react';
|
||||
|
||||
export default class DotsHorizontalIcon extends React.PureComponent<React.HTMLAttributes<HTMLSpanElement>> {
|
||||
render() {
|
||||
return (
|
||||
<span {...this.props}>
|
||||
<svg
|
||||
width='14px'
|
||||
height='4px'
|
||||
viewBox='0 0 14 4'
|
||||
role='img'
|
||||
aria-label='dots horizontal icon'
|
||||
>
|
||||
<path d='M10.2 2.00001C10.2 1.56267 10.3547 1.18934 10.664 0.880006C10.984 0.560006 11.3627 0.400006 11.8 0.400006C12.2373 0.400006 12.6107 0.560006 12.92 0.880006C13.24 1.18934 13.4 1.56267 13.4 2.00001C13.4 2.43734 13.24 2.81601 12.92 3.13601C12.6107 3.44534 12.2373 3.60001 11.8 3.60001C11.3627 3.60001 10.984 3.44534 10.664 3.13601C10.3547 2.81601 10.2 2.43734 10.2 2.00001ZM5.4 2.00001C5.4 1.56267 5.55467 1.18934 5.864 0.880006C6.184 0.560006 6.56267 0.400006 7 0.400006C7.43733 0.400006 7.81067 0.560006 8.12 0.880006C8.44 1.18934 8.6 1.56267 8.6 2.00001C8.6 2.43734 8.44 2.81601 8.12 3.13601C7.81067 3.44534 7.43733 3.60001 7 3.60001C6.56267 3.60001 6.184 3.44534 5.864 3.13601C5.55467 2.81601 5.4 2.43734 5.4 2.00001ZM0.6 2.00001C0.6 1.56267 0.754667 1.18934 1.064 0.880006C1.384 0.560006 1.76267 0.400006 2.2 0.400006C2.63733 0.400006 3.01067 0.560006 3.32 0.880006C3.64 1.18934 3.8 1.56267 3.8 2.00001C3.8 2.43734 3.64 2.81601 3.32 3.13601C3.01067 3.44534 2.63733 3.60001 2.2 3.60001C1.76267 3.60001 1.384 3.44534 1.064 3.13601C0.754667 2.81601 0.6 2.43734 0.6 2.00001Z'/>
|
||||
</svg>
|
||||
</span>
|
||||
);
|
||||
}
|
||||
}
|
@ -1,42 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import React from 'react';
|
||||
import {useIntl} from 'react-intl';
|
||||
|
||||
export default function MessageIcon(props: React.HTMLAttributes<HTMLSpanElement>) {
|
||||
const {formatMessage} = useIntl();
|
||||
return (
|
||||
<button
|
||||
{...props}
|
||||
aria-label={formatMessage({id: 'members_popover.button.message', defaultMessage: 'message'})}
|
||||
className='style--none icon icon__message'
|
||||
tabIndex={-1}
|
||||
>
|
||||
<svg
|
||||
width='18px'
|
||||
height='16px'
|
||||
viewBox='0 0 18 16'
|
||||
role='img'
|
||||
aria-label={formatMessage({id: 'generic_icons.message', defaultMessage: 'Message Icon'})}
|
||||
>
|
||||
<g
|
||||
stroke='none'
|
||||
strokeWidth='1'
|
||||
fill='inherit'
|
||||
fillRule='evenodd'
|
||||
>
|
||||
<g
|
||||
transform='translate(-200.000000, -174.000000)'
|
||||
fill='inherit'
|
||||
>
|
||||
<g transform='translate(200.000000, 174.000000)'>
|
||||
<path d='M7.2546625,1.42801356 C10.458475,1.42801356 12.999475,3.24528136 12.999475,5.52023729 C12.9895,8.04188475 10.6062625,9.89326102 7.40245,9.89326102 C7.40245,9.89326102 6.9134125,9.91229831 6.4115125,9.83747119 L5.82535,9.79622373 L5.15335,10.3586169 C4.997425,10.5397356 4.3199125,11.1095322 3.736375,11.4794373 C4.0915375,10.4598847 4.07605,10.1370441 4.07605,10.1370441 L4.1251375,9.49004068 L3.55315,9.19549153 C2.0986375,8.44616271 1.4444875,6.88616271 1.4444875,5.52023729 C1.4444875,3.24528136 4.05085,1.42801356 7.2546625,1.42801356 M7.2546625,0.370386441 C3.465475,0.370386441 0.3944875,2.65829831 0.3944875,5.52023729 C0.3944875,7.3028678 1.2623125,9.20342373 3.0751375,10.1370441 C3.0751375,10.1478847 3.07225,10.1560814 3.07225,10.1679797 C3.07225,10.9426915 2.43175,12.0048136 2.1794875,12.4429356 L2.1805375,12.4429356 C2.1605875,12.4902644 2.148775,12.5420881 2.148775,12.5973492 C2.148775,12.8141627 2.322025,12.9881424 2.5375375,12.9881424 C2.5693,12.9881424 2.6210125,12.9815322 2.6393875,12.9815322 C2.6446375,12.9815322 2.6467375,12.9815322 2.6462125,12.9831186 C3.986275,12.762339 5.9642125,11.2435864 6.2576875,10.8837288 C6.5585125,10.928678 6.761425,10.9358169 7.0136875,10.9358169 C7.120525,10.9358169 7.2347125,10.9342305 7.3696375,10.9342305 C11.1583,10.9342305 14.094625,8.75446102 14.049475,5.52023729 C14.049475,2.65829831 11.0435875,0.370386441 7.2546625,0.370386441'/>
|
||||
<path d='M17.2055125,9.79172881 C17.2055125,8.35811525 16.6498,7.26532203 15.2624875,6.4451322 C15.228625,6.82614237 15.120475,7.23517966 15.0031375,7.59477288 C15.8998375,8.21903729 16.1555125,8.85995932 16.1555125,9.79172881 C16.1555125,10.9323797 15.62815,11.7597085 14.40175,12.3919051 L13.879375,12.653139 C13.879375,12.653139 13.9337125,14.0082237 14.0140375,14.3511593 C12.9895,13.5946915 12.6374875,12.9630237 12.6374875,12.9630237 L12.08545,13.0486915 C11.86705,13.0809492 11.276425,13.0812136 11.276425,13.0812136 C9.85,13.0812136 8.7929125,12.7388068 7.8909625,12.0278169 C8.135875,12.0124814 6.42805,12.0132746 6.3899875,12.0468542 C7.4326375,13.3297559 9.1373125,14.1388407 11.276425,14.1388407 C11.3927125,14.1388407 11.49115,14.1398983 11.58355,14.1398983 C11.801425,14.1398983 11.9773,14.1338169 12.237175,14.095478 C12.491275,14.4058915 13.914025,15.7728746 15.0724375,15.9629831 C15.0719125,15.9619254 15.073225,15.9619254 15.078475,15.9619254 C15.0939625,15.9619254 15.13885,15.967478 15.16615,15.967478 C15.3522625,15.967478 15.5024125,15.8167661 15.5024125,15.6293017 C15.5024125,15.5817085 15.49165,15.5367593 15.47485,15.4960407 L15.4759,15.4960407 C15.258025,15.117939 14.9159875,14.0129831 14.9159875,13.3435051 C14.9159875,13.3331932 14.9128375,13.3260542 14.9128375,13.3168 C16.4797,12.5095661 17.2055125,11.3321627 17.2055125,9.79172881'/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</button>
|
||||
);
|
||||
}
|
@ -313,7 +313,6 @@
|
||||
"admin.billing.subscription.complianceScreenFailed.button": "OK",
|
||||
"admin.billing.subscription.complianceScreenFailed.title": "Your transaction is being reviewed",
|
||||
"admin.billing.subscription.complianceScreenShippingSameAsBilling": "My shipping address is the same as my billing address",
|
||||
"admin.billing.subscription.constCloudCard.contactSupport": "Contact support",
|
||||
"admin.billing.subscription.creditCardExpired": "Your credit card has expired. Update your payment information to avoid disruption.",
|
||||
"admin.billing.subscription.creditCardHasExpired": "Your credit card has expired",
|
||||
"admin.billing.subscription.creditCardHasExpired.description": "Please <link>update your payment information</link> to avoid any disruption.",
|
||||
@ -327,7 +326,6 @@
|
||||
"admin.billing.subscription.deleteWorkspaceSection.delete": "Delete Workspace",
|
||||
"admin.billing.subscription.deleteWorkspaceSection.description": "Deleting {workspaceLink} is final and cannot be reversed.",
|
||||
"admin.billing.subscription.deleteWorkspaceSection.title": "Delete your workspace",
|
||||
"admin.billing.subscription.downgradedSuccess": "You're now subscribed to {productName}",
|
||||
"admin.billing.subscription.downgrading": "Downgrading your workspace",
|
||||
"admin.billing.subscription.featuresAvailable": "{productName} features are now available and ready to use.",
|
||||
"admin.billing.subscription.freeTrial.description": "Your free trial will expire in {daysLeftOnTrial} days. Add your payment information to continue after the trial ends.",
|
||||
@ -3579,7 +3577,6 @@
|
||||
"generic_icons.member": "Member Icon",
|
||||
"generic_icons.mention": "Mention Icon",
|
||||
"generic_icons.menu": "Menu Icon",
|
||||
"generic_icons.message": "Message Icon",
|
||||
"generic_icons.muted": "Muted Icon",
|
||||
"generic_icons.next": "Next Icon",
|
||||
"generic_icons.pin": "Pin Icon",
|
||||
@ -3951,7 +3948,6 @@
|
||||
"marketplace_modal.tabs.all_listing": "All",
|
||||
"marketplace_modal.tabs.installed_listing": "Installed ({count})",
|
||||
"marketplace_modal.title": "App Marketplace",
|
||||
"members_popover.button.message": "message",
|
||||
"menu.cloudFree.enterpriseTrialDescription": "Your trial is active until {trialEndDay}. Discover our top Enterprise features. <openModalLink>Learn more</openModalLink>",
|
||||
"menu.cloudFree.enterpriseTrialTitle": "Enterprise Trial",
|
||||
"menu.cloudFree.postTrial.tryEnterprise": "Interested in a limitless plan with high-security features? <openModalLink>See plans</openModalLink>",
|
||||
@ -4271,9 +4267,6 @@
|
||||
"persist_notification.too_many.confirm": "Got it",
|
||||
"persist_notification.too_many.description": "You can send persistent notifications to a maximum of <b>{max}</b> recipients. There are <b>{count}</b> recipients mentioned in your message. You’ll need to change who you’ve mentioned before you can send.",
|
||||
"persist_notification.too_many.title": "Too many recipients",
|
||||
"picture_selector.image.ariaLabel": "Picture selector image",
|
||||
"picture_selector.remove_picture": "Remove picture",
|
||||
"picture_selector.select_button.ariaLabel": "Select picture",
|
||||
"plan.cloud": "Cloud",
|
||||
"plan.self_serve": "Self-serve",
|
||||
"pluggable.errorOccurred": "An error occurred in the {pluginId} plugin.",
|
||||
|
@ -422,7 +422,6 @@ export const ModalIdentifiers = {
|
||||
REQUEST_BUSINESS_EMAIL_MODAL: 'request_business_email_modal',
|
||||
FEATURE_RESTRICTED_MODAL: 'feature_restricted_modal',
|
||||
FORWARD_POST_MODAL: 'forward_post_modal',
|
||||
CLOUD_SUBSCRIBE_WITH_LOADING_MODAL: 'cloud_subscribe_with_loading_modal',
|
||||
JOIN_PUBLIC_CHANNEL_MODAL: 'join_public_channel_modal',
|
||||
CLOUD_INVOICE_PREVIEW: 'cloud_invoice_preview',
|
||||
BILLING_HISTORY: 'billing_history',
|
||||
|
Loading…
Reference in New Issue
Block a user