mirror of
https://github.com/muerwre/vault-frontend.git
synced 2025-04-25 04:46:40 +07:00
removed redux completely
This commit is contained in:
parent
26e6d8d41b
commit
a4bb07e9cf
323 changed files with 2464 additions and 3348 deletions
38
src/components/auth/login/LoginDialogButtons/index.tsx
Normal file
38
src/components/auth/login/LoginDialogButtons/index.tsx
Normal file
|
@ -0,0 +1,38 @@
|
|||
import React, { FC } from 'react';
|
||||
import { Button } from '~/components/input/Button';
|
||||
import { Grid } from '~/components/containers/Grid';
|
||||
import { Group } from '~/components/containers/Group';
|
||||
import styles from './styles.module.scss';
|
||||
import { OAuthProvider } from '~/types/auth';
|
||||
|
||||
interface IProps {
|
||||
openOauthWindow: (provider: OAuthProvider) => void;
|
||||
}
|
||||
|
||||
const LoginDialogButtons: FC<IProps> = ({ openOauthWindow }) => (
|
||||
<Group className={styles.footer}>
|
||||
<Button>Войти</Button>
|
||||
|
||||
<Grid columns="repeat(2, 1fr)">
|
||||
<Button
|
||||
color="outline"
|
||||
iconLeft="google"
|
||||
type="button"
|
||||
onClick={() => openOauthWindow('google')}
|
||||
>
|
||||
<span>Google</span>
|
||||
</Button>
|
||||
|
||||
<Button
|
||||
color="outline"
|
||||
iconLeft="vk"
|
||||
type="button"
|
||||
onClick={() => openOauthWindow('vkontakte')}
|
||||
>
|
||||
<span>Вконтакте</span>
|
||||
</Button>
|
||||
</Grid>
|
||||
</Group>
|
||||
);
|
||||
|
||||
export { LoginDialogButtons };
|
|
@ -0,0 +1,5 @@
|
|||
@import "src/styles/variables";
|
||||
|
||||
.footer {
|
||||
padding: $gap;
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
import React, { FC } from 'react';
|
||||
import { Button } from '~/components/input/Button';
|
||||
import styles from './styles.module.scss';
|
||||
|
||||
interface IProps {}
|
||||
|
||||
const LoginSocialRegisterButtons: FC<IProps> = () => (
|
||||
<div className={styles.wrap}>
|
||||
<Button color="secondary">Впустите меня!</Button>
|
||||
</div>
|
||||
);
|
||||
|
||||
export { LoginSocialRegisterButtons };
|
|
@ -0,0 +1,9 @@
|
|||
@import "src/styles/variables";
|
||||
|
||||
.wrap {
|
||||
padding: $gap $gap * 2;
|
||||
|
||||
button {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
27
src/components/auth/restore/RestoreInvalidCode/index.tsx
Normal file
27
src/components/auth/restore/RestoreInvalidCode/index.tsx
Normal file
|
@ -0,0 +1,27 @@
|
|||
import React, { VFC } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { Group } from '~/components/containers/Group';
|
||||
import { Icon } from '~/components/input/Icon';
|
||||
import { ERROR_LITERAL, ERRORS } from '~/constants/errors';
|
||||
import { Button } from '~/components/input/Button';
|
||||
|
||||
interface RestoreInvalidCodeProps {
|
||||
error: string;
|
||||
onClose: () => void;
|
||||
}
|
||||
|
||||
const RestoreInvalidCode: VFC<RestoreInvalidCodeProps> = ({ error, onClose }) => (
|
||||
<Group className={styles.error_shade}>
|
||||
<Icon icon="close" size={64} />
|
||||
|
||||
<div>{error || ERROR_LITERAL[ERRORS.CODE_IS_INVALID]}</div>
|
||||
|
||||
<div className={styles.spacer} />
|
||||
|
||||
<Button color="primary" onClick={onClose}>
|
||||
Очень жаль
|
||||
</Button>
|
||||
</Group>
|
||||
);
|
||||
|
||||
export { RestoreInvalidCode };
|
|
@ -0,0 +1,35 @@
|
|||
@import "src/styles/variables";
|
||||
|
||||
.error_shade {
|
||||
@include outer_shadow();
|
||||
|
||||
background: $content_bg;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: $radius;
|
||||
padding: $gap * 2;
|
||||
box-sizing: border-box;
|
||||
text-transform: uppercase;
|
||||
font: $font_18_semibold;
|
||||
text-align: center;
|
||||
color: $wisegreen;
|
||||
|
||||
svg {
|
||||
fill: $wisegreen;
|
||||
}
|
||||
}
|
||||
|
||||
.error_shade {
|
||||
color: $red;
|
||||
|
||||
svg {
|
||||
fill: $red;
|
||||
}
|
||||
}
|
25
src/components/auth/restore/RestoreSent/index.tsx
Normal file
25
src/components/auth/restore/RestoreSent/index.tsx
Normal file
|
@ -0,0 +1,25 @@
|
|||
import React, { VFC } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { Icon } from '~/components/input/Icon';
|
||||
import { Button } from '~/components/input/Button';
|
||||
import { Group } from '~/components/containers/Group';
|
||||
|
||||
interface RestoreSentProps {
|
||||
onClose: () => void;
|
||||
}
|
||||
|
||||
const RestoreSent: VFC<RestoreSentProps> = ({ onClose }) => (
|
||||
<Group className={styles.shade}>
|
||||
<Icon icon="check" size={64} />
|
||||
|
||||
<div>Проверьте почту, мы отправили на неё код</div>
|
||||
|
||||
<div />
|
||||
|
||||
<Button color="secondary" onClick={onClose}>
|
||||
Отлично!
|
||||
</Button>
|
||||
</Group>
|
||||
);
|
||||
|
||||
export { RestoreSent };
|
27
src/components/auth/restore/RestoreSent/styles.module.scss
Normal file
27
src/components/auth/restore/RestoreSent/styles.module.scss
Normal file
|
@ -0,0 +1,27 @@
|
|||
@import "src/styles/variables";
|
||||
|
||||
.shade {
|
||||
@include outer_shadow();
|
||||
|
||||
background: $content_bg;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: $radius;
|
||||
padding: $gap * 2;
|
||||
box-sizing: border-box;
|
||||
text-transform: uppercase;
|
||||
font: $font_18_semibold;
|
||||
text-align: center;
|
||||
color: $wisegreen;
|
||||
|
||||
svg {
|
||||
fill: $wisegreen;
|
||||
}
|
||||
}
|
27
src/components/auth/restore/RestoreSuccess/index.tsx
Normal file
27
src/components/auth/restore/RestoreSuccess/index.tsx
Normal file
|
@ -0,0 +1,27 @@
|
|||
import React, { VFC } from 'react';
|
||||
import { Icon } from '~/components/input/Icon';
|
||||
import { Button } from '~/components/input/Button';
|
||||
import { Group } from '~/components/containers/Group';
|
||||
import styles from './styles.module.scss';
|
||||
|
||||
interface RestoreSuccessProps {
|
||||
username?: string;
|
||||
onClick: () => void;
|
||||
}
|
||||
|
||||
const RestoreSuccess: VFC<RestoreSuccessProps> = ({ username, onClick }) => (
|
||||
<Group className={styles.shade}>
|
||||
<Icon icon="check" size={64} />
|
||||
|
||||
<div>Пароль обновлен</div>
|
||||
<div>Добро пожаловать домой{username ? `, ~${username}` : ''}!</div>
|
||||
|
||||
<div />
|
||||
|
||||
<Button color="secondary" onClick={onClick}>
|
||||
Ура!
|
||||
</Button>
|
||||
</Group>
|
||||
);
|
||||
|
||||
export { RestoreSuccess };
|
|
@ -0,0 +1,27 @@
|
|||
@import "src/styles/variables";
|
||||
|
||||
.shade {
|
||||
@include outer_shadow();
|
||||
|
||||
background: $content_bg;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: $radius;
|
||||
padding: $gap * 2;
|
||||
box-sizing: border-box;
|
||||
text-transform: uppercase;
|
||||
font: $font_18_semibold;
|
||||
text-align: center;
|
||||
color: $wisegreen;
|
||||
|
||||
svg {
|
||||
fill: $wisegreen;
|
||||
}
|
||||
}
|
|
@ -1,10 +1,10 @@
|
|||
import React, { useCallback, VFC } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import { Icon } from "~/components/input/Icon";
|
||||
import { PlayerState } from "~/constants/player";
|
||||
import { path } from "ramda";
|
||||
import { IFile } from "~/redux/types";
|
||||
import { PlayerProgress } from "~/types/player";
|
||||
import React, { useCallback, VFC } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { Icon } from '~/components/input/Icon';
|
||||
import { PlayerState } from '~/constants/player';
|
||||
import { path } from 'ramda';
|
||||
import { IFile } from '~/types';
|
||||
import { PlayerProgress } from '~/types/player';
|
||||
|
||||
interface Props {
|
||||
progress: PlayerProgress;
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import React, { FC, useCallback, useState } from "react";
|
||||
import { Icon } from "~/components/input/Icon";
|
||||
import { Link } from "react-router-dom";
|
||||
import classNames from "classnames";
|
||||
import { useRouteMatch } from "react-router";
|
||||
import styles from "./styles.module.scss";
|
||||
import React, { FC, useCallback, useState } from 'react';
|
||||
import { Icon } from '~/components/input/Icon';
|
||||
import { Link } from 'react-router-dom';
|
||||
import classNames from 'classnames';
|
||||
import { useRouteMatch } from 'react-router';
|
||||
import styles from './styles.module.scss';
|
||||
|
||||
interface Props {
|
||||
isLab?: boolean;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import React, { FC } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import { Icon } from "~/components/input/Icon";
|
||||
import React, { FC } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { Icon } from '~/components/input/Icon';
|
||||
|
||||
interface Props {
|
||||
icon: string;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import React, { FC } from "react";
|
||||
import { BorisContactItem } from "~/components/boris/BorisContactItem";
|
||||
import styles from "./styles.module.scss";
|
||||
import React, { FC } from 'react';
|
||||
import { BorisContactItem } from '~/components/boris/BorisContactItem';
|
||||
import styles from './styles.module.scss';
|
||||
|
||||
interface Props {}
|
||||
|
||||
|
|
|
@ -1,24 +1,23 @@
|
|||
import React, { FC } from "react";
|
||||
import styles from "~/layouts/BorisLayout/styles.module.scss";
|
||||
import { BorisSuperpowers } from "~/components/boris/BorisSuperpowers";
|
||||
import { BorisContacts } from "~/components/boris/BorisContacts";
|
||||
import { BorisStats } from "~/components/boris/BorisStats";
|
||||
import { Group } from "~/components/containers/Group";
|
||||
import { IUser } from "~/redux/auth/types";
|
||||
import { BorisUsageStats } from "~/types/boris";
|
||||
import React, { FC } from 'react';
|
||||
import styles from '~/layouts/BorisLayout/styles.module.scss';
|
||||
import { BorisSuperpowers } from '~/components/boris/BorisSuperpowers';
|
||||
import { BorisContacts } from '~/components/boris/BorisContacts';
|
||||
import { BorisStats } from '~/components/boris/BorisStats';
|
||||
import { Group } from '~/components/containers/Group';
|
||||
import { BorisUsageStats } from '~/types/boris';
|
||||
|
||||
interface Props {
|
||||
user: IUser;
|
||||
isUser: boolean;
|
||||
isTester: boolean;
|
||||
stats: BorisUsageStats;
|
||||
setBetaTester: (val: boolean) => void;
|
||||
isLoading: boolean;
|
||||
}
|
||||
|
||||
const BorisSidebar: FC<Props> = ({ user, stats, isLoading, isTester, setBetaTester }) => (
|
||||
const BorisSidebar: FC<Props> = ({ isUser, stats, isLoading, isTester, setBetaTester }) => (
|
||||
<Group className={styles.stats__container}>
|
||||
<div className={styles.super_powers}>
|
||||
{user.is_user && <BorisSuperpowers active={isTester} onChange={setBetaTester} />}
|
||||
{isUser && <BorisSuperpowers active={isTester} onChange={setBetaTester} />}
|
||||
</div>
|
||||
|
||||
<BorisContacts />
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import React, { FC } from "react";
|
||||
import { BorisUsageStats } from "~/types/boris";
|
||||
import { BorisStatsGit } from "../BorisStatsGit";
|
||||
import { BorisStatsBackend } from "../BorisStatsBackend";
|
||||
import React, { FC } from 'react';
|
||||
import { BorisUsageStats } from '~/types/boris';
|
||||
import { BorisStatsGit } from '../BorisStatsGit';
|
||||
import { BorisStatsBackend } from '../BorisStatsBackend';
|
||||
|
||||
interface IProps {
|
||||
stats: BorisUsageStats;
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import React, { FC } from "react";
|
||||
import { StatBackend } from "~/types/boris";
|
||||
import styles from "./styles.module.scss";
|
||||
import { sizeOf } from "~/utils/dom";
|
||||
import { StatsRow } from "~/components/common/StatsRow";
|
||||
import { SubTitle } from "~/components/common/SubTitle";
|
||||
import React, { FC } from 'react';
|
||||
import { StatBackend } from '~/types/boris';
|
||||
import styles from './styles.module.scss';
|
||||
import { sizeOf } from '~/utils/dom';
|
||||
import { StatsRow } from '~/components/common/StatsRow';
|
||||
import { SubTitle } from '~/components/common/SubTitle';
|
||||
|
||||
interface IProps {
|
||||
stats: StatBackend;
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import React, { FC, useMemo } from "react";
|
||||
import { GithubIssue } from "~/types/boris";
|
||||
import styles from "./styles.module.scss";
|
||||
import { Placeholder } from "~/components/placeholders/Placeholder";
|
||||
import { BorisStatsGitCard } from "../BorisStatsGitCard";
|
||||
import React, { FC, useMemo } from 'react';
|
||||
import { GithubIssue } from '~/types/boris';
|
||||
import styles from './styles.module.scss';
|
||||
import { Placeholder } from '~/components/placeholders/Placeholder';
|
||||
import { BorisStatsGitCard } from '../BorisStatsGitCard';
|
||||
|
||||
interface IProps {
|
||||
issues: GithubIssue[];
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import React, { FC, useMemo } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import { getPrettyDate } from "~/utils/dom";
|
||||
import { GithubIssue } from "~/types/boris";
|
||||
import classNames from "classnames";
|
||||
import React, { FC, useMemo } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { getPrettyDate } from '~/utils/dom';
|
||||
import { GithubIssue } from '~/types/boris';
|
||||
import classNames from 'classnames';
|
||||
|
||||
interface IProps {
|
||||
data: GithubIssue;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import React, { FC, useCallback } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import { Toggle } from "~/components/input/Toggle";
|
||||
import React, { FC, useCallback } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { Toggle } from '~/components/input/Toggle';
|
||||
|
||||
interface IProps {
|
||||
active?: boolean;
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import React, { FC, useState } from "react";
|
||||
import { Card } from "~/components/containers/Card";
|
||||
import styles from "./styles.module.scss";
|
||||
import markdown from "~/styles/common/markdown.module.scss";
|
||||
import { Group } from "~/components/containers/Group";
|
||||
import { Button } from "~/components/input/Button";
|
||||
import { InputText } from "~/components/input/InputText";
|
||||
import React, { FC, useState } from 'react';
|
||||
import { Card } from '~/components/containers/Card';
|
||||
import styles from './styles.module.scss';
|
||||
import markdown from '~/styles/common/markdown.module.scss';
|
||||
import { Group } from '~/components/containers/Group';
|
||||
import { Button } from '~/components/input/Button';
|
||||
import { InputText } from '~/components/input/InputText';
|
||||
|
||||
interface IProps {}
|
||||
|
||||
|
|
|
@ -1,14 +1,12 @@
|
|||
import React, { FC } from "react";
|
||||
import { useShallowSelect } from "~/hooks/data/useShallowSelect";
|
||||
import { selectAuthIsTester, selectUser } from "~/redux/auth/selectors";
|
||||
import React, { FC } from 'react';
|
||||
import { useAuth } from '~/hooks/auth/useAuth';
|
||||
|
||||
interface IProps {}
|
||||
|
||||
const Superpower: FC<IProps> = ({ children }) => {
|
||||
const user = useShallowSelect(selectUser);
|
||||
const is_tester = useShallowSelect(selectAuthIsTester);
|
||||
const { isTester } = useAuth();
|
||||
|
||||
if (!user.is_user || !is_tester) return null;
|
||||
if (!isTester) return null;
|
||||
|
||||
return <>{children}</>;
|
||||
};
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
import React, { FC, HTMLAttributes, memo } from "react";
|
||||
import { CommentWrapper } from "~/components/containers/CommentWrapper";
|
||||
import { IComment, ICommentGroup, IFile } from "~/redux/types";
|
||||
import { CommentContent } from "~/components/comment/CommentContent";
|
||||
import styles from "./styles.module.scss";
|
||||
import { CommendDeleted } from "../../node/CommendDeleted";
|
||||
import classNames from "classnames";
|
||||
import { NEW_COMMENT_CLASSNAME } from "~/constants/comment";
|
||||
import React, { FC, HTMLAttributes, memo } from 'react';
|
||||
import { CommentWrapper } from '~/components/containers/CommentWrapper';
|
||||
import { IComment, ICommentGroup, IFile } from '~/types';
|
||||
import { CommentContent } from '~/components/comment/CommentContent';
|
||||
import styles from './styles.module.scss';
|
||||
import { CommendDeleted } from '../../node/CommendDeleted';
|
||||
import classNames from 'classnames';
|
||||
import { NEW_COMMENT_CLASSNAME } from '~/constants/comment';
|
||||
|
||||
type IProps = HTMLAttributes<HTMLDivElement> & {
|
||||
nodeId: number;
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import React, { FC, useCallback, useState } from "react";
|
||||
import { IUser } from "~/redux/auth/types";
|
||||
import { Avatar } from "~/components/common/Avatar";
|
||||
import { path } from "ramda";
|
||||
import { Manager, Popper, Reference } from "react-popper";
|
||||
import styles from "./styles.module.scss";
|
||||
import { useRandomPhrase } from "~/constants/phrases";
|
||||
import React, { FC, useCallback, useState } from 'react';
|
||||
import { IUser } from '~/types/auth';
|
||||
import { Avatar } from '~/components/common/Avatar';
|
||||
import { path } from 'ramda';
|
||||
import { Manager, Popper, Reference } from 'react-popper';
|
||||
import styles from './styles.module.scss';
|
||||
import { useRandomPhrase } from '~/constants/phrases';
|
||||
|
||||
interface Props {
|
||||
user: IUser;
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
import React, { createElement, FC, Fragment, memo, useCallback, useMemo, useState } from "react";
|
||||
import { IComment, IFile } from "~/redux/types";
|
||||
import { append, assocPath, path } from "ramda";
|
||||
import { formatCommentText, getPrettyDate, getURL } from "~/utils/dom";
|
||||
import { Group } from "~/components/containers/Group";
|
||||
import styles from "./styles.module.scss";
|
||||
import { UploadType } from "~/constants/uploads";
|
||||
import reduce from "ramda/es/reduce";
|
||||
import { AudioPlayer } from "~/components/media/AudioPlayer";
|
||||
import classnames from "classnames";
|
||||
import classNames from "classnames";
|
||||
import { PRESETS } from "~/constants/urls";
|
||||
import { COMMENT_BLOCK_RENDERERS } from "~/constants/comment";
|
||||
import { CommentMenu } from "../CommentMenu";
|
||||
import { CommentForm } from "~/components/comment/CommentForm";
|
||||
import React, { createElement, FC, Fragment, memo, useCallback, useMemo, useState } from 'react';
|
||||
import { IComment, IFile } from '~/types';
|
||||
import { append, assocPath, path } from 'ramda';
|
||||
import { formatCommentText, getPrettyDate, getURL } from '~/utils/dom';
|
||||
import { Group } from '~/components/containers/Group';
|
||||
import styles from './styles.module.scss';
|
||||
import { UploadType } from '~/constants/uploads';
|
||||
import reduce from 'ramda/es/reduce';
|
||||
import { AudioPlayer } from '~/components/media/AudioPlayer';
|
||||
import classnames from 'classnames';
|
||||
import classNames from 'classnames';
|
||||
import { PRESETS } from '~/constants/urls';
|
||||
import { COMMENT_BLOCK_RENDERERS } from '~/constants/comment';
|
||||
import { CommentMenu } from '../CommentMenu';
|
||||
import { CommentForm } from '~/components/comment/CommentForm';
|
||||
|
||||
interface IProps {
|
||||
nodeId: number;
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import React, { FC, memo, useMemo } from "react";
|
||||
import { ICommentBlockProps } from "~/constants/comment";
|
||||
import styles from "./styles.module.scss";
|
||||
import { getYoutubeThumb } from "~/utils/dom";
|
||||
import { Icon } from "~/components/input/Icon";
|
||||
import { useYoutubeMetadata } from "~/hooks/metadata/useYoutubeMetadata";
|
||||
import React, { FC, memo, useMemo } from 'react';
|
||||
import { ICommentBlockProps } from '~/constants/comment';
|
||||
import styles from './styles.module.scss';
|
||||
import { getYoutubeThumb } from '~/utils/dom';
|
||||
import { Icon } from '~/components/input/Icon';
|
||||
import { useYoutubeMetadata } from '~/hooks/metadata/useYoutubeMetadata';
|
||||
|
||||
type Props = ICommentBlockProps & {};
|
||||
|
||||
|
|
|
@ -1,23 +1,23 @@
|
|||
import React, { FC, useCallback, useState } from "react";
|
||||
import { useCommentFormFormik } from "~/hooks/comments/useCommentFormFormik";
|
||||
import { FormikProvider } from "formik";
|
||||
import { LocalCommentFormTextarea } from "~/components/comment/LocalCommentFormTextarea";
|
||||
import { Button } from "~/components/input/Button";
|
||||
import { UploadSubject, UploadTarget } from "~/constants/uploads";
|
||||
import { CommentFormAttachButtons } from "~/components/comment/CommentFormAttachButtons";
|
||||
import { CommentFormFormatButtons } from "~/components/comment/CommentFormFormatButtons";
|
||||
import { CommentFormAttaches } from "~/components/comment/CommentFormAttaches";
|
||||
import { LoaderCircle } from "~/components/input/LoaderCircle";
|
||||
import { IComment, INode } from "~/redux/types";
|
||||
import { EMPTY_COMMENT } from "~/constants/node";
|
||||
import { UploadDropzone } from "~/components/upload/UploadDropzone";
|
||||
import styles from "./styles.module.scss";
|
||||
import { ERROR_LITERAL } from "~/constants/errors";
|
||||
import { useInputPasteUpload } from "~/hooks/dom/useInputPasteUpload";
|
||||
import { Filler } from "~/components/containers/Filler";
|
||||
import { useUploader } from "~/hooks/data/useUploader";
|
||||
import { UploaderContextProvider } from "~/utils/context/UploaderContextProvider";
|
||||
import { observer } from "mobx-react-lite";
|
||||
import React, { FC, useCallback, useState } from 'react';
|
||||
import { useCommentFormFormik } from '~/hooks/comments/useCommentFormFormik';
|
||||
import { FormikProvider } from 'formik';
|
||||
import { LocalCommentFormTextarea } from '~/components/comment/LocalCommentFormTextarea';
|
||||
import { Button } from '~/components/input/Button';
|
||||
import { UploadSubject, UploadTarget } from '~/constants/uploads';
|
||||
import { CommentFormAttachButtons } from '~/components/comment/CommentFormAttachButtons';
|
||||
import { CommentFormFormatButtons } from '~/components/comment/CommentFormFormatButtons';
|
||||
import { CommentFormAttaches } from '~/components/comment/CommentFormAttaches';
|
||||
import { LoaderCircle } from '~/components/input/LoaderCircle';
|
||||
import { IComment, INode } from '~/types';
|
||||
import { EMPTY_COMMENT } from '~/constants/node';
|
||||
import { UploadDropzone } from '~/components/upload/UploadDropzone';
|
||||
import styles from './styles.module.scss';
|
||||
import { ERROR_LITERAL } from '~/constants/errors';
|
||||
import { useInputPasteUpload } from '~/hooks/dom/useInputPasteUpload';
|
||||
import { Filler } from '~/components/containers/Filler';
|
||||
import { useUploader } from '~/hooks/data/useUploader';
|
||||
import { UploaderContextProvider } from '~/utils/context/UploaderContextProvider';
|
||||
import { observer } from 'mobx-react-lite';
|
||||
|
||||
interface IProps {
|
||||
comment?: IComment;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import React, { FC, useCallback } from "react";
|
||||
import { ButtonGroup } from "~/components/input/ButtonGroup";
|
||||
import { Button } from "~/components/input/Button";
|
||||
import { COMMENT_FILE_TYPES } from "~/constants/uploads";
|
||||
import React, { FC, useCallback } from 'react';
|
||||
import { ButtonGroup } from '~/components/input/ButtonGroup';
|
||||
import { Button } from '~/components/input/Button';
|
||||
import { COMMENT_FILE_TYPES } from '~/constants/uploads';
|
||||
|
||||
interface IProps {
|
||||
onUpload: (files: File[]) => void;
|
||||
|
|
|
@ -2,7 +2,7 @@ import React, { FC, useCallback } from 'react';
|
|||
import styles from './styles.module.scss';
|
||||
import { SortableImageGrid } from '~/components/editors/SortableImageGrid';
|
||||
import { SortableAudioGrid } from '~/components/editors/SortableAudioGrid';
|
||||
import { IFile } from '~/redux/types';
|
||||
import { IFile } from '~/types';
|
||||
import { SortEnd } from 'react-sortable-hoc';
|
||||
import { moveArrItem } from '~/utils/fn';
|
||||
import { useFileDropZone } from '~/hooks';
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import React, { FC, useCallback, useEffect } from "react";
|
||||
import { ButtonGroup } from "~/components/input/ButtonGroup";
|
||||
import { Button } from "~/components/input/Button";
|
||||
import { useFormatWrapper, wrapTextInsideInput } from "~/hooks/dom/useFormatWrapper";
|
||||
import styles from "./styles.module.scss";
|
||||
import React, { FC, useCallback, useEffect } from 'react';
|
||||
import { ButtonGroup } from '~/components/input/ButtonGroup';
|
||||
import { Button } from '~/components/input/Button';
|
||||
import { useFormatWrapper, wrapTextInsideInput } from '~/hooks/dom/useFormatWrapper';
|
||||
import styles from './styles.module.scss';
|
||||
|
||||
interface IProps {
|
||||
element: HTMLTextAreaElement;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import React, { FC, useCallback, useState } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import React, { FC, useCallback, useState } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
|
||||
interface IProps {
|
||||
onEdit: () => void;
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import React, { FC, useMemo } from "react";
|
||||
import { ICommentBlockProps } from "~/constants/comment";
|
||||
import styles from "./styles.module.scss";
|
||||
import classNames from "classnames";
|
||||
import markdown from "~/styles/common/markdown.module.scss";
|
||||
import { formatText } from "~/utils/dom";
|
||||
import React, { FC, useMemo } from 'react';
|
||||
import { ICommentBlockProps } from '~/constants/comment';
|
||||
import styles from './styles.module.scss';
|
||||
import classNames from 'classnames';
|
||||
import markdown from '~/styles/common/markdown.module.scss';
|
||||
import { formatText } from '~/utils/dom';
|
||||
|
||||
interface IProps extends ICommentBlockProps {}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import React, { forwardRef, KeyboardEventHandler, TextareaHTMLAttributes, useCallback } from "react";
|
||||
import { Textarea } from "~/components/input/Textarea";
|
||||
import { useCommentFormContext } from "~/hooks/comments/useCommentFormFormik";
|
||||
import { useRandomPhrase } from "~/constants/phrases";
|
||||
import React, { forwardRef, KeyboardEventHandler, TextareaHTMLAttributes, useCallback } from 'react';
|
||||
import { Textarea } from '~/components/input/Textarea';
|
||||
import { useCommentFormContext } from '~/hooks/comments/useCommentFormFormik';
|
||||
import { useRandomPhrase } from '~/constants/phrases';
|
||||
|
||||
interface IProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {
|
||||
isLoading?: boolean;
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import React, { FC, useCallback } from "react";
|
||||
import { getURLFromString } from "~/utils/dom";
|
||||
import { PRESETS } from "~/constants/urls";
|
||||
import styles from "./styles.module.scss";
|
||||
import classNames from "classnames";
|
||||
import { openUserProfile } from "~/utils/user";
|
||||
import { DivProps } from "~/utils/types";
|
||||
import React, { FC, useCallback } from 'react';
|
||||
import { getURLFromString } from '~/utils/dom';
|
||||
import { PRESETS } from '~/constants/urls';
|
||||
import styles from './styles.module.scss';
|
||||
import classNames from 'classnames';
|
||||
import { openUserProfile } from '~/utils/user';
|
||||
import { DivProps } from '~/utils/types';
|
||||
|
||||
interface Props extends DivProps {
|
||||
url?: string;
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import React, { FC } from "react";
|
||||
import styles from "~/components/flow/FlowCell/styles.module.scss";
|
||||
import { Icon } from "~/components/input/Icon";
|
||||
import { ButtonProps } from "~/utils/types";
|
||||
import classNames from "classnames";
|
||||
import React, { FC } from 'react';
|
||||
import styles from '~/components/flow/FlowCell/styles.module.scss';
|
||||
import { Icon } from '~/components/input/Icon';
|
||||
import { ButtonProps } from '~/utils/types';
|
||||
import classNames from 'classnames';
|
||||
|
||||
interface Props extends ButtonProps {}
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import React, { FC } from "react";
|
||||
import { Placeholder } from "~/components/placeholders/Placeholder";
|
||||
import { DivProps } from "~/utils/types";
|
||||
import classNames from "classnames";
|
||||
import styles from "./styles.module.scss";
|
||||
import React, { FC } from 'react';
|
||||
import { Placeholder } from '~/components/placeholders/Placeholder';
|
||||
import { DivProps } from '~/utils/types';
|
||||
import classNames from 'classnames';
|
||||
import styles from './styles.module.scss';
|
||||
|
||||
interface Props extends DivProps {
|
||||
isLoading?: boolean;
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
import React, { FC } from "react";
|
||||
import { useShallowSelect } from "~/hooks/data/useShallowSelect";
|
||||
import { selectUser } from "~/redux/auth/selectors";
|
||||
import React, { FC } from 'react';
|
||||
import { useAuth } from '~/hooks/auth/useAuth';
|
||||
|
||||
interface IProps {}
|
||||
|
||||
const Authorized: FC<IProps> = ({ children }) => {
|
||||
const user = useShallowSelect(selectUser);
|
||||
const { isUser } = useAuth();
|
||||
|
||||
if (!user.is_user) return null;
|
||||
if (!isUser) return null;
|
||||
|
||||
return <>{children}</>;
|
||||
};
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import React, { AllHTMLAttributes, FC } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import classNames from "classnames";
|
||||
import React, { AllHTMLAttributes, FC } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import classNames from 'classnames';
|
||||
|
||||
type IProps = AllHTMLAttributes<HTMLDivElement> & { is_blurred: boolean };
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import React, { FC } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import React, { FC } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
|
||||
import classNames from "classnames";
|
||||
import classNames from 'classnames';
|
||||
|
||||
type IProps = React.HTMLAttributes<HTMLDivElement> & {
|
||||
seamless?: boolean;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import React, { FC, HTMLAttributes } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import React, { FC, HTMLAttributes } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
|
||||
import classNames from "classnames";
|
||||
import classNames from 'classnames';
|
||||
|
||||
type IProps = HTMLAttributes<HTMLDivElement> & {
|
||||
children: any;
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
import React, { FC } from "react";
|
||||
import classNames from "classnames";
|
||||
import React, { FC } from 'react';
|
||||
import classNames from 'classnames';
|
||||
|
||||
import styles from "./styles.module.scss";
|
||||
import { IUser } from "~/redux/auth/types";
|
||||
import { path } from "ramda";
|
||||
import { CommentAvatar } from "~/components/comment/CommentAvatar";
|
||||
import { DivProps } from "~/utils/types";
|
||||
import styles from './styles.module.scss';
|
||||
import { IUser } from '~/types/auth';
|
||||
import { path } from 'ramda';
|
||||
import { CommentAvatar } from '~/components/comment/CommentAvatar';
|
||||
import { DivProps } from '~/utils/types';
|
||||
|
||||
type IProps = DivProps & {
|
||||
user: IUser;
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import React, { FC, useCallback, useEffect, useRef, useState } from "react";
|
||||
import { IUser } from "~/redux/auth/types";
|
||||
import styles from "./styles.module.scss";
|
||||
import { getURL } from "~/utils/dom";
|
||||
import { PRESETS } from "~/constants/urls";
|
||||
import classNames from "classnames";
|
||||
import React, { FC, useCallback, useEffect, useRef, useState } from 'react';
|
||||
import { IUser } from '~/types/auth';
|
||||
import styles from './styles.module.scss';
|
||||
import { getURL } from '~/utils/dom';
|
||||
import { PRESETS } from '~/constants/urls';
|
||||
import classNames from 'classnames';
|
||||
|
||||
interface IProps {
|
||||
cover: IUser['cover'];
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import React, { FC } from "react";
|
||||
import classNames from "classnames";
|
||||
import styles from "./styles.module.scss";
|
||||
import React, { FC } from 'react';
|
||||
import classNames from 'classnames';
|
||||
import styles from './styles.module.scss';
|
||||
|
||||
type IProps = React.HTMLAttributes<HTMLDivElement>;
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import React, { FC } from "react";
|
||||
import classNames from "classnames";
|
||||
import styles from "./styles.module.scss";
|
||||
import React, { FC } from 'react';
|
||||
import classNames from 'classnames';
|
||||
import styles from './styles.module.scss';
|
||||
|
||||
type IProps = React.HTMLAttributes<HTMLDivElement> & {
|
||||
horizontal?: boolean;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import React, { FC } from "react";
|
||||
import classNames from "classnames";
|
||||
import styles from "./styles.module.scss";
|
||||
import React, { FC } from 'react';
|
||||
import classNames from 'classnames';
|
||||
import styles from './styles.module.scss';
|
||||
|
||||
type IProps = React.HTMLAttributes<HTMLDivElement> & {
|
||||
horizontal?: boolean;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import React, { FC, HTMLAttributes, useCallback, useEffect, useRef } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import React, { FC, HTMLAttributes, useCallback, useEffect, useRef } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
|
||||
interface IProps extends HTMLAttributes<HTMLDivElement> {
|
||||
hasMore: boolean;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import React, { DetailedHTMLProps, FC, HTMLAttributes } from "react";
|
||||
import styles from "~/styles/common/markdown.module.scss";
|
||||
import classNames from "classnames";
|
||||
import React, { DetailedHTMLProps, FC, HTMLAttributes } from 'react';
|
||||
import styles from '~/styles/common/markdown.module.scss';
|
||||
import classNames from 'classnames';
|
||||
|
||||
interface IProps extends DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement> {}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import React, { FC } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import React, { FC } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
|
||||
import classNames from "classnames";
|
||||
import classNames from 'classnames';
|
||||
|
||||
type IProps = React.HTMLAttributes<HTMLDivElement> & {
|
||||
padding?: number;
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import React, { createContext, FC, useContext, useState } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import { createPortal } from "react-dom";
|
||||
import { getURL } from "~/utils/dom";
|
||||
import { PRESETS } from "~/constants/urls";
|
||||
import { IFile } from "~/redux/types";
|
||||
import React, { createContext, FC, useContext, useState } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { createPortal } from 'react-dom';
|
||||
import { getURL } from '~/utils/dom';
|
||||
import { PRESETS } from '~/constants/urls';
|
||||
import { IFile } from '~/types';
|
||||
|
||||
interface CoverContextValue {
|
||||
cover: IFile | null;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { useEffect } from 'react';
|
||||
import { IFile } from '~/redux/types';
|
||||
import { IFile } from '~/types';
|
||||
import { usePageCoverContext } from '~/components/containers/PageCoverProvider/index';
|
||||
|
||||
export const usePageCover = (cover?: IFile) => {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import React, { FC, HTMLAttributes } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import React, { FC, HTMLAttributes } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
|
||||
import classNames from "classnames";
|
||||
import classNames from 'classnames';
|
||||
|
||||
type IProps = HTMLAttributes<HTMLDivElement> & {
|
||||
seamless?: boolean;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import React, { FC } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import { DivProps } from "~/utils/types";
|
||||
import classNames from "classnames";
|
||||
import React, { FC } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { DivProps } from '~/utils/types';
|
||||
import classNames from 'classnames';
|
||||
|
||||
interface IProps extends DivProps {}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import React, { DetailsHTMLAttributes, FC } from "react";
|
||||
import StickyBox from "react-sticky-box";
|
||||
import React, { DetailsHTMLAttributes, FC } from 'react';
|
||||
import StickyBox from 'react-sticky-box';
|
||||
|
||||
interface IProps extends DetailsHTMLAttributes<HTMLDivElement> {
|
||||
offsetTop?: number;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import React, { FC, HTMLAttributes } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import React, { FC, HTMLAttributes } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
|
||||
type IProps = HTMLAttributes<HTMLDivElement> & {};
|
||||
|
||||
|
|
73
src/components/dialogs/BetterScrollDialog/index.tsx
Normal file
73
src/components/dialogs/BetterScrollDialog/index.tsx
Normal file
|
@ -0,0 +1,73 @@
|
|||
import React, { FC, MouseEventHandler, useEffect, useRef } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { clearAllBodyScrollLocks, disableBodyScroll } from 'body-scroll-lock';
|
||||
import { Icon } from '~/components/input/Icon';
|
||||
import { LoaderCircle } from '~/components/input/LoaderCircle';
|
||||
|
||||
interface IProps {
|
||||
children: React.ReactChild;
|
||||
header?: JSX.Element;
|
||||
footer?: JSX.Element;
|
||||
backdrop?: JSX.Element;
|
||||
size?: 'medium' | 'big';
|
||||
width?: number;
|
||||
error?: string;
|
||||
is_loading?: boolean;
|
||||
overlay?: JSX.Element;
|
||||
|
||||
onOverlayClick?: MouseEventHandler<HTMLDivElement>;
|
||||
onRefCapture?: (ref: any) => void;
|
||||
onClose?: () => void;
|
||||
}
|
||||
|
||||
const BetterScrollDialog: FC<IProps> = ({
|
||||
children,
|
||||
header,
|
||||
footer,
|
||||
backdrop,
|
||||
width = 600,
|
||||
error,
|
||||
onClose,
|
||||
is_loading,
|
||||
overlay = null,
|
||||
}) => {
|
||||
const ref = useRef(null);
|
||||
|
||||
useEffect(() => {
|
||||
disableBodyScroll(ref.current, { reserveScrollBarGap: true });
|
||||
|
||||
return () => clearAllBodyScrollLocks();
|
||||
}, [ref]);
|
||||
|
||||
return (
|
||||
<div className={styles.wrap} ref={ref}>
|
||||
{backdrop && <div className={styles.backdrop}>{backdrop}</div>}
|
||||
|
||||
<div className={styles.container} style={{ maxWidth: width }}>
|
||||
{onClose && (
|
||||
<div className={styles.close} onClick={onClose}>
|
||||
<Icon icon="close" />
|
||||
</div>
|
||||
)}
|
||||
{header && <div className={styles.header}>{header}</div>}
|
||||
|
||||
<div className={styles.body}>
|
||||
{children}
|
||||
{error && <div className={styles.error}>{error}</div>}
|
||||
</div>
|
||||
|
||||
{!!is_loading && (
|
||||
<div className={styles.shade}>
|
||||
<LoaderCircle size={48} />
|
||||
</div>
|
||||
)}
|
||||
|
||||
{overlay}
|
||||
|
||||
{footer && <div className={styles.footer}>{footer}</div>}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export { BetterScrollDialog };
|
144
src/components/dialogs/BetterScrollDialog/styles.module.scss
Normal file
144
src/components/dialogs/BetterScrollDialog/styles.module.scss
Normal file
|
@ -0,0 +1,144 @@
|
|||
@import "src/styles/variables";
|
||||
|
||||
.wrap {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
background: transparentize(darken($content_bg, 4%), 0.5);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 70px 20px 40px 20px;
|
||||
box-sizing: border-box;
|
||||
|
||||
@include tablet {
|
||||
padding: 70px 5px 5px 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.container {
|
||||
display: flex;
|
||||
align-items: stretch;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
min-width: $cell;
|
||||
max-width: 400px;
|
||||
max-height: 100%;
|
||||
max-height: calc(100vh - 75px);
|
||||
width: 100%;
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
|
||||
& > div:nth-child(2) {
|
||||
border-top-left-radius: $dialog_radius;
|
||||
border-top-right-radius: $dialog_radius;
|
||||
}
|
||||
|
||||
& > div:last-child {
|
||||
border-bottom-left-radius: $dialog_radius;
|
||||
border-bottom-right-radius: $dialog_radius;
|
||||
}
|
||||
}
|
||||
|
||||
.header,
|
||||
.footer {
|
||||
@include outer_shadow();
|
||||
|
||||
// padding: 10px;
|
||||
background: darken($content_bg, 2%);
|
||||
}
|
||||
|
||||
.body {
|
||||
@include outer_shadow();
|
||||
|
||||
position: relative;
|
||||
overflow: auto;
|
||||
flex: 1;
|
||||
background: $content_bg;
|
||||
}
|
||||
|
||||
@keyframes appear {
|
||||
0% {
|
||||
top: -48px;
|
||||
}
|
||||
100% {
|
||||
top: -58px;
|
||||
}
|
||||
}
|
||||
|
||||
.close {
|
||||
background: darken($content_bg, 2%);
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
position: absolute;
|
||||
top: -58px;
|
||||
right: 50%;
|
||||
transform: translate(50%, 0);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 100%;
|
||||
cursor: pointer;
|
||||
transition: transform 0.25s, background-color 0.25s;
|
||||
animation: appear 0.5s forwards;
|
||||
|
||||
&:hover {
|
||||
background-color: $red;
|
||||
transform: translate(50%, -5px);
|
||||
}
|
||||
|
||||
svg {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
}
|
||||
}
|
||||
|
||||
.error {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
pointer-events: none;
|
||||
background: linear-gradient(0deg, $red 50%, transparentize($red, 1));
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 0 0 $radius $radius;
|
||||
z-index: 11;
|
||||
}
|
||||
|
||||
.backdrop {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
@keyframes appear {
|
||||
0% {
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.shade {
|
||||
position: absolute;
|
||||
background: transparentize($content_bg, 0.3);
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: $radius;
|
||||
animation: appear 1s forwards;
|
||||
|
||||
svg {
|
||||
fill: white;
|
||||
}
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
import React, { FC, ReactNode } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import React, { FC, ReactNode } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
|
||||
interface IProps {
|
||||
children: ReactNode;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import React, { FC, MouseEventHandler } from "react";
|
||||
import ReactDOM from "react-dom";
|
||||
import styles from "./styles.module.scss";
|
||||
import React, { FC, MouseEventHandler } from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
import styles from './styles.module.scss';
|
||||
|
||||
type IProps = {
|
||||
onOverlayClick: MouseEventHandler;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import React, { createContext, FC, useContext, useMemo, useState, VFC } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import classNames from "classnames";
|
||||
import React, { createContext, FC, useContext, useMemo, useState, VFC } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import classNames from 'classnames';
|
||||
|
||||
interface TabProps {
|
||||
items: string[];
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
import React, { FC, useCallback, useMemo } from "react";
|
||||
import { UploadType } from "~/constants/uploads";
|
||||
import { ImageGrid } from "../ImageGrid";
|
||||
import { AudioGrid } from "../AudioGrid";
|
||||
import styles from "./styles.module.scss";
|
||||
import { NodeEditorProps } from "~/types/node";
|
||||
import { useNodeImages } from "~/hooks/node/useNodeImages";
|
||||
import { useNodeAudios } from "~/hooks/node/useNodeAudios";
|
||||
import { useNodeFormContext } from "~/hooks/node/useNodeFormFormik";
|
||||
import { UploadDropzone } from "~/components/upload/UploadDropzone";
|
||||
import { useUploaderContext } from "~/utils/context/UploaderContextProvider";
|
||||
import { values } from "ramda";
|
||||
import React, { FC, useCallback, useMemo } from 'react';
|
||||
import { UploadType } from '~/constants/uploads';
|
||||
import { ImageGrid } from '../ImageGrid';
|
||||
import { AudioGrid } from '../AudioGrid';
|
||||
import styles from './styles.module.scss';
|
||||
import { NodeEditorProps } from '~/types/node';
|
||||
import { useNodeImages } from '~/hooks/node/useNodeImages';
|
||||
import { useNodeAudios } from '~/hooks/node/useNodeAudios';
|
||||
import { useNodeFormContext } from '~/hooks/node/useNodeFormFormik';
|
||||
import { UploadDropzone } from '~/components/upload/UploadDropzone';
|
||||
import { useUploaderContext } from '~/utils/context/UploaderContextProvider';
|
||||
import { values } from 'ramda';
|
||||
|
||||
type IProps = NodeEditorProps;
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
import React, { FC, useCallback } from "react";
|
||||
import { SortEnd } from "react-sortable-hoc";
|
||||
import { IFile } from "~/redux/types";
|
||||
import { moveArrItem } from "~/utils/fn";
|
||||
import { SortableAudioGrid } from "~/components/editors/SortableAudioGrid";
|
||||
import React, { FC, useCallback } from 'react';
|
||||
import { SortEnd } from 'react-sortable-hoc';
|
||||
import { IFile } from '~/types';
|
||||
import { moveArrItem } from '~/utils/fn';
|
||||
import { SortableAudioGrid } from '~/components/editors/SortableAudioGrid';
|
||||
|
||||
import styles from "./styles.module.scss";
|
||||
import { UploadStatus } from "~/store/uploader/UploaderStore";
|
||||
import { useWindowSize } from "~/hooks/dom/useWindowSize";
|
||||
import styles from './styles.module.scss';
|
||||
import { UploadStatus } from '~/store/uploader/UploaderStore';
|
||||
import { useWindowSize } from '~/hooks/dom/useWindowSize';
|
||||
|
||||
interface IProps {
|
||||
files: IFile[];
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import React, { FC } from "react";
|
||||
import { EditorUploadButton } from "~/components/editors/EditorUploadButton";
|
||||
import { UploadType } from "~/constants/uploads";
|
||||
import { IEditorComponentProps } from "~/types/node";
|
||||
import React, { FC } from 'react';
|
||||
import { EditorUploadButton } from '~/components/editors/EditorUploadButton';
|
||||
import { UploadType } from '~/constants/uploads';
|
||||
import { IEditorComponentProps } from '~/types/node';
|
||||
|
||||
type IProps = IEditorComponentProps & {};
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import React, { FC } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import { Group } from "~/components/containers/Group";
|
||||
import { Button } from "~/components/input/Button";
|
||||
import React, { FC } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { Group } from '~/components/containers/Group';
|
||||
import { Button } from '~/components/input/Button';
|
||||
|
||||
interface IProps {
|
||||
onApprove: () => void;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import React, { FC } from "react";
|
||||
import { Filler } from "~/components/containers/Filler";
|
||||
import { IEditorComponentProps } from "~/types/node";
|
||||
import styles from "./styles.module.scss";
|
||||
import React, { FC } from 'react';
|
||||
import { Filler } from '~/components/containers/Filler';
|
||||
import { IEditorComponentProps } from '~/types/node';
|
||||
import styles from './styles.module.scss';
|
||||
|
||||
type IProps = IEditorComponentProps & {};
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import React, { FC } from "react";
|
||||
import { EditorUploadButton } from "~/components/editors/EditorUploadButton";
|
||||
import { UploadType } from "~/constants/uploads";
|
||||
import { IEditorComponentProps } from "~/types/node";
|
||||
import React, { FC } from 'react';
|
||||
import { EditorUploadButton } from '~/components/editors/EditorUploadButton';
|
||||
import { UploadType } from '~/constants/uploads';
|
||||
import { IEditorComponentProps } from '~/types/node';
|
||||
|
||||
type IProps = IEditorComponentProps & {};
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import React, { FC, useCallback } from "react";
|
||||
import { IEditorComponentProps } from "~/types/node";
|
||||
import { Button } from "~/components/input/Button";
|
||||
import { Icon } from "~/components/input/Icon";
|
||||
import styles from "./styles.module.scss";
|
||||
import { useNodeFormContext } from "~/hooks/node/useNodeFormFormik";
|
||||
import React, { FC, useCallback } from 'react';
|
||||
import { IEditorComponentProps } from '~/types/node';
|
||||
import { Button } from '~/components/input/Button';
|
||||
import { Icon } from '~/components/input/Icon';
|
||||
import styles from './styles.module.scss';
|
||||
import { useNodeFormContext } from '~/hooks/node/useNodeFormFormik';
|
||||
|
||||
interface IProps extends IEditorComponentProps {}
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
import React, { ChangeEvent, FC, useCallback } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import { Icon } from "~/components/input/Icon";
|
||||
import { UploadType } from "~/constants/uploads";
|
||||
import { IEditorComponentProps } from "~/types/node";
|
||||
import { getFileType } from "~/utils/uploader";
|
||||
import { useNodeFormContext } from "~/hooks/node/useNodeFormFormik";
|
||||
import { Button } from "~/components/input/Button";
|
||||
import { useUploaderContext } from "~/utils/context/UploaderContextProvider";
|
||||
import React, { ChangeEvent, FC, useCallback } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { Icon } from '~/components/input/Icon';
|
||||
import { UploadType } from '~/constants/uploads';
|
||||
import { IEditorComponentProps } from '~/types/node';
|
||||
import { getFileType } from '~/utils/uploader';
|
||||
import { useNodeFormContext } from '~/hooks/node/useNodeFormFormik';
|
||||
import { Button } from '~/components/input/Button';
|
||||
import { useUploaderContext } from '~/utils/context/UploaderContextProvider';
|
||||
|
||||
type IProps = IEditorComponentProps & {
|
||||
accept?: string;
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
import React, { ChangeEvent, FC, useCallback, useEffect } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import { UploadSubject, UploadTarget, UploadType } from "~/constants/uploads";
|
||||
import { getURL } from "~/utils/dom";
|
||||
import { Icon } from "~/components/input/Icon";
|
||||
import { PRESETS } from "~/constants/urls";
|
||||
import { IEditorComponentProps } from "~/types/node";
|
||||
import { useNodeFormContext } from "~/hooks/node/useNodeFormFormik";
|
||||
import { getFileType } from "~/utils/uploader";
|
||||
import { useUploader } from "~/hooks/data/useUploader";
|
||||
import React, { ChangeEvent, FC, useCallback, useEffect } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { UploadSubject, UploadTarget, UploadType } from '~/constants/uploads';
|
||||
import { getURL } from '~/utils/dom';
|
||||
import { Icon } from '~/components/input/Icon';
|
||||
import { PRESETS } from '~/constants/urls';
|
||||
import { IEditorComponentProps } from '~/types/node';
|
||||
import { useNodeFormContext } from '~/hooks/node/useNodeFormFormik';
|
||||
import { getFileType } from '~/utils/uploader';
|
||||
import { useUploader } from '~/hooks/data/useUploader';
|
||||
|
||||
type IProps = IEditorComponentProps & {};
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import React, { FC } from "react";
|
||||
import { ImageGrid } from "~/components/editors/ImageGrid";
|
||||
import styles from "./styles.module.scss";
|
||||
import { NodeEditorProps } from "~/types/node";
|
||||
import { UploadDropzone } from "~/components/upload/UploadDropzone";
|
||||
import { useUploaderContext } from "~/utils/context/UploaderContextProvider";
|
||||
import { values } from "ramda";
|
||||
import React, { FC } from 'react';
|
||||
import { ImageGrid } from '~/components/editors/ImageGrid';
|
||||
import styles from './styles.module.scss';
|
||||
import { NodeEditorProps } from '~/types/node';
|
||||
import { UploadDropzone } from '~/components/upload/UploadDropzone';
|
||||
import { useUploaderContext } from '~/utils/context/UploaderContextProvider';
|
||||
import { values } from 'ramda';
|
||||
|
||||
type IProps = NodeEditorProps;
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
import React, { FC, useCallback } from "react";
|
||||
import { SortEnd } from "react-sortable-hoc";
|
||||
import styles from "./styles.module.scss";
|
||||
import { IFile } from "~/redux/types";
|
||||
import { moveArrItem } from "~/utils/fn";
|
||||
import { SortableImageGrid } from "~/components/editors/SortableImageGrid";
|
||||
import { UploadStatus } from "~/store/uploader/UploaderStore";
|
||||
import { useWindowSize } from "~/hooks/dom/useWindowSize";
|
||||
import React, { FC, useCallback } from 'react';
|
||||
import { SortEnd } from 'react-sortable-hoc';
|
||||
import styles from './styles.module.scss';
|
||||
import { IFile } from '~/types';
|
||||
import { moveArrItem } from '~/utils/fn';
|
||||
import { SortableImageGrid } from '~/components/editors/SortableImageGrid';
|
||||
import { UploadStatus } from '~/store/uploader/UploaderStore';
|
||||
import { useWindowSize } from '~/hooks/dom/useWindowSize';
|
||||
|
||||
interface IProps {
|
||||
files: IFile[];
|
||||
|
|
|
@ -3,7 +3,7 @@ import { SortableContainer } from 'react-sortable-hoc';
|
|||
import { AudioUpload } from '~/components/upload/AudioUpload';
|
||||
import styles from './styles.module.scss';
|
||||
import { SortableAudioGridItem } from '~/components/editors/SortableAudioGridItem';
|
||||
import { IFile } from '~/redux/types';
|
||||
import { IFile } from '~/types';
|
||||
import { AudioPlayer } from '~/components/media/AudioPlayer';
|
||||
import { UploadStatus } from '~/store/uploader/UploaderStore';
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ import { SortableContainer } from 'react-sortable-hoc';
|
|||
import { ImageUpload } from '~/components/upload/ImageUpload';
|
||||
import styles from './styles.module.scss';
|
||||
import { SortableImageGridItem } from '~/components/editors/SortableImageGridItem';
|
||||
import { IFile } from '~/redux/types';
|
||||
import { IFile } from '~/types';
|
||||
import { getURL } from '~/utils/dom';
|
||||
import { PRESETS } from '~/constants/urls';
|
||||
import classNames from 'classnames';
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import React, { FC, useCallback } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import { Textarea } from "~/components/input/Textarea";
|
||||
import { path } from "ramda";
|
||||
import { NodeEditorProps } from "~/types/node";
|
||||
import { useNodeFormContext } from "~/hooks/node/useNodeFormFormik";
|
||||
import { useRandomPhrase } from "~/constants/phrases";
|
||||
import React, { FC, useCallback } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { Textarea } from '~/components/input/Textarea';
|
||||
import { path } from 'ramda';
|
||||
import { NodeEditorProps } from '~/types/node';
|
||||
import { useNodeFormContext } from '~/hooks/node/useNodeFormFormik';
|
||||
import { useRandomPhrase } from '~/constants/phrases';
|
||||
|
||||
type IProps = NodeEditorProps & {};
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
import React, { FC, useCallback, useMemo } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import { path } from "ramda";
|
||||
import { InputText } from "~/components/input/InputText";
|
||||
import classnames from "classnames";
|
||||
import { getYoutubeThumb } from "~/utils/dom";
|
||||
import { NodeEditorProps } from "~/types/node";
|
||||
import { useNodeFormContext } from "~/hooks/node/useNodeFormFormik";
|
||||
import React, { FC, useCallback, useMemo } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { path } from 'ramda';
|
||||
import { InputText } from '~/components/input/InputText';
|
||||
import classnames from 'classnames';
|
||||
import { getYoutubeThumb } from '~/utils/dom';
|
||||
import { NodeEditorProps } from '~/types/node';
|
||||
import { useNodeFormContext } from '~/hooks/node/useNodeFormFormik';
|
||||
|
||||
type IProps = NodeEditorProps & {};
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import React, { FC, useMemo } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import { DEFAULT_DOMINANT_COLOR } from "~/constants/node";
|
||||
import { DivProps } from "~/utils/types";
|
||||
import classNames from "classnames";
|
||||
import { transparentize } from "color2k";
|
||||
import { normalizeBrightColor } from "~/utils/color";
|
||||
import React, { FC, useMemo } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { DEFAULT_DOMINANT_COLOR } from '~/constants/node';
|
||||
import { DivProps } from '~/utils/types';
|
||||
import classNames from 'classnames';
|
||||
import { transparentize } from 'color2k';
|
||||
import { normalizeBrightColor } from '~/utils/color';
|
||||
|
||||
interface Props extends DivProps {
|
||||
color?: string;
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
import React, { FC } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import { NavLink } from "react-router-dom";
|
||||
import { CellShade } from "~/components/flow/CellShade";
|
||||
import { FlowDisplay, INode } from "~/redux/types";
|
||||
import { FlowCellText } from "~/components/flow/FlowCellText";
|
||||
import classNames from "classnames";
|
||||
import { FlowCellMenu } from "~/components/flow/FlowCellMenu";
|
||||
import { useFlowCellControls } from "~/hooks/flow/useFlowCellControls";
|
||||
import { useClickOutsideFocus } from "~/hooks/dom/useClickOutsideFocus";
|
||||
import { MenuDots } from "~/components/common/MenuDots";
|
||||
import { FlowCellImage } from "~/components/flow/FlowCellImage";
|
||||
import React, { FC } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { NavLink } from 'react-router-dom';
|
||||
import { CellShade } from '~/components/flow/CellShade';
|
||||
import { FlowDisplay, INode } from '~/types';
|
||||
import { FlowCellText } from '~/components/flow/FlowCellText';
|
||||
import classNames from 'classnames';
|
||||
import { FlowCellMenu } from '~/components/flow/FlowCellMenu';
|
||||
import { useFlowCellControls } from '~/hooks/flow/useFlowCellControls';
|
||||
import { useClickOutsideFocus } from '~/hooks/dom/useClickOutsideFocus';
|
||||
import { MenuDots } from '~/components/common/MenuDots';
|
||||
import { FlowCellImage } from '~/components/flow/FlowCellImage';
|
||||
|
||||
interface Props {
|
||||
id: INode['id'];
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import React, { FC } from "react";
|
||||
import { IMGProps } from "~/utils/types";
|
||||
import styles from "./styles.module.scss";
|
||||
import classNames from "classnames";
|
||||
import React, { FC } from 'react';
|
||||
import { IMGProps } from '~/utils/types';
|
||||
import styles from './styles.module.scss';
|
||||
import classNames from 'classnames';
|
||||
|
||||
interface Props extends IMGProps {
|
||||
height?: number;
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import React, { FC } from "react";
|
||||
import LazyLoad from "react-lazyload";
|
||||
import { IMGProps } from "~/utils/types";
|
||||
import styles from "./styles.module.scss";
|
||||
import classNames from "classnames";
|
||||
import React, { FC } from 'react';
|
||||
import LazyLoad from 'react-lazyload';
|
||||
import { IMGProps } from '~/utils/types';
|
||||
import styles from './styles.module.scss';
|
||||
import classNames from 'classnames';
|
||||
|
||||
interface Props extends IMGProps {
|
||||
height?: number;
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import React, { FC } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import { Icon } from "~/components/input/Icon";
|
||||
import classNames from "classnames";
|
||||
import { Toggle } from "~/components/input/Toggle";
|
||||
import { Group } from "~/components/containers/Group";
|
||||
import { FlowDisplayVariant } from "~/redux/types";
|
||||
import React, { FC } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { Icon } from '~/components/input/Icon';
|
||||
import classNames from 'classnames';
|
||||
import { Toggle } from '~/components/input/Toggle';
|
||||
import { Group } from '~/components/containers/Group';
|
||||
import { FlowDisplayVariant } from '~/types';
|
||||
|
||||
interface Props {
|
||||
onClose: () => void;
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import React, { FC, ReactElement } from "react";
|
||||
import { Markdown } from "~/components/containers/Markdown";
|
||||
import { DivProps } from "~/utils/types";
|
||||
import classNames from "classnames";
|
||||
import styles from "./styles.module.scss";
|
||||
import { formatText } from "~/utils/dom";
|
||||
import React, { FC, ReactElement } from 'react';
|
||||
import { Markdown } from '~/components/containers/Markdown';
|
||||
import { DivProps } from '~/utils/types';
|
||||
import classNames from 'classnames';
|
||||
import styles from './styles.module.scss';
|
||||
import { formatText } from '~/utils/dom';
|
||||
|
||||
interface Props extends DivProps {
|
||||
children: string;
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
import React, { FC, Fragment } from "react";
|
||||
import { FlowDisplay, IFlowNode, INode } from "~/redux/types";
|
||||
import { IUser } from "~/redux/auth/types";
|
||||
import { PRESETS, URLS } from "~/constants/urls";
|
||||
import { FlowCell } from "~/components/flow/FlowCell";
|
||||
import classNames from "classnames";
|
||||
import styles from "./styles.module.scss";
|
||||
import { getURLFromString } from "~/utils/dom";
|
||||
import { canEditNode } from "~/utils/node";
|
||||
import React, { FC, Fragment } from 'react';
|
||||
import { FlowDisplay, IFlowNode, INode } from '~/types';
|
||||
import { IUser } from '~/types/auth';
|
||||
import { PRESETS, URLS } from '~/constants/urls';
|
||||
import { FlowCell } from '~/components/flow/FlowCell';
|
||||
import classNames from 'classnames';
|
||||
import styles from './styles.module.scss';
|
||||
import { getURLFromString } from '~/utils/dom';
|
||||
import { canEditNode } from '~/utils/node';
|
||||
|
||||
interface Props {
|
||||
nodes: IFlowNode[];
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import React, { FC } from "react";
|
||||
import { FlowRecentItem } from "../FlowRecentItem";
|
||||
import styles from "./styles.module.scss";
|
||||
import { IFlowNode } from "~/redux/types";
|
||||
import React, { FC } from 'react';
|
||||
import { FlowRecentItem } from '../FlowRecentItem';
|
||||
import styles from './styles.module.scss';
|
||||
import { IFlowNode } from '~/types';
|
||||
|
||||
interface IProps {
|
||||
recent: IFlowNode[];
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
import React, { FC } from "react";
|
||||
import { INode } from "~/redux/types";
|
||||
import styles from "./styles.module.scss";
|
||||
import { URLS } from "~/constants/urls";
|
||||
import { NodeRelatedItem } from "~/components/node/NodeRelatedItem";
|
||||
import { getPrettyDate } from "~/utils/dom";
|
||||
import { Link } from "react-router-dom";
|
||||
import classNames from "classnames";
|
||||
import { Icon } from "~/components/input/Icon";
|
||||
import React, { FC } from 'react';
|
||||
import { INode } from '~/types';
|
||||
import styles from './styles.module.scss';
|
||||
import { URLS } from '~/constants/urls';
|
||||
import { NodeRelatedItem } from '~/components/node/NodeRelatedItem';
|
||||
import { getPrettyDate } from '~/utils/dom';
|
||||
import { Link } from 'react-router-dom';
|
||||
import classNames from 'classnames';
|
||||
import { Icon } from '~/components/input/Icon';
|
||||
|
||||
interface IProps {
|
||||
node: Partial<INode>;
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import React, { FC } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import { FlowRecentItem } from "../FlowRecentItem";
|
||||
import { Icon } from "~/components/input/Icon";
|
||||
import { INode } from "~/redux/types";
|
||||
import { InfiniteScroll } from "~/components/containers/InfiniteScroll";
|
||||
import React, { FC } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { FlowRecentItem } from '../FlowRecentItem';
|
||||
import { Icon } from '~/components/input/Icon';
|
||||
import { INode } from '~/types';
|
||||
import { InfiniteScroll } from '~/components/containers/InfiniteScroll';
|
||||
|
||||
interface IProps {
|
||||
isLoading: boolean;
|
||||
|
|
|
@ -10,7 +10,7 @@ import SwiperClass from 'swiper/types/swiper-class';
|
|||
import { LoaderCircle } from '~/components/input/LoaderCircle';
|
||||
import { useHistory } from 'react-router';
|
||||
import classNames from 'classnames';
|
||||
import { IFlowNode } from '~/redux/types';
|
||||
import { IFlowNode } from '~/types';
|
||||
import { useWindowSize } from '~/hooks/dom/useWindowSize';
|
||||
|
||||
SwiperCore.use([EffectFade, Lazy, Autoplay, Navigation]);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import React, { FC } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import { describeArc } from "~/utils/dom";
|
||||
import React, { FC } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { describeArc } from '~/utils/dom';
|
||||
|
||||
interface IProps {
|
||||
size: number;
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import classnames from "classnames";
|
||||
import React, { ButtonHTMLAttributes, DetailedHTMLProps, FC, memo, useMemo } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import { Icon } from "~/components/input/Icon";
|
||||
import { IIcon } from "~/redux/types";
|
||||
import Tippy from "@tippy.js/react";
|
||||
import "tippy.js/dist/tippy.css";
|
||||
import classnames from 'classnames';
|
||||
import React, { ButtonHTMLAttributes, DetailedHTMLProps, FC, memo, useMemo } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { Icon } from '~/components/input/Icon';
|
||||
import { IIcon } from '~/types';
|
||||
import Tippy from '@tippy.js/react';
|
||||
import 'tippy.js/dist/tippy.css';
|
||||
|
||||
type IButtonProps = DetailedHTMLProps<
|
||||
ButtonHTMLAttributes<HTMLButtonElement>,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import React, { HTMLAttributes } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import classNames from "classnames";
|
||||
import React, { HTMLAttributes } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import classNames from 'classnames';
|
||||
|
||||
type IProps = HTMLAttributes<HTMLDivElement> & {};
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import React, { FC } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import { SVGProps } from "~/utils/types";
|
||||
import React, { FC } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { SVGProps } from '~/utils/types';
|
||||
|
||||
interface Props extends SVGProps {}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import React, { FC } from "react";
|
||||
import { IIcon } from "~/redux/types";
|
||||
import React, { FC } from 'react';
|
||||
import { IIcon } from '~/types';
|
||||
|
||||
type IProps = React.SVGAttributes<SVGElement> & {
|
||||
size?: number;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import React, { ChangeEvent, FC, useCallback, useState } from 'react';
|
||||
import classNames from 'classnames';
|
||||
import { IInputTextProps } from '~/redux/types';
|
||||
import { IInputTextProps } from '~/types';
|
||||
import { useTranslatedError } from '~/hooks/data/useTranslatedError';
|
||||
import { InputWrapper } from '~/components/input/InputWrapper';
|
||||
import styles from './styles.module.scss';
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import React, { FC } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import classNames from "classnames";
|
||||
import React, { FC } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import classNames from 'classnames';
|
||||
|
||||
interface InputWrapperProps {
|
||||
title?: string;
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import React, { FC } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import classNames from "classnames";
|
||||
import { LoaderCircleInner } from "~/components/input/LoaderCircleInner";
|
||||
import { SVGProps } from "~/utils/types";
|
||||
import React, { FC } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import classNames from 'classnames';
|
||||
import { LoaderCircleInner } from '~/components/input/LoaderCircleInner';
|
||||
import { SVGProps } from '~/utils/types';
|
||||
|
||||
interface IProps extends SVGProps {
|
||||
size?: number;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import React, { FC, SVGAttributes } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import React, { FC, SVGAttributes } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
|
||||
interface IProps extends SVGAttributes<SVGElement> {
|
||||
size: number;
|
||||
|
|
|
@ -5,14 +5,14 @@ import React, {
|
|||
TextareaHTMLAttributes,
|
||||
useCallback,
|
||||
useEffect,
|
||||
useState
|
||||
} from "react";
|
||||
import classNames from "classnames";
|
||||
import autosize from "autosize";
|
||||
import styles from "./styles.module.scss";
|
||||
useState,
|
||||
} from 'react';
|
||||
import classNames from 'classnames';
|
||||
import autosize from 'autosize';
|
||||
import styles from './styles.module.scss';
|
||||
|
||||
import { InputWrapper } from "~/components/input/InputWrapper";
|
||||
import { useForwardRef } from "~/hooks/dom/useForwardRef";
|
||||
import { InputWrapper } from '~/components/input/InputWrapper';
|
||||
import { useForwardRef } from '~/hooks/dom/useForwardRef';
|
||||
|
||||
type IProps = DetailedHTMLProps<
|
||||
TextareaHTMLAttributes<HTMLTextAreaElement>,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import React, { FC, useCallback } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import classNames from "classnames";
|
||||
import { ButtonProps } from "~/utils/types";
|
||||
import React, { FC, useCallback } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import classNames from 'classnames';
|
||||
import { ButtonProps } from '~/utils/types';
|
||||
|
||||
type ToggleColor = 'primary' | 'secondary' | 'lab' | 'danger' | 'white';
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import React, { FC } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import { Group } from "~/components/containers/Group";
|
||||
import { Square } from "~/components/containers/Square";
|
||||
import React, { FC } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { Group } from '~/components/containers/Group';
|
||||
import { Square } from '~/components/containers/Square';
|
||||
|
||||
interface IProps {}
|
||||
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
import React, { FC, useCallback } from "react";
|
||||
import { Group } from "~/components/containers/Group";
|
||||
import { Filler } from "~/components/containers/Filler";
|
||||
import styles from "./styles.module.scss";
|
||||
import { getPrettyDate } from "~/utils/dom";
|
||||
import { INode } from "~/redux/types";
|
||||
import { Icon } from "~/components/input/Icon";
|
||||
import classNames from "classnames";
|
||||
import { Grid } from "~/components/containers/Grid";
|
||||
import { useHistory } from "react-router";
|
||||
import { URLS } from "~/constants/urls";
|
||||
import { Placeholder } from "~/components/placeholders/Placeholder";
|
||||
import React, { FC, useCallback } from 'react';
|
||||
import { Group } from '~/components/containers/Group';
|
||||
import { Filler } from '~/components/containers/Filler';
|
||||
import styles from './styles.module.scss';
|
||||
import { getPrettyDate } from '~/utils/dom';
|
||||
import { INode } from '~/types';
|
||||
import { Icon } from '~/components/input/Icon';
|
||||
import classNames from 'classnames';
|
||||
import { Grid } from '~/components/containers/Grid';
|
||||
import { useHistory } from 'react-router';
|
||||
import { URLS } from '~/constants/urls';
|
||||
import { Placeholder } from '~/components/placeholders/Placeholder';
|
||||
|
||||
type Props = {
|
||||
node: INode;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import React, { FC } from "react";
|
||||
import styles from "./styles.module.scss";
|
||||
import { LabHeadItem } from "~/components/lab/LabHeadItem";
|
||||
import React, { FC } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { LabHeadItem } from '~/components/lab/LabHeadItem';
|
||||
|
||||
interface IProps {
|
||||
isLoading?: boolean;
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import React, { FC } from "react";
|
||||
import { Group } from "~/components/containers/Group";
|
||||
import { Icon } from "~/components/input/Icon";
|
||||
import { Placeholder } from "~/components/placeholders/Placeholder";
|
||||
import styles from "./styles.module.scss";
|
||||
import classNames from "classnames";
|
||||
import React, { FC } from 'react';
|
||||
import { Group } from '~/components/containers/Group';
|
||||
import { Icon } from '~/components/input/Icon';
|
||||
import { Placeholder } from '~/components/placeholders/Placeholder';
|
||||
import styles from './styles.module.scss';
|
||||
import classNames from 'classnames';
|
||||
|
||||
interface IProps {
|
||||
icon: string;
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue