Vite App
+ Haveno
diff --git a/packages/renderer/src/Routes.tsx b/packages/renderer/src/Routes.tsx
index e5e8240..105d5ca 100644
--- a/packages/renderer/src/Routes.tsx
+++ b/packages/renderer/src/Routes.tsx
@@ -15,19 +15,23 @@
// =============================================================================
import { Routes, Route } from "react-router-dom";
-import { Home } from "@pages/Home";
-import { Page2 } from "@pages/Page2";
+import { Home, Welcome } from "@pages/Onboarding";
+import { Wallet } from "@pages/Wallet";
export const ROUTES = {
Home: "/",
- Page2: "page2",
+ Welcome: "/onboarding/welcome",
+ RestoreBackup: "/onboarding/restore-backup",
+ SetupAccount: "/onboarding/setup",
+ Wallet: "/wallet",
};
export function AppRoutes() {
return (
} />
- } />
+ } />
+ } />
);
}
diff --git a/packages/renderer/src/components/atoms/IntlProvider/index.tsx b/packages/renderer/src/components/atoms/AppProviders/IntlProvider.tsx
similarity index 82%
rename from packages/renderer/src/components/atoms/IntlProvider/index.tsx
rename to packages/renderer/src/components/atoms/AppProviders/IntlProvider.tsx
index 63f0d44..462c0af 100644
--- a/packages/renderer/src/components/atoms/IntlProvider/index.tsx
+++ b/packages/renderer/src/components/atoms/AppProviders/IntlProvider.tsx
@@ -17,12 +17,8 @@
import type { FC } from "react";
import { useEffect, useMemo, useState } from "react";
import { IntlProvider as ReacIntlProvider } from "react-intl";
-import type { LangKeys } from "@src/constants/lang/LangKeys";
-
-const SupportedLocales = {
- EN: "en",
- ES: "es",
-};
+import type { LangKeys } from "@src/constants/lang";
+import { LangPack, SupportedLocales } from "@src/constants/lang";
const DEFAULT_LOCALE = SupportedLocales.EN;
@@ -37,12 +33,7 @@ export const IntlProvider: FC = ({ children }) => {
);
useEffect(() => {
- console.log(navigator.language);
- import(/* @vite-ignore */ `../../../constants/lang/${locale}.ts`).then(
- (val) => {
- setMessages(val.default);
- }
- );
+ setMessages(LangPack[locale] ?? LangPack[DEFAULT_LOCALE]);
}, [locale]);
return (
diff --git a/packages/renderer/src/components/atoms/AppProviders/QueryClientProvider.tsx b/packages/renderer/src/components/atoms/AppProviders/QueryClientProvider.tsx
new file mode 100644
index 0000000..28ff4a3
--- /dev/null
+++ b/packages/renderer/src/components/atoms/AppProviders/QueryClientProvider.tsx
@@ -0,0 +1,31 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import type { FC } from "react";
+import { QueryClient, QueryClientProvider as QCProvider } from "react-query";
+
+const queryClient = new QueryClient({
+ defaultOptions: {
+ queries: {
+ refetchOnWindowFocus: false,
+ staleTime: 60 * 1000, // 60 sec
+ },
+ },
+});
+
+export const QueryClientProvider: FC = ({ children }) => (
+ {children}
+);
diff --git a/packages/renderer/src/pages/Home.tsx b/packages/renderer/src/components/atoms/AppProviders/ThemeProvider.tsx
similarity index 66%
rename from packages/renderer/src/pages/Home.tsx
rename to packages/renderer/src/components/atoms/AppProviders/ThemeProvider.tsx
index 64e59f7..472a3b7 100644
--- a/packages/renderer/src/pages/Home.tsx
+++ b/packages/renderer/src/components/atoms/AppProviders/ThemeProvider.tsx
@@ -14,19 +14,15 @@
// limitations under the License.
// =============================================================================
-import { Link } from "react-router-dom";
-import { ROUTES } from "@src/Routes";
-import { FormattedMessage } from "react-intl";
-import { LangKeys } from "@constants/lang/LangKeys";
+import type { FC } from "react";
+import { MantineProvider, Global } from "@mantine/core";
+import { themeOverride, globalStyles } from "@src/theme";
-export function Home() {
+export const ThemeProvider: FC = ({ children }) => {
return (
-
-
Home
-
-
-
- Page 2
-
+
+
+ {children}
+
);
-}
+};
diff --git a/packages/renderer/src/components/atoms/AppProviders/index.tsx b/packages/renderer/src/components/atoms/AppProviders/index.tsx
new file mode 100644
index 0000000..e12b265
--- /dev/null
+++ b/packages/renderer/src/components/atoms/AppProviders/index.tsx
@@ -0,0 +1,31 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import type { FC } from "react";
+import { RecoilRoot } from "recoil";
+import { QueryClientProvider } from "./QueryClientProvider";
+import { IntlProvider } from "./IntlProvider";
+import { ThemeProvider } from "./ThemeProvider";
+
+export const AppProviders: FC = ({ children }) => (
+
+
+
+ {children}
+
+
+
+);
diff --git a/packages/renderer/src/components/atoms/Buttons/Buttons.stories.tsx b/packages/renderer/src/components/atoms/Buttons/Buttons.stories.tsx
new file mode 100644
index 0000000..06789ee
--- /dev/null
+++ b/packages/renderer/src/components/atoms/Buttons/Buttons.stories.tsx
@@ -0,0 +1,38 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import { Stack } from "@mantine/core";
+import type { ComponentStory, ComponentMeta } from "@storybook/react";
+import { Button } from ".";
+
+export default {
+ title: "atoms/Buttons",
+ component: Button,
+} as ComponentMeta;
+
+const Template: ComponentStory = () => {
+ return (
+
+
+
+
+
+
+ );
+};
+
+export const Default = Template.bind({});
+Default.args = {};
diff --git a/packages/renderer/src/components/atoms/Buttons/Buttons.test.tsx b/packages/renderer/src/components/atoms/Buttons/Buttons.test.tsx
new file mode 100644
index 0000000..166f080
--- /dev/null
+++ b/packages/renderer/src/components/atoms/Buttons/Buttons.test.tsx
@@ -0,0 +1,41 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import { describe, expect, it } from "vitest";
+import { render } from "@testing-library/react";
+import { Button } from ".";
+
+describe("atoms::Buttons", () => {
+ it("renders primary button by default", () => {
+ const { asFragment } = render();
+ expect(asFragment()).toMatchSnapshot();
+ });
+
+ it("renders neutral button", () => {
+ const { asFragment } = render();
+ expect(asFragment()).toMatchSnapshot();
+ });
+
+ it("renders success button", () => {
+ const { asFragment } = render();
+ expect(asFragment()).toMatchSnapshot();
+ });
+
+ it("renders error button", () => {
+ const { asFragment } = render();
+ expect(asFragment()).toMatchSnapshot();
+ });
+});
diff --git a/packages/renderer/src/components/atoms/Buttons/Buttons.tsx b/packages/renderer/src/components/atoms/Buttons/Buttons.tsx
new file mode 100644
index 0000000..cb9b1f4
--- /dev/null
+++ b/packages/renderer/src/components/atoms/Buttons/Buttons.tsx
@@ -0,0 +1,69 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import type { ButtonProps as MButtonProps } from "@mantine/core";
+import { Button as MButton, createStyles } from "@mantine/core";
+
+type ButtonProps = MButtonProps & {
+ flavor?: "primary" | "neutral" | "success" | "danger";
+};
+
+export function Button(props: ButtonProps) {
+ const { children, flavor = "primary", ...rest } = props;
+ const { classes, cx } = useStyles();
+
+ return (
+
+ {children}
+
+ );
+}
+
+const useStyles = createStyles((theme) => ({
+ common: {
+ borderRadius: 10,
+ fontWeight: 600,
+ height: 48,
+ padding: "1rem",
+ },
+ neutral: {
+ backgroundColor: theme.colors.gray[2],
+ color: theme.colors.gray[9],
+ "&:hover": {
+ backgroundColor: theme.colors.gray[3],
+ },
+ },
+ success: {
+ backgroundColor: theme.colors.green[7],
+ "&:hover": {
+ backgroundColor: theme.colors.green[8],
+ },
+ },
+ danger: {
+ backgroundColor: theme.colors.red[6],
+ "&:hover": {
+ backgroundColor: theme.colors.red[7],
+ },
+ },
+}));
diff --git a/packages/renderer/src/components/atoms/Buttons/__snapshots__/Buttons.test.tsx.snap b/packages/renderer/src/components/atoms/Buttons/__snapshots__/Buttons.test.tsx.snap
new file mode 100644
index 0000000..80cd1e3
--- /dev/null
+++ b/packages/renderer/src/components/atoms/Buttons/__snapshots__/Buttons.test.tsx.snap
@@ -0,0 +1,77 @@
+// Vitest Snapshot v1
+
+exports[`atoms::Buttons > renders error button 1`] = `
+
+
+
+`;
+
+exports[`atoms::Buttons > renders neutral button 1`] = `
+
+
+
+`;
+
+exports[`atoms::Buttons > renders primary button by default 1`] = `
+
+
+
+`;
+
+exports[`atoms::Buttons > renders success button 1`] = `
+
+
+
+`;
diff --git a/packages/renderer/src/components/atoms/Buttons/index.ts b/packages/renderer/src/components/atoms/Buttons/index.ts
new file mode 100644
index 0000000..62a9dd4
--- /dev/null
+++ b/packages/renderer/src/components/atoms/Buttons/index.ts
@@ -0,0 +1,17 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+export * from "./Buttons";
diff --git a/packages/renderer/src/components/atoms/ConnectionProgress/ConnectionProgress.stories.tsx b/packages/renderer/src/components/atoms/ConnectionProgress/ConnectionProgress.stories.tsx
new file mode 100644
index 0000000..08dd35e
--- /dev/null
+++ b/packages/renderer/src/components/atoms/ConnectionProgress/ConnectionProgress.stories.tsx
@@ -0,0 +1,35 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import { Stack } from "@mantine/core";
+import type { ComponentStory, ComponentMeta } from "@storybook/react";
+import { ConnectionProgress } from ".";
+
+export default {
+ title: "atoms/ConnectionProgress",
+ component: ConnectionProgress,
+} as ComponentMeta;
+
+const Template: ComponentStory = () => {
+ return (
+
+
+
+ );
+};
+
+export const Default = Template.bind({});
+Default.args = {};
diff --git a/packages/renderer/src/components/atoms/ConnectionProgress/ConnectionProgress.test.tsx b/packages/renderer/src/components/atoms/ConnectionProgress/ConnectionProgress.test.tsx
new file mode 100644
index 0000000..707ecc3
--- /dev/null
+++ b/packages/renderer/src/components/atoms/ConnectionProgress/ConnectionProgress.test.tsx
@@ -0,0 +1,31 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import { describe, expect, it } from "vitest";
+import { render } from "@testing-library/react";
+import { AppProviders } from "@atoms/AppProviders";
+import { ConnectionProgress } from ".";
+
+describe("atoms::ConnectionProgress", () => {
+ it("renders without exploding", () => {
+ const { asFragment } = render(
+
+
+
+ );
+ expect(asFragment()).toMatchSnapshot();
+ });
+});
diff --git a/packages/renderer/src/components/atoms/ConnectionProgress/ConnectionProgress.tsx b/packages/renderer/src/components/atoms/ConnectionProgress/ConnectionProgress.tsx
new file mode 100644
index 0000000..a19f86c
--- /dev/null
+++ b/packages/renderer/src/components/atoms/ConnectionProgress/ConnectionProgress.tsx
@@ -0,0 +1,59 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import { Box, createStyles, keyframes, Stack, Text } from "@mantine/core";
+import { FormattedMessage } from "react-intl";
+import { LangKeys } from "@constants/lang/LangKeys";
+
+export function ConnectionProgress() {
+ const { classes } = useStyles();
+ return (
+
+
+
+
+
+
+
+
+ );
+}
+
+const bounce = keyframes({
+ "from, to": { transform: "translate3d(0, 0, 0)" },
+ "50%": { transform: "translate3d(19rem, 0, 0)" },
+});
+
+const useStyles = createStyles((theme) => ({
+ container: {
+ background: "rgba(17, 17, 17, 0.15)",
+ borderRadius: 3,
+ height: 6,
+ position: "relative",
+ width: "23rem",
+ },
+ bar: {
+ animation: `${bounce} 3s ease-in-out infinite`,
+ background: theme.colors.brand[5],
+ borderRadius: 3,
+ height: 6,
+ position: "absolute",
+ width: "4rem",
+ },
+}));
diff --git a/packages/renderer/src/components/atoms/ConnectionProgress/__snapshots__/ConnectionProgress.test.tsx.snap b/packages/renderer/src/components/atoms/ConnectionProgress/__snapshots__/ConnectionProgress.test.tsx.snap
new file mode 100644
index 0000000..1288e2c
--- /dev/null
+++ b/packages/renderer/src/components/atoms/ConnectionProgress/__snapshots__/ConnectionProgress.test.tsx.snap
@@ -0,0 +1,22 @@
+// Vitest Snapshot v1
+
+exports[`atoms::ConnectionProgress > renders without exploding 1`] = `
+
+
+
+ Connecting to Monero Network
+
+
+
+
+
+
+`;
diff --git a/packages/renderer/src/components/atoms/ConnectionProgress/index.ts b/packages/renderer/src/components/atoms/ConnectionProgress/index.ts
new file mode 100644
index 0000000..8a82d8d
--- /dev/null
+++ b/packages/renderer/src/components/atoms/ConnectionProgress/index.ts
@@ -0,0 +1,17 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+export * from "./ConnectionProgress";
diff --git a/packages/renderer/src/components/atoms/__stories__/Header.stories.tsx b/packages/renderer/src/components/atoms/Header/Header.stories.tsx
similarity index 77%
rename from packages/renderer/src/components/atoms/__stories__/Header.stories.tsx
rename to packages/renderer/src/components/atoms/Header/Header.stories.tsx
index d2ea922..661a4b8 100644
--- a/packages/renderer/src/components/atoms/__stories__/Header.stories.tsx
+++ b/packages/renderer/src/components/atoms/Header/Header.stories.tsx
@@ -14,16 +14,21 @@
// limitations under the License.
// =============================================================================
+import { Stack } from "@mantine/core";
import type { ComponentStory, ComponentMeta } from "@storybook/react";
-import { Header } from "../Header";
+import { HeaderWithLogo } from ".";
export default {
title: "atoms/Header",
- component: Header,
-} as ComponentMeta;
+ component: HeaderWithLogo,
+} as ComponentMeta;
-const Template: ComponentStory = () => {
- return ;
+const Template: ComponentStory = () => {
+ return (
+
+
+
+ );
};
export const Default = Template.bind({});
diff --git a/packages/renderer/src/components/atoms/Header/HeaderWithLogo.test.tsx b/packages/renderer/src/components/atoms/Header/HeaderWithLogo.test.tsx
new file mode 100644
index 0000000..e3bbbdc
--- /dev/null
+++ b/packages/renderer/src/components/atoms/Header/HeaderWithLogo.test.tsx
@@ -0,0 +1,31 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import { describe, expect, it } from "vitest";
+import { render } from "@testing-library/react";
+import { AppProviders } from "@atoms/AppProviders";
+import { HeaderWithLogo } from ".";
+
+describe("atoms::HeaderWithLogo", () => {
+ it("renders without exploding", () => {
+ const { asFragment } = render(
+
+
+
+ );
+ expect(asFragment()).toMatchSnapshot();
+ });
+});
diff --git a/packages/renderer/src/components/atoms/Header/index.tsx b/packages/renderer/src/components/atoms/Header/HeaderWithLogo.tsx
similarity index 76%
rename from packages/renderer/src/components/atoms/Header/index.tsx
rename to packages/renderer/src/components/atoms/Header/HeaderWithLogo.tsx
index 121a1fc..b88bd20 100644
--- a/packages/renderer/src/components/atoms/Header/index.tsx
+++ b/packages/renderer/src/components/atoms/Header/HeaderWithLogo.tsx
@@ -15,13 +15,16 @@
// =============================================================================
import { Box } from "@mantine/core";
-import { FormattedMessage } from "react-intl";
-import { LangKeys } from "@constants/lang/LangKeys";
+import Logo from "@assets/logo.svg";
-export function Header() {
+export function HeaderWithLogo() {
return (
-
-
+
+
);
}
diff --git a/packages/renderer/src/components/atoms/Header/__snapshots__/HeaderWithLogo.test.tsx.snap b/packages/renderer/src/components/atoms/Header/__snapshots__/HeaderWithLogo.test.tsx.snap
new file mode 100644
index 0000000..63bccf2
--- /dev/null
+++ b/packages/renderer/src/components/atoms/Header/__snapshots__/HeaderWithLogo.test.tsx.snap
@@ -0,0 +1,15 @@
+// Vitest Snapshot v1
+
+exports[`atoms::HeaderWithLogo > renders without exploding 1`] = `
+
+
+
+
+
+`;
diff --git a/packages/renderer/src/components/atoms/Header/index.ts b/packages/renderer/src/components/atoms/Header/index.ts
new file mode 100644
index 0000000..d9b2bd6
--- /dev/null
+++ b/packages/renderer/src/components/atoms/Header/index.ts
@@ -0,0 +1,17 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+export * from "./HeaderWithLogo";
diff --git a/packages/renderer/src/components/molecules/.gitkeep b/packages/renderer/src/components/molecules/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/packages/renderer/src/components/molecules/Sidebar/Sidebar.stories.tsx b/packages/renderer/src/components/molecules/Sidebar/Sidebar.stories.tsx
new file mode 100644
index 0000000..44d13c6
--- /dev/null
+++ b/packages/renderer/src/components/molecules/Sidebar/Sidebar.stories.tsx
@@ -0,0 +1,35 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import { Stack } from "@mantine/core";
+import type { ComponentStory, ComponentMeta } from "@storybook/react";
+import { Sidebar } from ".";
+
+export default {
+ title: "molecules/Sidebar",
+ component: Sidebar,
+} as ComponentMeta;
+
+const Template: ComponentStory = () => {
+ return (
+
+
+
+ );
+};
+
+export const Default = Template.bind({});
+Default.args = {};
diff --git a/packages/renderer/src/components/molecules/Sidebar/Sidebar.test.tsx b/packages/renderer/src/components/molecules/Sidebar/Sidebar.test.tsx
new file mode 100644
index 0000000..d95b3b2
--- /dev/null
+++ b/packages/renderer/src/components/molecules/Sidebar/Sidebar.test.tsx
@@ -0,0 +1,31 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import { describe, expect, it } from "vitest";
+import { render } from "@testing-library/react";
+import { AppProviders } from "@atoms/AppProviders";
+import { Sidebar } from ".";
+
+describe("molecules::Sidebar", () => {
+ it("renders without exploding", () => {
+ const { asFragment } = render(
+
+
+
+ );
+ expect(asFragment()).toMatchSnapshot();
+ });
+});
diff --git a/packages/renderer/src/components/molecules/Sidebar/Sidebar.tsx b/packages/renderer/src/components/molecules/Sidebar/Sidebar.tsx
new file mode 100644
index 0000000..c072377
--- /dev/null
+++ b/packages/renderer/src/components/molecules/Sidebar/Sidebar.tsx
@@ -0,0 +1,54 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import { Box, createStyles, Navbar, Stack } from "@mantine/core";
+import { WalletBalance } from "@molecules/WalletBalance";
+import { ReactComponent as Logo } from "@assets/logo-icon.svg";
+import { NavLink } from "./_NavLink";
+import { NAV_LINKS, WIDTH } from "./_constants";
+
+export function Sidebar() {
+ const { classes } = useStyles();
+ return (
+
+
+
+
+
+ {NAV_LINKS.map((link) => (
+
+
+
+ ))}
+
+
+
+
+
+
+
+ );
+}
+
+const useStyles = createStyles((theme) => ({
+ logo: {
+ height: 32,
+ padding: `${theme.spacing.lg} ${theme.spacing.xl}`,
+ },
+ container: {
+ width: WIDTH,
+ },
+}));
diff --git a/packages/renderer/src/components/molecules/Sidebar/_NavLink.tsx b/packages/renderer/src/components/molecules/Sidebar/_NavLink.tsx
new file mode 100644
index 0000000..31dce6b
--- /dev/null
+++ b/packages/renderer/src/components/molecules/Sidebar/_NavLink.tsx
@@ -0,0 +1,88 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import type { ReactNode } from "react";
+import { UnstyledButton, Group, Text, createStyles } from "@mantine/core";
+
+interface NavLinkProps {
+ icon: ReactNode;
+ isActive?: boolean;
+ label: string;
+}
+
+export function NavLink({ icon, isActive = false, label }: NavLinkProps) {
+ const { classes } = useStyles({ isActive });
+ return (
+
+
+ {icon}
+
+ {label}
+
+
+
+ );
+}
+
+const useStyles = createStyles(
+ (theme, { isActive }, getRef) => ({
+ navLink: {
+ display: "block",
+ padding: "1.5rem 2.5rem",
+ transition: "opacity 0.2s",
+ width: "100%",
+
+ [`svg, .${getRef("text")}`]: {
+ opacity: isActive ? 1 : 0.5,
+ transition: "opacity 0.2s",
+ },
+
+ svg: isActive
+ ? {
+ path: {
+ fill: theme.colors.brand[6],
+ },
+ }
+ : null,
+
+ "&:hover": {
+ backgroundColor:
+ theme.colorScheme === "dark"
+ ? theme.colors.dark[6]
+ : theme.colors.gray[0],
+
+ [`svg, .${getRef("text")}`]: {
+ opacity: 1,
+ },
+ },
+ },
+ text: {
+ ref: getRef("text"),
+ color:
+ theme.colorScheme === "dark"
+ ? theme.colors.dark[6]
+ : theme.colors.dark[8],
+
+ transition: "opacity 0.2s",
+ },
+ })
+);
diff --git a/packages/renderer/src/components/molecules/Sidebar/__snapshots__/Sidebar.test.tsx.snap b/packages/renderer/src/components/molecules/Sidebar/__snapshots__/Sidebar.test.tsx.snap
new file mode 100644
index 0000000..4bf3307
--- /dev/null
+++ b/packages/renderer/src/components/molecules/Sidebar/__snapshots__/Sidebar.test.tsx.snap
@@ -0,0 +1,352 @@
+// Vitest Snapshot v1
+
+exports[`molecules::Sidebar > renders without exploding 1`] = `
+
+
+
+
+
+`;
diff --git a/packages/renderer/src/components/molecules/Sidebar/_constants.tsx b/packages/renderer/src/components/molecules/Sidebar/_constants.tsx
new file mode 100644
index 0000000..603b449
--- /dev/null
+++ b/packages/renderer/src/components/molecules/Sidebar/_constants.tsx
@@ -0,0 +1,46 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import { ReactComponent as MarketsIcon } from "@assets/markets.svg";
+import { ReactComponent as OffersIcon } from "@assets/offers.svg";
+import { ReactComponent as TradesIcon } from "@assets/trades.svg";
+import { ReactComponent as NotificationsIcon } from "@assets/notifications.svg";
+import { ReactComponent as AccountIcon } from "@assets/account.svg";
+
+export const WIDTH = 210;
+
+export const NAV_LINKS = [
+ {
+ icon: ,
+ label: "Markets",
+ },
+ {
+ icon: ,
+ label: "My Offers",
+ },
+ {
+ icon: ,
+ label: "My Trades",
+ },
+ {
+ icon: ,
+ label: "Notifications",
+ },
+ {
+ icon: ,
+ label: "Account",
+ },
+];
diff --git a/packages/renderer/src/components/molecules/Sidebar/index.ts b/packages/renderer/src/components/molecules/Sidebar/index.ts
new file mode 100644
index 0000000..66201df
--- /dev/null
+++ b/packages/renderer/src/components/molecules/Sidebar/index.ts
@@ -0,0 +1,17 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+export * from "./Sidebar";
diff --git a/packages/renderer/src/components/molecules/WalletBalance/WalletBalance.stories.tsx b/packages/renderer/src/components/molecules/WalletBalance/WalletBalance.stories.tsx
new file mode 100644
index 0000000..01dac26
--- /dev/null
+++ b/packages/renderer/src/components/molecules/WalletBalance/WalletBalance.stories.tsx
@@ -0,0 +1,35 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import { Stack } from "@mantine/core";
+import type { ComponentStory, ComponentMeta } from "@storybook/react";
+import { WalletBalance } from ".";
+
+export default {
+ title: "molecules/WalletBalance",
+ component: WalletBalance,
+} as ComponentMeta;
+
+const Template: ComponentStory = () => {
+ return (
+
+
+
+ );
+};
+
+export const Default = Template.bind({});
+Default.args = {};
diff --git a/packages/renderer/src/components/molecules/WalletBalance/WalletBalance.test.tsx b/packages/renderer/src/components/molecules/WalletBalance/WalletBalance.test.tsx
new file mode 100644
index 0000000..84382b5
--- /dev/null
+++ b/packages/renderer/src/components/molecules/WalletBalance/WalletBalance.test.tsx
@@ -0,0 +1,31 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import { describe, expect, it } from "vitest";
+import { render } from "@testing-library/react";
+import { AppProviders } from "@atoms/AppProviders";
+import { WalletBalance } from ".";
+
+describe("molecules::WalletBalance", () => {
+ it("renders without exploding", () => {
+ const { asFragment } = render(
+
+
+
+ );
+ expect(asFragment()).toMatchSnapshot();
+ });
+});
diff --git a/packages/renderer/src/components/molecules/WalletBalance/WalletBalance.tsx b/packages/renderer/src/components/molecules/WalletBalance/WalletBalance.tsx
new file mode 100644
index 0000000..2bbc0dd
--- /dev/null
+++ b/packages/renderer/src/components/molecules/WalletBalance/WalletBalance.tsx
@@ -0,0 +1,115 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import { useState } from "react";
+import {
+ Box,
+ Collapse,
+ createStyles,
+ Group,
+ Stack,
+ Text,
+ UnstyledButton,
+} from "@mantine/core";
+import { ReactComponent as XMRLogo } from "@assets/xmr-logo-1.svg";
+import { ReactComponent as ArrowDown } from "@assets/arrow-down.svg";
+
+export function WalletBalance() {
+ const [isOpen, setOpen] = useState(false);
+ const { classes } = useStyles({ isOpen });
+ return (
+
+
+
+
+
+ Available Balance
+
+
+
+ setOpen(!isOpen)}
+ >
+
+ 10.647382650365
+
+
+
+ (EUR 2441,02)
+
+
+
+
+ Total
+ 14.048212174412
+
+
+ Reserved
+ 2.874598526325
+
+
+ Locked
+ 0.854975624859
+
+
+
+
+
+ );
+}
+
+const useStyles = createStyles(
+ (theme, params) => ({
+ container: {
+ border: `solid 1px ${theme.colors.gray[4]}`,
+ borderRadius: theme.radius.md,
+ padding: theme.spacing.md,
+ },
+ heading: {
+ fontSize: "0.5rem",
+ fontWeight: 700,
+ textTransform: "uppercase",
+ },
+ btnToggle: {
+ svg: {
+ transform: `rotate(${params.isOpen ? 180 : 0}deg)`,
+ transition: "transform 0.2s",
+ width: 8,
+ },
+ },
+ xmr: {
+ fontSize: "0.75rem",
+ fontWeight: 600,
+ },
+ fiat: {
+ color: theme.colors.gray[6],
+ fontSize: "0.625rem",
+ fontWeight: 500,
+ },
+ balanceLabel: {
+ color: theme.colors.gray[6],
+ fontSize: "0.625rem",
+ fontWeight: 700,
+ textTransform: "uppercase",
+ },
+ balanceValue: {
+ color: theme.colors.gray[8],
+ fontSize: "0.625rem",
+ fontWeight: 600,
+ },
+ })
+);
diff --git a/packages/renderer/src/components/molecules/WalletBalance/__snapshots__/WalletBalance.test.tsx.snap b/packages/renderer/src/components/molecules/WalletBalance/__snapshots__/WalletBalance.test.tsx.snap
new file mode 100644
index 0000000..531906a
--- /dev/null
+++ b/packages/renderer/src/components/molecules/WalletBalance/__snapshots__/WalletBalance.test.tsx.snap
@@ -0,0 +1,149 @@
+// Vitest Snapshot v1
+
+exports[`molecules::WalletBalance > renders without exploding 1`] = `
+
+
+
+
+
+
+ Available Balance
+
+
+
+
+
+ (EUR 2441,02)
+
+
+
+
+
+
+
+ Total
+
+
+ 14.048212174412
+
+
+
+
+ Reserved
+
+
+ 2.874598526325
+
+
+
+
+ Locked
+
+
+ 0.854975624859
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/renderer/src/components/molecules/WalletBalance/index.ts b/packages/renderer/src/components/molecules/WalletBalance/index.ts
new file mode 100644
index 0000000..4bf7da7
--- /dev/null
+++ b/packages/renderer/src/components/molecules/WalletBalance/index.ts
@@ -0,0 +1,17 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+export * from "./WalletBalance";
diff --git a/packages/renderer/src/components/templates/.gitkeep b/packages/renderer/src/components/templates/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/packages/renderer/src/components/templates/CenteredLayout/index.tsx b/packages/renderer/src/components/templates/CenteredLayout/index.tsx
new file mode 100644
index 0000000..e705bae
--- /dev/null
+++ b/packages/renderer/src/components/templates/CenteredLayout/index.tsx
@@ -0,0 +1,35 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import type { FC } from "react";
+import { Container, Stack } from "@mantine/core";
+import { HeaderWithLogo } from "@atoms/Header";
+
+interface CenteredLayoutProps {
+ showHeader?: boolean;
+}
+
+export const CenteredLayout: FC = (props) => {
+ const { children, showHeader = false } = props;
+ return (
+
+ {showHeader && }
+
+ {children}
+
+
+ );
+};
diff --git a/packages/renderer/src/components/templates/NavbarLayout/index.tsx b/packages/renderer/src/components/templates/NavbarLayout/index.tsx
new file mode 100644
index 0000000..f57c0ae
--- /dev/null
+++ b/packages/renderer/src/components/templates/NavbarLayout/index.tsx
@@ -0,0 +1,44 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import type { FC } from "react";
+import { Box, createStyles, Group } from "@mantine/core";
+import { Sidebar } from "@molecules/Sidebar";
+
+export const NavbarLayout: FC = (props) => {
+ const { children } = props;
+ const { classes } = useStyles();
+ return (
+
+
+ {children}
+
+ );
+};
+// fcfcfc
+
+const useStyles = createStyles((theme) => ({
+ container: {
+ flex: 1,
+ alignItems: "stretch",
+ },
+ contentArea: {
+ background: theme.colors.gray[0],
+ display: "flex",
+ flex: 1,
+ padding: theme.spacing.sm,
+ },
+}));
diff --git a/packages/renderer/src/constants/lang/LangKeys.ts b/packages/renderer/src/constants/lang/LangKeys.ts
index b0eaf2e..59f05d4 100644
--- a/packages/renderer/src/constants/lang/LangKeys.ts
+++ b/packages/renderer/src/constants/lang/LangKeys.ts
@@ -16,5 +16,8 @@
export enum LangKeys {
AppTitle = "app.title",
+ AppHeading2 = "app.heading2",
Header = "app.header",
+ ConnectingToNetwork = "app.connectingToNetwork",
+ WelcomeToHaveno = "app.welcomeToHaveno",
}
diff --git a/packages/renderer/src/constants/lang/en.ts b/packages/renderer/src/constants/lang/en.ts
index 6491e73..6ebafee 100644
--- a/packages/renderer/src/constants/lang/en.ts
+++ b/packages/renderer/src/constants/lang/en.ts
@@ -18,7 +18,11 @@ import { LangKeys } from "./LangKeys";
const LangPackEN: { [key in LangKeys]: string } = {
[LangKeys.AppTitle]: "Welcome",
- [LangKeys.Header]: "Electron Starter",
+ [LangKeys.AppHeading2]: "Monero based decentralized exchange",
+ [LangKeys.ConnectingToNetwork]: "Connecting to Monero Network",
+ [LangKeys.Header]: "Haveno",
+ [LangKeys.WelcomeToHaveno]:
+ "Welcome to Haveno. The world’s first Monero based decentralised exchange.",
};
export default LangPackEN;
diff --git a/packages/renderer/src/constants/lang/es.ts b/packages/renderer/src/constants/lang/es.ts
index 3f20488..9f9a291 100644
--- a/packages/renderer/src/constants/lang/es.ts
+++ b/packages/renderer/src/constants/lang/es.ts
@@ -18,7 +18,11 @@ import { LangKeys } from "./LangKeys";
const LangPackES: { [key in LangKeys]: string } = {
[LangKeys.AppTitle]: "Bienvenido",
- [LangKeys.Header]: "Electron Starter",
+ [LangKeys.AppHeading2]: "Intercambio descentralizado basado en Monero",
+ [LangKeys.ConnectingToNetwork]: "Conexión a la red Monero",
+ [LangKeys.Header]: "Haveno",
+ [LangKeys.WelcomeToHaveno]:
+ "Bienvenido a Haveno. El primer intercambio descentralizado basado en Monero del mundo.",
};
export default LangPackES;
diff --git a/packages/renderer/src/constants/lang/index.ts b/packages/renderer/src/constants/lang/index.ts
new file mode 100644
index 0000000..0a9526b
--- /dev/null
+++ b/packages/renderer/src/constants/lang/index.ts
@@ -0,0 +1,29 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+export * from "./LangKeys";
+import en from "./en";
+import es from "./es";
+
+export const SupportedLocales = {
+ EN: "en",
+ ES: "es",
+};
+
+export const LangPack = {
+ [SupportedLocales.EN]: en,
+ [SupportedLocales.EN]: es,
+};
diff --git a/packages/renderer/src/index.tsx b/packages/renderer/src/index.tsx
index 5d11d9e..a80b5e4 100644
--- a/packages/renderer/src/index.tsx
+++ b/packages/renderer/src/index.tsx
@@ -16,31 +16,16 @@
import { StrictMode } from "react";
import ReactDOM from "react-dom";
-import { QueryClient, QueryClientProvider } from "react-query";
import { HashRouter } from "react-router-dom";
-import { RecoilRoot } from "recoil";
-import { IntlProvider } from "@atoms/IntlProvider";
import { AppRoutes } from "./Routes";
-
-const queryClient = new QueryClient({
- defaultOptions: {
- queries: {
- refetchOnWindowFocus: false,
- staleTime: 60 * 1000, // 60 sec
- },
- },
-});
+import { AppProviders } from "@atoms/AppProviders";
ReactDOM.render(
-
-
-
-
-
-
-
+
+
+ ,
document.getElementById("app")
diff --git a/packages/renderer/src/pages/Onboarding/Home.stories.tsx b/packages/renderer/src/pages/Onboarding/Home.stories.tsx
new file mode 100644
index 0000000..fb40e38
--- /dev/null
+++ b/packages/renderer/src/pages/Onboarding/Home.stories.tsx
@@ -0,0 +1,35 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import { Stack } from "@mantine/core";
+import type { ComponentStory, ComponentMeta } from "@storybook/react";
+import { Home } from ".";
+
+export default {
+ title: "pages/Onboarding/Home",
+ component: Home,
+} as ComponentMeta;
+
+const Template: ComponentStory = () => {
+ return (
+
+
+
+ );
+};
+
+export const Default = Template.bind({});
+Default.args = {};
diff --git a/packages/renderer/src/pages/Onboarding/Home.tsx b/packages/renderer/src/pages/Onboarding/Home.tsx
new file mode 100644
index 0000000..677e4d1
--- /dev/null
+++ b/packages/renderer/src/pages/Onboarding/Home.tsx
@@ -0,0 +1,42 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import { FormattedMessage } from "react-intl";
+import { Space, Stack, Text } from "@mantine/core";
+import { LangKeys } from "@constants/lang/LangKeys";
+import { CenteredLayout } from "@templates/CenteredLayout";
+import Logo from "@assets/logo.svg";
+import { ConnectionProgress } from "@atoms/ConnectionProgress";
+
+export function Home() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/packages/renderer/src/pages/Onboarding/Welcome.stories.tsx b/packages/renderer/src/pages/Onboarding/Welcome.stories.tsx
new file mode 100644
index 0000000..243514f
--- /dev/null
+++ b/packages/renderer/src/pages/Onboarding/Welcome.stories.tsx
@@ -0,0 +1,35 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import { Stack } from "@mantine/core";
+import type { ComponentStory, ComponentMeta } from "@storybook/react";
+import { Welcome } from ".";
+
+export default {
+ title: "pages/Onboarding/Welcome",
+ component: Welcome,
+} as ComponentMeta;
+
+const Template: ComponentStory = () => {
+ return (
+
+
+
+ );
+};
+
+export const Default = Template.bind({});
+Default.args = {};
diff --git a/packages/renderer/src/pages/Onboarding/Welcome.tsx b/packages/renderer/src/pages/Onboarding/Welcome.tsx
new file mode 100644
index 0000000..a9492bf
--- /dev/null
+++ b/packages/renderer/src/pages/Onboarding/Welcome.tsx
@@ -0,0 +1,51 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import { Stack, Space, Text, Title, Container, Group } from "@mantine/core";
+import { FormattedMessage } from "react-intl";
+import { LangKeys } from "@constants/lang/LangKeys";
+import { CenteredLayout } from "@src/components/templates/CenteredLayout";
+import { Button } from "@atoms/Buttons";
+import { CONTENT_MAX_WIDTH } from "./_constants";
+
+export function Welcome() {
+ return (
+
+
+
+
+
+
+
+
+
+
+ Before you can use Haveno, we’re going to set up your account.{" "}
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/packages/renderer/src/pages/Onboarding/_constants.ts b/packages/renderer/src/pages/Onboarding/_constants.ts
new file mode 100644
index 0000000..52d9fe3
--- /dev/null
+++ b/packages/renderer/src/pages/Onboarding/_constants.ts
@@ -0,0 +1,17 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+export const CONTENT_MAX_WIDTH = 470;
diff --git a/packages/renderer/src/pages/Onboarding/index.ts b/packages/renderer/src/pages/Onboarding/index.ts
new file mode 100644
index 0000000..e88a47e
--- /dev/null
+++ b/packages/renderer/src/pages/Onboarding/index.ts
@@ -0,0 +1,18 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+export * from "./Home";
+export * from "./Welcome";
diff --git a/packages/renderer/src/pages/Wallet/Walet.stories.tsx b/packages/renderer/src/pages/Wallet/Walet.stories.tsx
new file mode 100644
index 0000000..7d8ddce
--- /dev/null
+++ b/packages/renderer/src/pages/Wallet/Walet.stories.tsx
@@ -0,0 +1,35 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import { Stack } from "@mantine/core";
+import type { ComponentStory, ComponentMeta } from "@storybook/react";
+import { Wallet } from ".";
+
+export default {
+ title: "pages/Wallet",
+ component: Wallet,
+} as ComponentMeta;
+
+const Template: ComponentStory = () => {
+ return (
+
+
+
+ );
+};
+
+export const Default = Template.bind({});
+Default.args = {};
diff --git a/packages/renderer/src/pages/Wallet/Wallet.tsx b/packages/renderer/src/pages/Wallet/Wallet.tsx
new file mode 100644
index 0000000..b50f80d
--- /dev/null
+++ b/packages/renderer/src/pages/Wallet/Wallet.tsx
@@ -0,0 +1,21 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import { NavbarLayout } from "@templates/NavbarLayout";
+
+export function Wallet() {
+ return ;
+}
diff --git a/packages/renderer/src/pages/Wallet/index.ts b/packages/renderer/src/pages/Wallet/index.ts
new file mode 100644
index 0000000..ad9807b
--- /dev/null
+++ b/packages/renderer/src/pages/Wallet/index.ts
@@ -0,0 +1,17 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+export * from "./Wallet";
diff --git a/packages/renderer/src/theme/global-styles.ts b/packages/renderer/src/theme/global-styles.ts
new file mode 100644
index 0000000..965e7a6
--- /dev/null
+++ b/packages/renderer/src/theme/global-styles.ts
@@ -0,0 +1,34 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import InterFont from "@assets/fonts/Inter-Variable.ttf";
+
+export const globalStyles = {
+ "@font-face": {
+ fontFamily: "Inter",
+ src: `url('${InterFont}')`,
+ fontWeight: "100 800",
+ fontStyle: "normal italic",
+ },
+ body: {
+ margin: 0,
+ padding: 0,
+ },
+ "#app": {
+ display: "flex",
+ minHeight: "100vh",
+ },
+};
diff --git a/packages/renderer/src/theme/index.ts b/packages/renderer/src/theme/index.ts
new file mode 100644
index 0000000..683d46b
--- /dev/null
+++ b/packages/renderer/src/theme/index.ts
@@ -0,0 +1,18 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+export * from "./global-styles";
+export * from "./override";
diff --git a/packages/renderer/src/theme/override.ts b/packages/renderer/src/theme/override.ts
new file mode 100644
index 0000000..c688735
--- /dev/null
+++ b/packages/renderer/src/theme/override.ts
@@ -0,0 +1,63 @@
+// =============================================================================
+// Copyright 2022 Haveno
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// =============================================================================
+
+import type { MantineThemeOverride } from "@mantine/core";
+
+export const themeOverride: MantineThemeOverride = {
+ fontFamily: "Inter",
+ headings: {
+ fontFamily: "Inter",
+ },
+ colors: {
+ brand: [
+ "#dff2ff",
+ "#b2caff",
+ "#b2d4ff",
+ "#83b8fc",
+ "#539bf7",
+ "#257ff4",
+ "#0b65da",
+ "#034fab",
+ "#00387b",
+ "#00224d",
+ ],
+ gray: [
+ "#f8f9fa",
+ "#f1f3f5",
+ "#ececec",
+ "#dee2e6",
+ "#ced4da",
+ "#adb5bd",
+ "#868e96",
+ "#495057",
+ "#343a40",
+ "#111111",
+ ],
+ success: [
+ "#e8f9eb",
+ "#cbe5cd",
+ "#abd3af",
+ "#8bc08f",
+ "#6bad6d",
+ "#529458",
+ "#3e7347",
+ "#2b5234",
+ "#173220",
+ "#011207",
+ ],
+ },
+ primaryColor: "brand",
+};
diff --git a/packages/renderer/tsconfig.json b/packages/renderer/tsconfig.json
index 75becc3..dc2c61e 100644
--- a/packages/renderer/tsconfig.json
+++ b/packages/renderer/tsconfig.json
@@ -13,6 +13,7 @@
"esModuleInterop": true,
"baseUrl": "./src",
"paths": {
+ "@assets/*": ["../assets/*"],
"@atoms/*": ["components/atoms/*"],
"@constants/*": ["constants/*"],
"@molecules/*": ["components/molecules/*"],
diff --git a/packages/renderer/vite.config.js b/packages/renderer/vite.config.js
index 435e96f..4bdb628 100644
--- a/packages/renderer/vite.config.js
+++ b/packages/renderer/vite.config.js
@@ -33,6 +33,7 @@ const config = {
root: PACKAGE_ROOT,
resolve: {
alias: {
+ "@assets/": join(PACKAGE_ROOT, "assets") + "/",
"@atoms/": join(PACKAGE_ROOT, "src", "components", "atoms") + "/",
"@constants/": join(PACKAGE_ROOT, "src", "constants") + "/",
"@molecules/": join(PACKAGE_ROOT, "src", "components", "molecules") + "/",
diff --git a/yarn.lock b/yarn.lock
index 39e0396..c25ac85 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1314,7 +1314,7 @@
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70"
integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==
-"@electron/get@^1.13.0":
+"@electron/get@^1.0.1", "@electron/get@^1.13.0":
version "1.14.1"
resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.14.1.tgz#16ba75f02dffb74c23965e72d617adc721d27f40"
integrity sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==
@@ -2970,7 +2970,7 @@
dependencies:
defer-to-connect "^1.0.1"
-"@testing-library/dom@^8.13.0":
+"@testing-library/dom@^8.0.0", "@testing-library/dom@^8.13.0":
version "8.13.0"
resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.13.0.tgz#bc00bdd64c7d8b40841e27a70211399ad3af46f5"
integrity sha512-9VHgfIatKNXQNaZTtLnalIy0jNZzY35a4S3oi08YAt9Hv1VsfZ/DfA45lM8D/UhtHBGJ4/lGwp0PZkVndRkoOQ==
@@ -2984,6 +2984,15 @@
lz-string "^1.4.4"
pretty-format "^27.0.2"
+"@testing-library/react@^12":
+ version "12.1.5"
+ resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-12.1.5.tgz#bb248f72f02a5ac9d949dea07279095fa577963b"
+ integrity sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ "@testing-library/dom" "^8.0.0"
+ "@types/react-dom" "<18.0.0"
+
"@testing-library/user-event@^14.1.1":
version "14.1.1"
resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.1.1.tgz#e1ff6118896e4b22af31e5ea2f9da956adde23d8"
@@ -3180,6 +3189,11 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b"
integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==
+"@types/node@^12.0.12":
+ version "12.20.49"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.49.tgz#97897a33dd145490f514bbcbccefc178534e360f"
+ integrity sha512-5e6QNb9bkeh4Hni4ktLqUZuUqnGTX/kou2aZkXyxtuYaHXgBm+In1SHR9V+7kDzWzjB08KC2uqt2doDi7cuAAA==
+
"@types/node@^14.0.10":
version "14.18.13"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.13.tgz#6ad4d9db59e6b3faf98dcfe4ca9d2aec84443277"
@@ -3794,6 +3808,13 @@ ajv@^8.0.0, ajv@^8.6.3:
require-from-string "^2.0.2"
uri-js "^4.2.2"
+ansi-align@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f"
+ integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=
+ dependencies:
+ string-width "^2.0.0"
+
ansi-align@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59"
@@ -3816,6 +3837,11 @@ ansi-regex@^2.0.0:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
+ansi-regex@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1"
+ integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==
+
ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
@@ -4401,6 +4427,19 @@ boolean@^3.0.1:
resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b"
integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==
+boxen@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b"
+ integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==
+ dependencies:
+ ansi-align "^2.0.0"
+ camelcase "^4.0.0"
+ chalk "^2.0.1"
+ cli-boxes "^1.0.0"
+ string-width "^2.0.0"
+ term-size "^1.2.0"
+ widest-line "^2.0.0"
+
boxen@^5.0.0, boxen@^5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50"
@@ -4776,6 +4815,11 @@ camelcase-keys@^6.2.2:
map-obj "^4.0.0"
quick-lru "^4.0.1"
+camelcase@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
+ integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
+
camelcase@^5.3.1:
version "5.3.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
@@ -4803,6 +4847,11 @@ capture-exit@^2.0.0:
dependencies:
rsvp "^4.8.4"
+capture-stack-trace@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d"
+ integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==
+
case-sensitive-paths-webpack-plugin@^2.3.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4"
@@ -4831,7 +4880,7 @@ chai@^4.3.6:
pathval "^1.1.1"
type-detect "^4.0.5"
-chalk@^2.0.0, chalk@^2.4.1:
+chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -4927,6 +4976,11 @@ chromium-pickle-js@^0.2.0:
resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205"
integrity sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=
+ci-info@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497"
+ integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==
+
ci-info@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
@@ -4967,6 +5021,11 @@ clean-stack@^2.0.0:
resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
+cli-boxes@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143"
+ integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM=
+
cli-boxes@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f"
@@ -5202,6 +5261,18 @@ config-chain@^1.1.11:
ini "^1.3.4"
proto-list "~1.2.1"
+configstore@^3.0.0:
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.5.tgz#e9af331fadc14dabd544d3e7e76dc446a09a530f"
+ integrity sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==
+ dependencies:
+ dot-prop "^4.2.1"
+ graceful-fs "^4.1.2"
+ make-dir "^1.0.0"
+ unique-string "^1.0.0"
+ write-file-atomic "^2.0.0"
+ xdg-basedir "^3.0.0"
+
configstore@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96"
@@ -5409,6 +5480,13 @@ create-ecdh@^4.0.0:
bn.js "^4.1.0"
elliptic "^6.5.3"
+create-error-class@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
+ integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=
+ dependencies:
+ capture-stack-trace "^1.0.0"
+
create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
@@ -5444,6 +5522,15 @@ cross-env@7.0.3:
dependencies:
cross-spawn "^7.0.1"
+cross-spawn@^5.0.1:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
+ integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=
+ dependencies:
+ lru-cache "^4.0.1"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
cross-spawn@^6.0.0:
version "6.0.5"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
@@ -5481,6 +5568,11 @@ crypto-browserify@^3.11.0:
randombytes "^2.0.0"
randomfill "^1.0.3"
+crypto-random-string@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
+ integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=
+
crypto-random-string@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
@@ -5886,6 +5978,13 @@ dot-case@^3.0.4:
no-case "^3.0.4"
tslib "^2.0.3"
+dot-prop@^4.2.1:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.1.tgz#45884194a71fc2cda71cbb4bceb3a4dd2f433ba4"
+ integrity sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==
+ dependencies:
+ is-obj "^1.0.0"
+
dot-prop@^5.1.0, dot-prop@^5.2.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88"
@@ -6042,6 +6141,15 @@ electron@17.1.0:
"@types/node" "^14.6.2"
extract-zip "^1.0.3"
+electron@^11.1.0:
+ version "11.5.0"
+ resolved "https://registry.yarnpkg.com/electron/-/electron-11.5.0.tgz#f1650543b9d8f2047d3807755bdb120153ed210f"
+ integrity sha512-WjNDd6lGpxyiNjE3LhnFCAk/D9GIj1rU3GSDealVShhkkkPR3Vh4q8ErXGDl1OAO/faomVa10KoFPUN/pLbNxg==
+ dependencies:
+ "@electron/get" "^1.0.1"
+ "@types/node" "^12.0.12"
+ extract-zip "^1.0.3"
+
element-resize-detector@^1.2.2:
version "1.2.4"
resolved "https://registry.yarnpkg.com/element-resize-detector/-/element-resize-detector-1.2.4.tgz#3e6c5982dd77508b5fa7e6d5c02170e26325c9b1"
@@ -6698,6 +6806,19 @@ exec-sh@^0.3.2:
resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc"
integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==
+execa@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
+ integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=
+ dependencies:
+ cross-spawn "^5.0.1"
+ get-stream "^3.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
execa@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
@@ -7309,6 +7430,11 @@ get-port@^3.1.0:
resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc"
integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=
+get-stream@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
+ integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
+
get-stream@^4.0.0, get-stream@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
@@ -7427,7 +7553,7 @@ global-agent@^3.0.0:
semver "^7.3.2"
serialize-error "^7.0.1"
-global-dirs@^0.1.1:
+global-dirs@^0.1.0, global-dirs@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445"
integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=
@@ -7504,6 +7630,23 @@ globby@^9.2.0:
pify "^4.0.1"
slash "^2.0.0"
+got@^6.7.1:
+ version "6.7.1"
+ resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0"
+ integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=
+ dependencies:
+ create-error-class "^3.0.0"
+ duplexer3 "^0.1.4"
+ get-stream "^3.0.0"
+ is-redirect "^1.0.0"
+ is-retry-allowed "^1.0.0"
+ is-stream "^1.0.0"
+ lowercase-keys "^1.0.0"
+ safe-buffer "^5.0.1"
+ timed-out "^4.0.0"
+ unzip-response "^2.0.1"
+ url-parse-lax "^1.0.0"
+
got@^9.6.0:
version "9.6.0"
resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
@@ -8066,7 +8209,7 @@ invariant@^2.2.4:
dependencies:
loose-envify "^1.0.0"
-ip@^1.1.5:
+ip@^1.1.4, ip@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
@@ -8165,6 +8308,13 @@ is-callable@^1.1.4, is-callable@^1.2.4:
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945"
integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==
+is-ci@^1.0.10:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c"
+ integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==
+ dependencies:
+ ci-info "^1.5.0"
+
is-ci@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
@@ -8267,6 +8417,11 @@ is-extglob@^2.1.0, is-extglob@^2.1.1:
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+is-fullwidth-code-point@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
+ integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
+
is-fullwidth-code-point@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
@@ -8296,6 +8451,14 @@ is-hexadecimal@^1.0.0:
resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7"
integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==
+is-installed-globally@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80"
+ integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=
+ dependencies:
+ global-dirs "^0.1.0"
+ is-path-inside "^1.0.0"
+
is-installed-globally@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520"
@@ -8314,6 +8477,11 @@ is-negative-zero@^2.0.2:
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
+is-npm@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4"
+ integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ=
+
is-npm@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8"
@@ -8338,6 +8506,11 @@ is-number@^7.0.0:
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+is-obj@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+ integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
+
is-obj@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
@@ -8348,6 +8521,13 @@ is-object@^1.0.1:
resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf"
integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==
+is-path-inside@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
+ integrity sha1-jvW33lBDej/cprToZe96pVy0gDY=
+ dependencies:
+ path-is-inside "^1.0.1"
+
is-path-inside@^3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
@@ -8375,6 +8555,11 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4:
dependencies:
isobject "^3.0.1"
+is-redirect@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"
+ integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=
+
is-regex@^1.1.2, is-regex@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
@@ -8383,6 +8568,11 @@ is-regex@^1.1.2, is-regex@^1.1.4:
call-bind "^1.0.2"
has-tostringtag "^1.0.0"
+is-retry-allowed@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4"
+ integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==
+
is-set@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec"
@@ -8395,7 +8585,7 @@ is-shared-array-buffer@^1.0.2:
dependencies:
call-bind "^1.0.2"
-is-stream@^1.1.0:
+is-stream@^1.0.0, is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
@@ -8834,6 +9024,13 @@ klona@^2.0.4:
resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc"
integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==
+latest-version@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15"
+ integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=
+ dependencies:
+ package-json "^4.0.0"
+
latest-version@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face"
@@ -9013,6 +9210,14 @@ lowlight@^1.14.0:
fault "^1.0.0"
highlight.js "~10.7.0"
+lru-cache@^4.0.1:
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
+ integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
+ dependencies:
+ pseudomap "^1.0.2"
+ yallist "^2.1.2"
+
lru-cache@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
@@ -9044,6 +9249,13 @@ magic-string@^0.26.1:
dependencies:
sourcemap-codec "^1.4.8"
+make-dir@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
+ integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==
+ dependencies:
+ pify "^3.0.0"
+
make-dir@^2.0.0, make-dir@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
@@ -9374,7 +9586,7 @@ minimist-options@4.1.0:
is-plain-obj "^1.1.0"
kind-of "^6.0.3"
-minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6:
+minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6:
version "1.2.6"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
@@ -9973,6 +10185,16 @@ p-try@^2.0.0:
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+package-json@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed"
+ integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=
+ dependencies:
+ got "^6.7.1"
+ registry-auth-token "^3.0.1"
+ registry-url "^3.0.3"
+ semver "^5.1.0"
+
package-json@^6.3.0:
version "6.5.0"
resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0"
@@ -10098,6 +10320,11 @@ path-is-absolute@^1.0.0:
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+path-is-inside@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
+ integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
+
path-key@^2.0.0, path-key@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
@@ -10361,6 +10588,11 @@ prelude-ls@~1.1.2:
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
+prepend-http@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
+ integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
+
prepend-http@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
@@ -10519,6 +10751,11 @@ prr@~1.0.1:
resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
+pseudomap@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
+ integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
+
public-encrypt@^4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
@@ -10663,7 +10900,7 @@ raw-loader@^4.0.2:
loader-utils "^2.0.0"
schema-utils "^3.0.0"
-rc@^1.2.8:
+rc@^1.0.1, rc@^1.1.6, rc@^1.2.8:
version "1.2.8"
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
@@ -10678,6 +10915,26 @@ react-colorful@^5.1.2:
resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.5.1.tgz#29d9c4e496f2ca784dd2bb5053a3a4340cfaf784"
integrity sha512-M1TJH2X3RXEt12sWkpa6hLc/bbYS0H6F4rIqjQZ+RxNBstpY67d9TrFXtqdZwhpmBXcCwEi7stKqFue3ZRkiOg==
+react-devtools-core@4.24.4:
+ version "4.24.4"
+ resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.24.4.tgz#adaa54569f87ce7c08384d12e0b35122a755cbae"
+ integrity sha512-jbX8Yqyq4YvFEobHyXVlGaH0Cs/+EOdb3PL911bxaR5BnzbB5TE4RFHC1iOgT4vRH3VxIIrVQ7lR9vsiFFCYCA==
+ dependencies:
+ shell-quote "^1.6.1"
+ ws "^7"
+
+react-devtools@^4.24.4:
+ version "4.24.4"
+ resolved "https://registry.yarnpkg.com/react-devtools/-/react-devtools-4.24.4.tgz#cbc299ca0100755721d002ca4eb0b72743a0baef"
+ integrity sha512-r2/HZo1LAYrSm1EpJL2NAJZFxWuSgIXTciAICuBhgXlDW5WvZrJpsFa2gaPnVNACFnjRUzDebpSR1gYy2oGdeQ==
+ dependencies:
+ cross-spawn "^5.0.1"
+ electron "^11.1.0"
+ ip "^1.1.4"
+ minimist "^1.2.3"
+ react-devtools-core "4.24.4"
+ update-notifier "^2.1.0"
+
react-docgen-typescript@^2.0.0, react-docgen-typescript@^2.1.1:
version "2.2.2"
resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz#4611055e569edc071204aadb20e1c93e1ab1659c"
@@ -11041,6 +11298,14 @@ regexpu-core@^5.0.1:
unicode-match-property-ecmascript "^2.0.0"
unicode-match-property-value-ecmascript "^2.0.0"
+registry-auth-token@^3.0.1:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e"
+ integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==
+ dependencies:
+ rc "^1.1.6"
+ safe-buffer "^5.0.1"
+
registry-auth-token@^4.0.0:
version "4.2.1"
resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250"
@@ -11048,6 +11313,13 @@ registry-auth-token@^4.0.0:
dependencies:
rc "^1.2.8"
+registry-url@^3.0.3:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942"
+ integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI=
+ dependencies:
+ rc "^1.0.1"
+
registry-url@^5.0.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009"
@@ -11405,6 +11677,13 @@ semver-compare@^1.0.0:
resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w=
+semver-diff@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"
+ integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=
+ dependencies:
+ semver "^5.0.3"
+
semver-diff@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b"
@@ -11412,7 +11691,7 @@ semver-diff@^3.1.1:
dependencies:
semver "^6.3.0"
-"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0:
+"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
@@ -11576,6 +11855,11 @@ shebang-regex@^3.0.0:
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+shell-quote@^1.6.1:
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123"
+ integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==
+
side-channel@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
@@ -11875,6 +12159,14 @@ stream-shift@^1.0.0:
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.1"
+string-width@^2.0.0, string-width@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
+ integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^4.0.0"
+
"string.prototype.matchall@^4.0.0 || ^3.0.1", string.prototype.matchall@^4.0.6:
version "4.0.7"
resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d"
@@ -11944,6 +12236,13 @@ strip-ansi@^3.0.1:
dependencies:
ansi-regex "^2.0.0"
+strip-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
+ integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
+ dependencies:
+ ansi-regex "^3.0.0"
+
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
@@ -12099,6 +12398,13 @@ temp-file@^3.4.0:
async-exit-hook "^2.0.1"
fs-extra "^10.0.0"
+term-size@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69"
+ integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=
+ dependencies:
+ execa "^0.7.0"
+
terser-webpack-plugin@^1.4.3:
version "1.4.5"
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b"
@@ -12209,6 +12515,11 @@ through2@^4.0.0:
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+timed-out@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
+ integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=
+
timers-browserify@^2.0.4:
version "2.0.12"
resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee"
@@ -12568,6 +12879,13 @@ unique-slug@^2.0.0:
dependencies:
imurmurhash "^0.1.4"
+unique-string@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a"
+ integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=
+ dependencies:
+ crypto-random-string "^1.0.0"
+
unique-string@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d"
@@ -12673,11 +12991,32 @@ unzip-crx-3@^0.2.0:
mkdirp "^0.5.1"
yaku "^0.16.6"
+unzip-response@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
+ integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=
+
upath@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
+update-notifier@^2.1.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6"
+ integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==
+ dependencies:
+ boxen "^1.2.1"
+ chalk "^2.0.1"
+ configstore "^3.0.0"
+ import-lazy "^2.1.0"
+ is-ci "^1.0.10"
+ is-installed-globally "^0.1.0"
+ is-npm "^1.0.0"
+ latest-version "^3.0.0"
+ semver-diff "^2.0.0"
+ xdg-basedir "^3.0.0"
+
update-notifier@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9"
@@ -12719,6 +13058,13 @@ url-loader@^4.1.1:
mime-types "^2.1.27"
schema-utils "^3.0.0"
+url-parse-lax@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73"
+ integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=
+ dependencies:
+ prepend-http "^1.0.1"
+
url-parse-lax@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"
@@ -13116,6 +13462,13 @@ wide-align@^1.1.2:
dependencies:
string-width "^1.0.2 || 2 || 3 || 4"
+widest-line@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc"
+ integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==
+ dependencies:
+ string-width "^2.1.1"
+
widest-line@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca"
@@ -13161,6 +13514,15 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+write-file-atomic@^2.0.0:
+ version "2.4.3"
+ resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481"
+ integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==
+ dependencies:
+ graceful-fs "^4.1.11"
+ imurmurhash "^0.1.4"
+ signal-exit "^3.0.2"
+
write-file-atomic@^3.0.0:
version "3.0.3"
resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
@@ -13176,11 +13538,21 @@ ws@8.4.2:
resolved "https://registry.yarnpkg.com/ws/-/ws-8.4.2.tgz#18e749868d8439f2268368829042894b6907aa0b"
integrity sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==
+ws@^7:
+ version "7.5.7"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67"
+ integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==
+
ws@^8.2.3:
version "8.5.0"
resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f"
integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==
+xdg-basedir@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
+ integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=
+
xdg-basedir@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
@@ -13216,6 +13588,11 @@ yaku@^0.16.6:
resolved "https://registry.yarnpkg.com/yaku/-/yaku-0.16.7.tgz#1d195c78aa9b5bf8479c895b9504fd4f0847984e"
integrity sha1-HRlceKqbW/hHnIlblQT9TwhHmE4=
+yallist@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
+ integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
+
yallist@^3.0.2:
version "3.1.1"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"