From aff136cdd99e67992169fd7b948fdbf59d3bbe3b Mon Sep 17 00:00:00 2001 From: Hom Yan Date: Thu, 13 Jan 2022 15:31:52 +0800 Subject: [PATCH 01/27] feat: remove Mnemonic verification --- .../src/hooks/useMnemonicWordsPuzzle.ts | 2 +- packages/dashboard/src/locales/en-US.json | 3 +- .../components/CreateMnemonic/index.tsx | 2 +- .../dashboard/src/pages/SignUp/routes.tsx | 2 +- .../pages/SignUp/steps/MnemonicRevealForm.tsx | 108 +++++++----------- .../src/pages/SignUp/steps/PersonaCreate.tsx | 49 ++------ 6 files changed, 57 insertions(+), 109 deletions(-) diff --git a/packages/dashboard/src/hooks/useMnemonicWordsPuzzle.ts b/packages/dashboard/src/hooks/useMnemonicWordsPuzzle.ts index 37f9f08c5f57..c9770fb696e9 100644 --- a/packages/dashboard/src/hooks/useMnemonicWordsPuzzle.ts +++ b/packages/dashboard/src/hooks/useMnemonicWordsPuzzle.ts @@ -60,5 +60,5 @@ export function useMnemonicWordsPuzzle() { const refreshCallback = wordsRetry - return [words, puzzleWords, indexes, answerCallback, resetCallback, refreshCallback] as const + return { words, puzzleWords, indexes, answerCallback, resetCallback, refreshCallback } as const } diff --git a/packages/dashboard/src/locales/en-US.json b/packages/dashboard/src/locales/en-US.json index e876883d170a..b9fd9257f216 100644 --- a/packages/dashboard/src/locales/en-US.json +++ b/packages/dashboard/src/locales/en-US.json @@ -38,7 +38,8 @@ "setup_page_create_restore_button": "Recovery or Sign In", "create_account_identity_title": "Create an Identity for Mask Network", "create_account_sign_in_button": "Recovery", - "create_account_identity_warning": "Please don’t forget your identity code. Your identity code is the only proof of your user identity and the only basis for you to encrypt or decrypt social activities.", + "create_account_identity_warning": "Download your idendity ID to backup safely.", + "create_account_mnemonic_download_or_print": "I’ve downloaded it or printed it ", "create_account_mnemonic_confirm_failed": "Incorrect identity code", "create_account_connect_social_media_button": "Create", "create_account_connect_social_media": "Connect to {{type}}", diff --git a/packages/dashboard/src/pages/CreateMaskWallet/components/CreateMnemonic/index.tsx b/packages/dashboard/src/pages/CreateMaskWallet/components/CreateMnemonic/index.tsx index e0cbf00d6390..a5e5056087c8 100644 --- a/packages/dashboard/src/pages/CreateMaskWallet/components/CreateMnemonic/index.tsx +++ b/packages/dashboard/src/pages/CreateMaskWallet/components/CreateMnemonic/index.tsx @@ -79,7 +79,7 @@ const CreateMnemonic = memo(() => { const location = useLocation() as { search: Search; state: { password: string } } const navigate = useNavigate() const [open, setOpen] = useState(false) - const [words, puzzleWords, indexes, answerCallback, resetCallback, refreshCallback] = useMnemonicWordsPuzzle() + const { words, puzzleWords, indexes, answerCallback, resetCallback, refreshCallback } = useMnemonicWordsPuzzle() const [searchParams] = useSearchParams() const { value: hasPassword, loading, retry } = useAsyncRetry(PluginServices.Wallet.hasPassword, []) diff --git a/packages/dashboard/src/pages/SignUp/routes.tsx b/packages/dashboard/src/pages/SignUp/routes.tsx index f9e7cf77ecc4..b9ecccfbe6da 100644 --- a/packages/dashboard/src/pages/SignUp/routes.tsx +++ b/packages/dashboard/src/pages/SignUp/routes.tsx @@ -21,7 +21,7 @@ export const SignUpRoutes = () => { return ( } /> - } /> + } /> ) } diff --git a/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx b/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx index 8e7d62b744dc..8811cf60d4b7 100644 --- a/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx +++ b/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx @@ -1,10 +1,10 @@ -import { memo, useState } from 'react' +import { memo, useCallback, useState } from 'react' import { some } from 'lodash-unified' -import { useNavigate } from 'react-router-dom' +import { useLocation, useNavigate } from 'react-router-dom' import { Button, Stack, Box } from '@mui/material' import RefreshIcon from '@mui/icons-material/Refresh' import { useCustomSnackbar } from '@masknet/theme' -import { DashboardRoutes } from '@masknet/shared-base' +import { DashboardRoutes, delay } from '@masknet/shared-base' import { MaskAlert } from '../../../components/MaskAlert' import { Header } from '../../../components/RegisterFrame/ColumnContentHeader' import { @@ -14,39 +14,39 @@ import { SignUpAccountLogo, } from '../../../components/RegisterFrame/ColumnContentLayout' import { useDashboardI18N } from '../../../locales' -import { DesktopMnemonicConfirm, MnemonicReveal } from '../../../components/Mnemonic' +import { MnemonicReveal } from '../../../components/Mnemonic' import { SignUpRoutePath } from '../routePath' import { ButtonContainer } from '../../../components/RegisterFrame/ButtonContainer' import { useMnemonicWordsPuzzle } from '../../../hooks/useMnemonicWordsPuzzle' - -enum CreateWalletStep { - NameAndWords = 0, - Verify = 1, -} +import { useCreatePersonaV2 } from '../../../hooks/useCreatePersonaV2' +import { PersonaContext } from '../../Personas/hooks/usePersonaContext' +import { Services } from '../../../API' export const MnemonicRevealForm = memo(() => { + const createPersona = useCreatePersonaV2() + const { changeCurrentPersona } = PersonaContext.useContainer() const t = useDashboardI18N() const navigate = useNavigate() + const { state } = useLocation() as { state: { personaName: string } } const { showSnackbar } = useCustomSnackbar() - const [words, puzzleWords, indexes, answerCallback, resetCallback, refreshCallback] = useMnemonicWordsPuzzle() + const { words, refreshCallback } = useMnemonicWordsPuzzle() - const [step, setStep] = useState(CreateWalletStep.NameAndWords) + const onConfirm = useCallback(async () => { + try { + const identifier = await createPersona(words.join(' '), state.personaName) - const onSubmit = async () => { - if (words.join(' ') !== puzzleWords.join(' ')) { - showSnackbar(t.create_account_mnemonic_confirm_failed(), { variant: 'error' }) - } else { - navigate(SignUpRoutePath.PersonaCreate, { - replace: true, - state: { mnemonic: words }, - }) - } - } + const privateKey = await Services.Identity.exportPersonaPrivateKey(identifier) + console.log(identifier.toText(), privateKey) - const onBack = () => { - setStep(CreateWalletStep.NameAndWords) - resetCallback() - } + await changeCurrentPersona(identifier) + showSnackbar(t.create_account_persona_successfully(), { variant: 'success' }) + + await delay(300) + navigate(`${DashboardRoutes.SignUp}/${SignUpRoutePath.ConnectSocialMedia}`) + } catch (error) { + showSnackbar((error as Error).message, { variant: 'error' }) + } + }, [words, state.personaName]) return ( @@ -58,49 +58,23 @@ export const MnemonicRevealForm = memo(() => { - {step === CreateWalletStep.NameAndWords && ( - <> - theme.spacing(2) }}> - - - - - - - - )} - {step === CreateWalletStep.Verify && ( - <> - - - - - - - )} + + + theme.spacing(2) }}> + + + + + + + + - + diff --git a/packages/dashboard/src/pages/SignUp/steps/PersonaCreate.tsx b/packages/dashboard/src/pages/SignUp/steps/PersonaCreate.tsx index 2cf50b31f80f..32fb84aef34a 100644 --- a/packages/dashboard/src/pages/SignUp/steps/PersonaCreate.tsx +++ b/packages/dashboard/src/pages/SignUp/steps/PersonaCreate.tsx @@ -1,6 +1,6 @@ import { useCallback, useEffect, useState } from 'react' import { useLocation, useNavigate } from 'react-router-dom' -import { MaskTextField, useCustomSnackbar } from '@masknet/theme' +import { MaskTextField } from '@masknet/theme' import { Body, ColumnContentLayout, @@ -8,15 +8,12 @@ import { PersonaLogoBox, SignUpAccountLogo, } from '../../../components/RegisterFrame/ColumnContentLayout' -import { DashboardRoutes, delay } from '@masknet/shared-base' +import { DashboardRoutes } from '@masknet/shared-base' import { Header } from '../../../components/RegisterFrame/ColumnContentHeader' import { Box, Typography } from '@mui/material' import { useDashboardI18N } from '../../../locales' import { SignUpRoutePath } from '../routePath' -import { useCreatePersonaByPrivateKey, useCreatePersonaV2 } from '../../../hooks/useCreatePersonaV2' -import { Services } from '../../../API' import { ButtonContainer } from '../../../components/RegisterFrame/ButtonContainer' -import { PersonaContext } from '../../Personas/hooks/usePersonaContext' import { LoadingButton } from '../../../components/LoadingButton' const Label = ({ value }: { value: string }) => ( @@ -30,39 +27,17 @@ const Label = ({ value }: { value: string }) => ( export const PersonaCreate = () => { const t = useDashboardI18N() const navigate = useNavigate() - const createPersona = useCreatePersonaV2() - const createPersonaByPrivateKey = useCreatePersonaByPrivateKey() - const { showSnackbar } = useCustomSnackbar() - const { changeCurrentPersona } = PersonaContext.useContainer() - const { state } = useLocation() as { state: { mnemonic: string[]; privateKey: string } } const [personaName, setPersonaName] = useState('') - const [error, setError] = useState('') - useEffect(() => { - if ( - (!state?.mnemonic || !Services.Identity.validateMnemonic(state?.mnemonic.join(' '))) && - !state?.privateKey - ) { - navigate(DashboardRoutes.SignUp, { replace: true }) - } - }, [state?.mnemonic, state?.privateKey]) - - const create = useCallback(async () => { - try { - const identifier = state?.mnemonic - ? await createPersona(state?.mnemonic.join(' '), personaName) - : await createPersonaByPrivateKey(state?.privateKey, personaName) - - await changeCurrentPersona(identifier) - showSnackbar(t.create_account_persona_successfully(), { variant: 'success' }) - - await delay(300) - navigate(`${DashboardRoutes.SignUp}/${SignUpRoutePath.ConnectSocialMedia}`) - } catch (error) { - setError((error as Error).message) - } - }, [state?.mnemonic, state?.privateKey, personaName]) + const onNext = async () => { + await navigate(`${DashboardRoutes.SignUp}/${SignUpRoutePath.MnemonicReveal}`, { + replace: true, + state: { + personaName, + }, + }) + } return ( @@ -82,15 +57,13 @@ export const PersonaCreate = () => { InputProps={{ disableUnderline: true }} onChange={(e) => setPersonaName(e.currentTarget.value)} inputProps={{ maxLength: 24 }} - error={!!error} - helperText={error} /> {t.next()} From f7e3f63886112bd27e85208391897064db11728b Mon Sep 17 00:00:00 2001 From: Hom Yan Date: Mon, 17 Jan 2022 20:37:16 +0800 Subject: [PATCH 02/27] feat: add preview dialog --- packages/dashboard/package.json | 2 + .../dashboard/src/assets/images/watermark.png | Bin 0 -> 2610 bytes packages/dashboard/src/assets/index.ts | 1 + .../components/Mnemonic/MnemonicReveal.tsx | 9 +- .../RegisterFrame/ButtonContainer.tsx | 2 +- packages/dashboard/src/locales/en-US.json | 6 + .../pages/SignUp/steps/MnemonicRevealForm.tsx | 156 ++++++++++++----- .../src/pages/SignUp/steps/PersonaCreate.tsx | 21 +++ .../src/pages/SignUp/steps/PreviewDialog.tsx | 159 ++++++++++++++++++ pnpm-lock.yaml | 31 +++- 10 files changed, 339 insertions(+), 48 deletions(-) create mode 100644 packages/dashboard/src/assets/images/watermark.png create mode 100644 packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx diff --git a/packages/dashboard/package.json b/packages/dashboard/package.json index 2a8a955e116f..0c2a2abf34d8 100644 --- a/packages/dashboard/package.json +++ b/packages/dashboard/package.json @@ -34,12 +34,14 @@ "color": "^4.1.0", "date-fns": "2.27.0", "history": "^5.2.0", + "html-to-image": "^1.9.0", "i18next-browser-languagedetector": "^6.1.2", "json-stable-stringify": "^1.0.1", "react-avatar-editor": "^12.0.0", "react-hook-form": "^7.22.5", "react-router": "^6.0.0-beta.0", "react-router-dom": "^6.0.0-beta.0", + "react-to-print": "^2.14.3", "react-use": "^17.3.1", "unstated-next": "^1.1.0", "urlcat": "^2.0.4", diff --git a/packages/dashboard/src/assets/images/watermark.png b/packages/dashboard/src/assets/images/watermark.png new file mode 100644 index 0000000000000000000000000000000000000000..6785a88442d6c609ed8fac57bc74db534950103b GIT binary patch literal 2610 zcmbW3`#%$k8^=d&2@6q}J5lbpi58*8=CaNGT5>53%iKCAA-P+Il83_OgiT@TKfb>}EAmod5LR8#J3zmo;=^H9tzy#!6kvZ_c?nsm1f(wPO%yj-|=}8N| zE0_xMid7RlZ(I9hjU+#*JqyoQVrl;Qe#Mc7WWe{!=Or-(l;}Us&U`y?|LFSL) zYawEl)!14#vEfH|NOP3d(ceT=7(crjZejs>=B`I%k^(8wQZgrR*8;uEyS8$yD`h8y zTWADq{dyg6bg@X;{mQ50i8bRcYIs@EbF7|m8$h}Hy^&9Tml&_*PQ)r0u{&*_TNZbPQ?K8h>MqD) zY^>m+os_Lv?8X}$%Mk@jKU#Mro;s;I=Xk}IUI>CDe_R~M_A_e##vfC zGM)ln>xCb>x-)Fr?*gk{-hFaRRV{g5bNRXju5Hj|UE4$E&`iifAsqtHZpFA-O-?TQ zsKnNnrrtq0lR@!Qdzl-fiI1^`5t`}WY8r3lE~#ErJz};a6Ld8I#v}rtQa?Od$Zdb- zP=!&OxXcS&pyw3++HcB#BC1T85*22TenJ{|=$(Po2qveAI4;q-ZFOqBJQT{PVAXmT zKZiMv8h(54rnwc)6r>>Pww975PBNFbJFN?fj}%`s{!FNVLg&yfLSnXd=f-#SBjui_ z=F+S0I3E5rjDVAZwEMKc<7HkY?C`%643u>|;(N4Z)vxyGkdAlfR#5-Z4@jH!iJN}S z852xnagacnJZ8FttV$Q+q8UzJd^L2C^H!LbYG+bOgg*22+tfFdchM5;LR^}U9ix(d z7`q-SCJG6??MzRNAj@9)Ts9^FZ7o>qNtUUX3|+aDv0ePp7PeI5_q`ON%G4tSVsJjr zZ#m1Iy}8luwY$ZkOmSdVhG5))$>@-A!+gp9^GPc+FWuK&IvX8s0l+_R?t6&|Mw)W=sX+$qY zBB~OO$FDb`M$v`ORD`$k9HM7YRr~#~0&CQm;!e}}i^lqSz^d6|gb)8nwC;1i2c9N` zi1_l2K7}ADkb-)<`598u2xg2|OjNFRC?&#&P%(vS$<@dt2QMQfR*^;?AU}b5Pn5D} z+_O4XG?pZ=`6jH5t%bAob%FxQu`ycdXUDketmhWY_eN&tl{Y-=QXY-k%`!1GKT`&q ztx&T*%-zx~A}0p8G*~j?on#wszz)CLqUrss40$I$JiOPC$%+IChg4L;V}eyS`^tGB zU=O45n+5I7Fyy8|M(aSsauZ?}jBxP6tMWjHU17ou)E)k3n16k~Pt3=Kts#txfqh$zbA+Hv%3ua|_9 zKgV|b5B6`y4yWsswr<=Kh>Ho8K2?tX^TWo^j^jbf%~2PAX>EGiEJp+9*Hk-VNm#{4 z#Ix*f}miyw8eG9pD&o;nL>q)5!1h1#Xfv*J;M7lSnX7PiY@0F z_zm1N1`93PwZ);c5$-vACCU-N(BT+l`KDN2_@0`09?JVb0-Uy}OKobeMRZ4P{ zoglJv^YW=w2S^o1h0tuU+q%NBo)7~sv%~k*Ctq{^djB&A|wokUxIx#2=10F0j zEwFise7z}BsODTViSzXCq!)gmwTeq@zHCEz^Fq1hbeDW}3b0! z;8Qj)l`7E$TDHg8uxe{tDr5`j)kV@>-HxkGCs9^S?Bp8sJ}Q%5T_W8De19fRJ9BUU zW321KV~tJYrz|o5pnuH7EBPussP2yz@m`fGy&wHE1JPD?Cg*tlwlIFJx|M1th~?Dg z!_`7N=|N^Ri;Y{lTkD60-kV60N#iJMXw3z8lI48M^CWs`SisX@;}8!?VP7{Wa)|7H zQ}F}}#A3*=Q}}APgw?}f_2sT_oTHQ=--wP!hC@%^@m#Ql0^H^|b>!L8?F9>s<>wiS zUama$hSo`%H$&0H)VDM57N|k-a|Wop*+^!g&#L|_jw=F7@OZ#V4-~Q{j}3}A2`}N_ zPd)7Ha>PG&f_k@}uR@mB`)y^aeVVm>H^{YWx*?NrSJ}}T{z@P*QL4>QU$?YxfS_g- z!3UU6>mRRZ4GaIq=tiamfF(08^;^w62xpjFy9_-h{a1m Jx{JPv{{v{>@!kLc literal 0 HcmV?d00001 diff --git a/packages/dashboard/src/assets/index.ts b/packages/dashboard/src/assets/index.ts index 33f3af424100..c1b05f68371b 100644 --- a/packages/dashboard/src/assets/index.ts +++ b/packages/dashboard/src/assets/index.ts @@ -4,3 +4,4 @@ export const ABOUT_DIALOG_BACKGROUND = new URL('./images/AboutDialogBackground.png', import.meta.url) export const PoolTogetherURL = new URL('./images/PoolTogether.png', import.meta.url) export const SetupTutorialURL = new URL('./images/SetupTutorial.svg', import.meta.url) +export const WatermarkURL = new URL('./images/watermark.png', import.meta.url) diff --git a/packages/dashboard/src/components/Mnemonic/MnemonicReveal.tsx b/packages/dashboard/src/components/Mnemonic/MnemonicReveal.tsx index d96a658d7a2d..f105282e0ca3 100644 --- a/packages/dashboard/src/components/Mnemonic/MnemonicReveal.tsx +++ b/packages/dashboard/src/components/Mnemonic/MnemonicReveal.tsx @@ -16,15 +16,20 @@ const WordCard = styled(Typography)( export interface MnemonicRevealProps { words: string[] + indexed?: boolean + wordClass?: string } export function MnemonicReveal(props: MnemonicRevealProps) { - const { words } = props + const { words, indexed, wordClass } = props return ( {words.map((item, index) => ( - {item} + + {indexed ? `${index + 1}. ` : ''} + {item} + ))} diff --git a/packages/dashboard/src/components/RegisterFrame/ButtonContainer.tsx b/packages/dashboard/src/components/RegisterFrame/ButtonContainer.tsx index 78015e886a6d..e879b9fd64af 100644 --- a/packages/dashboard/src/components/RegisterFrame/ButtonContainer.tsx +++ b/packages/dashboard/src/components/RegisterFrame/ButtonContainer.tsx @@ -18,7 +18,7 @@ interface ButtonGroupProps extends PropsWithChildren<{}> {} export const ButtonContainer = ({ children }: ButtonGroupProps) => { return ( - + {children} ) diff --git a/packages/dashboard/src/locales/en-US.json b/packages/dashboard/src/locales/en-US.json index b9fd9257f216..db8dcc11bede 100644 --- a/packages/dashboard/src/locales/en-US.json +++ b/packages/dashboard/src/locales/en-US.json @@ -21,6 +21,10 @@ "close": "Close", "send": "Send", "resend": "Resend", + "print": "Print", + "download": "Download", + "print_preview": "Print Preview", + "download_preview": "Download Preview", "confirm_password": "Confirm Password", "about_dialog_license": "License: ", "footer_bounty_list": "Bounty List", @@ -38,8 +42,10 @@ "setup_page_create_restore_button": "Recovery or Sign In", "create_account_identity_title": "Create an Identity for Mask Network", "create_account_sign_in_button": "Recovery", + "create_account_persona_exists": "Persona already exists.", "create_account_identity_warning": "Download your idendity ID to backup safely.", "create_account_mnemonic_download_or_print": "I’ve downloaded it or printed it ", + "create_account_preview_tip": "This QR saves your identity code, please keep it safely. You can use Mask APP to scan QR to login persona.", "create_account_mnemonic_confirm_failed": "Incorrect identity code", "create_account_connect_social_media_button": "Create", "create_account_connect_social_media": "Connect to {{type}}", diff --git a/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx b/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx index 8811cf60d4b7..7458867262ab 100644 --- a/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx +++ b/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx @@ -1,10 +1,10 @@ -import { memo, useCallback, useState } from 'react' +import { memo, useCallback, useEffect, useState } from 'react' import { some } from 'lodash-unified' import { useLocation, useNavigate } from 'react-router-dom' -import { Button, Stack, Box } from '@mui/material' +import { Button, Stack, Box, IconButton } from '@mui/material' import RefreshIcon from '@mui/icons-material/Refresh' -import { useCustomSnackbar } from '@masknet/theme' -import { DashboardRoutes, delay } from '@masknet/shared-base' +import { MaskColorVar, useCustomSnackbar } from '@masknet/theme' +import { DashboardRoutes, delay, ECKeyIdentifier, Identifier } from '@masknet/shared-base' import { MaskAlert } from '../../../components/MaskAlert' import { Header } from '../../../components/RegisterFrame/ColumnContentHeader' import { @@ -21,6 +21,9 @@ import { useMnemonicWordsPuzzle } from '../../../hooks/useMnemonicWordsPuzzle' import { useCreatePersonaV2 } from '../../../hooks/useCreatePersonaV2' import { PersonaContext } from '../../Personas/hooks/usePersonaContext' import { Services } from '../../../API' +import PrintIcon from '@mui/icons-material/Print' +import { PreviewDialog } from './PreviewDialog' +import { DownloadIcon } from '@masknet/icons' export const MnemonicRevealForm = memo(() => { const createPersona = useCreatePersonaV2() @@ -30,53 +33,128 @@ export const MnemonicRevealForm = memo(() => { const { state } = useLocation() as { state: { personaName: string } } const { showSnackbar } = useCustomSnackbar() const { words, refreshCallback } = useMnemonicWordsPuzzle() + const [preview, setPreview] = useState<{ + open: boolean + type: 'print' | 'download' + }>({ + open: false, + type: 'print', + }) + const [id, setId] = useState(null) + const [privateKey, setPrivateKey] = useState('') - const onConfirm = useCallback(async () => { + const create = async () => { try { const identifier = await createPersona(words.join(' '), state.personaName) - + setId(identifier) const privateKey = await Services.Identity.exportPersonaPrivateKey(identifier) - console.log(identifier.toText(), privateKey) + setPrivateKey(privateKey) await changeCurrentPersona(identifier) - showSnackbar(t.create_account_persona_successfully(), { variant: 'success' }) - - await delay(300) - navigate(`${DashboardRoutes.SignUp}/${SignUpRoutePath.ConnectSocialMedia}`) } catch (error) { showSnackbar((error as Error).message, { variant: 'error' }) } - }, [words, state.personaName]) + } + + const onConfirm = async () => { + if (!id) { + await create() + } + + navigate(`${DashboardRoutes.SignUp}/${SignUpRoutePath.ConnectSocialMedia}`) + } + + const onPreview = async (type: 'print' | 'download') => { + if (!id) { + await create() + } + + setPreview({ + open: true, + type, + }) + } + + useEffect(() => { + // handle refresh words + if (id) { + Services.Identity.deletePersona(id, 'delete even with private') + } + }, [words]) + + useEffect(() => { + // handle refresh page after create + const pageRefresHandler = async () => { + const personas = await Services.Identity.queryMyPersonas() + for (let i in personas) { + if (personas[i].nickname === state.personaName) { + const id = personas[i].identifier + Services.Identity.deletePersona(id, 'delete even with private') + break + } + } + } + + pageRefresHandler() + }, []) return ( - -
navigate(DashboardRoutes.SignIn) }} - /> - - - - + <> + +
navigate(DashboardRoutes.SignIn), + }} + /> + + + + - - theme.spacing(2) }}> - - - - - - - + + theme.spacing(2) }}> + + + + + + onPreview('print')}> + + + onPreview('download')}> + + + + - - - - - + + + + + + setPreview({ ...preview, open: false })} + personaName={state.personaName} + id={id?.toText()} + words={words} + privateKey={privateKey} + /> + ) }) diff --git a/packages/dashboard/src/pages/SignUp/steps/PersonaCreate.tsx b/packages/dashboard/src/pages/SignUp/steps/PersonaCreate.tsx index 32fb84aef34a..93c37c2313a6 100644 --- a/packages/dashboard/src/pages/SignUp/steps/PersonaCreate.tsx +++ b/packages/dashboard/src/pages/SignUp/steps/PersonaCreate.tsx @@ -15,6 +15,7 @@ import { useDashboardI18N } from '../../../locales' import { SignUpRoutePath } from '../routePath' import { ButtonContainer } from '../../../components/RegisterFrame/ButtonContainer' import { LoadingButton } from '../../../components/LoadingButton' +import { Services } from '../../../API' const Label = ({ value }: { value: string }) => ( { const navigate = useNavigate() const [personaName, setPersonaName] = useState('') + const [error, setError] = useState('') const onNext = async () => { + const personas = await Services.Identity.queryMyPersonas() + let existing = false + for (let i in personas) { + if (personas[i].nickname === personaName) { + existing = true + break + } + } + + if (existing) { + return setError(t.create_account_persona_exists()) + } + await navigate(`${DashboardRoutes.SignUp}/${SignUpRoutePath.MnemonicReveal}`, { replace: true, state: { @@ -39,6 +54,10 @@ export const PersonaCreate = () => { }) } + useEffect(() => { + setError('') + }, [personaName]) + return (
{ InputProps={{ disableUnderline: true }} onChange={(e) => setPersonaName(e.currentTarget.value)} inputProps={{ maxLength: 24 }} + error={!!error} + helperText={error} /> ({ + preview: { + position: 'relative', + background: `url(${WatermarkURL}) repeat`, + backgroundSize: '140px', + }, + wordClass: { + background: 'rgba(28, 104, 243, 0.1)', + color: '#1C68F3', + }, + card: { + background: 'linear-gradient(180deg, #003EAF 0%, #1C68F3 100%)', + borderRadius: theme.spacing(1), + padding: theme.spacing(2), + color: '#fff', + }, + name: { + maxWidth: 350, + paddingLeft: 10, + overflow: 'hidden', + whiteSpace: 'nowrap', + textOverflow: 'ellipsis', + }, + infoIcon: { + color: MaskColorVar.secondaryInfoText, + fontSize: 20, + marginRight: 12, + }, +})) + +interface PreviewDialogProps { + open: boolean + type: 'print' | 'download' + personaName: string + id?: string + privateKey: string + words: string[] + onClose(): void +} + +export function PreviewDialog(props: PreviewDialogProps) { + const { personaName, open, type, onClose } = props + const t = useDashboardI18N() + const ref = useRef(null) + + const onPrint = useReactToPrint({ + content: () => ref.current, + }) + + const onDownload = async () => { + if (!ref.current) return + + const dataUrl = await toJpeg(ref.current, { quality: 0.95 }) + const link = document.createElement('a') + link.download = `mask-persona-${personaName}.jpeg` + link.href = dataUrl + link.click() + } + + const onClick = () => { + onClose() + type === 'print' ? onPrint() : onDownload() + } + + return ( + + + + + + + + + + + + ) +} + +const ComponentToPrint = forwardRef((props: PreviewDialogProps, ref: ForwardedRef) => { + const { personaName, id, privateKey, words } = props + const { classes } = useStyles() + const t = useDashboardI18N() + + return ( + + + + + + + + Persona: {personaName} + + + + + MASK ID:{' '} + + {id?.replace('ec_key:secp256k1/', '')} + + + + + Private Key: + + + {privateKey} + + + + + + + Idenentity ID + + + + + + {t.create_account_preview_tip()} + + + + + ) +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0a1e80e5aee7..8de9a688050b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -159,6 +159,7 @@ importers: color: ^4.1.0 date-fns: 2.27.0 history: ^5.2.0 + html-to-image: ^1.9.0 i18next-browser-languagedetector: ^6.1.2 json-stable-stringify: ^1.0.1 path-browserify: ^1.0.1 @@ -166,6 +167,7 @@ importers: react-hook-form: ^7.22.5 react-router: ^6.0.0-beta.0 react-router-dom: ^6.0.0-beta.0 + react-to-print: ^2.14.3 react-use: ^17.3.1 stream-browserify: ^3.0.0 unstated-next: ^1.1.0 @@ -202,12 +204,14 @@ importers: color: 4.1.0 date-fns: 2.27.0 history: 5.2.0 + html-to-image: 1.9.0 i18next-browser-languagedetector: 6.1.2 json-stable-stringify: 1.0.1 react-avatar-editor: 12.0.0_2a5ce53653c2861b1c74a6612fe40887 react-hook-form: 7.22.5_react@18.0.0-rc.0 react-router: 6.0.0-beta.4_history@5.2.0+react@18.0.0-rc.0 react-router-dom: 6.0.0-beta.4_154c53788755629e2430b224cbac559e + react-to-print: 2.14.3_757a802188413a36d4f24237d13b8e90 react-use: 17.3.1_757a802188413a36d4f24237d13b8e90 unstated-next: 1.1.0 urlcat: 2.0.4 @@ -5536,7 +5540,7 @@ packages: nanoid: 3.1.30 p-limit: 3.1.0 prettier: 2.5.1 - prop-types: 15.7.2 + prop-types: 15.8.0 react: 18.0.0-rc.0 react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 react-element-to-jsx-string: 14.3.4_757a802188413a36d4f24237d13b8e90 @@ -5748,7 +5752,7 @@ packages: core-js: 3.19.3 global: 4.4.0 memoizerific: 1.11.3 - prop-types: 15.7.2 + prop-types: 15.8.0 react: 18.0.0-rc.0 react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 regenerator-runtime: 0.13.9 @@ -6162,7 +6166,7 @@ packages: memoizerific: 1.11.3 overlayscrollbars: 1.13.1 polished: 4.1.3 - prop-types: 15.7.2 + prop-types: 15.8.0 react: 18.0.0-rc.0 react-colorful: 5.5.1_757a802188413a36d4f24237d13b8e90 react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 @@ -12735,7 +12739,7 @@ packages: dependencies: '@babel/runtime': 7.16.5 compute-scroll-into-view: 1.0.17 - prop-types: 15.7.2 + prop-types: 15.8.0 react: 18.0.0-rc.0 react-is: 17.0.2 tslib: 2.3.1 @@ -15558,6 +15562,10 @@ packages: engines: {node: '>=8'} dev: true + /html-to-image/1.9.0: + resolution: {integrity: sha512-9gaDCIYg62Ek07F2pBk76AHgYZ2gxq2YALU7rK3gNCqXuhu6cWzsOQqM7qGbjZiOzxGzrU1deDqZpAod2NEwbA==} + dev: false + /html-tokenize/2.0.1: resolution: {integrity: sha512-QY6S+hZ0f5m1WT8WffYN+Hg+xm/w5I8XeUcAq/ZYP5wVC8xbKi4Whhru3FtrAebD5EhBW8rmFzkDI6eCAuFe2w==} hasBin: true @@ -20223,7 +20231,7 @@ packages: dependencies: '@babel/runtime': 7.16.5 invariant: 2.2.4 - prop-types: 15.7.2 + prop-types: 15.8.0 react: 18.0.0-rc.0 react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 react-fast-compare: 3.2.0 @@ -20270,7 +20278,7 @@ packages: dependencies: '@babel/runtime': 7.16.3 is-dom: 1.1.0 - prop-types: 15.7.2 + prop-types: 15.8.0 react: 18.0.0-rc.0 dev: true @@ -20428,6 +20436,17 @@ packages: - '@types/react' dev: true + /react-to-print/2.14.3_757a802188413a36d4f24237d13b8e90: + resolution: {integrity: sha512-j0EAplQGcw4ujSLfUQoIhf1PgrSLrWRh4NSAiKZdWm6YNXMioHW56cGpbKEJkCpYN1E5g3tvFVHRADn0mTKGzg==} + peerDependencies: + react: ^15.0.0 || ^16.0.0 || ^17.0.0 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + prop-types: 15.8.0 + react: 18.0.0-rc.0 + react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 + dev: false + /react-transition-group/4.4.2_757a802188413a36d4f24237d13b8e90: resolution: {integrity: sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==} peerDependencies: From 8d965e01636c2a10c8170fa36640789f0c995ce0 Mon Sep 17 00:00:00 2001 From: Hom Yan Date: Tue, 18 Jan 2022 11:39:21 +0800 Subject: [PATCH 03/27] feat: add logo for QR code --- packages/dashboard/package.json | 1 + .../dashboard/src/assets/images/MaskBlue.png | Bin 0 -> 1635 bytes .../dashboard/src/assets/images/watermark.png | Bin 2610 -> 2633 bytes packages/dashboard/src/assets/index.ts | 3 +- packages/dashboard/src/locales/en-US.json | 3 + .../src/pages/SignUp/steps/PersonaCreate.tsx | 16 +- .../src/pages/SignUp/steps/PreviewDialog.tsx | 29 +- pnpm-lock.yaml | 2195 +++++++++++++++-- 8 files changed, 2084 insertions(+), 163 deletions(-) create mode 100644 packages/dashboard/src/assets/images/MaskBlue.png diff --git a/packages/dashboard/package.json b/packages/dashboard/package.json index 0c2a2abf34d8..5cc6adcf7d31 100644 --- a/packages/dashboard/package.json +++ b/packages/dashboard/package.json @@ -39,6 +39,7 @@ "json-stable-stringify": "^1.0.1", "react-avatar-editor": "^12.0.0", "react-hook-form": "^7.22.5", + "react-qrcode-logo": "^2.5.0", "react-router": "^6.0.0-beta.0", "react-router-dom": "^6.0.0-beta.0", "react-to-print": "^2.14.3", diff --git a/packages/dashboard/src/assets/images/MaskBlue.png b/packages/dashboard/src/assets/images/MaskBlue.png new file mode 100644 index 0000000000000000000000000000000000000000..ee2dbd5f0499bf5bf6c39fffc6214301921fb352 GIT binary patch literal 1635 zcmV-p2AuhcP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NH%}GQ-RA>dwT0LxBMG&5S_YVJX zob04Qa7LGgf)sYTq{4y15>OZk(GT*`3*$-FJdoQ2M5y^}Sw6jcP(0 zl!nYpA%}z%eI%$)v6m#b1c@ynM9GlGMvZD~e=qfKss5z3NJ4zInY*tcG ziKJXOi88SjumqPhZJ*)T(z^&GiIo~1&&6GpSPJAO_GhWZg1huUv$(VL#+(n_7Zgc> zHz%Iub&>@#>-3 zo&XbNQ_57dX(g4Z0A^p1ysChwz82aPax%ziDv+Yo@TnKtE}(4{%w0%GZHm}Kg39N& zUIcY_pig@rgNiWc?SN#Fhdk)6_Ulp2r||J>kr}rF@zzf-L)qXIsI&79@j`?m&wO(F z6oBmP1KMDy^Z^L#zt`xOjjD-pkptbxpeMLHsN>>0h}{h-@;V|fA0XUap>2fv@!J)G zK&mYNdTgc|%M(46JL}}R^HkEz_x|`l6nYXxc)^zl8VjFS0>r6{cV1e;BR|4}vbkfJ zg1UL#WSdsXy74g)NeXf{D-y?HfZ1GKKQ>7U>>EFS)oVV=(IF@lQDt-62*n4_*oEVP z-~=ubr8^f=1NxZ?1j+XBW6N6O;txz7MAAp+18A9DzzoZgC>ls^!4++*;EG>Zt+O4K z*$-kVfZ4qH<53vzw)f-qLdR7fuR=b~XxUz(`@hw^hmJT*T7b(t=oXuh@x+!@M`DX~ zckH50-|)7Hf`d-(jC0!zW3=;+bnHs+HFhyYxB93aTU6V>Ha0j8h*G?v>#Pu&F$m%T zo+2MN?M~}IU>yqlksI~oFn3lXzqqmbDBOu5yOyrh?gb6jtPiVD_^6&5JPYVPEw?#5^g9O)W$>hgW)8MU`hjQ28gsfPYpskp;8KEQrj#%`cwfNmjp?L zH~9#;fZ9|*uNd>yE*xs&#{)2dAaGNi;7BF#?DOpc%GMQ%6UTJ5-Pe4pd5mXO1@ z1S$ZEfiL$)r4ZjH4RXGtMgg+T^P#=4y_8uALJw5{#BglB0DF-10w72Lzdn4yugU7C zem3vMkEDPiYP(7CtdkH6K_;VQQFSZ@K-5@`BCp03#pJ|wLvX(9oL3(%qVkNbfMVQG zWSIYzf+Wxr_!M49y~h0ylL)T(CRRW(Ky4{Q0*VYaZu|1+GYii!+jW_hEwQpsxWDwg hyLK<`Y%6y5`aiA4QNbr;aOeO4002ovPDHLkV1hud{DJ@g literal 0 HcmV?d00001 diff --git a/packages/dashboard/src/assets/images/watermark.png b/packages/dashboard/src/assets/images/watermark.png index 6785a88442d6c609ed8fac57bc74db534950103b..29b1025dab3ebabaf6b4b7685b184f1536d16a60 100644 GIT binary patch literal 2633 zcmbuBYdjMQ1ICB7OcpVhWI$ufM&5t*>=%BQ0y7r2Ws@+ikR;4Y ztbf*Ff$AS8P@w&a8JLd$rB08vdx=fHi?3|1iw_fFb!D%GCcJpa#Ol_>&rnAD%;8bH znpnk`Ys%6am2r&|#&9t&Z8$k)_71yEZ|Uk+0ahORt{zunLs1i4z(!lhJ4?Ugqee_5 zBTVv*s-BPf31T&KVz!%aL~)e}CVp1b-6EQ9{<&9_vdbbG0`^_Mt1h&Lb&oDu!K$zm zK=$HU3Ql7%wtEwM;0L?ep9U7V^b_s0WU~XB18Jg~FZP6IABp<|Q4zSX<&Jjjh)e6A zSH5xjQ$euhy4hKVgBCp1n5x)QLOtc3ORAUFnZn;CS34CIms$A$r52o!zEVz-Aj5FN;zB%ncT(4pUdq^Unuk$FO%usyRTX}qJGm|*VQh&zqkLDR z0r>s>8`bo*OTqG|o-UGpW->0#Y+tM4?VsG}uEwAd`uXY?rIJU8Un+}i#AufrZ;W*E zXY}b54aug!I+u-4Sv+rR5&Cbr;uKP&;P$)JF+Z&-q}*D;L%H~NB2e`h7Ue!oUts(e zs!-0mcT?G-^nyypP48kF?l5~9y{oDSsBD2KhCCyk-;i_loB~f4@>jcT_ z0m?4ny)Z1(>le3NhD_f-BB1`jNvtT$1~{xv|KYHYL)+>I?-80-C6#uXGhH9c0>YX# zp}VHzI#iVp^RxtAXyHDEC#T|;H43R<-H?v$w5gSsUNoDE10 zxhh=;H&zOE3FEt+ewl4Fkj{(#p$VJ+y*hg=(mXXPcl2|*e2q?G-+}sH1tDBratbHg zrQo+^xJ&wqeYOhSn7R0%Q~0O_3v;%)67&`hn_HERP@gF%8svD5-vPx_T?C$1g-@=8 z*Do=byUVqyiQJrI$@urZvv@D_7li=sUh?O$ISwz1y|?I49_@ArN)4p(5gq- z*bV6h+g(nMR>)#Tr!Xj3e+3Qq^;}-8M8#=NU#y%$B2Gpa)+%*pQ8_0A`kq@gq_^~l zGwN)o`24(hGvs`^Cn+zcSBbO4G!wijv)oQf%eNDgN1kV`l9}Z}pV%r#)P}qsIQelw zRWs7<8J(%HFiiN0`&HW}%!_^U(lcYxx^A zw4uyTYY0-6;i(TLssT|fVqtB@pQm`HV`iC%tY_`@HGqi4B>(04H8wIx`ybSrtHw`l z_bw0jrQ0gKHgL`cp)m}qS}@N>+Ud@-i_nk9#uTJUBI9hnOqyFysx~)%R%%@3Ve~Zknt;VmRW_t<8qU-#8{P zLlzm~g|r0H51EaiMLtR_xFiv|cwH1zFN_;z_&E%^qhOW<5eXIb;$*3V!RMuI79mtou>8y0tL>uzAoD{H&N= zPwWUhVIYME(GOrMBO@b!s^GIw2F@-U7{3=z2l`i#_A1 z%18t+N~Zrzt_(;u1`4^`=dnR}WC;40?lAuFPC3ibM~l}4WgOq`{idGxnQ!5;gf<=p zLFG0$Gl3zAK84qdHObdRk%mbNFIx_2FAP!Q3vc~?&EIFskOMBY@P}{r89AJu9$KFF zUnS1Bj9;DkM?4%@B4Jq!3E0wEae%1j?N*Fo9!&UA>G`=XGZAOnBa*pf)6ptT7v^*A zcLlee7Wb1+E^a_*iLANDW>5VOr2iZRfvT-()Q@gI79M8D+P9amc@} z!Y12TmU~s^ZM5Q*59vK-Eu%ddbXBxSDNUs&G%HTt^Lqjdeb%Dcm~XrZI-|Q{x<%z^f9|s{0}(+a%Aos6q_{)UC`47$Tz8_l^I~bCJGpcB zlz6R5zjUAv4Rf-3IH%E@AmzB!fHdMBQ7o9uxo`$|CGz7a>T52~dKvAQE0LQO)hkxY zc+47h)NB4!nk&(e=Nr=o=ytp@c4yu1Wus#A+HkKX`k5NLRAg7o-tYeR!xvvq9iszD z3bGH%knVru@xy(62P6i8QYj@)ZdtJVt!D+$fuT#$jVgQgRyTk_Zo06e`hjyz-}v0O zCnQQVlp?4^Bn+z=?V>hOL63Tzg zQdL@z>qr3omNhBTM$qM?l0E&#m+dMyionv@n5#;1DTxca7TswEuo4x~Fvjq>n2j-| zJLSx@ML&4=A*5x8LExX9oqqzUb2&qiXuBXAiq_)|ii-f=<~`~^7fkpo=wpUBUGGqc zNxqralekAC=fvC6z9}Mc*Lm%>1BW~0c76fEMKhN%PG2g{8D%rS-HR$;7mNg?Vz= z+yBCMk$Z69xf+C*a$|Kyy9n5jYysrH(E3McrdiB1aH1~FrM~0M95VLGug9&=?T{a4 z59O|yS@uZYR_X%9Ar}j@o_JWKAm$H78+n(V$lRsIOFv7*;M`uAa?-kaBO+%{Q>hZ) z=>gOp7(zaE!s1~n(tlwwJAW)W{%3<&SfM3^FWy~tsJUiBFa5{J&0yh*Dr^mlSpTCt zxG7TO)c-`3o4B|UW(0?{x#|!Zg#qL!2`RCAH6YKjuH7t)3h7DyW@;+7ZmSkFwo;(z z>h*~*xoOx%2`epliPbS|6(Z$f^zG@Y!zjl>eLCgQqN)>SI48re zmtiHyv7mG-co0C|52J}xs{AQW{1&=*{v`s5EiQ0V<*_u&?u|8rKQ){M-RwmiyRkoF z-0uXdT03}tT3Lm#1gNjwg5z3;oVGOGq>jx8KjG6#1=*|{R;kFyM4b}d{nFSwBx5ur za_%sFdo2DLHa}cFb-RxE6tI8)#_N4-E_`?`P&E)nMfI;4d#Q}a1a|Si??%^F% zbDS|)PRM05F+-%#RMzIaHW-Ky*);r|S`LLSqMi7Jt!*w%9Oy>KyiCfbRo%Bg{%gb% zQ5dM%ry(#=>QT%J`!h~YQOgbJ(Uexb(W6y(raQZw@|UiE@`88l+}oLP-el$s5+s$w zND-A*>ax5FnBZhZHbRDG-tlviY>X<1&^9069bJ7{Ck@^%%WF$9Ak1Ws3oDZZv^`-q)dh*|6j^%nj7Dj{^v!fPN(~3fw)^A) zCBSm3?WPwB6Gk!PoFbxPm0bxDF$|!h^Hm5{$OJnN0|jP*S`Jrk9OI!7`OvUuW4vHI z;pEO>Xe&ztXYJzv+ZJwObXb+fa&amWy6={_vn(BX8n_(5Q#Y3RIUFMEHRYyu--5H|&Z5(=k_!ajiBp zXvGUU%uRR<4X-<}hWunLMBMTV@Ol|s*27#(zKBN{?tB=?H9Dxx%sgRAAHD=7I# zkjXQXK6?Q`5*PiROk_Neh6&cYwRx18Yo9;9+EH_>|Lrob^` zCDzfuLHt8xw(stNxPzXFIZWnGmRr1L(j#nB%b!^f;O$JubDow8K>T3PVQ(Nz9$x zxkkFx7{OP4si|=0#e*pi{6I@3o7i;SiahvAvH5(LY*iwtPSi1?k*@jCZ0b=!@+9vI z7AJ`!+6Z2=#aS_HYMRTX^JrBCl3m^Q8;xQp^F|h-8hwOHr&Se8c7Z-zh}BF#JerPi zUIw12?HImb3i}2AWg=3+UG7G4eY%48s8H&i_Dc^yo7)&&;`Cd?cr;F{qOy<5QL++C#;1y$CW4b`$6Kae*R-Nv?O~ z&!WIgy6hI2yJnYPH567?<~-;asQ~!~5baNlgq*+czHANUa#`BZl4Z@c=PfssU8c)> zICEIr8e&vWy1bFGPiM|uaJ~HJG;nv5fz)!JdEHkWTM!oKmdQ*B;Ikl&4+%Q(ui`(< zKI!bT$3Js`dbV7yM3&Y0?xw4JTCjdU#5QldEfx1b(cS{_=45=lM6158c1a(8AXUXY zoSSPYxqqU(B{b|Cy&IYAFCd1h;GmLI@^E&jj ( @@ -80,14 +79,9 @@ export const PersonaCreate = () => { helperText={error} /> - + diff --git a/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx b/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx index 8c038cb824f3..36080c20b6f1 100644 --- a/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx +++ b/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx @@ -1,4 +1,4 @@ -import { QRCode } from '@masknet/shared' +import { QRCode } from 'react-qrcode-logo' import { makeStyles, MaskDialog, MaskColorVar, MaskLightTheme } from '@masknet/theme' import { Box, Button, DialogContent, ThemeProvider, Typography } from '@mui/material' import { MnemonicReveal } from '../../../components/Mnemonic' @@ -6,14 +6,14 @@ import { MiniMaskIcon, InfoIcon } from '@masknet/icons' import { ForwardedRef, forwardRef, useRef } from 'react' import { useReactToPrint } from 'react-to-print' import { toJpeg } from 'html-to-image' -import { WatermarkURL } from '../../../assets' +import { MaskBlueURL, WatermarkURL } from '../../../assets' import { useDashboardI18N } from '../../../locales' const useStyles = makeStyles()((theme) => ({ preview: { position: 'relative', background: `url(${WatermarkURL}) repeat`, - backgroundSize: '140px', + backgroundSize: '141px', }, wordClass: { background: 'rgba(28, 104, 243, 0.1)', @@ -108,24 +108,24 @@ const ComponentToPrint = forwardRef((props: PreviewDialogProps, ref: ForwardedRe color={'#111432'} sx={{ background: '#fff' }}> - + - Persona: {personaName} + {t.persona()}: {personaName} - MASK ID:{' '} + {t.create_account_mask_id()}:{' '} {id?.replace('ec_key:secp256k1/', '')} - Private Key: + {t.create_account_private_key()}: - Idenentity ID + {t.create_account_identity_id()} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8de9a688050b..5617c3d52547 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -165,6 +165,7 @@ importers: path-browserify: ^1.0.1 react-avatar-editor: ^12.0.0 react-hook-form: ^7.22.5 + react-qrcode-logo: ^2.5.0 react-router: ^6.0.0-beta.0 react-router-dom: ^6.0.0-beta.0 react-to-print: ^2.14.3 @@ -207,15 +208,16 @@ importers: html-to-image: 1.9.0 i18next-browser-languagedetector: 6.1.2 json-stable-stringify: 1.0.1 - react-avatar-editor: 12.0.0_2a5ce53653c2861b1c74a6612fe40887 - react-hook-form: 7.22.5_react@18.0.0-rc.0 - react-router: 6.0.0-beta.4_history@5.2.0+react@18.0.0-rc.0 - react-router-dom: 6.0.0-beta.4_154c53788755629e2430b224cbac559e - react-to-print: 2.14.3_757a802188413a36d4f24237d13b8e90 - react-use: 17.3.1_757a802188413a36d4f24237d13b8e90 + react-avatar-editor: 12.0.0_@babel+core@7.16.5 + react-hook-form: 7.22.5 + react-qrcode-logo: 2.5.0 + react-router: 6.0.0-beta.4_history@5.2.0 + react-router-dom: 6.0.0-beta.4_history@5.2.0 + react-to-print: 2.14.3 + react-use: 17.3.1 unstated-next: 1.1.0 urlcat: 2.0.4 - use-subscription: 1.5.1_react@18.0.0-rc.0 + use-subscription: 1.5.1 uuid: 8.3.2 wallet.ts: 1.0.1 web3-core-helpers: 1.5.2 @@ -223,13 +225,13 @@ importers: zod: 3.11.6 devDependencies: '@babel/core': 7.16.5 - '@storybook/addon-actions': 6.4.9_2f50eb45a1501445764b3dbbd8573d7c - '@storybook/addon-essentials': 6.4.9_669fed8228c5f8c8d5fa6216d72d3dfc - '@storybook/addon-links': 6.4.9_757a802188413a36d4f24237d13b8e90 - '@storybook/builder-webpack5': 6.4.9_8dc5b376cd5e0ab6ceded1a125656041 - '@storybook/manager-webpack5': 6.4.9_8dc5b376cd5e0ab6ceded1a125656041 - '@storybook/react': 6.4.9_267843bc4eadd0f91153a445c7fceb2a - babel-loader: 8.2.3_26251eab09162b25a254715ee98d7c5c + '@storybook/addon-actions': 6.4.9 + '@storybook/addon-essentials': 6.4.9_b733f329b6ee78a3871da8f119f33767 + '@storybook/addon-links': 6.4.9 + '@storybook/builder-webpack5': 6.4.9 + '@storybook/manager-webpack5': 6.4.9 + '@storybook/react': 6.4.9_09a38ea9f699d45df32e26a37a4f0346 + babel-loader: 8.2.3_@babel+core@7.16.5 buffer: 6.0.3 path-browserify: 1.0.1 stream-browserify: 3.0.0 @@ -3663,6 +3665,19 @@ packages: stylis: 4.0.13 dev: false + /@emotion/core/10.3.1: + resolution: {integrity: sha512-447aUEjPIm0MnE6QYIaFz9VQOHSXf4Iu6EWOIqq11EAPqinkSZmfymPTmlOE3QjLv846lH4JVZBUOtwGbuQoww==} + peerDependencies: + react: '>=16.3.0' + dependencies: + '@babel/runtime': 7.16.3 + '@emotion/cache': 10.0.29 + '@emotion/css': 10.0.27 + '@emotion/serialize': 0.11.16 + '@emotion/sheet': 0.9.4 + '@emotion/utils': 0.11.3 + dev: true + /@emotion/core/10.3.1_react@18.0.0-rc.0: resolution: {integrity: sha512-447aUEjPIm0MnE6QYIaFz9VQOHSXf4Iu6EWOIqq11EAPqinkSZmfymPTmlOE3QjLv846lH4JVZBUOtwGbuQoww==} peerDependencies: @@ -3773,6 +3788,19 @@ packages: resolution: {integrity: sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g==} dev: false + /@emotion/styled-base/10.3.0_@emotion+core@10.3.1: + resolution: {integrity: sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==} + peerDependencies: + '@emotion/core': ^10.0.28 + react: '>=16.3.0' + dependencies: + '@babel/runtime': 7.16.3 + '@emotion/core': 10.3.1 + '@emotion/is-prop-valid': 0.8.8 + '@emotion/serialize': 0.11.16 + '@emotion/utils': 0.11.3 + dev: true + /@emotion/styled-base/10.3.0_e02dd3725849cbb6b1072425c9ec0b91: resolution: {integrity: sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==} peerDependencies: @@ -3787,6 +3815,17 @@ packages: react: 18.0.0-rc.0 dev: true + /@emotion/styled/10.3.0_@emotion+core@10.3.1: + resolution: {integrity: sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==} + peerDependencies: + '@emotion/core': ^10.0.27 + react: '>=16.3.0' + dependencies: + '@emotion/core': 10.3.1 + '@emotion/styled-base': 10.3.0_@emotion+core@10.3.1 + babel-plugin-emotion: 10.2.2 + dev: true + /@emotion/styled/10.3.0_e02dd3725849cbb6b1072425c9ec0b91: resolution: {integrity: sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==} peerDependencies: @@ -4321,7 +4360,7 @@ packages: peerDependencies: react-hook-form: ^7.0.0 dependencies: - react-hook-form: 7.22.5_react@18.0.0-rc.0 + react-hook-form: 7.22.5 dev: false /@humanwhocodes/config-array/0.9.2: @@ -4629,6 +4668,17 @@ packages: yargs: 16.2.0 dev: true + /@mdx-js/loader/1.6.22: + resolution: {integrity: sha512-9CjGwy595NaxAYp0hF9B/A0lH6C8Rms97e2JS9d3jVUtILn6pT5i5IV965ra3lIWc7Rs1GG1tBdVF7dCowYe6Q==} + dependencies: + '@mdx-js/mdx': 1.6.22 + '@mdx-js/react': 1.6.22 + loader-utils: 2.0.0 + transitivePeerDependencies: + - react + - supports-color + dev: true + /@mdx-js/loader/1.6.22_react@18.0.0-rc.0: resolution: {integrity: sha512-9CjGwy595NaxAYp0hF9B/A0lH6C8Rms97e2JS9d3jVUtILn6pT5i5IV965ra3lIWc7Rs1GG1tBdVF7dCowYe6Q==} dependencies: @@ -4666,6 +4716,12 @@ packages: - supports-color dev: true + /@mdx-js/react/1.6.22: + resolution: {integrity: sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==} + peerDependencies: + react: ^16.13.1 || ^17.0.0 + dev: true + /@mdx-js/react/1.6.22_react@18.0.0-rc.0: resolution: {integrity: sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==} peerDependencies: @@ -5353,6 +5409,39 @@ packages: resolution: {integrity: sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==} dev: false + /@storybook/addon-actions/6.4.9: + resolution: {integrity: sha512-L1N66p/vr+wPUBfrH3qffjNAcWSS/wvuL370T7cWxALA9LLA8yY9U2EpITc5btuCC5QOxApCeyHkFnrBhNa94g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@storybook/addons': 6.4.9 + '@storybook/api': 6.4.9 + '@storybook/components': 6.4.9 + '@storybook/core-events': 6.4.9 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/theming': 6.4.9 + core-js: 3.19.3 + fast-deep-equal: 3.1.3 + global: 4.4.0 + lodash: 4.17.21 + polished: 4.1.3 + prop-types: 15.7.2 + react-inspector: 5.1.1 + regenerator-runtime: 0.13.9 + telejson: 5.3.3 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + uuid-browser: 3.1.0 + transitivePeerDependencies: + - '@types/react' + dev: true + /@storybook/addon-actions/6.4.9_2f50eb45a1501445764b3dbbd8573d7c: resolution: {integrity: sha512-L1N66p/vr+wPUBfrH3qffjNAcWSS/wvuL370T7cWxALA9LLA8yY9U2EpITc5btuCC5QOxApCeyHkFnrBhNa94g==} peerDependencies: @@ -5388,6 +5477,34 @@ packages: - '@types/react' dev: true + /@storybook/addon-backgrounds/6.4.9: + resolution: {integrity: sha512-/jqUZvk+x8TpDedyFnJamSYC91w/e8prj42xtgLG4+yBlb0UmewX7BAq9i/lhowhUjuLKaOX9E8E0AHftg8L6A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@storybook/addons': 6.4.9 + '@storybook/api': 6.4.9 + '@storybook/client-logger': 6.4.9 + '@storybook/components': 6.4.9 + '@storybook/core-events': 6.4.9 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/theming': 6.4.9 + core-js: 3.19.3 + global: 4.4.0 + memoizerific: 1.11.3 + regenerator-runtime: 0.13.9 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + transitivePeerDependencies: + - '@types/react' + dev: true + /@storybook/addon-backgrounds/6.4.9_2f50eb45a1501445764b3dbbd8573d7c: resolution: {integrity: sha512-/jqUZvk+x8TpDedyFnJamSYC91w/e8prj42xtgLG4+yBlb0UmewX7BAq9i/lhowhUjuLKaOX9E8E0AHftg8L6A==} peerDependencies: @@ -5418,6 +5535,39 @@ packages: - '@types/react' dev: true + /@storybook/addon-controls/6.4.9: + resolution: {integrity: sha512-2eqtiYugCAOw8MCv0HOfjaZRQ4lHydMYoKIFy/QOv6/mjcJeG9dF01dA30n3miErQ18BaVyAB5+7rrmuqMwXVA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@storybook/addons': 6.4.9 + '@storybook/api': 6.4.9 + '@storybook/client-logger': 6.4.9 + '@storybook/components': 6.4.9 + '@storybook/core-common': 6.4.9 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/node-logger': 6.4.9 + '@storybook/store': 6.4.9 + '@storybook/theming': 6.4.9 + core-js: 3.19.3 + lodash: 4.17.21 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@types/react' + - eslint + - supports-color + - typescript + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + /@storybook/addon-controls/6.4.9_8dc5b376cd5e0ab6ceded1a125656041: resolution: {integrity: sha512-2eqtiYugCAOw8MCv0HOfjaZRQ4lHydMYoKIFy/QOv6/mjcJeG9dF01dA30n3miErQ18BaVyAB5+7rrmuqMwXVA==} peerDependencies: @@ -5564,6 +5714,114 @@ packages: - webpack-command dev: true + /@storybook/addon-docs/6.4.9_c6c2aa2de9bdcdd852507a005ab5edff: + resolution: {integrity: sha512-sJvnbp6Z+e7B1+vDE8gZVhCg1eNotIa7bx9LYd1Y2QwJ4PEv9hE2YxnzmWt3NZJGtrn4gdGaMCk7pmksugHi7g==} + peerDependencies: + '@storybook/angular': 6.4.9 + '@storybook/html': 6.4.9 + '@storybook/react': 6.4.9 + '@storybook/vue': 6.4.9 + '@storybook/vue3': 6.4.9 + '@storybook/web-components': 6.4.9 + lit: ^2.0.0 + lit-html: ^1.4.1 || ^2.0.0 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + svelte: ^3.31.2 + sveltedoc-parser: ^4.1.0 + vue: ^2.6.10 || ^3.0.0 + webpack: '*' + peerDependenciesMeta: + '@storybook/angular': + optional: true + '@storybook/html': + optional: true + '@storybook/react': + optional: true + '@storybook/vue': + optional: true + '@storybook/vue3': + optional: true + '@storybook/web-components': + optional: true + lit: + optional: true + lit-html: + optional: true + react: + optional: true + react-dom: + optional: true + svelte: + optional: true + sveltedoc-parser: + optional: true + vue: + optional: true + webpack: + optional: true + dependencies: + '@babel/core': 7.16.5 + '@babel/generator': 7.16.0 + '@babel/parser': 7.16.4 + '@babel/plugin-transform-react-jsx': 7.16.0_@babel+core@7.16.5 + '@babel/preset-env': 7.16.4_@babel+core@7.16.5 + '@jest/transform': 26.6.2 + '@mdx-js/loader': 1.6.22 + '@mdx-js/mdx': 1.6.22 + '@mdx-js/react': 1.6.22 + '@storybook/addons': 6.4.9 + '@storybook/api': 6.4.9 + '@storybook/builder-webpack4': 6.4.9_acorn@7.4.1 + '@storybook/client-logger': 6.4.9 + '@storybook/components': 6.4.9 + '@storybook/core': 6.4.9_d42160e17e845ae92be7849e18b75ade + '@storybook/core-events': 6.4.9 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/csf-tools': 6.4.9 + '@storybook/node-logger': 6.4.9 + '@storybook/postinstall': 6.4.9 + '@storybook/preview-web': 6.4.9 + '@storybook/react': 6.4.9_09a38ea9f699d45df32e26a37a4f0346 + '@storybook/source-loader': 6.4.9 + '@storybook/store': 6.4.9 + '@storybook/theming': 6.4.9 + acorn: 7.4.1 + acorn-jsx: 5.3.2_acorn@7.4.1 + acorn-walk: 7.2.0 + core-js: 3.19.3 + doctrine: 3.0.0 + escodegen: 2.0.0 + fast-deep-equal: 3.1.3 + global: 4.4.0 + html-tags: 3.1.0 + js-string-escape: 1.0.1 + loader-utils: 2.0.2 + lodash: 4.17.21 + nanoid: 3.1.30 + p-limit: 3.1.0 + prettier: 2.5.1 + prop-types: 15.8.0 + react-element-to-jsx-string: 14.3.4 + regenerator-runtime: 0.13.9 + remark-external-links: 8.0.0 + remark-slug: 6.1.0 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + transitivePeerDependencies: + - '@storybook/builder-webpack5' + - '@storybook/manager-webpack5' + - '@types/react' + - bufferutil + - eslint + - supports-color + - typescript + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + /@storybook/addon-essentials/6.4.9_669fed8228c5f8c8d5fa6216d72d3dfc: resolution: {integrity: sha512-3YOtGJsmS7A4aIaclnEqTgO+fUEX63pHq2CvqIKPGLVPgLmn6MnEhkkV2j30MfAkoe3oynLqFBvkCdYwzwJxNQ==} peerDependencies: @@ -5630,25 +5888,113 @@ packages: - webpack-command dev: true - /@storybook/addon-links/6.4.9_757a802188413a36d4f24237d13b8e90: - resolution: {integrity: sha512-xXFz/bmw67u4+zPVqJdiJkCtGrO2wAhcsLc4QSTc2+Xgkvkk7ulcRguiujAy5bfinhPa6U1vpJrrg5GFGV+trA==} + /@storybook/addon-essentials/6.4.9_b733f329b6ee78a3871da8f119f33767: + resolution: {integrity: sha512-3YOtGJsmS7A4aIaclnEqTgO+fUEX63pHq2CvqIKPGLVPgLmn6MnEhkkV2j30MfAkoe3oynLqFBvkCdYwzwJxNQ==} peerDependencies: + '@babel/core': ^7.9.6 + '@storybook/vue': 6.4.9 + '@storybook/web-components': 6.4.9 + babel-loader: ^8.0.0 + lit-html: ^1.4.1 || ^2.0.0-rc.3 react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 + webpack: '*' peerDependenciesMeta: + '@storybook/vue': + optional: true + '@storybook/web-components': + optional: true + lit-html: + optional: true react: optional: true react-dom: optional: true + webpack: + optional: true dependencies: - '@storybook/addons': 6.4.9_757a802188413a36d4f24237d13b8e90 - '@storybook/client-logger': 6.4.9 - '@storybook/core-events': 6.4.9 - '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/router': 6.4.9_757a802188413a36d4f24237d13b8e90 - '@types/qs': 6.9.7 + '@babel/core': 7.16.5 + '@storybook/addon-actions': 6.4.9 + '@storybook/addon-backgrounds': 6.4.9 + '@storybook/addon-controls': 6.4.9 + '@storybook/addon-docs': 6.4.9_c6c2aa2de9bdcdd852507a005ab5edff + '@storybook/addon-measure': 6.4.9 + '@storybook/addon-outline': 6.4.9 + '@storybook/addon-toolbars': 6.4.9 + '@storybook/addon-viewport': 6.4.9 + '@storybook/addons': 6.4.9 + '@storybook/api': 6.4.9 + '@storybook/node-logger': 6.4.9 + babel-loader: 8.2.3_@babel+core@7.16.5 core-js: 3.19.3 - global: 4.4.0 + regenerator-runtime: 0.13.9 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@storybook/angular' + - '@storybook/builder-webpack5' + - '@storybook/html' + - '@storybook/manager-webpack5' + - '@storybook/react' + - '@storybook/vue3' + - '@types/react' + - bufferutil + - eslint + - lit + - supports-color + - svelte + - sveltedoc-parser + - typescript + - utf-8-validate + - vue + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/addon-links/6.4.9: + resolution: {integrity: sha512-xXFz/bmw67u4+zPVqJdiJkCtGrO2wAhcsLc4QSTc2+Xgkvkk7ulcRguiujAy5bfinhPa6U1vpJrrg5GFGV+trA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@storybook/addons': 6.4.9 + '@storybook/client-logger': 6.4.9 + '@storybook/core-events': 6.4.9 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/router': 6.4.9 + '@types/qs': 6.9.7 + core-js: 3.19.3 + global: 4.4.0 + prop-types: 15.7.2 + qs: 6.10.2 + regenerator-runtime: 0.13.9 + ts-dedent: 2.2.0 + dev: true + + /@storybook/addon-links/6.4.9_757a802188413a36d4f24237d13b8e90: + resolution: {integrity: sha512-xXFz/bmw67u4+zPVqJdiJkCtGrO2wAhcsLc4QSTc2+Xgkvkk7ulcRguiujAy5bfinhPa6U1vpJrrg5GFGV+trA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@storybook/addons': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/client-logger': 6.4.9 + '@storybook/core-events': 6.4.9 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/router': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@types/qs': 6.9.7 + core-js: 3.19.3 + global: 4.4.0 prop-types: 15.7.2 qs: 6.10.2 react: 18.0.0-rc.0 @@ -5657,6 +6003,29 @@ packages: ts-dedent: 2.2.0 dev: true + /@storybook/addon-measure/6.4.9: + resolution: {integrity: sha512-c7r98kZM0i7ZrNf0BZe/12BwTYGDLUnmyNcLhugquvezkm32R1SaqXF8K1bGkWkSuzBvt49lAXXPPGUh+ByWEQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@storybook/addons': 6.4.9 + '@storybook/api': 6.4.9 + '@storybook/client-logger': 6.4.9 + '@storybook/components': 6.4.9 + '@storybook/core-events': 6.4.9 + '@storybook/csf': 0.0.2--canary.87bc651.0 + core-js: 3.19.3 + global: 4.4.0 + transitivePeerDependencies: + - '@types/react' + dev: true + /@storybook/addon-measure/6.4.9_2f50eb45a1501445764b3dbbd8573d7c: resolution: {integrity: sha512-c7r98kZM0i7ZrNf0BZe/12BwTYGDLUnmyNcLhugquvezkm32R1SaqXF8K1bGkWkSuzBvt49lAXXPPGUh+ByWEQ==} peerDependencies: @@ -5682,6 +6051,31 @@ packages: - '@types/react' dev: true + /@storybook/addon-outline/6.4.9: + resolution: {integrity: sha512-pXXfqisYfdoxyJuSogNBOUiqIugv0sZGYDJXuwEgEDZ27bZD6fCQmsK3mqSmRzAfXwDqTKvWuu2SRbEk/cRRGA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@storybook/addons': 6.4.9 + '@storybook/api': 6.4.9 + '@storybook/client-logger': 6.4.9 + '@storybook/components': 6.4.9 + '@storybook/core-events': 6.4.9 + '@storybook/csf': 0.0.2--canary.87bc651.0 + core-js: 3.19.3 + global: 4.4.0 + regenerator-runtime: 0.13.9 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@types/react' + dev: true + /@storybook/addon-outline/6.4.9_2f50eb45a1501445764b3dbbd8573d7c: resolution: {integrity: sha512-pXXfqisYfdoxyJuSogNBOUiqIugv0sZGYDJXuwEgEDZ27bZD6fCQmsK3mqSmRzAfXwDqTKvWuu2SRbEk/cRRGA==} peerDependencies: @@ -5709,6 +6103,27 @@ packages: - '@types/react' dev: true + /@storybook/addon-toolbars/6.4.9: + resolution: {integrity: sha512-fep1lLDcyaQJdR8rC/lJTamiiJ8Ilio580d9aXDM651b7uHqhxM0dJvM9hObBU8dOj/R3hIAszgTvdTzYlL2cQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@storybook/addons': 6.4.9 + '@storybook/api': 6.4.9 + '@storybook/components': 6.4.9 + '@storybook/theming': 6.4.9 + core-js: 3.19.3 + regenerator-runtime: 0.13.9 + transitivePeerDependencies: + - '@types/react' + dev: true + /@storybook/addon-toolbars/6.4.9_2f50eb45a1501445764b3dbbd8573d7c: resolution: {integrity: sha512-fep1lLDcyaQJdR8rC/lJTamiiJ8Ilio580d9aXDM651b7uHqhxM0dJvM9hObBU8dOj/R3hIAszgTvdTzYlL2cQ==} peerDependencies: @@ -5732,6 +6147,32 @@ packages: - '@types/react' dev: true + /@storybook/addon-viewport/6.4.9: + resolution: {integrity: sha512-iqDcfbOG3TClybDEIi+hOKq8PDKNldyAiqBeak4AfGp+lIZ4NvhHgS5RCNylMVKpOUMbGIeWiSFxQ/oglEN1zA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@storybook/addons': 6.4.9 + '@storybook/api': 6.4.9 + '@storybook/client-logger': 6.4.9 + '@storybook/components': 6.4.9 + '@storybook/core-events': 6.4.9 + '@storybook/theming': 6.4.9 + core-js: 3.19.3 + global: 4.4.0 + memoizerific: 1.11.3 + prop-types: 15.8.0 + regenerator-runtime: 0.13.9 + transitivePeerDependencies: + - '@types/react' + dev: true + /@storybook/addon-viewport/6.4.9_2f50eb45a1501445764b3dbbd8573d7c: resolution: {integrity: sha512-iqDcfbOG3TClybDEIi+hOKq8PDKNldyAiqBeak4AfGp+lIZ4NvhHgS5RCNylMVKpOUMbGIeWiSFxQ/oglEN1zA==} peerDependencies: @@ -5760,6 +6201,25 @@ packages: - '@types/react' dev: true + /@storybook/addons/6.4.9: + resolution: {integrity: sha512-y+oiN2zd+pbRWwkf6aQj4tPDFn+rQkrv7fiVoMxsYub+kKyZ3CNOuTSJH+A1A+eBL6DmzocChUyO6jvZFuh6Dg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + dependencies: + '@storybook/api': 6.4.9 + '@storybook/channels': 6.4.9 + '@storybook/client-logger': 6.4.9 + '@storybook/core-events': 6.4.9 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/router': 6.4.9 + '@storybook/theming': 6.4.9 + '@types/webpack-env': 1.16.3 + core-js: 3.19.3 + global: 4.4.0 + regenerator-runtime: 0.13.9 + dev: true + /@storybook/addons/6.4.9_757a802188413a36d4f24237d13b8e90: resolution: {integrity: sha512-y+oiN2zd+pbRWwkf6aQj4tPDFn+rQkrv7fiVoMxsYub+kKyZ3CNOuTSJH+A1A+eBL6DmzocChUyO6jvZFuh6Dg==} peerDependencies: @@ -5781,6 +6241,31 @@ packages: regenerator-runtime: 0.13.9 dev: true + /@storybook/api/6.4.9: + resolution: {integrity: sha512-U+YKcDQg8xal9sE5eSMXB9vcqk8fD1pSyewyAjjbsW5hV0B3L3i4u7z/EAD9Ujbnor+Cvxq+XGvp+Qnc5Gd40A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + dependencies: + '@storybook/channels': 6.4.9 + '@storybook/client-logger': 6.4.9 + '@storybook/core-events': 6.4.9 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/router': 6.4.9 + '@storybook/semver': 7.3.2 + '@storybook/theming': 6.4.9 + core-js: 3.19.3 + fast-deep-equal: 3.1.3 + global: 4.4.0 + lodash: 4.17.21 + memoizerific: 1.11.3 + regenerator-runtime: 0.13.9 + store2: 2.12.0 + telejson: 5.3.3 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + dev: true + /@storybook/api/6.4.9_757a802188413a36d4f24237d13b8e90: resolution: {integrity: sha512-U+YKcDQg8xal9sE5eSMXB9vcqk8fD1pSyewyAjjbsW5hV0B3L3i4u7z/EAD9Ujbnor+Cvxq+XGvp+Qnc5Gd40A==} peerDependencies: @@ -5808,7 +6293,7 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/builder-webpack4/6.4.9_8dc5b376cd5e0ab6ceded1a125656041: + /@storybook/builder-webpack4/6.4.9: resolution: {integrity: sha512-nDbXDd3A8dvalCiuBZuUT6/GQP14+fuxTj5g+AppCgV1gLO45lXWtX75Hc0IbZrIQte6tDg5xeFQamZSLPMcGg==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -5839,22 +6324,22 @@ packages: '@babel/preset-env': 7.16.4_@babel+core@7.16.5 '@babel/preset-react': 7.16.0_@babel+core@7.16.5 '@babel/preset-typescript': 7.16.0_@babel+core@7.16.5 - '@storybook/addons': 6.4.9_757a802188413a36d4f24237d13b8e90 - '@storybook/api': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/addons': 6.4.9 + '@storybook/api': 6.4.9 '@storybook/channel-postmessage': 6.4.9 '@storybook/channels': 6.4.9 - '@storybook/client-api': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/client-api': 6.4.9 '@storybook/client-logger': 6.4.9 - '@storybook/components': 6.4.9_2f50eb45a1501445764b3dbbd8573d7c - '@storybook/core-common': 6.4.9_5015ecc5d69ab9ec2b3557d8bf166639 + '@storybook/components': 6.4.9 + '@storybook/core-common': 6.4.9 '@storybook/core-events': 6.4.9 '@storybook/node-logger': 6.4.9 - '@storybook/preview-web': 6.4.9_757a802188413a36d4f24237d13b8e90 - '@storybook/router': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/preview-web': 6.4.9 + '@storybook/router': 6.4.9 '@storybook/semver': 7.3.2 - '@storybook/store': 6.4.9_757a802188413a36d4f24237d13b8e90 - '@storybook/theming': 6.4.9_757a802188413a36d4f24237d13b8e90 - '@storybook/ui': 6.4.9_2f50eb45a1501445764b3dbbd8573d7c + '@storybook/store': 6.4.9 + '@storybook/theming': 6.4.9 + '@storybook/ui': 6.4.9 '@types/node': 16.11.12 '@types/webpack': 4.41.32 autoprefixer: 9.8.8 @@ -5871,19 +6356,16 @@ packages: glob-promise: 3.4.0_glob@7.2.0 global: 4.4.0 html-webpack-plugin: 4.5.2_webpack@4.46.0 - pnp-webpack-plugin: 1.6.4_typescript@4.6.0-dev.20211202 + pnp-webpack-plugin: 1.6.4 postcss: 7.0.39 postcss-flexbugs-fixes: 4.2.1 postcss-loader: 4.3.0_postcss@7.0.39+webpack@4.46.0 raw-loader: 4.0.2_webpack@4.46.0 - react: 18.0.0-rc.0 react-dev-utils: 11.0.4 - react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 stable: 0.1.8 style-loader: 1.3.0_webpack@4.46.0 terser-webpack-plugin: 4.2.3_webpack@4.46.0 ts-dedent: 2.2.0 - typescript: 4.6.0-dev.20211202 url-loader: 4.1.1_file-loader@6.2.0+webpack@4.46.0 util-deprecate: 1.0.2 webpack: 4.46.0 @@ -5901,7 +6383,7 @@ packages: - webpack-command dev: true - /@storybook/builder-webpack4/6.4.9_ba03cbdd6ab5a0c0ddff9efc041e0162: + /@storybook/builder-webpack4/6.4.9_8dc5b376cd5e0ab6ceded1a125656041: resolution: {integrity: sha512-nDbXDd3A8dvalCiuBZuUT6/GQP14+fuxTj5g+AppCgV1gLO45lXWtX75Hc0IbZrIQte6tDg5xeFQamZSLPMcGg==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -5974,7 +6456,7 @@ packages: react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 stable: 0.1.8 style-loader: 1.3.0_webpack@4.46.0 - terser-webpack-plugin: 4.2.3_acorn@7.4.1+webpack@4.46.0 + terser-webpack-plugin: 4.2.3_webpack@4.46.0 ts-dedent: 2.2.0 typescript: 4.6.0-dev.20211202 url-loader: 4.1.1_file-loader@6.2.0+webpack@4.46.0 @@ -5994,8 +6476,8 @@ packages: - webpack-command dev: true - /@storybook/builder-webpack5/6.4.9_8dc5b376cd5e0ab6ceded1a125656041: - resolution: {integrity: sha512-OB/PJHgsHwvX03smEsIM45oyYhLD8RK2wBIRS0PuGj1XdisOsiMal2a9hUHcqhZIiFstOEXUltMwBzJnixzprg==} + /@storybook/builder-webpack4/6.4.9_acorn@7.4.1: + resolution: {integrity: sha512-nDbXDd3A8dvalCiuBZuUT6/GQP14+fuxTj5g+AppCgV1gLO45lXWtX75Hc0IbZrIQte6tDg5xeFQamZSLPMcGg==} peerDependencies: react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 @@ -6021,69 +6503,332 @@ packages: '@babel/plugin-transform-parameters': 7.16.3_@babel+core@7.16.5 '@babel/plugin-transform-shorthand-properties': 7.16.0_@babel+core@7.16.5 '@babel/plugin-transform-spread': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-template-literals': 7.16.0_@babel+core@7.16.5 '@babel/preset-env': 7.16.4_@babel+core@7.16.5 '@babel/preset-react': 7.16.0_@babel+core@7.16.5 '@babel/preset-typescript': 7.16.0_@babel+core@7.16.5 - '@storybook/addons': 6.4.9_757a802188413a36d4f24237d13b8e90 - '@storybook/api': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/addons': 6.4.9 + '@storybook/api': 6.4.9 '@storybook/channel-postmessage': 6.4.9 '@storybook/channels': 6.4.9 - '@storybook/client-api': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/client-api': 6.4.9 '@storybook/client-logger': 6.4.9 - '@storybook/components': 6.4.9_2f50eb45a1501445764b3dbbd8573d7c - '@storybook/core-common': 6.4.9_5015ecc5d69ab9ec2b3557d8bf166639 + '@storybook/components': 6.4.9 + '@storybook/core-common': 6.4.9 '@storybook/core-events': 6.4.9 '@storybook/node-logger': 6.4.9 - '@storybook/preview-web': 6.4.9_757a802188413a36d4f24237d13b8e90 - '@storybook/router': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/preview-web': 6.4.9 + '@storybook/router': 6.4.9 '@storybook/semver': 7.3.2 - '@storybook/store': 6.4.9_757a802188413a36d4f24237d13b8e90 - '@storybook/theming': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/store': 6.4.9 + '@storybook/theming': 6.4.9 + '@storybook/ui': 6.4.9 '@types/node': 16.11.12 - babel-loader: 8.2.3_26251eab09162b25a254715ee98d7c5c - babel-plugin-macros: 3.1.0 + '@types/webpack': 4.41.32 + autoprefixer: 9.8.8 + babel-loader: 8.2.3_16789ff3020ecb9b722cf50866e79393 + babel-plugin-macros: 2.8.0 babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.16.5 case-sensitive-paths-webpack-plugin: 2.4.0 core-js: 3.19.3 - css-loader: 5.2.7_webpack@5.65.0 - fork-ts-checker-webpack-plugin: 6.5.0_6683a434928a958595d5c1688f0f7814 + css-loader: 3.6.0_webpack@4.46.0 + file-loader: 6.2.0_webpack@4.46.0 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 4.1.6 glob: 7.2.0 glob-promise: 3.4.0_glob@7.2.0 - html-webpack-plugin: 5.5.0_webpack@5.65.0 - path-browserify: 1.0.1 - react: 18.0.0-rc.0 + global: 4.4.0 + html-webpack-plugin: 4.5.2_webpack@4.46.0 + pnp-webpack-plugin: 1.6.4 + postcss: 7.0.39 + postcss-flexbugs-fixes: 4.2.1 + postcss-loader: 4.3.0_postcss@7.0.39+webpack@4.46.0 + raw-loader: 4.0.2_webpack@4.46.0 react-dev-utils: 11.0.4 - react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 stable: 0.1.8 - style-loader: 2.0.0_webpack@5.65.0 - terser-webpack-plugin: 5.2.5_webpack@5.65.0 + style-loader: 1.3.0_webpack@4.46.0 + terser-webpack-plugin: 4.2.3_acorn@7.4.1+webpack@4.46.0 ts-dedent: 2.2.0 - typescript: 4.6.0-dev.20211202 + url-loader: 4.1.1_file-loader@6.2.0+webpack@4.46.0 util-deprecate: 1.0.2 - webpack: 5.65.0 - webpack-dev-middleware: 4.3.0_webpack@5.65.0 + webpack: 4.46.0 + webpack-dev-middleware: 3.7.3_webpack@4.46.0 + webpack-filter-warnings-plugin: 1.2.1_webpack@4.46.0 webpack-hot-middleware: 2.25.1 - webpack-virtual-modules: 0.4.3 + webpack-virtual-modules: 0.2.2 transitivePeerDependencies: - - '@swc/core' - '@types/react' - acorn - - esbuild - eslint - supports-color - - uglify-js - vue-template-compiler - webpack-cli - webpack-command dev: true - /@storybook/channel-postmessage/6.4.9: - resolution: {integrity: sha512-0Oif4e6/oORv4oc2tHhIRts9faE/ID9BETn4uqIUWSl2CX1wYpKYDm04rEg3M6WvSzsi+6fzoSFvkr9xC5Ns2w==} - dependencies: - '@storybook/channels': 6.4.9 - '@storybook/client-logger': 6.4.9 - '@storybook/core-events': 6.4.9 - core-js: 3.19.3 + /@storybook/builder-webpack4/6.4.9_ba03cbdd6ab5a0c0ddff9efc041e0162: + resolution: {integrity: sha512-nDbXDd3A8dvalCiuBZuUT6/GQP14+fuxTj5g+AppCgV1gLO45lXWtX75Hc0IbZrIQte6tDg5xeFQamZSLPMcGg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.16.5 + '@babel/plugin-proposal-class-properties': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.16.5 + '@babel/plugin-proposal-export-default-from': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-proposal-object-rest-spread': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-proposal-optional-chaining': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-proposal-private-methods': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.16.5 + '@babel/plugin-transform-arrow-functions': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-block-scoping': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-classes': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-destructuring': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-for-of': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-parameters': 7.16.3_@babel+core@7.16.5 + '@babel/plugin-transform-shorthand-properties': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-spread': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-template-literals': 7.16.0_@babel+core@7.16.5 + '@babel/preset-env': 7.16.4_@babel+core@7.16.5 + '@babel/preset-react': 7.16.0_@babel+core@7.16.5 + '@babel/preset-typescript': 7.16.0_@babel+core@7.16.5 + '@storybook/addons': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/api': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/channel-postmessage': 6.4.9 + '@storybook/channels': 6.4.9 + '@storybook/client-api': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/client-logger': 6.4.9 + '@storybook/components': 6.4.9_2f50eb45a1501445764b3dbbd8573d7c + '@storybook/core-common': 6.4.9_5015ecc5d69ab9ec2b3557d8bf166639 + '@storybook/core-events': 6.4.9 + '@storybook/node-logger': 6.4.9 + '@storybook/preview-web': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/router': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/semver': 7.3.2 + '@storybook/store': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/theming': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/ui': 6.4.9_2f50eb45a1501445764b3dbbd8573d7c + '@types/node': 16.11.12 + '@types/webpack': 4.41.32 + autoprefixer: 9.8.8 + babel-loader: 8.2.3_16789ff3020ecb9b722cf50866e79393 + babel-plugin-macros: 2.8.0 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.16.5 + case-sensitive-paths-webpack-plugin: 2.4.0 + core-js: 3.19.3 + css-loader: 3.6.0_webpack@4.46.0 + file-loader: 6.2.0_webpack@4.46.0 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 4.1.6 + glob: 7.2.0 + glob-promise: 3.4.0_glob@7.2.0 + global: 4.4.0 + html-webpack-plugin: 4.5.2_webpack@4.46.0 + pnp-webpack-plugin: 1.6.4_typescript@4.6.0-dev.20211202 + postcss: 7.0.39 + postcss-flexbugs-fixes: 4.2.1 + postcss-loader: 4.3.0_postcss@7.0.39+webpack@4.46.0 + raw-loader: 4.0.2_webpack@4.46.0 + react: 18.0.0-rc.0 + react-dev-utils: 11.0.4 + react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 + stable: 0.1.8 + style-loader: 1.3.0_webpack@4.46.0 + terser-webpack-plugin: 4.2.3_acorn@7.4.1+webpack@4.46.0 + ts-dedent: 2.2.0 + typescript: 4.6.0-dev.20211202 + url-loader: 4.1.1_file-loader@6.2.0+webpack@4.46.0 + util-deprecate: 1.0.2 + webpack: 4.46.0 + webpack-dev-middleware: 3.7.3_webpack@4.46.0 + webpack-filter-warnings-plugin: 1.2.1_webpack@4.46.0 + webpack-hot-middleware: 2.25.1 + webpack-virtual-modules: 0.2.2 + transitivePeerDependencies: + - '@types/react' + - acorn + - eslint + - supports-color + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/builder-webpack5/6.4.9: + resolution: {integrity: sha512-OB/PJHgsHwvX03smEsIM45oyYhLD8RK2wBIRS0PuGj1XdisOsiMal2a9hUHcqhZIiFstOEXUltMwBzJnixzprg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.16.5 + '@babel/plugin-proposal-class-properties': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.16.5 + '@babel/plugin-proposal-export-default-from': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-proposal-object-rest-spread': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-proposal-optional-chaining': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-proposal-private-methods': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.16.5 + '@babel/plugin-transform-arrow-functions': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-block-scoping': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-classes': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-destructuring': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-for-of': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-parameters': 7.16.3_@babel+core@7.16.5 + '@babel/plugin-transform-shorthand-properties': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-spread': 7.16.0_@babel+core@7.16.5 + '@babel/preset-env': 7.16.4_@babel+core@7.16.5 + '@babel/preset-react': 7.16.0_@babel+core@7.16.5 + '@babel/preset-typescript': 7.16.0_@babel+core@7.16.5 + '@storybook/addons': 6.4.9 + '@storybook/api': 6.4.9 + '@storybook/channel-postmessage': 6.4.9 + '@storybook/channels': 6.4.9 + '@storybook/client-api': 6.4.9 + '@storybook/client-logger': 6.4.9 + '@storybook/components': 6.4.9 + '@storybook/core-common': 6.4.9 + '@storybook/core-events': 6.4.9 + '@storybook/node-logger': 6.4.9 + '@storybook/preview-web': 6.4.9 + '@storybook/router': 6.4.9 + '@storybook/semver': 7.3.2 + '@storybook/store': 6.4.9 + '@storybook/theming': 6.4.9 + '@types/node': 16.11.12 + babel-loader: 8.2.3_26251eab09162b25a254715ee98d7c5c + babel-plugin-macros: 3.1.0 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.16.5 + case-sensitive-paths-webpack-plugin: 2.4.0 + core-js: 3.19.3 + css-loader: 5.2.7_webpack@5.65.0 + fork-ts-checker-webpack-plugin: 6.5.0_webpack@5.65.0 + glob: 7.2.0 + glob-promise: 3.4.0_glob@7.2.0 + html-webpack-plugin: 5.5.0_webpack@5.65.0 + path-browserify: 1.0.1 + react-dev-utils: 11.0.4 + stable: 0.1.8 + style-loader: 2.0.0_webpack@5.65.0 + terser-webpack-plugin: 5.2.5_webpack@5.65.0 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + webpack: 5.65.0 + webpack-dev-middleware: 4.3.0_webpack@5.65.0 + webpack-hot-middleware: 2.25.1 + webpack-virtual-modules: 0.4.3 + transitivePeerDependencies: + - '@swc/core' + - '@types/react' + - acorn + - esbuild + - eslint + - supports-color + - uglify-js + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/builder-webpack5/6.4.9_8dc5b376cd5e0ab6ceded1a125656041: + resolution: {integrity: sha512-OB/PJHgsHwvX03smEsIM45oyYhLD8RK2wBIRS0PuGj1XdisOsiMal2a9hUHcqhZIiFstOEXUltMwBzJnixzprg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.16.5 + '@babel/plugin-proposal-class-properties': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.16.5 + '@babel/plugin-proposal-export-default-from': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-proposal-object-rest-spread': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-proposal-optional-chaining': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-proposal-private-methods': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.16.5 + '@babel/plugin-transform-arrow-functions': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-block-scoping': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-classes': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-destructuring': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-for-of': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-parameters': 7.16.3_@babel+core@7.16.5 + '@babel/plugin-transform-shorthand-properties': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-spread': 7.16.0_@babel+core@7.16.5 + '@babel/preset-env': 7.16.4_@babel+core@7.16.5 + '@babel/preset-react': 7.16.0_@babel+core@7.16.5 + '@babel/preset-typescript': 7.16.0_@babel+core@7.16.5 + '@storybook/addons': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/api': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/channel-postmessage': 6.4.9 + '@storybook/channels': 6.4.9 + '@storybook/client-api': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/client-logger': 6.4.9 + '@storybook/components': 6.4.9_2f50eb45a1501445764b3dbbd8573d7c + '@storybook/core-common': 6.4.9_5015ecc5d69ab9ec2b3557d8bf166639 + '@storybook/core-events': 6.4.9 + '@storybook/node-logger': 6.4.9 + '@storybook/preview-web': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/router': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/semver': 7.3.2 + '@storybook/store': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/theming': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@types/node': 16.11.12 + babel-loader: 8.2.3_26251eab09162b25a254715ee98d7c5c + babel-plugin-macros: 3.1.0 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.16.5 + case-sensitive-paths-webpack-plugin: 2.4.0 + core-js: 3.19.3 + css-loader: 5.2.7_webpack@5.65.0 + fork-ts-checker-webpack-plugin: 6.5.0_6683a434928a958595d5c1688f0f7814 + glob: 7.2.0 + glob-promise: 3.4.0_glob@7.2.0 + html-webpack-plugin: 5.5.0_webpack@5.65.0 + path-browserify: 1.0.1 + react: 18.0.0-rc.0 + react-dev-utils: 11.0.4 + react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 + stable: 0.1.8 + style-loader: 2.0.0_webpack@5.65.0 + terser-webpack-plugin: 5.2.5_webpack@5.65.0 + ts-dedent: 2.2.0 + typescript: 4.6.0-dev.20211202 + util-deprecate: 1.0.2 + webpack: 5.65.0 + webpack-dev-middleware: 4.3.0_webpack@5.65.0 + webpack-hot-middleware: 2.25.1 + webpack-virtual-modules: 0.4.3 + transitivePeerDependencies: + - '@swc/core' + - '@types/react' + - acorn + - esbuild + - eslint + - supports-color + - uglify-js + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/channel-postmessage/6.4.9: + resolution: {integrity: sha512-0Oif4e6/oORv4oc2tHhIRts9faE/ID9BETn4uqIUWSl2CX1wYpKYDm04rEg3M6WvSzsi+6fzoSFvkr9xC5Ns2w==} + dependencies: + '@storybook/channels': 6.4.9 + '@storybook/client-logger': 6.4.9 + '@storybook/core-events': 6.4.9 + core-js: 3.19.3 global: 4.4.0 qs: 6.10.2 telejson: 5.3.3 @@ -6107,6 +6852,34 @@ packages: util-deprecate: 1.0.2 dev: true + /@storybook/client-api/6.4.9: + resolution: {integrity: sha512-1IljlTr+ea2pIr6oiPhygORtccOdEb7SqaVzWDfLCHOhUnJ2Ka5UY9ADqDa35jvSSdRdynfk9Yl5/msY0yY1yg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + dependencies: + '@storybook/addons': 6.4.9 + '@storybook/channel-postmessage': 6.4.9 + '@storybook/channels': 6.4.9 + '@storybook/client-logger': 6.4.9 + '@storybook/core-events': 6.4.9 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/store': 6.4.9 + '@types/qs': 6.9.7 + '@types/webpack-env': 1.16.3 + core-js: 3.19.3 + fast-deep-equal: 3.1.3 + global: 4.4.0 + lodash: 4.17.21 + memoizerific: 1.11.3 + qs: 6.10.2 + regenerator-runtime: 0.13.9 + store2: 2.12.0 + synchronous-promise: 2.0.15 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + dev: true + /@storybook/client-api/6.4.9_757a802188413a36d4f24237d13b8e90: resolution: {integrity: sha512-1IljlTr+ea2pIr6oiPhygORtccOdEb7SqaVzWDfLCHOhUnJ2Ka5UY9ADqDa35jvSSdRdynfk9Yl5/msY0yY1yg==} peerDependencies: @@ -6144,6 +6917,40 @@ packages: global: 4.4.0 dev: true + /@storybook/components/6.4.9: + resolution: {integrity: sha512-uOUR97S6kjptkMCh15pYNM1vAqFXtpyneuonmBco5vADJb3ds0n2a8NeVd+myIbhIXn55x0OHKiSwBH/u7swCQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + dependencies: + '@popperjs/core': 2.11.0 + '@storybook/client-logger': 6.4.9 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/theming': 6.4.9 + '@types/color-convert': 2.0.0 + '@types/overlayscrollbars': 1.12.1 + '@types/react-syntax-highlighter': 11.0.5 + color-convert: 2.0.1 + core-js: 3.19.3 + fast-deep-equal: 3.1.3 + global: 4.4.0 + lodash: 4.17.21 + markdown-to-jsx: 7.1.5 + memoizerific: 1.11.3 + overlayscrollbars: 1.13.1 + polished: 4.1.3 + prop-types: 15.8.0 + react-colorful: 5.5.1 + react-popper-tooltip: 3.1.1 + react-syntax-highlighter: 13.5.3 + react-textarea-autosize: 8.3.3 + regenerator-runtime: 0.13.9 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + transitivePeerDependencies: + - '@types/react' + dev: true + /@storybook/components/6.4.9_2f50eb45a1501445764b3dbbd8573d7c: resolution: {integrity: sha512-uOUR97S6kjptkMCh15pYNM1vAqFXtpyneuonmBco5vADJb3ds0n2a8NeVd+myIbhIXn55x0OHKiSwBH/u7swCQ==} peerDependencies: @@ -6168,19 +6975,93 @@ packages: polished: 4.1.3 prop-types: 15.8.0 react: 18.0.0-rc.0 - react-colorful: 5.5.1_757a802188413a36d4f24237d13b8e90 + react-colorful: 5.5.1_757a802188413a36d4f24237d13b8e90 + react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 + react-popper-tooltip: 3.1.1_757a802188413a36d4f24237d13b8e90 + react-syntax-highlighter: 13.5.3_react@18.0.0-rc.0 + react-textarea-autosize: 8.3.3_2fa291bfae6e56080648438396754a97 + regenerator-runtime: 0.13.9 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + transitivePeerDependencies: + - '@types/react' + dev: true + + /@storybook/core-client/6.4.9: + resolution: {integrity: sha512-LZSpTtvBlpcn+Ifh0jQXlm/8wva2zZ2v13yxYIxX6tAwQvmB54U0N4VdGVmtkiszEp7TQUAzA8Pcyp4GWE+UMA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + webpack: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@storybook/addons': 6.4.9 + '@storybook/channel-postmessage': 6.4.9 + '@storybook/channel-websocket': 6.4.9 + '@storybook/client-api': 6.4.9 + '@storybook/client-logger': 6.4.9 + '@storybook/core-events': 6.4.9 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/preview-web': 6.4.9 + '@storybook/store': 6.4.9 + '@storybook/ui': 6.4.9 + airbnb-js-shims: 2.2.1 + ansi-to-html: 0.6.15 + core-js: 3.19.3 + global: 4.4.0 + lodash: 4.17.21 + qs: 6.10.2 + regenerator-runtime: 0.13.9 + ts-dedent: 2.2.0 + unfetch: 4.2.0 + util-deprecate: 1.0.2 + transitivePeerDependencies: + - '@types/react' + dev: true + + /@storybook/core-client/6.4.9_17851d71d1f251dcbff27ebb6f3ec2df: + resolution: {integrity: sha512-LZSpTtvBlpcn+Ifh0jQXlm/8wva2zZ2v13yxYIxX6tAwQvmB54U0N4VdGVmtkiszEp7TQUAzA8Pcyp4GWE+UMA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + webpack: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@storybook/addons': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/channel-postmessage': 6.4.9 + '@storybook/channel-websocket': 6.4.9 + '@storybook/client-api': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/client-logger': 6.4.9 + '@storybook/core-events': 6.4.9 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/preview-web': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/store': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/ui': 6.4.9_2f50eb45a1501445764b3dbbd8573d7c + airbnb-js-shims: 2.2.1 + ansi-to-html: 0.6.15 + core-js: 3.19.3 + global: 4.4.0 + lodash: 4.17.21 + qs: 6.10.2 + react: 18.0.0-rc.0 react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 - react-popper-tooltip: 3.1.1_757a802188413a36d4f24237d13b8e90 - react-syntax-highlighter: 13.5.3_react@18.0.0-rc.0 - react-textarea-autosize: 8.3.3_2fa291bfae6e56080648438396754a97 regenerator-runtime: 0.13.9 ts-dedent: 2.2.0 + typescript: 4.6.0-dev.20211202 + unfetch: 4.2.0 util-deprecate: 1.0.2 + webpack: 4.46.0 transitivePeerDependencies: - '@types/react' dev: true - /@storybook/core-client/6.4.9_17851d71d1f251dcbff27ebb6f3ec2df: + /@storybook/core-client/6.4.9_411f6f6420ad30ade29f3224aaa47a45: resolution: {integrity: sha512-LZSpTtvBlpcn+Ifh0jQXlm/8wva2zZ2v13yxYIxX6tAwQvmB54U0N4VdGVmtkiszEp7TQUAzA8Pcyp4GWE+UMA==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -6214,12 +7095,48 @@ packages: typescript: 4.6.0-dev.20211202 unfetch: 4.2.0 util-deprecate: 1.0.2 + webpack: 5.65.0 + transitivePeerDependencies: + - '@types/react' + dev: true + + /@storybook/core-client/6.4.9_webpack@4.46.0: + resolution: {integrity: sha512-LZSpTtvBlpcn+Ifh0jQXlm/8wva2zZ2v13yxYIxX6tAwQvmB54U0N4VdGVmtkiszEp7TQUAzA8Pcyp4GWE+UMA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + webpack: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@storybook/addons': 6.4.9 + '@storybook/channel-postmessage': 6.4.9 + '@storybook/channel-websocket': 6.4.9 + '@storybook/client-api': 6.4.9 + '@storybook/client-logger': 6.4.9 + '@storybook/core-events': 6.4.9 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/preview-web': 6.4.9 + '@storybook/store': 6.4.9 + '@storybook/ui': 6.4.9 + airbnb-js-shims: 2.2.1 + ansi-to-html: 0.6.15 + core-js: 3.19.3 + global: 4.4.0 + lodash: 4.17.21 + qs: 6.10.2 + regenerator-runtime: 0.13.9 + ts-dedent: 2.2.0 + unfetch: 4.2.0 + util-deprecate: 1.0.2 webpack: 4.46.0 transitivePeerDependencies: - '@types/react' dev: true - /@storybook/core-client/6.4.9_411f6f6420ad30ade29f3224aaa47a45: + /@storybook/core-client/6.4.9_webpack@5.65.0: resolution: {integrity: sha512-LZSpTtvBlpcn+Ifh0jQXlm/8wva2zZ2v13yxYIxX6tAwQvmB54U0N4VdGVmtkiszEp7TQUAzA8Pcyp4GWE+UMA==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -6230,27 +7147,24 @@ packages: typescript: optional: true dependencies: - '@storybook/addons': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/addons': 6.4.9 '@storybook/channel-postmessage': 6.4.9 '@storybook/channel-websocket': 6.4.9 - '@storybook/client-api': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/client-api': 6.4.9 '@storybook/client-logger': 6.4.9 '@storybook/core-events': 6.4.9 '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/preview-web': 6.4.9_757a802188413a36d4f24237d13b8e90 - '@storybook/store': 6.4.9_757a802188413a36d4f24237d13b8e90 - '@storybook/ui': 6.4.9_2f50eb45a1501445764b3dbbd8573d7c + '@storybook/preview-web': 6.4.9 + '@storybook/store': 6.4.9 + '@storybook/ui': 6.4.9 airbnb-js-shims: 2.2.1 ansi-to-html: 0.6.15 core-js: 3.19.3 global: 4.4.0 lodash: 4.17.21 qs: 6.10.2 - react: 18.0.0-rc.0 - react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 regenerator-runtime: 0.13.9 ts-dedent: 2.2.0 - typescript: 4.6.0-dev.20211202 unfetch: 4.2.0 util-deprecate: 1.0.2 webpack: 5.65.0 @@ -6258,6 +7172,73 @@ packages: - '@types/react' dev: true + /@storybook/core-common/6.4.9: + resolution: {integrity: sha512-wVHRfUGnj/Tv8nGjv128NDQ5Zp6c63rSXd1lYLzfZPTJmGOz4rpPPez2IZSnnDwbAWeqUSMekFVZPj4v6yuujQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.16.5 + '@babel/plugin-proposal-class-properties': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.16.5 + '@babel/plugin-proposal-export-default-from': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-proposal-object-rest-spread': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-proposal-optional-chaining': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-proposal-private-methods': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.16.5 + '@babel/plugin-transform-arrow-functions': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-block-scoping': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-classes': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-destructuring': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-for-of': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-parameters': 7.16.3_@babel+core@7.16.5 + '@babel/plugin-transform-shorthand-properties': 7.16.0_@babel+core@7.16.5 + '@babel/plugin-transform-spread': 7.16.0_@babel+core@7.16.5 + '@babel/preset-env': 7.16.4_@babel+core@7.16.5 + '@babel/preset-react': 7.16.0_@babel+core@7.16.5 + '@babel/preset-typescript': 7.16.0_@babel+core@7.16.5 + '@babel/register': 7.16.0_@babel+core@7.16.5 + '@storybook/node-logger': 6.4.9 + '@storybook/semver': 7.3.2 + '@types/node': 16.11.12 + '@types/pretty-hrtime': 1.0.1 + babel-loader: 8.2.3_16789ff3020ecb9b722cf50866e79393 + babel-plugin-macros: 3.1.0 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.16.5 + chalk: 4.1.2 + core-js: 3.19.3 + express: 4.17.1 + file-system-cache: 1.0.5 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 6.5.0_webpack@4.46.0 + fs-extra: 9.1.0 + glob: 7.2.0 + handlebars: 4.7.7 + interpret: 2.2.0 + json5: 2.2.0 + lazy-universal-dotenv: 3.0.1 + picomatch: 2.3.0 + pkg-dir: 5.0.0 + pretty-hrtime: 1.0.3 + resolve-from: 5.0.0 + slash: 3.0.0 + telejson: 5.3.3 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + webpack: 4.46.0 + transitivePeerDependencies: + - eslint + - supports-color + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + /@storybook/core-common/6.4.9_5015ecc5d69ab9ec2b3557d8bf166639: resolution: {integrity: sha512-wVHRfUGnj/Tv8nGjv128NDQ5Zp6c63rSXd1lYLzfZPTJmGOz4rpPPez2IZSnnDwbAWeqUSMekFVZPj4v6yuujQ==} peerDependencies: @@ -6328,13 +7309,160 @@ packages: - webpack-command dev: true - /@storybook/core-events/6.4.9: - resolution: {integrity: sha512-YhU2zJr6wzvh5naYYuy/0UKNJ/SaXu73sIr0Tx60ur3bL08XkRg7eZ9vBhNBTlAa35oZqI0iiGCh0ljiX7yEVQ==} - dependencies: - core-js: 3.19.3 - dev: true - - /@storybook/core-server/6.4.9_18f76d5c5fab07d88f1c93bc0213acb9: + /@storybook/core-events/6.4.9: + resolution: {integrity: sha512-YhU2zJr6wzvh5naYYuy/0UKNJ/SaXu73sIr0Tx60ur3bL08XkRg7eZ9vBhNBTlAa35oZqI0iiGCh0ljiX7yEVQ==} + dependencies: + core-js: 3.19.3 + dev: true + + /@storybook/core-server/6.4.9_0c7e2b05e99ee2e35b641810c3f17cb5: + resolution: {integrity: sha512-Ht/e17/SNW9BgdvBsnKmqNrlZ6CpHeVsClEUnauMov8I5rxjvKBVmI/UsbJJIy6H6VLiL/RwrA3RvLoAoZE8dA==} + peerDependencies: + '@storybook/builder-webpack5': 6.4.9 + '@storybook/manager-webpack5': 6.4.9 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + peerDependenciesMeta: + '@storybook/builder-webpack5': + optional: true + '@storybook/manager-webpack5': + optional: true + typescript: + optional: true + dependencies: + '@discoveryjs/json-ext': 0.5.6 + '@storybook/builder-webpack4': 6.4.9 + '@storybook/builder-webpack5': 6.4.9 + '@storybook/core-client': 6.4.9_webpack@4.46.0 + '@storybook/core-common': 6.4.9 + '@storybook/core-events': 6.4.9 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/csf-tools': 6.4.9 + '@storybook/manager-webpack4': 6.4.9 + '@storybook/manager-webpack5': 6.4.9 + '@storybook/node-logger': 6.4.9 + '@storybook/semver': 7.3.2 + '@storybook/store': 6.4.9 + '@types/node': 16.11.12 + '@types/node-fetch': 2.5.12 + '@types/pretty-hrtime': 1.0.1 + '@types/webpack': 4.41.32 + better-opn: 2.1.1 + boxen: 5.1.2 + chalk: 4.1.2 + cli-table3: 0.6.0 + commander: 6.2.1 + compression: 1.7.4 + core-js: 3.19.3 + cpy: 8.1.2 + detect-port: 1.3.0 + express: 4.17.1 + file-system-cache: 1.0.5 + fs-extra: 9.1.0 + globby: 11.0.4 + ip: 1.1.5 + lodash: 4.17.21 + node-fetch: 2.6.6 + pretty-hrtime: 1.0.3 + prompts: 2.4.2 + regenerator-runtime: 0.13.9 + serve-favicon: 2.5.0 + slash: 3.0.0 + telejson: 5.3.3 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + watchpack: 2.3.1 + webpack: 4.46.0 + ws: 8.3.0 + transitivePeerDependencies: + - '@types/react' + - acorn + - bufferutil + - eslint + - supports-color + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/core-server/6.4.9_18f76d5c5fab07d88f1c93bc0213acb9: + resolution: {integrity: sha512-Ht/e17/SNW9BgdvBsnKmqNrlZ6CpHeVsClEUnauMov8I5rxjvKBVmI/UsbJJIy6H6VLiL/RwrA3RvLoAoZE8dA==} + peerDependencies: + '@storybook/builder-webpack5': 6.4.9 + '@storybook/manager-webpack5': 6.4.9 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + peerDependenciesMeta: + '@storybook/builder-webpack5': + optional: true + '@storybook/manager-webpack5': + optional: true + typescript: + optional: true + dependencies: + '@discoveryjs/json-ext': 0.5.6 + '@storybook/builder-webpack4': 6.4.9_8dc5b376cd5e0ab6ceded1a125656041 + '@storybook/builder-webpack5': 6.4.9_8dc5b376cd5e0ab6ceded1a125656041 + '@storybook/core-client': 6.4.9_17851d71d1f251dcbff27ebb6f3ec2df + '@storybook/core-common': 6.4.9_5015ecc5d69ab9ec2b3557d8bf166639 + '@storybook/core-events': 6.4.9 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/csf-tools': 6.4.9 + '@storybook/manager-webpack4': 6.4.9_8dc5b376cd5e0ab6ceded1a125656041 + '@storybook/manager-webpack5': 6.4.9_8dc5b376cd5e0ab6ceded1a125656041 + '@storybook/node-logger': 6.4.9 + '@storybook/semver': 7.3.2 + '@storybook/store': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@types/node': 16.11.12 + '@types/node-fetch': 2.5.12 + '@types/pretty-hrtime': 1.0.1 + '@types/webpack': 4.41.32 + better-opn: 2.1.1 + boxen: 5.1.2 + chalk: 4.1.2 + cli-table3: 0.6.0 + commander: 6.2.1 + compression: 1.7.4 + core-js: 3.19.3 + cpy: 8.1.2 + detect-port: 1.3.0 + express: 4.17.1 + file-system-cache: 1.0.5 + fs-extra: 9.1.0 + globby: 11.0.4 + ip: 1.1.5 + lodash: 4.17.21 + node-fetch: 2.6.6 + pretty-hrtime: 1.0.3 + prompts: 2.4.2 + react: 18.0.0-rc.0 + react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 + regenerator-runtime: 0.13.9 + serve-favicon: 2.5.0 + slash: 3.0.0 + telejson: 5.3.3 + ts-dedent: 2.2.0 + typescript: 4.6.0-dev.20211202 + util-deprecate: 1.0.2 + watchpack: 2.3.1 + webpack: 4.46.0 + ws: 8.3.0 + transitivePeerDependencies: + - '@types/react' + - acorn + - bufferutil + - eslint + - supports-color + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/core-server/6.4.9_8dc5b376cd5e0ab6ceded1a125656041: resolution: {integrity: sha512-Ht/e17/SNW9BgdvBsnKmqNrlZ6CpHeVsClEUnauMov8I5rxjvKBVmI/UsbJJIy6H6VLiL/RwrA3RvLoAoZE8dA==} peerDependencies: '@storybook/builder-webpack5': 6.4.9 @@ -6352,14 +7480,12 @@ packages: dependencies: '@discoveryjs/json-ext': 0.5.6 '@storybook/builder-webpack4': 6.4.9_8dc5b376cd5e0ab6ceded1a125656041 - '@storybook/builder-webpack5': 6.4.9_8dc5b376cd5e0ab6ceded1a125656041 '@storybook/core-client': 6.4.9_17851d71d1f251dcbff27ebb6f3ec2df '@storybook/core-common': 6.4.9_5015ecc5d69ab9ec2b3557d8bf166639 '@storybook/core-events': 6.4.9 '@storybook/csf': 0.0.2--canary.87bc651.0 '@storybook/csf-tools': 6.4.9 '@storybook/manager-webpack4': 6.4.9_8dc5b376cd5e0ab6ceded1a125656041 - '@storybook/manager-webpack5': 6.4.9_8dc5b376cd5e0ab6ceded1a125656041 '@storybook/node-logger': 6.4.9 '@storybook/semver': 7.3.2 '@storybook/store': 6.4.9_757a802188413a36d4f24237d13b8e90 @@ -6409,7 +7535,7 @@ packages: - webpack-command dev: true - /@storybook/core-server/6.4.9_8dc5b376cd5e0ab6ceded1a125656041: + /@storybook/core-server/6.4.9_ae5393274443766887f321ff1be79d03: resolution: {integrity: sha512-Ht/e17/SNW9BgdvBsnKmqNrlZ6CpHeVsClEUnauMov8I5rxjvKBVmI/UsbJJIy6H6VLiL/RwrA3RvLoAoZE8dA==} peerDependencies: '@storybook/builder-webpack5': 6.4.9 @@ -6426,13 +7552,15 @@ packages: optional: true dependencies: '@discoveryjs/json-ext': 0.5.6 - '@storybook/builder-webpack4': 6.4.9_8dc5b376cd5e0ab6ceded1a125656041 + '@storybook/builder-webpack4': 6.4.9_ba03cbdd6ab5a0c0ddff9efc041e0162 + '@storybook/builder-webpack5': 6.4.9_8dc5b376cd5e0ab6ceded1a125656041 '@storybook/core-client': 6.4.9_17851d71d1f251dcbff27ebb6f3ec2df '@storybook/core-common': 6.4.9_5015ecc5d69ab9ec2b3557d8bf166639 '@storybook/core-events': 6.4.9 '@storybook/csf': 0.0.2--canary.87bc651.0 '@storybook/csf-tools': 6.4.9 - '@storybook/manager-webpack4': 6.4.9_8dc5b376cd5e0ab6ceded1a125656041 + '@storybook/manager-webpack4': 6.4.9_ba03cbdd6ab5a0c0ddff9efc041e0162 + '@storybook/manager-webpack5': 6.4.9_8dc5b376cd5e0ab6ceded1a125656041 '@storybook/node-logger': 6.4.9 '@storybook/semver': 7.3.2 '@storybook/store': 6.4.9_757a802188413a36d4f24237d13b8e90 @@ -6482,7 +7610,7 @@ packages: - webpack-command dev: true - /@storybook/core-server/6.4.9_ae5393274443766887f321ff1be79d03: + /@storybook/core-server/6.4.9_d42160e17e845ae92be7849e18b75ade: resolution: {integrity: sha512-Ht/e17/SNW9BgdvBsnKmqNrlZ6CpHeVsClEUnauMov8I5rxjvKBVmI/UsbJJIy6H6VLiL/RwrA3RvLoAoZE8dA==} peerDependencies: '@storybook/builder-webpack5': 6.4.9 @@ -6499,18 +7627,18 @@ packages: optional: true dependencies: '@discoveryjs/json-ext': 0.5.6 - '@storybook/builder-webpack4': 6.4.9_ba03cbdd6ab5a0c0ddff9efc041e0162 - '@storybook/builder-webpack5': 6.4.9_8dc5b376cd5e0ab6ceded1a125656041 - '@storybook/core-client': 6.4.9_17851d71d1f251dcbff27ebb6f3ec2df - '@storybook/core-common': 6.4.9_5015ecc5d69ab9ec2b3557d8bf166639 + '@storybook/builder-webpack4': 6.4.9_acorn@7.4.1 + '@storybook/builder-webpack5': 6.4.9 + '@storybook/core-client': 6.4.9_webpack@4.46.0 + '@storybook/core-common': 6.4.9 '@storybook/core-events': 6.4.9 '@storybook/csf': 0.0.2--canary.87bc651.0 '@storybook/csf-tools': 6.4.9 - '@storybook/manager-webpack4': 6.4.9_ba03cbdd6ab5a0c0ddff9efc041e0162 - '@storybook/manager-webpack5': 6.4.9_8dc5b376cd5e0ab6ceded1a125656041 + '@storybook/manager-webpack4': 6.4.9_acorn@7.4.1 + '@storybook/manager-webpack5': 6.4.9 '@storybook/node-logger': 6.4.9 '@storybook/semver': 7.3.2 - '@storybook/store': 6.4.9_757a802188413a36d4f24237d13b8e90 + '@storybook/store': 6.4.9 '@types/node': 16.11.12 '@types/node-fetch': 2.5.12 '@types/pretty-hrtime': 1.0.1 @@ -6533,14 +7661,11 @@ packages: node-fetch: 2.6.6 pretty-hrtime: 1.0.3 prompts: 2.4.2 - react: 18.0.0-rc.0 - react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 regenerator-runtime: 0.13.9 serve-favicon: 2.5.0 slash: 3.0.0 telejson: 5.3.3 ts-dedent: 2.2.0 - typescript: 4.6.0-dev.20211202 util-deprecate: 1.0.2 watchpack: 2.3.1 webpack: 4.46.0 @@ -6658,6 +7783,67 @@ packages: - webpack-command dev: true + /@storybook/core/6.4.9_5297207774a3afdce8a3799ed2537d00: + resolution: {integrity: sha512-Mzhiy13loMSd3PCygK3t7HIT3X3L35iZmbe6+2xVbVmc/3ypCmq4PQALCUoDOGk37Ifrhop6bo6sl4s9YQ6UFw==} + peerDependencies: + '@storybook/builder-webpack5': 6.4.9 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + webpack: '*' + peerDependenciesMeta: + '@storybook/builder-webpack5': + optional: true + typescript: + optional: true + dependencies: + '@storybook/builder-webpack5': 6.4.9 + '@storybook/core-client': 6.4.9_webpack@4.46.0 + '@storybook/core-server': 6.4.9_0c7e2b05e99ee2e35b641810c3f17cb5 + webpack: 4.46.0 + transitivePeerDependencies: + - '@storybook/manager-webpack5' + - '@types/react' + - acorn + - bufferutil + - eslint + - supports-color + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/core/6.4.9_d42160e17e845ae92be7849e18b75ade: + resolution: {integrity: sha512-Mzhiy13loMSd3PCygK3t7HIT3X3L35iZmbe6+2xVbVmc/3ypCmq4PQALCUoDOGk37Ifrhop6bo6sl4s9YQ6UFw==} + peerDependencies: + '@storybook/builder-webpack5': 6.4.9 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + webpack: '*' + peerDependenciesMeta: + '@storybook/builder-webpack5': + optional: true + typescript: + optional: true + dependencies: + '@storybook/builder-webpack5': 6.4.9 + '@storybook/core-client': 6.4.9 + '@storybook/core-server': 6.4.9_d42160e17e845ae92be7849e18b75ade + transitivePeerDependencies: + - '@storybook/manager-webpack5' + - '@types/react' + - acorn + - bufferutil + - eslint + - supports-color + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + /@storybook/csf-tools/6.4.9: resolution: {integrity: sha512-zbgsx9vY5XOA9bBmyw+KyuRspFXAjEJ6I3d/6Z3G1kNBeOEj9i3DT7O99Rd/THfL/3mWl8DJ/7CJVPk1ZYxunA==} dependencies: @@ -6688,6 +7874,62 @@ packages: lodash: 4.17.21 dev: true + /@storybook/manager-webpack4/6.4.9: + resolution: {integrity: sha512-828x3rqMuzBNSb13MSDo2nchY7fuywh+8+Vk+fn00MvBYJjogd5RQFx5ocwhHzmwXbnESIerlGwe81AzMck8ng==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.16.5 + '@babel/plugin-transform-template-literals': 7.16.0_@babel+core@7.16.5 + '@babel/preset-react': 7.16.0_@babel+core@7.16.5 + '@storybook/addons': 6.4.9 + '@storybook/core-client': 6.4.9_webpack@4.46.0 + '@storybook/core-common': 6.4.9 + '@storybook/node-logger': 6.4.9 + '@storybook/theming': 6.4.9 + '@storybook/ui': 6.4.9 + '@types/node': 16.11.12 + '@types/webpack': 4.41.32 + babel-loader: 8.2.3_16789ff3020ecb9b722cf50866e79393 + case-sensitive-paths-webpack-plugin: 2.4.0 + chalk: 4.1.2 + core-js: 3.19.3 + css-loader: 3.6.0_webpack@4.46.0 + express: 4.17.1 + file-loader: 6.2.0_webpack@4.46.0 + file-system-cache: 1.0.5 + find-up: 5.0.0 + fs-extra: 9.1.0 + html-webpack-plugin: 4.5.2_webpack@4.46.0 + node-fetch: 2.6.6 + pnp-webpack-plugin: 1.6.4 + read-pkg-up: 7.0.1 + regenerator-runtime: 0.13.9 + resolve-from: 5.0.0 + style-loader: 1.3.0_webpack@4.46.0 + telejson: 5.3.3 + terser-webpack-plugin: 4.2.3_webpack@4.46.0 + ts-dedent: 2.2.0 + url-loader: 4.1.1_file-loader@6.2.0+webpack@4.46.0 + util-deprecate: 1.0.2 + webpack: 4.46.0 + webpack-dev-middleware: 3.7.3_webpack@4.46.0 + webpack-virtual-modules: 0.2.2 + transitivePeerDependencies: + - '@types/react' + - acorn + - eslint + - supports-color + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + /@storybook/manager-webpack4/6.4.9_8dc5b376cd5e0ab6ceded1a125656041: resolution: {integrity: sha512-828x3rqMuzBNSb13MSDo2nchY7fuywh+8+Vk+fn00MvBYJjogd5RQFx5ocwhHzmwXbnESIerlGwe81AzMck8ng==} peerDependencies: @@ -6747,6 +7989,62 @@ packages: - webpack-command dev: true + /@storybook/manager-webpack4/6.4.9_acorn@7.4.1: + resolution: {integrity: sha512-828x3rqMuzBNSb13MSDo2nchY7fuywh+8+Vk+fn00MvBYJjogd5RQFx5ocwhHzmwXbnESIerlGwe81AzMck8ng==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.16.5 + '@babel/plugin-transform-template-literals': 7.16.0_@babel+core@7.16.5 + '@babel/preset-react': 7.16.0_@babel+core@7.16.5 + '@storybook/addons': 6.4.9 + '@storybook/core-client': 6.4.9_webpack@4.46.0 + '@storybook/core-common': 6.4.9 + '@storybook/node-logger': 6.4.9 + '@storybook/theming': 6.4.9 + '@storybook/ui': 6.4.9 + '@types/node': 16.11.12 + '@types/webpack': 4.41.32 + babel-loader: 8.2.3_16789ff3020ecb9b722cf50866e79393 + case-sensitive-paths-webpack-plugin: 2.4.0 + chalk: 4.1.2 + core-js: 3.19.3 + css-loader: 3.6.0_webpack@4.46.0 + express: 4.17.1 + file-loader: 6.2.0_webpack@4.46.0 + file-system-cache: 1.0.5 + find-up: 5.0.0 + fs-extra: 9.1.0 + html-webpack-plugin: 4.5.2_webpack@4.46.0 + node-fetch: 2.6.6 + pnp-webpack-plugin: 1.6.4 + read-pkg-up: 7.0.1 + regenerator-runtime: 0.13.9 + resolve-from: 5.0.0 + style-loader: 1.3.0_webpack@4.46.0 + telejson: 5.3.3 + terser-webpack-plugin: 4.2.3_acorn@7.4.1+webpack@4.46.0 + ts-dedent: 2.2.0 + url-loader: 4.1.1_file-loader@6.2.0+webpack@4.46.0 + util-deprecate: 1.0.2 + webpack: 4.46.0 + webpack-dev-middleware: 3.7.3_webpack@4.46.0 + webpack-virtual-modules: 0.2.2 + transitivePeerDependencies: + - '@types/react' + - acorn + - eslint + - supports-color + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + /@storybook/manager-webpack4/6.4.9_ba03cbdd6ab5a0c0ddff9efc041e0162: resolution: {integrity: sha512-828x3rqMuzBNSb13MSDo2nchY7fuywh+8+Vk+fn00MvBYJjogd5RQFx5ocwhHzmwXbnESIerlGwe81AzMck8ng==} peerDependencies: @@ -6806,6 +8104,61 @@ packages: - webpack-command dev: true + /@storybook/manager-webpack5/6.4.9: + resolution: {integrity: sha512-WJfHs9nPAWx6NONzwoo4s72fqWW/HIBnw+StpRVMNJfi9YojTTFNGMHU0waSd22qT0zOV8XXrXi7XDuHissIwg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.16.5 + '@babel/plugin-transform-template-literals': 7.16.0_@babel+core@7.16.5 + '@babel/preset-react': 7.16.0_@babel+core@7.16.5 + '@storybook/addons': 6.4.9 + '@storybook/core-client': 6.4.9_webpack@5.65.0 + '@storybook/core-common': 6.4.9 + '@storybook/node-logger': 6.4.9 + '@storybook/theming': 6.4.9 + '@storybook/ui': 6.4.9 + '@types/node': 16.11.12 + babel-loader: 8.2.3_26251eab09162b25a254715ee98d7c5c + case-sensitive-paths-webpack-plugin: 2.4.0 + chalk: 4.1.2 + core-js: 3.19.3 + css-loader: 5.2.7_webpack@5.65.0 + express: 4.17.1 + file-system-cache: 1.0.5 + find-up: 5.0.0 + fs-extra: 9.1.0 + html-webpack-plugin: 5.5.0_webpack@5.65.0 + node-fetch: 2.6.6 + read-pkg-up: 7.0.1 + regenerator-runtime: 0.13.9 + resolve-from: 5.0.0 + style-loader: 2.0.0_webpack@5.65.0 + telejson: 5.3.3 + terser-webpack-plugin: 5.2.5_webpack@5.65.0 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + webpack: 5.65.0 + webpack-dev-middleware: 4.3.0_webpack@5.65.0 + webpack-virtual-modules: 0.4.3 + transitivePeerDependencies: + - '@swc/core' + - '@types/react' + - acorn + - esbuild + - eslint + - supports-color + - uglify-js + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + /@storybook/manager-webpack5/6.4.9_8dc5b376cd5e0ab6ceded1a125656041: resolution: {integrity: sha512-WJfHs9nPAWx6NONzwoo4s72fqWW/HIBnw+StpRVMNJfi9YojTTFNGMHU0waSd22qT0zOV8XXrXi7XDuHissIwg==} peerDependencies: @@ -6880,6 +8233,30 @@ packages: core-js: 3.19.3 dev: true + /@storybook/preview-web/6.4.9: + resolution: {integrity: sha512-fMB/akK14oc+4FBkeVJBtZQdxikOraXQSVn6zoVR93WVDR7JVeV+oz8rxjuK3n6ZEWN87iKH946k4jLoZ95tdw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + dependencies: + '@storybook/addons': 6.4.9 + '@storybook/channel-postmessage': 6.4.9 + '@storybook/client-logger': 6.4.9 + '@storybook/core-events': 6.4.9 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/store': 6.4.9 + ansi-to-html: 0.6.15 + core-js: 3.19.3 + global: 4.4.0 + lodash: 4.17.21 + qs: 6.10.2 + regenerator-runtime: 0.13.9 + synchronous-promise: 2.0.15 + ts-dedent: 2.2.0 + unfetch: 4.2.0 + util-deprecate: 1.0.2 + dev: true + /@storybook/preview-web/6.4.9_757a802188413a36d4f24237d13b8e90: resolution: {integrity: sha512-fMB/akK14oc+4FBkeVJBtZQdxikOraXQSVn6zoVR93WVDR7JVeV+oz8rxjuK3n6ZEWN87iKH946k4jLoZ95tdw==} peerDependencies: @@ -6925,6 +8302,85 @@ packages: - supports-color dev: true + /@storybook/react-docgen-typescript-plugin/1.0.2-canary.253f8c1.0_webpack@4.46.0: + resolution: {integrity: sha512-mmoRG/rNzAiTbh+vGP8d57dfcR2aP+5/Ll03KKFyfy5FqWFm/Gh7u27ikx1I3LmVMI8n6jh5SdWMkMKon7/tDw==} + peerDependencies: + typescript: '>= 3.x' + webpack: '>= 4' + dependencies: + debug: 4.3.3 + endent: 2.1.0 + find-cache-dir: 3.3.2 + flat-cache: 3.0.4 + micromatch: 4.0.4 + react-docgen-typescript: 2.2.2 + tslib: 2.3.1 + webpack: 4.46.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@storybook/react/6.4.9_09a38ea9f699d45df32e26a37a4f0346: + resolution: {integrity: sha512-GVbCeii2dIKSD66pAdn9bY7mRoOzBE6ll+vRDW1n00FIvGfckmoIZtQHpurca7iNTAoufv8+t0L9i7IItdrUuw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + '@babel/core': ^7.11.5 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + peerDependenciesMeta: + '@babel/core': + optional: true + typescript: + optional: true + dependencies: + '@babel/core': 7.16.5 + '@babel/preset-flow': 7.16.0_@babel+core@7.16.5 + '@babel/preset-react': 7.16.0_@babel+core@7.16.5 + '@pmmmwh/react-refresh-webpack-plugin': 0.5.3_40197ac6d9ae665387b5bc70002c2da9 + '@storybook/addons': 6.4.9 + '@storybook/core': 6.4.9_5297207774a3afdce8a3799ed2537d00 + '@storybook/core-common': 6.4.9 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/node-logger': 6.4.9 + '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.253f8c1.0_webpack@4.46.0 + '@storybook/semver': 7.3.2 + '@storybook/store': 6.4.9 + '@types/webpack-env': 1.16.3 + babel-plugin-add-react-displayname: 0.0.5 + babel-plugin-named-asset-import: 0.3.7_@babel+core@7.16.5 + babel-plugin-react-docgen: 4.2.1 + core-js: 3.19.3 + global: 4.4.0 + lodash: 4.17.21 + prop-types: 15.7.2 + react-dev-utils: 11.0.4 + react-refresh: 0.10.0 + read-pkg-up: 7.0.1 + regenerator-runtime: 0.13.9 + ts-dedent: 2.2.0 + webpack: 4.46.0 + transitivePeerDependencies: + - '@storybook/builder-webpack5' + - '@storybook/manager-webpack5' + - '@types/react' + - '@types/webpack' + - acorn + - bufferutil + - eslint + - sockjs-client + - supports-color + - type-fest + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + dev: true + /@storybook/react/6.4.9_267843bc4eadd0f91153a445c7fceb2a: resolution: {integrity: sha512-GVbCeii2dIKSD66pAdn9bY7mRoOzBE6ll+vRDW1n00FIvGfckmoIZtQHpurca7iNTAoufv8+t0L9i7IItdrUuw==} engines: {node: '>=10.13.0'} @@ -7052,6 +8508,25 @@ packages: - webpack-plugin-serve dev: true + /@storybook/router/6.4.9: + resolution: {integrity: sha512-GT2KtVHo/mBjxDBFB5ZtVJVf8vC+3p5kRlQC4jao68caVp7H24ikPOkcY54VnQwwe4A1aXpGbJXUyTisEPFlhQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + dependencies: + '@storybook/client-logger': 6.4.9 + core-js: 3.19.3 + fast-deep-equal: 3.1.3 + global: 4.4.0 + history: 5.0.0 + lodash: 4.17.21 + memoizerific: 1.11.3 + qs: 6.10.2 + react-router: 6.1.1 + react-router-dom: 6.1.1 + ts-dedent: 2.2.0 + dev: true + /@storybook/router/6.4.9_757a802188413a36d4f24237d13b8e90: resolution: {integrity: sha512-GT2KtVHo/mBjxDBFB5ZtVJVf8vC+3p5kRlQC4jao68caVp7H24ikPOkcY54VnQwwe4A1aXpGbJXUyTisEPFlhQ==} peerDependencies: @@ -7082,6 +8557,24 @@ packages: find-up: 4.1.0 dev: true + /@storybook/source-loader/6.4.9: + resolution: {integrity: sha512-J/Jpcc15hnWa2DB/EZ4gVJvdsY3b3CDIGW/NahuNXk36neS+g4lF3qqVNAEqQ1pPZ0O8gMgazyZPGm0MHwUWlw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + dependencies: + '@storybook/addons': 6.4.9 + '@storybook/client-logger': 6.4.9 + '@storybook/csf': 0.0.2--canary.87bc651.0 + core-js: 3.19.3 + estraverse: 5.3.0 + global: 4.4.0 + loader-utils: 2.0.2 + lodash: 4.17.21 + prettier: 2.5.1 + regenerator-runtime: 0.13.9 + dev: true + /@storybook/source-loader/6.4.9_757a802188413a36d4f24237d13b8e90: resolution: {integrity: sha512-J/Jpcc15hnWa2DB/EZ4gVJvdsY3b3CDIGW/NahuNXk36neS+g4lF3qqVNAEqQ1pPZ0O8gMgazyZPGm0MHwUWlw==} peerDependencies: @@ -7102,6 +8595,29 @@ packages: regenerator-runtime: 0.13.9 dev: true + /@storybook/store/6.4.9: + resolution: {integrity: sha512-H30KfiM2XyGMJcLaOepCEUsU7S3C/f7t46s6Nhw0lc5w/6HTQc2jGV3GgG3lUAUAzEQoxmmu61w3N2a6eyRzmg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + dependencies: + '@storybook/addons': 6.4.9 + '@storybook/client-logger': 6.4.9 + '@storybook/core-events': 6.4.9 + '@storybook/csf': 0.0.2--canary.87bc651.0 + core-js: 3.19.3 + fast-deep-equal: 3.1.3 + global: 4.4.0 + lodash: 4.17.21 + memoizerific: 1.11.3 + regenerator-runtime: 0.13.9 + slash: 3.0.0 + stable: 0.1.8 + synchronous-promise: 2.0.15 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + dev: true + /@storybook/store/6.4.9_757a802188413a36d4f24237d13b8e90: resolution: {integrity: sha512-H30KfiM2XyGMJcLaOepCEUsU7S3C/f7t46s6Nhw0lc5w/6HTQc2jGV3GgG3lUAUAzEQoxmmu61w3N2a6eyRzmg==} peerDependencies: @@ -7127,6 +8643,26 @@ packages: util-deprecate: 1.0.2 dev: true + /@storybook/theming/6.4.9: + resolution: {integrity: sha512-Do6GH6nKjxfnBg6djcIYAjss5FW9SRKASKxLYxX2RyWJBpz0m/8GfcGcRyORy0yFTk6jByA3Hs+WFH3GnEbWkw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + dependencies: + '@emotion/core': 10.3.1 + '@emotion/is-prop-valid': 0.8.8 + '@emotion/styled': 10.3.0_@emotion+core@10.3.1 + '@storybook/client-logger': 6.4.9 + core-js: 3.19.3 + deep-object-diff: 1.1.0 + emotion-theming: 10.3.0_@emotion+core@10.3.1 + global: 4.4.0 + memoizerific: 1.11.3 + polished: 4.1.3 + resolve-from: 5.0.0 + ts-dedent: 2.2.0 + dev: true + /@storybook/theming/6.4.9_757a802188413a36d4f24237d13b8e90: resolution: {integrity: sha512-Do6GH6nKjxfnBg6djcIYAjss5FW9SRKASKxLYxX2RyWJBpz0m/8GfcGcRyORy0yFTk6jByA3Hs+WFH3GnEbWkw==} peerDependencies: @@ -7149,6 +8685,44 @@ packages: ts-dedent: 2.2.0 dev: true + /@storybook/ui/6.4.9: + resolution: {integrity: sha512-lJbsaMTH4SyhqUTmt+msSYI6fKSSfOnrzZVu6bQ73+MfRyGKh1ki2Nyhh+w8BiGEIOz02WlEpZC0y11FfgEgXw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + dependencies: + '@emotion/core': 10.3.1 + '@storybook/addons': 6.4.9 + '@storybook/api': 6.4.9 + '@storybook/channels': 6.4.9 + '@storybook/client-logger': 6.4.9 + '@storybook/components': 6.4.9 + '@storybook/core-events': 6.4.9 + '@storybook/router': 6.4.9 + '@storybook/semver': 7.3.2 + '@storybook/theming': 6.4.9 + copy-to-clipboard: 3.3.1 + core-js: 3.19.3 + core-js-pure: 3.19.3 + downshift: 6.1.7 + emotion-theming: 10.3.0_@emotion+core@10.3.1 + fuse.js: 3.6.1 + global: 4.4.0 + lodash: 4.17.21 + markdown-to-jsx: 7.1.5 + memoizerific: 1.11.3 + polished: 4.1.3 + qs: 6.10.2 + react-draggable: 4.4.4 + react-helmet-async: 1.2.2 + react-sizeme: 3.0.2 + regenerator-runtime: 0.13.9 + resolve-from: 5.0.0 + store2: 2.12.0 + transitivePeerDependencies: + - '@types/react' + dev: true + /@storybook/ui/6.4.9_2f50eb45a1501445764b3dbbd8573d7c: resolution: {integrity: sha512-lJbsaMTH4SyhqUTmt+msSYI6fKSSfOnrzZVu6bQ73+MfRyGKh1ki2Nyhh+w8BiGEIOz02WlEpZC0y11FfgEgXw==} peerDependencies: @@ -9765,6 +11339,20 @@ packages: webpack: 5.65.0 dev: true + /babel-loader/8.2.3_@babel+core@7.16.5: + resolution: {integrity: sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==} + engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + dependencies: + '@babel/core': 7.16.5 + find-cache-dir: 3.3.2 + loader-utils: 1.4.0 + make-dir: 3.1.0 + schema-utils: 2.7.1 + dev: true + /babel-messages/6.23.0: resolution: {integrity: sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=} dependencies: @@ -12732,6 +14320,18 @@ packages: minimatch: 3.0.4 dev: false + /downshift/6.1.7: + resolution: {integrity: sha512-cVprZg/9Lvj/uhYRxELzlu1aezRcgPWBjTvspiGTVEU64gF5pRdSRKFVLcxqsZC637cLAGMbL40JavEfWnqgNg==} + peerDependencies: + react: '>=16.12.0' + dependencies: + '@babel/runtime': 7.16.5 + compute-scroll-into-view: 1.0.17 + prop-types: 15.8.0 + react-is: 17.0.2 + tslib: 2.3.1 + dev: true + /downshift/6.1.7_react@18.0.0-rc.0: resolution: {integrity: sha512-cVprZg/9Lvj/uhYRxELzlu1aezRcgPWBjTvspiGTVEU64gF5pRdSRKFVLcxqsZC637cLAGMbL40JavEfWnqgNg==} peerDependencies: @@ -12862,6 +14462,18 @@ packages: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} + /emotion-theming/10.3.0_@emotion+core@10.3.1: + resolution: {integrity: sha512-mXiD2Oj7N9b6+h/dC6oLf9hwxbtKHQjoIqtodEyL8CpkN4F3V4IK/BT4D0C7zSs4BBFOu4UlPJbvvBLa88SGEA==} + peerDependencies: + '@emotion/core': ^10.0.27 + react: '>=16.3.0' + dependencies: + '@babel/runtime': 7.16.3 + '@emotion/core': 10.3.1 + '@emotion/weak-memoize': 0.2.5 + hoist-non-react-statics: 3.3.2 + dev: true + /emotion-theming/10.3.0_e02dd3725849cbb6b1072425c9ec0b91: resolution: {integrity: sha512-mXiD2Oj7N9b6+h/dC6oLf9hwxbtKHQjoIqtodEyL8CpkN4F3V4IK/BT4D0C7zSs4BBFOu4UlPJbvvBLa88SGEA==} peerDependencies: @@ -14471,16 +16083,80 @@ packages: resolution: {integrity: sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==} engines: {node: '>=6.11.5', yarn: '>=1.0.0'} dependencies: - '@babel/code-frame': 7.10.4 - chalk: 2.4.2 - micromatch: 3.1.10 + '@babel/code-frame': 7.10.4 + chalk: 2.4.2 + micromatch: 3.1.10 + minimatch: 3.0.4 + semver: 5.7.1 + tapable: 1.1.3 + worker-rpc: 0.1.1 + dev: true + + /fork-ts-checker-webpack-plugin/6.5.0_6683a434928a958595d5c1688f0f7814: + resolution: {integrity: sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==} + engines: {node: '>=10', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@babel/code-frame': 7.16.0 + '@types/json-schema': 7.0.9 + chalk: 4.1.2 + chokidar: 3.5.2 + cosmiconfig: 6.0.0 + deepmerge: 4.2.2 + eslint: 8.5.0 + fs-extra: 9.1.0 + glob: 7.2.0 + memfs: 3.4.0 + minimatch: 3.0.4 + schema-utils: 2.7.0 + semver: 7.3.5 + tapable: 1.1.3 + typescript: 4.6.0-dev.20211202 + webpack: 5.65.0 + dev: true + + /fork-ts-checker-webpack-plugin/6.5.0_94dfc412972199703f1e47c430baa7c9: + resolution: {integrity: sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==} + engines: {node: '>=10', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@babel/code-frame': 7.16.0 + '@types/json-schema': 7.0.9 + chalk: 4.1.2 + chokidar: 3.5.2 + cosmiconfig: 6.0.0 + deepmerge: 4.2.2 + eslint: 8.5.0 + fs-extra: 9.1.0 + glob: 7.2.0 + memfs: 3.4.0 minimatch: 3.0.4 - semver: 5.7.1 + schema-utils: 2.7.0 + semver: 7.3.5 tapable: 1.1.3 - worker-rpc: 0.1.1 + typescript: 4.6.0-dev.20211202 + webpack: 4.46.0 dev: true - /fork-ts-checker-webpack-plugin/6.5.0_6683a434928a958595d5c1688f0f7814: + /fork-ts-checker-webpack-plugin/6.5.0_webpack@4.46.0: resolution: {integrity: sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -14500,7 +16176,6 @@ packages: chokidar: 3.5.2 cosmiconfig: 6.0.0 deepmerge: 4.2.2 - eslint: 8.5.0 fs-extra: 9.1.0 glob: 7.2.0 memfs: 3.4.0 @@ -14508,11 +16183,10 @@ packages: schema-utils: 2.7.0 semver: 7.3.5 tapable: 1.1.3 - typescript: 4.6.0-dev.20211202 - webpack: 5.65.0 + webpack: 4.46.0 dev: true - /fork-ts-checker-webpack-plugin/6.5.0_94dfc412972199703f1e47c430baa7c9: + /fork-ts-checker-webpack-plugin/6.5.0_webpack@5.65.0: resolution: {integrity: sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -14532,7 +16206,6 @@ packages: chokidar: 3.5.2 cosmiconfig: 6.0.0 deepmerge: 4.2.2 - eslint: 8.5.0 fs-extra: 9.1.0 glob: 7.2.0 memfs: 3.4.0 @@ -14540,8 +16213,7 @@ packages: schema-utils: 2.7.0 semver: 7.3.5 tapable: 1.1.3 - typescript: 4.6.0-dev.20211202 - webpack: 4.46.0 + webpack: 5.65.0 dev: true /form-data/2.3.3: @@ -17987,6 +19659,13 @@ packages: resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} dev: true + /markdown-to-jsx/7.1.5: + resolution: {integrity: sha512-YQEMMMCX3PYOWtUAQu8Fmz5/sH09s17eyQnDubwaAo8sWmnRTT1og96EFv1vL59l4nWfmtF3L91pqkuheVqRlA==} + engines: {node: '>= 10'} + peerDependencies: + react: '>= 0.14.0' + dev: true + /markdown-to-jsx/7.1.5_react@18.0.0-rc.0: resolution: {integrity: sha512-YQEMMMCX3PYOWtUAQu8Fmz5/sH09s17eyQnDubwaAo8sWmnRTT1og96EFv1vL59l4nWfmtF3L91pqkuheVqRlA==} engines: {node: '>= 10'} @@ -18518,6 +20197,22 @@ packages: resolution: {integrity: sha1-ulSMh578+5DaHE2eCX20pGySVe8=} dev: false + /nano-css/5.3.1: + resolution: {integrity: sha512-ENPIyNzANQRyYVvb62ajDd7PAyIgS2LIUnT9ewih4yrXSZX4hKoUwssy8WjUH++kEOA5wUTMgNnV7ko5n34kUA==} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + css-tree: 1.1.3 + csstype: 3.0.8 + fastest-stable-stringify: 2.0.2 + inline-style-prefixer: 6.0.0 + rtl-css-js: 1.14.2 + sourcemap-codec: 1.4.8 + stacktrace-js: 2.0.2 + stylis: 4.0.10 + dev: false + /nano-css/5.3.1_757a802188413a36d4f24237d13b8e90: resolution: {integrity: sha512-ENPIyNzANQRyYVvb62ajDd7PAyIgS2LIUnT9ewih4yrXSZX4hKoUwssy8WjUH++kEOA5wUTMgNnV7ko5n34kUA==} peerDependencies: @@ -19517,6 +21212,15 @@ packages: engines: {node: '>=10.13.0'} dev: false + /pnp-webpack-plugin/1.6.4: + resolution: {integrity: sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==} + engines: {node: '>=6'} + dependencies: + ts-pnp: 1.2.0 + transitivePeerDependencies: + - typescript + dev: true + /pnp-webpack-plugin/1.6.4_typescript@4.6.0-dev.20211202: resolution: {integrity: sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==} engines: {node: '>=6'} @@ -19948,6 +21652,10 @@ packages: engines: {node: '>=0.6.0', teleport: '>=0.2.0'} dev: true + /qrcode-generator/1.4.4: + resolution: {integrity: sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==} + dev: false + /qrcode/1.5.0: resolution: {integrity: sha512-9MgRpgVc+/+47dFvQeD6U2s0Z92EsKzcHogtum4QB+UNd025WOJSHvn/hjk9xmzj7Stj95CyUAs31mrjxliEsQ==} engines: {node: '>=10.13.0'} @@ -20078,7 +21786,7 @@ packages: webpack: 4.46.0 dev: true - /react-avatar-editor/12.0.0_2a5ce53653c2861b1c74a6612fe40887: + /react-avatar-editor/12.0.0_@babel+core@7.16.5: resolution: {integrity: sha512-l7NrN8CXlUXbMhnbkuduAtR3+AlDz+DzYWlYBNr7q+rNeJMZlv26ap3Dk/D1WK/MPlnoS33iITlhLkuDsYQpug==} peerDependencies: react: ^0.14.0 || ^17.0.0 @@ -20087,13 +21795,18 @@ packages: '@babel/plugin-transform-runtime': 7.15.0_@babel+core@7.16.5 '@babel/runtime': 7.16.3 prop-types: 15.7.2 - react: 18.0.0-rc.0 - react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 transitivePeerDependencies: - '@babel/core' - supports-color dev: false + /react-colorful/5.5.1: + resolution: {integrity: sha512-M1TJH2X3RXEt12sWkpa6hLc/bbYS0H6F4rIqjQZ+RxNBstpY67d9TrFXtqdZwhpmBXcCwEi7stKqFue3ZRkiOg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dev: true + /react-colorful/5.5.1_757a802188413a36d4f24237d13b8e90: resolution: {integrity: sha512-M1TJH2X3RXEt12sWkpa6hLc/bbYS0H6F4rIqjQZ+RxNBstpY67d9TrFXtqdZwhpmBXcCwEi7stKqFue3ZRkiOg==} peerDependencies: @@ -20144,6 +21857,12 @@ packages: - utf-8-validate dev: true + /react-docgen-typescript/2.2.2: + resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} + peerDependencies: + typescript: '>= 4.3.x' + dev: true + /react-docgen-typescript/2.2.2_typescript@4.6.0-dev.20211202: resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} peerDependencies: @@ -20182,6 +21901,16 @@ packages: scheduler: 0.21.0-rc.0-next-f2a59df48-20211208 dev: false + /react-draggable/4.4.4: + resolution: {integrity: sha512-6e0WdcNLwpBx/YIDpoyd2Xb04PB0elrDrulKUgdrIlwuYvxh5Ok9M+F8cljm8kPXXs43PmMzek9RrB1b7mLMqA==} + peerDependencies: + react: '>= 16.3.0' + react-dom: '>= 16.3.0' + dependencies: + clsx: 1.1.1 + prop-types: 15.7.2 + dev: true + /react-draggable/4.4.4_757a802188413a36d4f24237d13b8e90: resolution: {integrity: sha512-6e0WdcNLwpBx/YIDpoyd2Xb04PB0elrDrulKUgdrIlwuYvxh5Ok9M+F8cljm8kPXXs43PmMzek9RrB1b7mLMqA==} peerDependencies: @@ -20193,6 +21922,17 @@ packages: react: 18.0.0-rc.0 react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 + /react-element-to-jsx-string/14.3.4: + resolution: {integrity: sha512-t4ZwvV6vwNxzujDQ+37bspnLwA4JlgUPWhLjBJWsNIDceAf6ZKUTCjdm08cN6WeZ5pTMKiCJkmAYnpmR4Bm+dg==} + peerDependencies: + react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 + react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 + dependencies: + '@base2/pretty-print-object': 1.0.1 + is-plain-object: 5.0.0 + react-is: 17.0.2 + dev: true + /react-element-to-jsx-string/14.3.4_757a802188413a36d4f24237d13b8e90: resolution: {integrity: sha512-t4ZwvV6vwNxzujDQ+37bspnLwA4JlgUPWhLjBJWsNIDceAf6ZKUTCjdm08cN6WeZ5pTMKiCJkmAYnpmR4Bm+dg==} peerDependencies: @@ -20223,6 +21963,19 @@ packages: react: 18.0.0-rc.0 dev: false + /react-helmet-async/1.2.2: + resolution: {integrity: sha512-XgSQezeCbLfCxdZhDA3T/g27XZKnOYyOkruopTLSJj8RvFZwdXnM4djnfYaiBSDzOidDgTo1jcEozoRu/+P9UQ==} + peerDependencies: + react: ^16.6.0 || ^17.0.0 + react-dom: ^16.6.0 || ^17.0.0 + dependencies: + '@babel/runtime': 7.16.5 + invariant: 2.2.4 + prop-types: 15.8.0 + react-fast-compare: 3.2.0 + shallowequal: 1.1.0 + dev: true + /react-helmet-async/1.2.2_757a802188413a36d4f24237d13b8e90: resolution: {integrity: sha512-XgSQezeCbLfCxdZhDA3T/g27XZKnOYyOkruopTLSJj8RvFZwdXnM4djnfYaiBSDzOidDgTo1jcEozoRu/+P9UQ==} peerDependencies: @@ -20249,6 +22002,13 @@ packages: react: 18.0.0-rc.0 dev: false + /react-hook-form/7.22.5: + resolution: {integrity: sha512-Q2zaeQFXdVQ8l3hcywhltH+Nzj4vo50wMVujHDVN/1Xy9IOaSZJwYBXA2CYTpK6rq41fnXviw3jTLb04c7Gu9Q==} + engines: {node: '>=12.22.0'} + peerDependencies: + react: ^16.8.0 || ^17 + dev: false + /react-hook-form/7.22.5_react@18.0.0-rc.0: resolution: {integrity: sha512-Q2zaeQFXdVQ8l3hcywhltH+Nzj4vo50wMVujHDVN/1Xy9IOaSZJwYBXA2CYTpK6rq41fnXviw3jTLb04c7Gu9Q==} engines: {node: '>=12.22.0'} @@ -20271,6 +22031,16 @@ packages: react: 18.0.0-rc.0 dev: false + /react-inspector/5.1.1: + resolution: {integrity: sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg==} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + dependencies: + '@babel/runtime': 7.16.3 + is-dom: 1.1.0 + prop-types: 15.8.0 + dev: true + /react-inspector/5.1.1_react@18.0.0-rc.0: resolution: {integrity: sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg==} peerDependencies: @@ -20288,6 +22058,17 @@ packages: /react-is/17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + /react-popper-tooltip/3.1.1: + resolution: {integrity: sha512-EnERAnnKRptQBJyaee5GJScWNUKQPDD2ywvzZyUjst/wj5U64C8/CnSYLNEmP2hG0IJ3ZhtDxE8oDN+KOyavXQ==} + peerDependencies: + react: ^16.6.0 || ^17.0.0 + react-dom: ^16.6.0 || ^17.0.0 + dependencies: + '@babel/runtime': 7.16.3 + '@popperjs/core': 2.11.0 + react-popper: 2.2.5_@popperjs+core@2.11.0 + dev: true + /react-popper-tooltip/3.1.1_757a802188413a36d4f24237d13b8e90: resolution: {integrity: sha512-EnERAnnKRptQBJyaee5GJScWNUKQPDD2ywvzZyUjst/wj5U64C8/CnSYLNEmP2hG0IJ3ZhtDxE8oDN+KOyavXQ==} peerDependencies: @@ -20313,6 +22094,27 @@ packages: warning: 4.0.3 dev: true + /react-popper/2.2.5_@popperjs+core@2.11.0: + resolution: {integrity: sha512-kxGkS80eQGtLl18+uig1UIf9MKixFSyPxglsgLBxlYnyDf65BiY9B3nZSc6C9XUNDgStROB0fMQlTEz1KxGddw==} + peerDependencies: + '@popperjs/core': ^2.0.0 + react: ^16.8.0 || ^17 + dependencies: + '@popperjs/core': 2.11.0 + react-fast-compare: 3.2.0 + warning: 4.0.3 + dev: true + + /react-qrcode-logo/2.5.0: + resolution: {integrity: sha512-Z+Ywb2Cw3EK5csfkZHuyNpxZl5BiHxrBPAeRE3bB1qERAUMc/tMzBKpfMEb/Olti/Ic04j/DYt6ncYRLa/wFMA==} + peerDependencies: + react: '>=16.4.1' + react-dom: '>=16.4.1' + dependencies: + lodash.isequal: 4.5.0 + qrcode-generator: 1.4.4 + dev: false + /react-refresh/0.10.0: resolution: {integrity: sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==} engines: {node: '>=0.10.0'} @@ -20338,7 +22140,7 @@ packages: tiny-warning: 1.0.3 dev: false - /react-router-dom/6.0.0-beta.4_154c53788755629e2430b224cbac559e: + /react-router-dom/6.0.0-beta.4_history@5.2.0: resolution: {integrity: sha512-yppoRR8S7FxNMG6OGFn9DPJBPLsjeIuQa7GYnkRlgOSTBSPhAQpD6z7rvRzZnesQ9r6W+ibD9RvnqTcna4w/Pg==} peerDependencies: history: '>=5' @@ -20346,11 +22148,19 @@ packages: react-dom: '>=16.8' dependencies: history: 5.2.0 - react: 18.0.0-rc.0 - react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 - react-router: 6.0.0-beta.4_history@5.2.0+react@18.0.0-rc.0 + react-router: 6.0.0-beta.4_history@5.2.0 dev: false + /react-router-dom/6.1.1: + resolution: {integrity: sha512-O3UH89DI4o+swd2q6lF4dSmpuNCxwkUXcj0zAFcVc1H+YoPE6T7uwoFMX0ws1pUvCY8lYDucFpOqCCdal6VFzg==} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + dependencies: + history: 5.2.0 + react-router: 6.1.1 + dev: true + /react-router-dom/6.1.1_757a802188413a36d4f24237d13b8e90: resolution: {integrity: sha512-O3UH89DI4o+swd2q6lF4dSmpuNCxwkUXcj0zAFcVc1H+YoPE6T7uwoFMX0ws1pUvCY8lYDucFpOqCCdal6VFzg==} peerDependencies: @@ -20381,16 +22191,23 @@ packages: tiny-warning: 1.0.3 dev: false - /react-router/6.0.0-beta.4_history@5.2.0+react@18.0.0-rc.0: + /react-router/6.0.0-beta.4_history@5.2.0: resolution: {integrity: sha512-48JRRZJOwmfOKM12Tv3WjmNkVb2NpSEgDTWC4+MEJaud0+eyLJxqy62CKzOydMlk7hrfRFpC/elUYSZAuyx3qA==} peerDependencies: history: '>=5' react: '>=16.8' dependencies: history: 5.2.0 - react: 18.0.0-rc.0 dev: false + /react-router/6.1.1: + resolution: {integrity: sha512-55o96RiDZmC0uD17DPqVmzzfdNd2Dc+EjkYvMAmHl43du/GItaTdFr5WwjTryNWPXZ+OOVQxQhwAX25UwxpHtw==} + peerDependencies: + react: '>=16.8' + dependencies: + history: 5.2.0 + dev: true + /react-router/6.1.1_react@18.0.0-rc.0: resolution: {integrity: sha512-55o96RiDZmC0uD17DPqVmzzfdNd2Dc+EjkYvMAmHl43du/GItaTdFr5WwjTryNWPXZ+OOVQxQhwAX25UwxpHtw==} peerDependencies: @@ -20409,6 +22226,18 @@ packages: throttle-debounce: 3.0.1 dev: true + /react-syntax-highlighter/13.5.3: + resolution: {integrity: sha512-crPaF+QGPeHNIblxxCdf2Lg936NAHKhNhuMzRL3F9ct6aYXL3NcZtCL0Rms9+qVo6Y1EQLdXGypBNSbPL/r+qg==} + peerDependencies: + react: '>= 0.14.0' + dependencies: + '@babel/runtime': 7.16.3 + highlight.js: 10.7.3 + lowlight: 1.20.0 + prismjs: 1.25.0 + refractor: 3.5.0 + dev: true + /react-syntax-highlighter/13.5.3_react@18.0.0-rc.0: resolution: {integrity: sha512-crPaF+QGPeHNIblxxCdf2Lg936NAHKhNhuMzRL3F9ct6aYXL3NcZtCL0Rms9+qVo6Y1EQLdXGypBNSbPL/r+qg==} peerDependencies: @@ -20422,6 +22251,19 @@ packages: refractor: 3.5.0 dev: true + /react-textarea-autosize/8.3.3: + resolution: {integrity: sha512-2XlHXK2TDxS6vbQaoPbMOfQ8GK7+irc2fVK6QFIcC8GOnH3zI/v481n+j1L0WaPVvKxwesnY93fEfH++sus2rQ==} + engines: {node: '>=10'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + dependencies: + '@babel/runtime': 7.16.3 + use-composed-ref: 1.1.0 + use-latest: 1.2.0 + transitivePeerDependencies: + - '@types/react' + dev: true + /react-textarea-autosize/8.3.3_2fa291bfae6e56080648438396754a97: resolution: {integrity: sha512-2XlHXK2TDxS6vbQaoPbMOfQ8GK7+irc2fVK6QFIcC8GOnH3zI/v481n+j1L0WaPVvKxwesnY93fEfH++sus2rQ==} engines: {node: '>=10'} @@ -20436,15 +22278,13 @@ packages: - '@types/react' dev: true - /react-to-print/2.14.3_757a802188413a36d4f24237d13b8e90: + /react-to-print/2.14.3: resolution: {integrity: sha512-j0EAplQGcw4ujSLfUQoIhf1PgrSLrWRh4NSAiKZdWm6YNXMioHW56cGpbKEJkCpYN1E5g3tvFVHRADn0mTKGzg==} peerDependencies: react: ^15.0.0 || ^16.0.0 || ^17.0.0 react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: prop-types: 15.8.0 - react: 18.0.0-rc.0 - react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 dev: false /react-transition-group/4.4.2_757a802188413a36d4f24237d13b8e90: @@ -20471,6 +22311,37 @@ packages: tslib: 2.3.1 dev: false + /react-universal-interface/0.6.2_tslib@2.3.1: + resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==} + peerDependencies: + react: '*' + tslib: '*' + dependencies: + tslib: 2.3.1 + dev: false + + /react-use/17.3.1: + resolution: {integrity: sha512-hs7+tS4rRm1QLHPfanLCqXIi632tP4V7Sai1ENUP2WTufU6am++tU9uSw9YrNCFqbABiEv0ndKU1XCUcfu2tXA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + dependencies: + '@types/js-cookie': 2.2.7 + '@xobotyi/scrollbar-width': 1.9.5 + copy-to-clipboard: 3.3.1 + fast-deep-equal: 3.1.3 + fast-shallow-equal: 1.0.0 + js-cookie: 2.2.1 + nano-css: 5.3.1 + react-universal-interface: 0.6.2_tslib@2.3.1 + resize-observer-polyfill: 1.5.1 + screenfull: 5.1.0 + set-harmonic-interval: 1.0.1 + throttle-debounce: 3.0.1 + ts-easing: 0.2.0 + tslib: 2.3.1 + dev: false + /react-use/17.3.1_757a802188413a36d4f24237d13b8e90: resolution: {integrity: sha512-hs7+tS4rRm1QLHPfanLCqXIi632tP4V7Sai1ENUP2WTufU6am++tU9uSw9YrNCFqbABiEv0ndKU1XCUcfu2tXA==} peerDependencies: @@ -23097,6 +24968,16 @@ packages: yn: 2.0.0 dev: false + /ts-pnp/1.2.0: + resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==} + engines: {node: '>=6'} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dev: true + /ts-pnp/1.2.0_typescript@4.6.0-dev.20211202: resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==} engines: {node: '>=6'} @@ -23693,6 +25574,14 @@ packages: resolution: {integrity: sha512-12c4Vi40DHVdZ/8mOLjZjp0asCzM6hi8Gj116fpImRP1FN4gBMCtMi9XhLNOmre/FEQYNqHbZmX8iyYAtIcy8Q==} dev: false + /use-composed-ref/1.1.0: + resolution: {integrity: sha512-my1lNHGWsSDAhhVAT4MKs6IjBUtG6ZG11uUqexPH9PptiIZDQOzaF4f5tEbJ2+7qvNbtXNBbU3SfmN+fXlWDhg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + dependencies: + ts-essentials: 2.0.12 + dev: true + /use-composed-ref/1.1.0_react@18.0.0-rc.0: resolution: {integrity: sha512-my1lNHGWsSDAhhVAT4MKs6IjBUtG6ZG11uUqexPH9PptiIZDQOzaF4f5tEbJ2+7qvNbtXNBbU3SfmN+fXlWDhg==} peerDependencies: @@ -23702,6 +25591,16 @@ packages: ts-essentials: 2.0.12 dev: true + /use-isomorphic-layout-effect/1.1.1: + resolution: {integrity: sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dev: true + /use-isomorphic-layout-effect/1.1.1_2fa291bfae6e56080648438396754a97: resolution: {integrity: sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ==} peerDependencies: @@ -23715,6 +25614,18 @@ packages: react: 18.0.0-rc.0 dev: true + /use-latest/1.2.0: + resolution: {integrity: sha512-d2TEuG6nSLKQLAfW3By8mKr8HurOlTkul0sOpxbClIv4SQ4iOd7BYr7VIzdbktUCnv7dua/60xzd8igMU6jmyw==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + use-isomorphic-layout-effect: 1.1.1 + dev: true + /use-latest/1.2.0_2fa291bfae6e56080648438396754a97: resolution: {integrity: sha512-d2TEuG6nSLKQLAfW3By8mKr8HurOlTkul0sOpxbClIv4SQ4iOd7BYr7VIzdbktUCnv7dua/60xzd8igMU6jmyw==} peerDependencies: @@ -23729,6 +25640,14 @@ packages: use-isomorphic-layout-effect: 1.1.1_2fa291bfae6e56080648438396754a97 dev: true + /use-subscription/1.5.1: + resolution: {integrity: sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + dependencies: + object-assign: 4.1.1 + dev: false + /use-subscription/1.5.1_react@18.0.0-rc.0: resolution: {integrity: sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==} peerDependencies: From f56432211eb6ce0c3c40e37209446e9bc57a3fd2 Mon Sep 17 00:00:00 2001 From: Hom Yan Date: Tue, 18 Jan 2022 11:50:08 +0800 Subject: [PATCH 04/27] fix: typo --- .../dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx b/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx index 7458867262ab..413b2849f6ef 100644 --- a/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx +++ b/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx @@ -84,7 +84,7 @@ export const MnemonicRevealForm = memo(() => { useEffect(() => { // handle refresh page after create - const pageRefresHandler = async () => { + const pageRefreshHandler = async () => { const personas = await Services.Identity.queryMyPersonas() for (let i in personas) { if (personas[i].nickname === state.personaName) { @@ -95,7 +95,7 @@ export const MnemonicRevealForm = memo(() => { } } - pageRefresHandler() + pageRefreshHandler() }, []) return ( From 44cf94907993abcf9ae85a38d48c08d6ad215b62 Mon Sep 17 00:00:00 2001 From: Hom Yan Date: Tue, 18 Jan 2022 13:01:12 +0800 Subject: [PATCH 05/27] fix: eslint --- .../dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx | 5 ++--- packages/dashboard/src/pages/SignUp/steps/PersonaCreate.tsx | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx b/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx index 413b2849f6ef..ac39007eb856 100644 --- a/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx +++ b/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx @@ -1,10 +1,9 @@ -import { memo, useCallback, useEffect, useState } from 'react' -import { some } from 'lodash-unified' +import { memo, useEffect, useState } from 'react' import { useLocation, useNavigate } from 'react-router-dom' import { Button, Stack, Box, IconButton } from '@mui/material' import RefreshIcon from '@mui/icons-material/Refresh' import { MaskColorVar, useCustomSnackbar } from '@masknet/theme' -import { DashboardRoutes, delay, ECKeyIdentifier, Identifier } from '@masknet/shared-base' +import { DashboardRoutes, ECKeyIdentifier } from '@masknet/shared-base' import { MaskAlert } from '../../../components/MaskAlert' import { Header } from '../../../components/RegisterFrame/ColumnContentHeader' import { diff --git a/packages/dashboard/src/pages/SignUp/steps/PersonaCreate.tsx b/packages/dashboard/src/pages/SignUp/steps/PersonaCreate.tsx index d7e5cdb701a9..0baaf714c37e 100644 --- a/packages/dashboard/src/pages/SignUp/steps/PersonaCreate.tsx +++ b/packages/dashboard/src/pages/SignUp/steps/PersonaCreate.tsx @@ -45,7 +45,7 @@ export const PersonaCreate = () => { return setError(t.create_account_persona_exists()) } - await navigate(`${DashboardRoutes.SignUp}/${SignUpRoutePath.MnemonicReveal}`, { + navigate(`${DashboardRoutes.SignUp}/${SignUpRoutePath.MnemonicReveal}`, { replace: true, state: { personaName, From 24325c47694783608e208947de557a1136465464 Mon Sep 17 00:00:00 2001 From: Hom Yan Date: Tue, 18 Jan 2022 13:22:56 +0800 Subject: [PATCH 06/27] fix: eslint --- .../src/pages/SignUp/steps/MnemonicRevealForm.tsx | 2 +- .../src/pages/SignUp/steps/PersonaCreate.tsx | 2 +- .../src/pages/SignUp/steps/PreviewDialog.tsx | 14 +++++++------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx b/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx index ac39007eb856..e3ec18bddf3b 100644 --- a/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx +++ b/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx @@ -85,7 +85,7 @@ export const MnemonicRevealForm = memo(() => { // handle refresh page after create const pageRefreshHandler = async () => { const personas = await Services.Identity.queryMyPersonas() - for (let i in personas) { + for (const i in personas) { if (personas[i].nickname === state.personaName) { const id = personas[i].identifier Services.Identity.deletePersona(id, 'delete even with private') diff --git a/packages/dashboard/src/pages/SignUp/steps/PersonaCreate.tsx b/packages/dashboard/src/pages/SignUp/steps/PersonaCreate.tsx index 0baaf714c37e..12d8fbf5d06f 100644 --- a/packages/dashboard/src/pages/SignUp/steps/PersonaCreate.tsx +++ b/packages/dashboard/src/pages/SignUp/steps/PersonaCreate.tsx @@ -34,7 +34,7 @@ export const PersonaCreate = () => { const onNext = async () => { const personas = await Services.Identity.queryMyPersonas() let existing = false - for (let i in personas) { + for (const i in personas) { if (personas[i].nickname === personaName) { existing = true break diff --git a/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx b/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx index 36080c20b6f1..e5f17d5f659d 100644 --- a/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx +++ b/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx @@ -82,7 +82,7 @@ export function PreviewDialog(props: PreviewDialogProps) { - + @@ -102,15 +102,15 @@ const ComponentToPrint = forwardRef((props: PreviewDialogProps, ref: ForwardedRe - + {t.persona()}: {personaName} @@ -146,11 +146,11 @@ const ComponentToPrint = forwardRef((props: PreviewDialogProps, ref: ForwardedRe qrStyle="dots" /> - + {t.create_account_identity_id()} - + {t.create_account_preview_tip()} From f64e01433f8f6386451263362ba89e22d76b917d Mon Sep 17 00:00:00 2001 From: Hom Yan Date: Tue, 18 Jan 2022 13:49:37 +0800 Subject: [PATCH 07/27] chore: watermark file name --- .../images/{watermark.png => MaskWatermark.png} | Bin packages/dashboard/src/assets/index.ts | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename packages/dashboard/src/assets/images/{watermark.png => MaskWatermark.png} (100%) diff --git a/packages/dashboard/src/assets/images/watermark.png b/packages/dashboard/src/assets/images/MaskWatermark.png similarity index 100% rename from packages/dashboard/src/assets/images/watermark.png rename to packages/dashboard/src/assets/images/MaskWatermark.png diff --git a/packages/dashboard/src/assets/index.ts b/packages/dashboard/src/assets/index.ts index 22f91e2a1f16..a6bba9242542 100644 --- a/packages/dashboard/src/assets/index.ts +++ b/packages/dashboard/src/assets/index.ts @@ -4,5 +4,5 @@ export const ABOUT_DIALOG_BACKGROUND = new URL('./images/AboutDialogBackground.png', import.meta.url) export const PoolTogetherURL = new URL('./images/PoolTogether.png', import.meta.url) export const SetupTutorialURL = new URL('./images/SetupTutorial.svg', import.meta.url) -export const WatermarkURL = new URL('./images/Watermark.png', import.meta.url) +export const WatermarkURL = new URL('./images/MaskWatermark.png', import.meta.url) export const MaskBlueURL = new URL('./images/MaskBlue.png', import.meta.url) From 5726858cefcaf6a648e8b93ac3a2fd0b3291c332 Mon Sep 17 00:00:00 2001 From: Hom Yan Date: Tue, 18 Jan 2022 15:49:42 +0800 Subject: [PATCH 08/27] fix: download empty image --- packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx b/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx index e5f17d5f659d..efea36f60209 100644 --- a/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx +++ b/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx @@ -8,6 +8,7 @@ import { useReactToPrint } from 'react-to-print' import { toJpeg } from 'html-to-image' import { MaskBlueURL, WatermarkURL } from '../../../assets' import { useDashboardI18N } from '../../../locales' +import { delay } from '@masknet/shared-base' const useStyles = makeStyles()((theme) => ({ preview: { @@ -65,6 +66,7 @@ export function PreviewDialog(props: PreviewDialogProps) { const link = document.createElement('a') link.download = `mask-persona-${personaName}.jpeg` link.href = dataUrl + await delay(300) link.click() } From 2f3bc27d224664857115896bc8fe062c7b398180 Mon Sep 17 00:00:00 2001 From: Hom Yan Date: Tue, 18 Jan 2022 16:11:51 +0800 Subject: [PATCH 09/27] fix: icon size & QRCode level --- packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx b/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx index efea36f60209..120dad7af13f 100644 --- a/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx +++ b/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx @@ -35,7 +35,7 @@ const useStyles = makeStyles()((theme) => ({ }, infoIcon: { color: MaskColorVar.secondaryInfoText, - fontSize: 20, + fontSize: 24, marginRight: 12, }, })) @@ -139,8 +139,8 @@ const ComponentToPrint = forwardRef((props: PreviewDialogProps, ref: ForwardedRe Date: Tue, 18 Jan 2022 16:44:57 +0800 Subject: [PATCH 10/27] fix: remove logo --- .../src/pages/SignUp/steps/PreviewDialog.tsx | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx b/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx index 120dad7af13f..c148292f9064 100644 --- a/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx +++ b/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx @@ -137,16 +137,7 @@ const ComponentToPrint = forwardRef((props: PreviewDialogProps, ref: ForwardedRe - + {t.create_account_identity_id()} From bce93ec58c078444382d547ec334b7089696b14d Mon Sep 17 00:00:00 2001 From: Hom Yan Date: Tue, 18 Jan 2022 16:52:10 +0800 Subject: [PATCH 11/27] fix: eslint --- packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx b/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx index c148292f9064..3e20c565931c 100644 --- a/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx +++ b/packages/dashboard/src/pages/SignUp/steps/PreviewDialog.tsx @@ -6,7 +6,7 @@ import { MiniMaskIcon, InfoIcon } from '@masknet/icons' import { ForwardedRef, forwardRef, useRef } from 'react' import { useReactToPrint } from 'react-to-print' import { toJpeg } from 'html-to-image' -import { MaskBlueURL, WatermarkURL } from '../../../assets' +import { WatermarkURL } from '../../../assets' import { useDashboardI18N } from '../../../locales' import { delay } from '@masknet/shared-base' From 672426b17bfe15e8f866f1c040a03105cdfa28c5 Mon Sep 17 00:00:00 2001 From: Hom Yan Date: Wed, 19 Jan 2022 11:24:29 +0800 Subject: [PATCH 12/27] fix: recovery --- .../Restore/RestoreFromMnemonic.tsx | 2 +- .../Restore/RestoreFromPrivateKey.tsx | 2 +- .../dashboard/src/pages/SignUp/routePath.ts | 1 + .../dashboard/src/pages/SignUp/routes.tsx | 4 +- .../src/pages/SignUp/steps/PersonaCreate.tsx | 61 +------------- .../src/pages/SignUp/steps/PersonaNameUI.tsx | 81 +++++++++++++++++++ .../pages/SignUp/steps/PersonaRecovery.tsx | 53 ++++++++++++ .../dashboard/src/pages/SignUp/steps/index.ts | 1 + 8 files changed, 145 insertions(+), 60 deletions(-) create mode 100644 packages/dashboard/src/pages/SignUp/steps/PersonaNameUI.tsx create mode 100644 packages/dashboard/src/pages/SignUp/steps/PersonaRecovery.tsx diff --git a/packages/dashboard/src/components/Restore/RestoreFromMnemonic.tsx b/packages/dashboard/src/components/Restore/RestoreFromMnemonic.tsx index a25c83924901..37c755edcd5c 100644 --- a/packages/dashboard/src/components/Restore/RestoreFromMnemonic.tsx +++ b/packages/dashboard/src/components/Restore/RestoreFromMnemonic.tsx @@ -38,7 +38,7 @@ export const RestoreFromMnemonic = () => { await changeCurrentPersona(persona.identifier) navigate(DashboardRoutes.Personas, { replace: true }) } else { - navigate(`${DashboardRoutes.SignUp}/${SignUpRoutePath.PersonaCreate}`, { + navigate(`${DashboardRoutes.SignUp}/${SignUpRoutePath.PersonaRecovery}`, { replace: false, state: { mnemonic: values }, }) diff --git a/packages/dashboard/src/components/Restore/RestoreFromPrivateKey.tsx b/packages/dashboard/src/components/Restore/RestoreFromPrivateKey.tsx index c8ad1cfb6b53..ff0738ddd69a 100644 --- a/packages/dashboard/src/components/Restore/RestoreFromPrivateKey.tsx +++ b/packages/dashboard/src/components/Restore/RestoreFromPrivateKey.tsx @@ -46,7 +46,7 @@ export const RestoreFromPrivateKey = memo(() => { await delay(100) navigate(DashboardRoutes.Personas) } else { - navigate(`${DashboardRoutes.SignUp}/${SignUpRoutePath.PersonaCreate}`, { + navigate(`${DashboardRoutes.SignUp}/${SignUpRoutePath.PersonaRecovery}`, { replace: false, state: { privateKey: data.privateKey }, }) diff --git a/packages/dashboard/src/pages/SignUp/routePath.ts b/packages/dashboard/src/pages/SignUp/routePath.ts index 0a5b1f235311..54dc1174cc3d 100644 --- a/packages/dashboard/src/pages/SignUp/routePath.ts +++ b/packages/dashboard/src/pages/SignUp/routePath.ts @@ -1,5 +1,6 @@ export enum SignUpRoutePath { MnemonicReveal = 'mnemonic-reveal', PersonaCreate = 'persona-create', + PersonaRecovery = 'persona-recovery', ConnectSocialMedia = 'connect-social-media', } diff --git a/packages/dashboard/src/pages/SignUp/routes.tsx b/packages/dashboard/src/pages/SignUp/routes.tsx index b9ecccfbe6da..88029644a340 100644 --- a/packages/dashboard/src/pages/SignUp/routes.tsx +++ b/packages/dashboard/src/pages/SignUp/routes.tsx @@ -1,5 +1,5 @@ import { Route, Routes, useParams } from 'react-router-dom' -import { ConnectSocialMedia, MnemonicRevealForm, PersonaCreate } from './steps' +import { ConnectSocialMedia, MnemonicRevealForm, PersonaCreate, PersonaRecovery } from './steps' import { SignUpRoutePath } from './routePath' const Actions = () => { @@ -10,6 +10,8 @@ const Actions = () => { return case SignUpRoutePath.PersonaCreate: return + case SignUpRoutePath.PersonaRecovery: + return case SignUpRoutePath.ConnectSocialMedia: return default: diff --git a/packages/dashboard/src/pages/SignUp/steps/PersonaCreate.tsx b/packages/dashboard/src/pages/SignUp/steps/PersonaCreate.tsx index 12d8fbf5d06f..e1269742461d 100644 --- a/packages/dashboard/src/pages/SignUp/steps/PersonaCreate.tsx +++ b/packages/dashboard/src/pages/SignUp/steps/PersonaCreate.tsx @@ -1,37 +1,18 @@ -import { useEffect, useState } from 'react' +import { useState } from 'react' import { useNavigate } from 'react-router-dom' -import { MaskTextField } from '@masknet/theme' -import { - Body, - ColumnContentLayout, - Footer, - PersonaLogoBox, - SignUpAccountLogo, -} from '../../../components/RegisterFrame/ColumnContentLayout' import { DashboardRoutes } from '@masknet/shared-base' -import { Header } from '../../../components/RegisterFrame/ColumnContentHeader' -import { Box, Button, Typography } from '@mui/material' import { useDashboardI18N } from '../../../locales' import { SignUpRoutePath } from '../routePath' -import { ButtonContainer } from '../../../components/RegisterFrame/ButtonContainer' import { Services } from '../../../API' - -const Label = ({ value }: { value: string }) => ( - theme.palette.primary.main }}> - {value} - -) +import { PersonaNameUI } from './PersonaNameUI' export const PersonaCreate = () => { const t = useDashboardI18N() const navigate = useNavigate() - const [personaName, setPersonaName] = useState('') const [error, setError] = useState('') - const onNext = async () => { + const onNext = async (personaName: string) => { const personas = await Services.Identity.queryMyPersonas() let existing = false for (const i in personas) { @@ -53,39 +34,5 @@ export const PersonaCreate = () => { }) } - useEffect(() => { - setError('') - }, [personaName]) - - return ( - -
navigate(DashboardRoutes.SignIn) }} - /> - - - - - - } - InputProps={{ disableUnderline: true }} - onChange={(e) => setPersonaName(e.currentTarget.value)} - inputProps={{ maxLength: 24 }} - error={!!error} - helperText={error} - /> - - - - - -