From 219877f778b36f1ef4557898fa54f478308caa16 Mon Sep 17 00:00:00 2001 From: Artem Astapenko <3767150+Jamakase@users.noreply.github.com> Date: Mon, 9 Aug 2021 16:04:02 +0300 Subject: [PATCH] Jamakase/add cloud version (#5198) --- .gitignore | 3 + airbyte-webapp/.storybook/main.ts | 20 +- airbyte-webapp/.storybook/withProvider.tsx | 15 +- airbyte-webapp/package-lock.json | 4660 ++++++++++++++++- airbyte-webapp/package.json | 4 + airbyte-webapp/public/cloud-hello.png | Bin 0 -> 52697 bytes airbyte-webapp/public/cloud-main-logo.svg | 5 + airbyte-webapp/src/App.tsx | 11 +- .../components/ContentCard/ContentCard.tsx | 39 +- .../components/ContentCard/index.stories.tsx | 18 + .../LabeledToggle/LabeledToggle.tsx | 10 +- airbyte-webapp/src/components/Link/Link.tsx | 4 +- .../src/components/SideMenu/SideMenu.tsx | 46 +- .../SideMenu/components/MenuItem.tsx | 2 +- airbyte-webapp/src/components/Table/Table.tsx | 8 +- .../src/components/base/Card/Card.tsx | 8 + .../components/base/Card/index.stories.tsx | 15 + .../src/components/base/Card/index.tsx | 3 + .../src/components/base/CheckBox/CheckBox.tsx | 1 + .../src/components/base/Titles/Titles.tsx | 8 +- airbyte-webapp/src/components/base/index.tsx | 1 + .../services/Health/HealthPollService.tsx | 7 +- airbyte-webapp/src/config/index.ts | 6 +- .../src/core/health/HealthService.ts | 11 +- .../src/core/request/AirbyteRequestService.ts | 107 +- .../src/core/request/CommonRequestError.ts | 5 + .../src/core/request/RequestMiddleware.ts | 1 + .../request/useRequestMiddlewareProvider.tsx | 39 + .../{BaseResource.ts => BaseResource.tsx} | 28 +- .../src/core/resources/DeploymentService.ts | 10 +- airbyte-webapp/src/index.tsx | 12 +- airbyte-webapp/src/packages/cloud/App.tsx | 63 + airbyte-webapp/src/packages/cloud/README.md | 15 + .../src/packages/cloud/config/api.ts | 3 + .../src/packages/cloud/config/firebase.ts | 13 + .../src/packages/cloud/data/news.tsx | 18 + .../packages/cloud/data/techcrunch-logo.png | Bin 0 -> 2414 bytes .../src/packages/cloud/data/tfir-logo.png | Bin 0 -> 19800 bytes .../packages/cloud/lib/auth/AuthProviders.ts | 3 + .../cloud/lib/auth/GoogleAuthService.ts | 62 + .../cloud/lib/auth/RequestAuthMiddleware.ts | 17 + .../cloudWorkspaces/CloudWorkspacesService.ts | 52 + .../cloudWorkspaces/WorkspaceService.ts | 22 + .../cloud/lib/domain/cloudWorkspaces/types.ts | 9 + .../cloud/lib/domain/users/UserService.ts | 54 + .../packages/cloud/lib/domain/users/index.ts | 2 + .../packages/cloud/lib/domain/users/types.ts | 6 + .../packages/cloud/lib/errors/FieldError.tsx | 5 + .../src/packages/cloud/locales/en.json | 47 + .../src/packages/cloud/package.json | 19 + airbyte-webapp/src/packages/cloud/routes.tsx | 200 + .../cloud/services/auth/AuthService.tsx | 151 + .../packages/cloud/services/auth/reducer.ts | 55 + .../src/packages/cloud/services/auth/types.ts | 8 + .../services/useDefaultRequestMiddlewares.tsx | 32 + .../services/workspaces/WorkspacesService.tsx | 124 + airbyte-webapp/src/packages/cloud/theme.ts | 32 + .../src/packages/cloud/views/auth/Auth.tsx | 68 + .../cloud/views/auth/LoginPage/LoginPage.tsx | 110 + .../cloud/views/auth/LoginPage/index.tsx | 3 + .../ResetPasswordPage/ResetPasswordPage.tsx | 72 + .../views/auth/ResetPasswordPage/index.tsx | 3 + .../views/auth/SignupPage/SignupPage.tsx | 196 + .../cloud/views/auth/SignupPage/index.tsx | 3 + .../views/auth/components/CheckBoxControl.tsx | 48 + .../views/auth/components/FormComponents.tsx | 35 + .../views/auth/components/FormContent.tsx | 38 + .../cloud/views/auth/components/FormTitle.tsx | 6 + .../cloud/views/auth/components/Header.tsx | 74 + .../cloud/views/auth/components/News.tsx | 70 + .../cloud/views/auth/components/NewsItem.tsx | 48 + .../src/packages/cloud/views/auth/index.tsx | 3 + .../AccountSettingsView.tsx | 114 + .../UsersSettingsView/UsersSettingsView.tsx | 79 + .../WorkspaceSettingsView.tsx | 86 + .../WorkspaceSettingsView/index.tsx | 1 + .../WorkspacesPage/WorkspacesPage.tsx | 41 + .../components/CreateWorkspaceForm.tsx | 72 + .../components/WorkspaceItem.tsx | 32 + .../components/WorkspacesControl.tsx | 37 + .../components/WorkspacesList.tsx | 39 + .../views/workspaces/WorkspacesPage/index.tsx | 3 + .../packages/cloud/views/workspaces/index.tsx | 3 + .../src/pages/SettingsPage/SettingsPage.tsx | 107 +- .../pages/AccountPage/AccountPage.tsx | 18 +- .../ConfigurationsPage/ConfigurationsPage.tsx | 13 +- .../pages/ConnectorsPage/SourcesPage.tsx | 3 +- .../pages/MetricsPage/MetricsPage.tsx | 17 +- .../NotificationPage/NotificationPage.tsx | 19 +- .../SettingsPage/pages/SettingsComponents.tsx | 14 + airbyte-webapp/src/pages/routes.tsx | 185 +- .../src/pages/withPageAnalytics.tsx | 74 + airbyte-webapp/src/theme.ts | 4 + .../ServiceForm/ServiceForm.test.tsx | 12 +- .../Connector/ServiceForm/ServiceForm.tsx | 2 +- .../Connector/ServiceForm/index.stories.tsx | 21 + .../src/views/common/AnalyticsInitializer.tsx | 17 +- 97 files changed, 7335 insertions(+), 574 deletions(-) create mode 100644 airbyte-webapp/public/cloud-hello.png create mode 100644 airbyte-webapp/public/cloud-main-logo.svg create mode 100644 airbyte-webapp/src/components/ContentCard/index.stories.tsx create mode 100644 airbyte-webapp/src/components/base/Card/Card.tsx create mode 100644 airbyte-webapp/src/components/base/Card/index.stories.tsx create mode 100644 airbyte-webapp/src/components/base/Card/index.tsx create mode 100644 airbyte-webapp/src/core/request/RequestMiddleware.ts create mode 100644 airbyte-webapp/src/core/request/useRequestMiddlewareProvider.tsx rename airbyte-webapp/src/core/resources/{BaseResource.ts => BaseResource.tsx} (89%) create mode 100644 airbyte-webapp/src/packages/cloud/App.tsx create mode 100644 airbyte-webapp/src/packages/cloud/README.md create mode 100644 airbyte-webapp/src/packages/cloud/config/api.ts create mode 100644 airbyte-webapp/src/packages/cloud/config/firebase.ts create mode 100644 airbyte-webapp/src/packages/cloud/data/news.tsx create mode 100644 airbyte-webapp/src/packages/cloud/data/techcrunch-logo.png create mode 100644 airbyte-webapp/src/packages/cloud/data/tfir-logo.png create mode 100644 airbyte-webapp/src/packages/cloud/lib/auth/AuthProviders.ts create mode 100644 airbyte-webapp/src/packages/cloud/lib/auth/GoogleAuthService.ts create mode 100644 airbyte-webapp/src/packages/cloud/lib/auth/RequestAuthMiddleware.ts create mode 100644 airbyte-webapp/src/packages/cloud/lib/domain/cloudWorkspaces/CloudWorkspacesService.ts create mode 100644 airbyte-webapp/src/packages/cloud/lib/domain/cloudWorkspaces/WorkspaceService.ts create mode 100644 airbyte-webapp/src/packages/cloud/lib/domain/cloudWorkspaces/types.ts create mode 100644 airbyte-webapp/src/packages/cloud/lib/domain/users/UserService.ts create mode 100644 airbyte-webapp/src/packages/cloud/lib/domain/users/index.ts create mode 100644 airbyte-webapp/src/packages/cloud/lib/domain/users/types.ts create mode 100644 airbyte-webapp/src/packages/cloud/lib/errors/FieldError.tsx create mode 100644 airbyte-webapp/src/packages/cloud/locales/en.json create mode 100644 airbyte-webapp/src/packages/cloud/package.json create mode 100644 airbyte-webapp/src/packages/cloud/routes.tsx create mode 100644 airbyte-webapp/src/packages/cloud/services/auth/AuthService.tsx create mode 100644 airbyte-webapp/src/packages/cloud/services/auth/reducer.ts create mode 100644 airbyte-webapp/src/packages/cloud/services/auth/types.ts create mode 100644 airbyte-webapp/src/packages/cloud/services/useDefaultRequestMiddlewares.tsx create mode 100644 airbyte-webapp/src/packages/cloud/services/workspaces/WorkspacesService.tsx create mode 100644 airbyte-webapp/src/packages/cloud/theme.ts create mode 100644 airbyte-webapp/src/packages/cloud/views/auth/Auth.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/auth/LoginPage/LoginPage.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/auth/LoginPage/index.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/auth/ResetPasswordPage/ResetPasswordPage.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/auth/ResetPasswordPage/index.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/auth/SignupPage/SignupPage.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/auth/SignupPage/index.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/auth/components/CheckBoxControl.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/auth/components/FormComponents.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/auth/components/FormContent.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/auth/components/FormTitle.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/auth/components/Header.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/auth/components/News.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/auth/components/NewsItem.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/auth/index.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/users/AccountSettingsView/AccountSettingsView.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/users/UsersSettingsView/UsersSettingsView.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/workspaces/WorkspaceSettingsView/WorkspaceSettingsView.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/workspaces/WorkspaceSettingsView/index.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/WorkspacesPage.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/components/CreateWorkspaceForm.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/components/WorkspaceItem.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/components/WorkspacesControl.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/components/WorkspacesList.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/index.tsx create mode 100644 airbyte-webapp/src/packages/cloud/views/workspaces/index.tsx create mode 100644 airbyte-webapp/src/pages/SettingsPage/pages/SettingsComponents.tsx create mode 100644 airbyte-webapp/src/pages/withPageAnalytics.tsx create mode 100644 airbyte-webapp/src/views/Connector/ServiceForm/index.stories.tsx diff --git a/.gitignore b/.gitignore index b988396727df..c7c506ae45ad 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,6 @@ crash.log # Airflow Demo resources/examples/airflow/logs/* !resources/examples/airflow/logs/.gitkeep + +# Cloud Demo +!airbyte-webapp/src/packages/cloud/data diff --git a/airbyte-webapp/.storybook/main.ts b/airbyte-webapp/.storybook/main.ts index 6e3d434295e4..e377aa888822 100644 --- a/airbyte-webapp/.storybook/main.ts +++ b/airbyte-webapp/.storybook/main.ts @@ -1,11 +1,17 @@ module.exports = { - "stories": [ - "../src/**/*.stories.@(ts|tsx)" - ], - "addons": [ + stories: ["../src/**/*.stories.@(ts|tsx)"], + addons: [ "@storybook/addon-links", "@storybook/addon-essentials", "@storybook/preset-create-react-app", - "storybook-addon-styled-component-theme/dist" - ] -} \ No newline at end of file + "storybook-addon-styled-component-theme/dist", + ], + webpackFinal: (config) => { + config.resolve.modules.push(process.cwd() + "/node_modules"); + config.resolve.modules.push(process.cwd() + "/src"); + + // this is needed for working w/ linked folders + config.resolve.symlinks = false; + return config; + }, +}; diff --git a/airbyte-webapp/.storybook/withProvider.tsx b/airbyte-webapp/.storybook/withProvider.tsx index 26d8c0e04ea2..c848661601a9 100644 --- a/airbyte-webapp/.storybook/withProvider.tsx +++ b/airbyte-webapp/.storybook/withProvider.tsx @@ -1,9 +1,13 @@ import { Router } from "react-router-dom"; import * as React from "react"; +import { IntlProvider } from "react-intl"; import { createMemoryHistory } from "history"; import { ThemeProvider } from "styled-components"; -import { Theme } from "../src/theme"; +// TODO: theme was not working correctly so imported directly +import { theme, Theme } from "../src/theme"; +import GlobalStyle from "../src/global-styles"; +import messages from "../src/locales/en.json"; interface Props { theme?: Theme; @@ -16,11 +20,16 @@ interface Props { class WithProviders extends React.Component { render() { - const { theme, children } = this.props; + const { children } = this.props; return ( - {children} + + + + {children} + + ); } diff --git a/airbyte-webapp/package-lock.json b/airbyte-webapp/package-lock.json index 322c5bb4b055..55f8b0b58463 100644 --- a/airbyte-webapp/package-lock.json +++ b/airbyte-webapp/package-lock.json @@ -2494,6 +2494,12 @@ "to-fast-properties": "^2.0.0" } }, + "@base2/pretty-print-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.0.tgz", + "integrity": "sha512-4Th98KlMHr5+JkxfcoDT//6vY8vM+iSPrLNpHhRyLx2CFYi8e2RfqPLdpbnpo0Q5lQC5hNB79yes07zb02fvCw==", + "dev": true + }, "@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", @@ -2767,6 +2773,380 @@ } } }, + "@firebase/analytics": { + "version": "0.6.16", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.6.16.tgz", + "integrity": "sha512-eBYWKf7S7xmDFi3cWLs7Z6x4Hn1AG1oy2Xp/RvfyamhqI2X8GbgyCif/+q7orh+MWnNwipblVT93YajhhXpQcQ==", + "requires": { + "@firebase/analytics-types": "0.5.0", + "@firebase/component": "0.5.5", + "@firebase/installations": "0.4.31", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.2.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, + "@firebase/analytics-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.5.0.tgz", + "integrity": "sha512-VTV5Xtq5gVabbL/4n6pBtMJWcQBgOUDE2XbEHl8EOuwRaU9weyGUS7ofbisDkpl1RlFU1aewnc33pbLcYbi0iQ==" + }, + "@firebase/app": { + "version": "0.6.29", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.6.29.tgz", + "integrity": "sha512-duCzk9/BSVVsb5Y9b0rnvGSuD5zQA/JghiQsccRl+lA4xiUYjFudTU4cVFftkw+0zzeYBHn4KiVxchsva1O9dA==", + "requires": { + "@firebase/app-types": "0.6.3", + "@firebase/component": "0.5.5", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.2.0", + "dom-storage": "2.1.0", + "tslib": "^2.1.0", + "xmlhttprequest": "1.8.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, + "@firebase/app-check": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.2.1.tgz", + "integrity": "sha512-Qswn+qHiAyi3P0O/W9BffDFX4MmptSod49zhWQt8vV42JyKSZexaXQpeNlfKgdE5jX8wUw8Vkk8My4PfIrPkww==", + "requires": { + "@firebase/app-check-interop-types": "0.1.0", + "@firebase/app-check-types": "0.2.0", + "@firebase/component": "0.5.5", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.2.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, + "@firebase/app-check-interop-types": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.1.0.tgz", + "integrity": "sha512-uZfn9s4uuRsaX5Lwx+gFP3B6YsyOKUE+Rqa6z9ojT4VSRAsZFko9FRn6OxQUA1z5t5d08fY4pf+/+Dkd5wbdbA==" + }, + "@firebase/app-check-types": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.2.0.tgz", + "integrity": "sha512-CfZhWtChLK9uNmrxbJyTg1BPtROiwc/VJGu3f39KjS0F5ZvZjHmyRFMrDiSoXDoybM4B6X0pQhJYi9rifT2wpQ==" + }, + "@firebase/app-types": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.3.tgz", + "integrity": "sha512-/M13DPPati7FQHEQ9Minjk1HGLm/4K4gs9bR4rzLCWJg64yGtVC0zNg9gDpkw9yc2cvol/mNFxqTtd4geGrwdw==" + }, + "@firebase/auth": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.16.8.tgz", + "integrity": "sha512-mR0UXG4LirWIfOiCWxVmvz1o23BuKGxeItQ2cCUgXLTjNtWJXdcky/356iTUsd7ZV5A78s2NHeN5tIDDG6H4rg==", + "requires": { + "@firebase/auth-types": "0.10.3" + } + }, + "@firebase/auth-interop-types": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.6.tgz", + "integrity": "sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g==" + }, + "@firebase/auth-types": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.10.3.tgz", + "integrity": "sha512-zExrThRqyqGUbXOFrH/sowuh2rRtfKHp9SBVY2vOqKWdCX1Ztn682n9WLtlUDsiYVIbBcwautYWk2HyCGFv0OA==" + }, + "@firebase/component": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.5.tgz", + "integrity": "sha512-L41SdS/4a164jx2iGfakJgaBUPPBI3DI+RrUlmh3oHSUljTeCwfj/Nhcv3S7e2lyXsGFJtAyepfPUx4IQ05crw==", + "requires": { + "@firebase/util": "1.2.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, + "@firebase/database": { + "version": "0.10.9", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.10.9.tgz", + "integrity": "sha512-Jxi9SiE4cNOftO9YKlG71ccyWFw4kSM9AG/xYu6vWXUGBr39Uw1TvYougANOcU21Q0TP4J08VPGnOnpXk/FGbQ==", + "requires": { + "@firebase/auth-interop-types": "0.1.6", + "@firebase/component": "0.5.5", + "@firebase/database-types": "0.7.3", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.2.0", + "faye-websocket": "0.11.3", + "tslib": "^2.1.0" + }, + "dependencies": { + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, + "@firebase/database-types": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.7.3.tgz", + "integrity": "sha512-dSOJmhKQ0nL8O4EQMRNGpSExWCXeHtH57gGg0BfNAdWcKhC8/4Y+qfKLfWXzyHvrSecpLmO0SmAi/iK2D5fp5A==", + "requires": { + "@firebase/app-types": "0.6.3" + } + }, + "@firebase/firestore": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-2.3.10.tgz", + "integrity": "sha512-O+XpaZVhDIBK2fMwBUBR2BuhaXF6zTmz+afAuXAx18DK+2rFfLefbALZLaUYw0Aabe9pryy0c7OenzRbHA8n4Q==", + "requires": { + "@firebase/component": "0.5.5", + "@firebase/firestore-types": "2.3.0", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.2.0", + "@firebase/webchannel-wrapper": "0.5.1", + "@grpc/grpc-js": "^1.3.2", + "@grpc/proto-loader": "^0.6.0", + "node-fetch": "2.6.1", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, + "@firebase/firestore-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-2.3.0.tgz", + "integrity": "sha512-QTW7NP7nDL0pgT/X53lyj+mIMh4nRQBBTBlRNQBt7eSyeqBf3ag3bxdQhCg358+5KbjYTC2/O6QtX9DlJZmh1A==" + }, + "@firebase/functions": { + "version": "0.6.14", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.6.14.tgz", + "integrity": "sha512-Gthru/wHPQqkn651MenVM+qKVFFqIyFcNT3qfJUacibqrKlvDtYtaCMjFGAkChuGnYzNVnXJIaNrIHkEIII4Hg==", + "requires": { + "@firebase/component": "0.5.5", + "@firebase/functions-types": "0.4.0", + "@firebase/messaging-types": "0.5.0", + "node-fetch": "2.6.1", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, + "@firebase/functions-types": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.4.0.tgz", + "integrity": "sha512-3KElyO3887HNxtxNF1ytGFrNmqD+hheqjwmT3sI09FaDCuaxGbOnsXAXH2eQ049XRXw9YQpHMgYws/aUNgXVyQ==" + }, + "@firebase/installations": { + "version": "0.4.31", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.4.31.tgz", + "integrity": "sha512-qWolhAgMHvD3avsNCl+K8+untzoDDFQIRR8At8kyWMKKosy0vttdWTWzjvDoZbyKU6r0RNlxDUWAgV88Q8EudQ==", + "requires": { + "@firebase/component": "0.5.5", + "@firebase/installations-types": "0.3.4", + "@firebase/util": "1.2.0", + "idb": "3.0.2", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, + "@firebase/installations-types": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.3.4.tgz", + "integrity": "sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q==" + }, + "@firebase/logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.2.6.tgz", + "integrity": "sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw==" + }, + "@firebase/messaging": { + "version": "0.7.15", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.7.15.tgz", + "integrity": "sha512-81t6iJtqMBJF5LHTjDhlHUpbPZOV6dKhW0TueAoON4omc0SaDXgf4nnk6JkvZRfdcuOaP8848Cv53tvZPFFAYQ==", + "requires": { + "@firebase/component": "0.5.5", + "@firebase/installations": "0.4.31", + "@firebase/messaging-types": "0.5.0", + "@firebase/util": "1.2.0", + "idb": "3.0.2", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, + "@firebase/messaging-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.5.0.tgz", + "integrity": "sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg==" + }, + "@firebase/performance": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.4.17.tgz", + "integrity": "sha512-uhDs9rhdMrGraYHcd3CTRkGtcNap4hp6rAHTwJNIX56Z3RzQ1VW2ea9vvesl7EjFtEIPU0jfdrS32wV+qer5DQ==", + "requires": { + "@firebase/component": "0.5.5", + "@firebase/installations": "0.4.31", + "@firebase/logger": "0.2.6", + "@firebase/performance-types": "0.0.13", + "@firebase/util": "1.2.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, + "@firebase/performance-types": { + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.0.13.tgz", + "integrity": "sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA==" + }, + "@firebase/polyfill": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.36.tgz", + "integrity": "sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg==", + "requires": { + "core-js": "3.6.5", + "promise-polyfill": "8.1.3", + "whatwg-fetch": "2.0.4" + }, + "dependencies": { + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" + }, + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + } + } + }, + "@firebase/remote-config": { + "version": "0.1.42", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.1.42.tgz", + "integrity": "sha512-hWwtAZmYLB274bxjV2cdMYhyBCUUqbYErihGx3rMyab76D+VbIxOuKJb2z0DS67jQG+SA3pr9/MtWsTPHV/l9g==", + "requires": { + "@firebase/component": "0.5.5", + "@firebase/installations": "0.4.31", + "@firebase/logger": "0.2.6", + "@firebase/remote-config-types": "0.1.9", + "@firebase/util": "1.2.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, + "@firebase/remote-config-types": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz", + "integrity": "sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA==" + }, + "@firebase/storage": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.6.1.tgz", + "integrity": "sha512-00WEdmmKoKUHBsufUIUDgBS5ghAe8tCp1QbHQnnlf3aekAgFf8UKjfR6QMaHoEIzuZPhWPStQ5KrrIcWA/MMQg==", + "requires": { + "@firebase/component": "0.5.5", + "@firebase/storage-types": "0.4.1", + "@firebase/util": "1.2.0", + "node-fetch": "2.6.1", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, + "@firebase/storage-types": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.4.1.tgz", + "integrity": "sha512-IM4cRzAnQ6QZoaxVZ5MatBzqXVcp47hOlE28jd9xXw1M9V7gfjhmW0PALGFQx58tPVmuUwIKyoEbHZjV4qRJwQ==" + }, + "@firebase/util": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.2.0.tgz", + "integrity": "sha512-8W9TTGImXr9cu+oyjBJ7yjoEd/IVAv0pBZA4c1uIuKrpGZi2ee38m+8xlZOBRmsAaOU/tR9DXz1WF/oeM6Fb7Q==", + "requires": { + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, + "@firebase/webchannel-wrapper": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.5.1.tgz", + "integrity": "sha512-dZMzN0uAjwJXWYYAcnxIwXqRTZw3o14hGe7O6uhwjD1ZQWPVYA5lASgnNskEBra0knVBsOXB4KXg+HnlKewN/A==" + }, "@formatjs/intl-displaynames": { "version": "1.2.10", "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-1.2.10.tgz", @@ -2861,75 +3241,162 @@ "resolved": "https://registry.npmjs.org/@fullstory/browser/-/browser-1.4.9.tgz", "integrity": "sha512-h8ihrXT8pGemh5n7CKrukkEbbRIuCi0I/GJKI8DJpGyloI4WNTX5SC8Aihec7ScfK6Fi6ZpiLkGP3hogZqoNWw==" }, - "@hapi/address": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", - "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", - "dev": true - }, - "@hapi/bourne": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", - "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", - "dev": true - }, - "@hapi/hoek": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", - "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", - "dev": true - }, - "@hapi/joi": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", - "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", - "dev": true, - "requires": { - "@hapi/address": "2.x.x", - "@hapi/bourne": "1.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/topo": "3.x.x" - } - }, - "@hapi/topo": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", - "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", - "dev": true, + "@grpc/grpc-js": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.3.6.tgz", + "integrity": "sha512-v7+LQFbqZKmd/Tvf5/j1Xlbq6jXL/4d+gUtm2TNX4QiEC3ELWADmGr2dGlUyLl6aKTuYfsN72vAsO5zmavYkEg==", "requires": { - "@hapi/hoek": "^8.3.0" + "@types/node": ">=12.12.47" } }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, + "@grpc/proto-loader": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.4.tgz", + "integrity": "sha512-7xvDvW/vJEcmLUltCUGOgWRPM8Oofv0eCFSVMuKqaqWJaXSzmB+m9hiyqe34QofAl4WAzIKUZZlinIF9FOHyTQ==", "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^6.10.0", + "yargs": "^16.1.1" }, "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + } + } + }, + "@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", + "dev": true + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", + "dev": true + }, + "@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", + "dev": true + }, + "@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "dev": true, + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "dev": true, + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" }, "@jest/console": { @@ -3932,6 +4399,39 @@ "@types/whatwg-streams": "^0.0.7" } }, + "@mdx-js/loader": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-1.6.22.tgz", + "integrity": "sha512-9CjGwy595NaxAYp0hF9B/A0lH6C8Rms97e2JS9d3jVUtILn6pT5i5IV965ra3lIWc7Rs1GG1tBdVF7dCowYe6Q==", + "dev": true, + "requires": { + "@mdx-js/mdx": "1.6.22", + "@mdx-js/react": "1.6.22", + "loader-utils": "2.0.0" + }, + "dependencies": { + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, "@mdx-js/mdx": { "version": "1.6.22", "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz", @@ -4297,6 +4797,60 @@ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.2.tgz", "integrity": "sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q==" }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + }, "@reach/router": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/@reach/router/-/router-1.3.4.tgz", @@ -4375,65 +4929,3217 @@ "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + } + } + }, + "@rollup/plugin-replace": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.3.4.tgz", + "integrity": "sha512-waBhMzyAtjCL1GwZes2jaE9MjuQ/DQF2BatH3fRivUF3z0JBFrU0U6iBNC/4WR+2rLKhaAhPWDNPYp4mI6RqdQ==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@sinonjs/commons": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.2.tgz", + "integrity": "sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@storybook/addon-actions": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.3.6.tgz", + "integrity": "sha512-1MBqCbFiupGEDyIXqFkzF4iR8AduuB7qSNduqtsFauvIkrG5bnlbg5JC7WjnixkCaaWlufgbpasEHioXO9EXGw==", + "dev": true, + "requires": { + "@storybook/addons": "6.3.6", + "@storybook/api": "6.3.6", + "@storybook/client-api": "6.3.6", + "@storybook/components": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/theming": "6.3.6", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "polished": "^4.0.5", + "prop-types": "^15.7.2", + "react-inspector": "^5.1.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "uuid-browser": "^3.1.0" + }, + "dependencies": { + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "dev": true, + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "@storybook/addons": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.3.6.tgz", + "integrity": "sha512-tVV0vqaEEN9Md4bgScwfrnZYkN8iKZarpkIOFheLev+PHjSp8lgWMK5SNWDlbBYqfQfzrz9xbs+F07bMjfx9jQ==", + "dev": true, + "requires": { + "@storybook/api": "6.3.6", + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/router": "6.3.6", + "@storybook/theming": "6.3.6", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/api": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.3.6.tgz", + "integrity": "sha512-F5VuR1FrEwD51OO/EDDAZXNfF5XmJedYHJLwwCB4az2ZMrzG45TxGRmiEohrSTO6wAHGkAvjlEoX5jWOCqQ4pw==", + "dev": true, + "requires": { + "@reach/router": "^1.3.4", + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/csf": "0.0.1", + "@storybook/router": "6.3.6", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.3.6", + "@types/reach__router": "^1.3.7", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^5.3.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/channel-postmessage": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.3.6.tgz", + "integrity": "sha512-GK7hXnaa+1pxEeMpREDzAZ3+2+k1KN1lbrZf+V7Kc1JZv1/Ji/vxk8AgxwiuzPAMx5J0yh/FduPscIPZ87Pibw==", + "dev": true, + "requires": { + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "core-js": "^3.8.2", + "global": "^4.4.0", + "qs": "^6.10.0", + "telejson": "^5.3.2" + } + }, + "@storybook/channels": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.6.tgz", + "integrity": "sha512-gCIQVr+dS/tg3AyCxIvkOXMVAs08BCIHXsaa2+XzmacnJBSP+CEHtI6IZ8WEv7tzZuXOiKLVg+wugeIh4j2I4g==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-api": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.3.6.tgz", + "integrity": "sha512-Q/bWuH691L6k7xkiKtBmZo8C+ijgmQ+vc2Fz8pzIRZuMV8ROL74qhrS4BMKV4LhiYm4f8todtWfaQPBjawZMIA==", + "dev": true, + "requires": { + "@storybook/addons": "6.3.6", + "@storybook/channel-postmessage": "6.3.6", + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/csf": "0.0.1", + "@types/qs": "^6.9.5", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "stable": "^0.1.8", + "store2": "^2.12.0", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-logger": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.6.tgz", + "integrity": "sha512-qpXQ52ylxPm7l3+WAteV42NmqWA+L1FaJhMOvm2gwl3PxRd2cNXn2BwEhw++eA6qmJH/7mfOKXG+K+QQwOTpRA==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "global": "^4.4.0" + } + }, + "@storybook/components": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.6.tgz", + "integrity": "sha512-aZkmtAY8b+LFXG6dVp6cTS6zGJuxkHRHcesRSWRQPxtgitaz1G58clRHxbKPRokfjPHNgYA3snogyeqxSA7YNQ==", + "dev": true, + "requires": { + "@popperjs/core": "^2.6.0", + "@storybook/client-logger": "6.3.6", + "@storybook/csf": "0.0.1", + "@storybook/theming": "6.3.6", + "@types/color-convert": "^2.0.0", + "@types/overlayscrollbars": "^1.12.0", + "@types/react-syntax-highlighter": "11.0.5", + "color-convert": "^2.0.1", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "markdown-to-jsx": "^7.1.3", + "memoizerific": "^1.11.3", + "overlayscrollbars": "^1.13.1", + "polished": "^4.0.5", + "prop-types": "^15.7.2", + "react-colorful": "^5.1.2", + "react-popper-tooltip": "^3.1.1", + "react-syntax-highlighter": "^13.5.3", + "react-textarea-autosize": "^8.3.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/core-events": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.6.tgz", + "integrity": "sha512-Ut1dz96bJ939oSn5t1ckPXd3WcFejK96Sb3+R/z23vEHUWGBFtygGyw8r/SX/WNDVzGmQU8c+mzJJTZwCBJz8A==", + "dev": true, + "requires": { + "core-js": "^3.8.2" + } + }, + "@storybook/router": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.6.tgz", + "integrity": "sha512-fQ1n7cm7lPFav7I+fStQciSVMlNdU+yLY6Fue252rpV5Q68bMTjwKpjO9P2/Y3CCj4QD3dPqwEkn4s0qUn5tNA==", + "dev": true, + "requires": { + "@reach/router": "^1.3.4", + "@storybook/client-logger": "6.3.6", + "@types/reach__router": "^1.3.7", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==", + "dev": true, + "requires": { + "core-js": "^3.6.5", + "find-up": "^4.1.0" + } + }, + "@storybook/theming": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.6.tgz", + "integrity": "sha512-mPrQrMUREajNEWxzgR8t0YIZsI9avPv25VNA08fANnwVsc887p4OL5eCTL2dFIlD34YDzAwiyRKYoLj2vDW4nw==", + "dev": true, + "requires": { + "@emotion/core": "^10.1.1", + "@emotion/is-prop-valid": "^0.8.6", + "@emotion/styled": "^10.0.27", + "@storybook/client-logger": "6.3.6", + "core-js": "^3.8.2", + "deep-object-diff": "^1.1.0", + "emotion-theming": "^10.0.27", + "global": "^4.4.0", + "memoizerific": "^1.11.3", + "polished": "^4.0.5", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "markdown-to-jsx": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.3.tgz", + "integrity": "sha512-jtQ6VyT7rMT5tPV0g2EJakEnXLiPksnvlYtwQsVVZ611JsWGN8bQ1tVSDX4s6JllfEH6wmsYxNjTUAMrPmNA8w==", + "dev": true + }, + "qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@storybook/addon-backgrounds": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-6.3.6.tgz", + "integrity": "sha512-1lBVAem2M+ggb1UNVgB7/56LaQAor9lI8q0xtQdAzAkt9K4RbbOsLGRhyUm3QH5OiB3qHHG5WQBujWUD6Qfy4g==", + "dev": true, + "requires": { + "@storybook/addons": "6.3.6", + "@storybook/api": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/components": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/theming": "6.3.6", + "core-js": "^3.8.2", + "global": "^4.4.0", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "dependencies": { + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "dev": true, + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "@storybook/addons": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.3.6.tgz", + "integrity": "sha512-tVV0vqaEEN9Md4bgScwfrnZYkN8iKZarpkIOFheLev+PHjSp8lgWMK5SNWDlbBYqfQfzrz9xbs+F07bMjfx9jQ==", + "dev": true, + "requires": { + "@storybook/api": "6.3.6", + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/router": "6.3.6", + "@storybook/theming": "6.3.6", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/api": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.3.6.tgz", + "integrity": "sha512-F5VuR1FrEwD51OO/EDDAZXNfF5XmJedYHJLwwCB4az2ZMrzG45TxGRmiEohrSTO6wAHGkAvjlEoX5jWOCqQ4pw==", + "dev": true, + "requires": { + "@reach/router": "^1.3.4", + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/csf": "0.0.1", + "@storybook/router": "6.3.6", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.3.6", + "@types/reach__router": "^1.3.7", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^5.3.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/channels": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.6.tgz", + "integrity": "sha512-gCIQVr+dS/tg3AyCxIvkOXMVAs08BCIHXsaa2+XzmacnJBSP+CEHtI6IZ8WEv7tzZuXOiKLVg+wugeIh4j2I4g==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-logger": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.6.tgz", + "integrity": "sha512-qpXQ52ylxPm7l3+WAteV42NmqWA+L1FaJhMOvm2gwl3PxRd2cNXn2BwEhw++eA6qmJH/7mfOKXG+K+QQwOTpRA==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "global": "^4.4.0" + } + }, + "@storybook/components": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.6.tgz", + "integrity": "sha512-aZkmtAY8b+LFXG6dVp6cTS6zGJuxkHRHcesRSWRQPxtgitaz1G58clRHxbKPRokfjPHNgYA3snogyeqxSA7YNQ==", + "dev": true, + "requires": { + "@popperjs/core": "^2.6.0", + "@storybook/client-logger": "6.3.6", + "@storybook/csf": "0.0.1", + "@storybook/theming": "6.3.6", + "@types/color-convert": "^2.0.0", + "@types/overlayscrollbars": "^1.12.0", + "@types/react-syntax-highlighter": "11.0.5", + "color-convert": "^2.0.1", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "markdown-to-jsx": "^7.1.3", + "memoizerific": "^1.11.3", + "overlayscrollbars": "^1.13.1", + "polished": "^4.0.5", + "prop-types": "^15.7.2", + "react-colorful": "^5.1.2", + "react-popper-tooltip": "^3.1.1", + "react-syntax-highlighter": "^13.5.3", + "react-textarea-autosize": "^8.3.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/core-events": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.6.tgz", + "integrity": "sha512-Ut1dz96bJ939oSn5t1ckPXd3WcFejK96Sb3+R/z23vEHUWGBFtygGyw8r/SX/WNDVzGmQU8c+mzJJTZwCBJz8A==", + "dev": true, + "requires": { + "core-js": "^3.8.2" + } + }, + "@storybook/router": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.6.tgz", + "integrity": "sha512-fQ1n7cm7lPFav7I+fStQciSVMlNdU+yLY6Fue252rpV5Q68bMTjwKpjO9P2/Y3CCj4QD3dPqwEkn4s0qUn5tNA==", + "dev": true, + "requires": { + "@reach/router": "^1.3.4", + "@storybook/client-logger": "6.3.6", + "@types/reach__router": "^1.3.7", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==", + "dev": true, + "requires": { + "core-js": "^3.6.5", + "find-up": "^4.1.0" + } + }, + "@storybook/theming": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.6.tgz", + "integrity": "sha512-mPrQrMUREajNEWxzgR8t0YIZsI9avPv25VNA08fANnwVsc887p4OL5eCTL2dFIlD34YDzAwiyRKYoLj2vDW4nw==", + "dev": true, + "requires": { + "@emotion/core": "^10.1.1", + "@emotion/is-prop-valid": "^0.8.6", + "@emotion/styled": "^10.0.27", + "@storybook/client-logger": "6.3.6", + "core-js": "^3.8.2", + "deep-object-diff": "^1.1.0", + "emotion-theming": "^10.0.27", + "global": "^4.4.0", + "memoizerific": "^1.11.3", + "polished": "^4.0.5", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "markdown-to-jsx": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.3.tgz", + "integrity": "sha512-jtQ6VyT7rMT5tPV0g2EJakEnXLiPksnvlYtwQsVVZ611JsWGN8bQ1tVSDX4s6JllfEH6wmsYxNjTUAMrPmNA8w==", + "dev": true + }, + "qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@storybook/addon-controls": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-6.3.6.tgz", + "integrity": "sha512-wTWmnZl2qEAUqgLh8a7TL5f6w37Q51lAoJNlwxFFBSKtGS7xFUnou4qTUArNy5iKu1cWoVvofJ9RnP1maGByYA==", + "dev": true, + "requires": { + "@storybook/addons": "6.3.6", + "@storybook/api": "6.3.6", + "@storybook/client-api": "6.3.6", + "@storybook/components": "6.3.6", + "@storybook/node-logger": "6.3.6", + "@storybook/theming": "6.3.6", + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0" + }, + "dependencies": { + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "dev": true, + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "@storybook/addons": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.3.6.tgz", + "integrity": "sha512-tVV0vqaEEN9Md4bgScwfrnZYkN8iKZarpkIOFheLev+PHjSp8lgWMK5SNWDlbBYqfQfzrz9xbs+F07bMjfx9jQ==", + "dev": true, + "requires": { + "@storybook/api": "6.3.6", + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/router": "6.3.6", + "@storybook/theming": "6.3.6", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/api": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.3.6.tgz", + "integrity": "sha512-F5VuR1FrEwD51OO/EDDAZXNfF5XmJedYHJLwwCB4az2ZMrzG45TxGRmiEohrSTO6wAHGkAvjlEoX5jWOCqQ4pw==", + "dev": true, + "requires": { + "@reach/router": "^1.3.4", + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/csf": "0.0.1", + "@storybook/router": "6.3.6", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.3.6", + "@types/reach__router": "^1.3.7", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^5.3.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/channel-postmessage": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.3.6.tgz", + "integrity": "sha512-GK7hXnaa+1pxEeMpREDzAZ3+2+k1KN1lbrZf+V7Kc1JZv1/Ji/vxk8AgxwiuzPAMx5J0yh/FduPscIPZ87Pibw==", + "dev": true, + "requires": { + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "core-js": "^3.8.2", + "global": "^4.4.0", + "qs": "^6.10.0", + "telejson": "^5.3.2" + } + }, + "@storybook/channels": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.6.tgz", + "integrity": "sha512-gCIQVr+dS/tg3AyCxIvkOXMVAs08BCIHXsaa2+XzmacnJBSP+CEHtI6IZ8WEv7tzZuXOiKLVg+wugeIh4j2I4g==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-api": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.3.6.tgz", + "integrity": "sha512-Q/bWuH691L6k7xkiKtBmZo8C+ijgmQ+vc2Fz8pzIRZuMV8ROL74qhrS4BMKV4LhiYm4f8todtWfaQPBjawZMIA==", + "dev": true, + "requires": { + "@storybook/addons": "6.3.6", + "@storybook/channel-postmessage": "6.3.6", + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/csf": "0.0.1", + "@types/qs": "^6.9.5", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "stable": "^0.1.8", + "store2": "^2.12.0", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-logger": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.6.tgz", + "integrity": "sha512-qpXQ52ylxPm7l3+WAteV42NmqWA+L1FaJhMOvm2gwl3PxRd2cNXn2BwEhw++eA6qmJH/7mfOKXG+K+QQwOTpRA==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "global": "^4.4.0" + } + }, + "@storybook/components": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.6.tgz", + "integrity": "sha512-aZkmtAY8b+LFXG6dVp6cTS6zGJuxkHRHcesRSWRQPxtgitaz1G58clRHxbKPRokfjPHNgYA3snogyeqxSA7YNQ==", + "dev": true, + "requires": { + "@popperjs/core": "^2.6.0", + "@storybook/client-logger": "6.3.6", + "@storybook/csf": "0.0.1", + "@storybook/theming": "6.3.6", + "@types/color-convert": "^2.0.0", + "@types/overlayscrollbars": "^1.12.0", + "@types/react-syntax-highlighter": "11.0.5", + "color-convert": "^2.0.1", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "markdown-to-jsx": "^7.1.3", + "memoizerific": "^1.11.3", + "overlayscrollbars": "^1.13.1", + "polished": "^4.0.5", + "prop-types": "^15.7.2", + "react-colorful": "^5.1.2", + "react-popper-tooltip": "^3.1.1", + "react-syntax-highlighter": "^13.5.3", + "react-textarea-autosize": "^8.3.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/core-events": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.6.tgz", + "integrity": "sha512-Ut1dz96bJ939oSn5t1ckPXd3WcFejK96Sb3+R/z23vEHUWGBFtygGyw8r/SX/WNDVzGmQU8c+mzJJTZwCBJz8A==", + "dev": true, + "requires": { + "core-js": "^3.8.2" + } + }, + "@storybook/node-logger": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.3.6.tgz", + "integrity": "sha512-XMDkMN7nVRojjiezrURlkI57+nz3OoH4UBV6qJZICKclxtdKAy0wwOlUSYEUq+axcJ4nvdfzPPoDfGoj37SW7A==", + "dev": true, + "requires": { + "@types/npmlog": "^4.1.2", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "npmlog": "^4.1.2", + "pretty-hrtime": "^1.0.3" + } + }, + "@storybook/router": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.6.tgz", + "integrity": "sha512-fQ1n7cm7lPFav7I+fStQciSVMlNdU+yLY6Fue252rpV5Q68bMTjwKpjO9P2/Y3CCj4QD3dPqwEkn4s0qUn5tNA==", + "dev": true, + "requires": { + "@reach/router": "^1.3.4", + "@storybook/client-logger": "6.3.6", + "@types/reach__router": "^1.3.7", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==", + "dev": true, + "requires": { + "core-js": "^3.6.5", + "find-up": "^4.1.0" + } + }, + "@storybook/theming": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.6.tgz", + "integrity": "sha512-mPrQrMUREajNEWxzgR8t0YIZsI9avPv25VNA08fANnwVsc887p4OL5eCTL2dFIlD34YDzAwiyRKYoLj2vDW4nw==", + "dev": true, + "requires": { + "@emotion/core": "^10.1.1", + "@emotion/is-prop-valid": "^0.8.6", + "@emotion/styled": "^10.0.27", + "@storybook/client-logger": "6.3.6", + "core-js": "^3.8.2", + "deep-object-diff": "^1.1.0", + "emotion-theming": "^10.0.27", + "global": "^4.4.0", + "memoizerific": "^1.11.3", + "polished": "^4.0.5", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "markdown-to-jsx": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.3.tgz", + "integrity": "sha512-jtQ6VyT7rMT5tPV0g2EJakEnXLiPksnvlYtwQsVVZ611JsWGN8bQ1tVSDX4s6JllfEH6wmsYxNjTUAMrPmNA8w==", + "dev": true + }, + "qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@storybook/addon-docs": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-6.3.6.tgz", + "integrity": "sha512-/ZPB9u3lfc6ZUrgt9HENU1BxAHNfTbh9r2LictQ8o9gYE/BqvZutl2zqilTpVuutQtTgQ6JycVhxtpk9+TDcuA==", + "dev": true, + "requires": { + "@babel/core": "^7.12.10", + "@babel/generator": "^7.12.11", + "@babel/parser": "^7.12.11", + "@babel/plugin-transform-react-jsx": "^7.12.12", + "@babel/preset-env": "^7.12.11", + "@jest/transform": "^26.6.2", + "@mdx-js/loader": "^1.6.22", + "@mdx-js/mdx": "^1.6.22", + "@mdx-js/react": "^1.6.22", + "@storybook/addons": "6.3.6", + "@storybook/api": "6.3.6", + "@storybook/builder-webpack4": "6.3.6", + "@storybook/client-api": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/components": "6.3.6", + "@storybook/core": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/csf": "0.0.1", + "@storybook/csf-tools": "6.3.6", + "@storybook/node-logger": "6.3.6", + "@storybook/postinstall": "6.3.6", + "@storybook/source-loader": "6.3.6", + "@storybook/theming": "6.3.6", + "acorn": "^7.4.1", + "acorn-jsx": "^5.3.1", + "acorn-walk": "^7.2.0", + "core-js": "^3.8.2", + "doctrine": "^3.0.0", + "escodegen": "^2.0.0", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "html-tags": "^3.1.0", + "js-string-escape": "^1.0.1", + "loader-utils": "^2.0.0", + "lodash": "^4.17.20", + "p-limit": "^3.1.0", + "prettier": "~2.2.1", + "prop-types": "^15.7.2", + "react-element-to-jsx-string": "^14.3.2", + "regenerator-runtime": "^0.13.7", + "remark-external-links": "^8.0.0", + "remark-slug": "^6.0.0", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/compat-data": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", + "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", + "dev": true + }, + "@babel/core": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz", + "integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.0", + "@babel/helper-module-transforms": "^7.15.0", + "@babel/helpers": "^7.14.8", + "@babel/parser": "^7.15.0", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz", + "integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==", + "dev": true, + "requires": { + "@babel/types": "^7.15.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz", + "integrity": "sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz", + "integrity": "sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.0.tgz", + "integrity": "sha512-MdmDXgvTIi4heDVX/e9EFfeGpugqm9fobBVg/iioE8kueXrOHdRDe36FAY7SnE9xXLVeYCoJR/gdrBEIHRC83Q==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-member-expression-to-functions": "^7.15.0", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/helper-replace-supers": "^7.15.0", + "@babel/helper-split-export-declaration": "^7.14.5" + } + }, + "@babel/helper-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz", + "integrity": "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==", + "dev": true, + "requires": { + "@babel/types": "^7.15.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz", + "integrity": "sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.15.0", + "@babel/helper-simple-access": "^7.14.8", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz", + "integrity": "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.15.0", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz", + "integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==", + "dev": true, + "requires": { + "@babel/types": "^7.14.8" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", + "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true + }, + "@babel/helpers": { + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.8.tgz", + "integrity": "sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw==", + "dev": true, + "requires": { + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.8", + "@babel/types": "^7.14.8" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.0.tgz", + "integrity": "sha512-0v7oNOjr6YT9Z2RAOTv4T9aP+ubfx4Q/OhVtAet7PFDt0t9Oy6Jn+/rfC6b8HJ5zEqrQCiMxJfgtHpmIminmJQ==", + "dev": true + }, + "@babel/plugin-proposal-decorators": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.14.5.tgz", + "integrity": "sha512-LYz5nvQcvYeRVjui1Ykn28i+3aUiXwQ/3MGoEy0InTaz1pJo/lAzmIDXX+BQny/oufgHzJ6vnEEiXQ8KZjEVFg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-decorators": "^7.14.5" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.14.5.tgz", + "integrity": "sha512-c4sZMRWL4GSvP1EXy0woIP7m4jkVcEuG8R1TOZxPBPtp4FSM/kiPZub9UIs/Jrb5ZAOzvTUSGYrWsrSu1JvoPw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", + "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.15.0.tgz", + "integrity": "sha512-WIIEazmngMEEHDaPTx0IZY48SaAmjVWe3TRSX7cmJXn0bEv9midFzAjxiruOWYIVf5iQ10vFx7ASDpgEO08L5w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.15.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-typescript": "^7.14.5" + } + }, + "@babel/preset-typescript": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.15.0.tgz", + "integrity": "sha512-lt0Y/8V3y06Wq/8H/u0WakrqciZ7Fz7mwPDHWUJAXlABL5hiUG42BNlRXiELNjeWjO5rWmnNKlx+yzJvxezHow==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-typescript": "^7.15.0" + } + }, + "@babel/runtime": { + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.8.tgz", + "integrity": "sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/traverse": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz", + "integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.0", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.15.0", + "@babel/types": "^7.15.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "dev": true, + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "@storybook/addons": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.3.6.tgz", + "integrity": "sha512-tVV0vqaEEN9Md4bgScwfrnZYkN8iKZarpkIOFheLev+PHjSp8lgWMK5SNWDlbBYqfQfzrz9xbs+F07bMjfx9jQ==", + "dev": true, + "requires": { + "@storybook/api": "6.3.6", + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/router": "6.3.6", + "@storybook/theming": "6.3.6", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/api": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.3.6.tgz", + "integrity": "sha512-F5VuR1FrEwD51OO/EDDAZXNfF5XmJedYHJLwwCB4az2ZMrzG45TxGRmiEohrSTO6wAHGkAvjlEoX5jWOCqQ4pw==", + "dev": true, + "requires": { + "@reach/router": "^1.3.4", + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/csf": "0.0.1", + "@storybook/router": "6.3.6", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.3.6", + "@types/reach__router": "^1.3.7", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^5.3.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/builder-webpack4": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.3.6.tgz", + "integrity": "sha512-LhTPQQowS2t6BRnyfusWZLbhjjf54/HiQyovJTTDnqrCiO6QoCMbVnp79LeO1aSkpQCKoeqOZ7TzH87fCytnZA==", + "dev": true, + "requires": { + "@babel/core": "^7.12.10", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", + "@babel/plugin-proposal-export-default-from": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@storybook/addons": "6.3.6", + "@storybook/api": "6.3.6", + "@storybook/channel-postmessage": "6.3.6", + "@storybook/channels": "6.3.6", + "@storybook/client-api": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/components": "6.3.6", + "@storybook/core-common": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/node-logger": "6.3.6", + "@storybook/router": "6.3.6", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.3.6", + "@storybook/ui": "6.3.6", + "@types/node": "^14.0.10", + "@types/webpack": "^4.41.26", + "autoprefixer": "^9.8.6", + "babel-loader": "^8.2.2", + "babel-plugin-macros": "^2.8.0", + "babel-plugin-polyfill-corejs3": "^0.1.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "core-js": "^3.8.2", + "css-loader": "^3.6.0", + "dotenv-webpack": "^1.8.0", + "file-loader": "^6.2.0", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^4.1.6", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "glob-promise": "^3.4.0", + "global": "^4.4.0", + "html-webpack-plugin": "^4.0.0", + "pnp-webpack-plugin": "1.6.4", + "postcss": "^7.0.36", + "postcss-flexbugs-fixes": "^4.2.1", + "postcss-loader": "^4.2.0", + "raw-loader": "^4.0.2", + "react-dev-utils": "^11.0.3", + "stable": "^0.1.8", + "style-loader": "^1.3.0", + "terser-webpack-plugin": "^4.2.3", + "ts-dedent": "^2.0.0", + "url-loader": "^4.1.1", + "util-deprecate": "^1.0.2", + "webpack": "4", + "webpack-dev-middleware": "^3.7.3", + "webpack-filter-warnings-plugin": "^1.2.1", + "webpack-hot-middleware": "^2.25.0", + "webpack-virtual-modules": "^0.2.2" + }, + "dependencies": { + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + } + } + }, + "@storybook/channel-postmessage": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.3.6.tgz", + "integrity": "sha512-GK7hXnaa+1pxEeMpREDzAZ3+2+k1KN1lbrZf+V7Kc1JZv1/Ji/vxk8AgxwiuzPAMx5J0yh/FduPscIPZ87Pibw==", + "dev": true, + "requires": { + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "core-js": "^3.8.2", + "global": "^4.4.0", + "qs": "^6.10.0", + "telejson": "^5.3.2" + } + }, + "@storybook/channels": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.6.tgz", + "integrity": "sha512-gCIQVr+dS/tg3AyCxIvkOXMVAs08BCIHXsaa2+XzmacnJBSP+CEHtI6IZ8WEv7tzZuXOiKLVg+wugeIh4j2I4g==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-api": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.3.6.tgz", + "integrity": "sha512-Q/bWuH691L6k7xkiKtBmZo8C+ijgmQ+vc2Fz8pzIRZuMV8ROL74qhrS4BMKV4LhiYm4f8todtWfaQPBjawZMIA==", + "dev": true, + "requires": { + "@storybook/addons": "6.3.6", + "@storybook/channel-postmessage": "6.3.6", + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/csf": "0.0.1", + "@types/qs": "^6.9.5", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "stable": "^0.1.8", + "store2": "^2.12.0", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-logger": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.6.tgz", + "integrity": "sha512-qpXQ52ylxPm7l3+WAteV42NmqWA+L1FaJhMOvm2gwl3PxRd2cNXn2BwEhw++eA6qmJH/7mfOKXG+K+QQwOTpRA==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "global": "^4.4.0" + } + }, + "@storybook/components": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.6.tgz", + "integrity": "sha512-aZkmtAY8b+LFXG6dVp6cTS6zGJuxkHRHcesRSWRQPxtgitaz1G58clRHxbKPRokfjPHNgYA3snogyeqxSA7YNQ==", + "dev": true, + "requires": { + "@popperjs/core": "^2.6.0", + "@storybook/client-logger": "6.3.6", + "@storybook/csf": "0.0.1", + "@storybook/theming": "6.3.6", + "@types/color-convert": "^2.0.0", + "@types/overlayscrollbars": "^1.12.0", + "@types/react-syntax-highlighter": "11.0.5", + "color-convert": "^2.0.1", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "markdown-to-jsx": "^7.1.3", + "memoizerific": "^1.11.3", + "overlayscrollbars": "^1.13.1", + "polished": "^4.0.5", + "prop-types": "^15.7.2", + "react-colorful": "^5.1.2", + "react-popper-tooltip": "^3.1.1", + "react-syntax-highlighter": "^13.5.3", + "react-textarea-autosize": "^8.3.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/core": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.3.6.tgz", + "integrity": "sha512-y71VvVEbqCpG28fDBnfNg3RnUPnicwFYq9yuoFVRF0LYcJCy5cYhkIfW3JG8mN2m0P+LzH80mt2Rj6xlSXrkdQ==", + "dev": true, + "requires": { + "@storybook/core-client": "6.3.6", + "@storybook/core-server": "6.3.6" + } + }, + "@storybook/core-client": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.3.6.tgz", + "integrity": "sha512-Bq86flEdXdMNbdHrGMNQ6OT1tcBQU8ym56d+nG46Ctjf5GN+Dl+rPtRWuu7cIZs10KgqJH+86DXp+tvpQIDidg==", + "dev": true, + "requires": { + "@storybook/addons": "6.3.6", + "@storybook/channel-postmessage": "6.3.6", + "@storybook/client-api": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/csf": "0.0.1", + "@storybook/ui": "6.3.6", + "airbnb-js-shims": "^2.2.1", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.20", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/core-common": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.3.6.tgz", + "integrity": "sha512-nHolFOmTPymI50j180bCtcf1UJZ2eOnYaECRtHvVrCUod5KFF7wh2EHrgWoKqrKrsn84UOY/LkX2C2WkbYtWRg==", + "dev": true, + "requires": { + "@babel/core": "^7.12.10", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", + "@babel/plugin-proposal-export-default-from": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@babel/register": "^7.12.1", + "@storybook/node-logger": "6.3.6", + "@storybook/semver": "^7.3.2", + "@types/glob-base": "^0.3.0", + "@types/micromatch": "^4.0.1", + "@types/node": "^14.0.10", + "@types/pretty-hrtime": "^1.0.0", + "babel-loader": "^8.2.2", + "babel-plugin-macros": "^3.0.1", + "babel-plugin-polyfill-corejs3": "^0.1.0", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "express": "^4.17.1", + "file-system-cache": "^1.0.5", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.0.4", + "glob": "^7.1.6", + "glob-base": "^0.3.0", + "interpret": "^2.2.0", + "json5": "^2.1.3", + "lazy-universal-dotenv": "^3.0.1", + "micromatch": "^4.0.2", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "webpack": "4" + }, + "dependencies": { + "babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "fork-ts-checker-webpack-plugin": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.3.1.tgz", + "integrity": "sha512-uxqlKTEeSJ5/JRr0zaCiw2U+kOV8F4/MhCnnRf6vbxj4ZU3Or0DLl/0CNtXro7uLWDssnuR7wUN7fU9w1I0REA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + } + } + }, + "schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@storybook/core-events": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.6.tgz", + "integrity": "sha512-Ut1dz96bJ939oSn5t1ckPXd3WcFejK96Sb3+R/z23vEHUWGBFtygGyw8r/SX/WNDVzGmQU8c+mzJJTZwCBJz8A==", + "dev": true, + "requires": { + "core-js": "^3.8.2" + } + }, + "@storybook/core-server": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.3.6.tgz", + "integrity": "sha512-47ZcfxYn7t891oAMG98iH1BQIgQT9Yk/2BBNVCWY43Ong+ME1xJ6j4C/jkRUOseP7URlfLUQsUYKAYJNVijDvg==", + "dev": true, + "requires": { + "@storybook/builder-webpack4": "6.3.6", + "@storybook/core-client": "6.3.6", + "@storybook/core-common": "6.3.6", + "@storybook/csf-tools": "6.3.6", + "@storybook/manager-webpack4": "6.3.6", + "@storybook/node-logger": "6.3.6", + "@storybook/semver": "^7.3.2", + "@types/node": "^14.0.10", + "@types/node-fetch": "^2.5.7", + "@types/pretty-hrtime": "^1.0.0", + "@types/webpack": "^4.41.26", + "better-opn": "^2.1.1", + "boxen": "^4.2.0", + "chalk": "^4.1.0", + "cli-table3": "0.6.0", + "commander": "^6.2.1", + "compression": "^1.7.4", + "core-js": "^3.8.2", + "cpy": "^8.1.1", + "detect-port": "^1.3.0", + "express": "^4.17.1", + "file-system-cache": "^1.0.5", + "fs-extra": "^9.0.1", + "globby": "^11.0.2", + "ip": "^1.1.5", + "node-fetch": "^2.6.1", + "pretty-hrtime": "^1.0.3", + "prompts": "^2.4.0", + "regenerator-runtime": "^0.13.7", + "serve-favicon": "^2.5.0", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "webpack": "4" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "@storybook/csf-tools": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.3.6.tgz", + "integrity": "sha512-MQevelkEUVNCSjKMXLNc/G8q/BB5babPnSeI0IcJq4k+kLUSHtviimLNpPowMgGJBPx/y9VihH8N7vdJUWVj9w==", + "dev": true, + "requires": { + "@babel/generator": "^7.12.11", + "@babel/parser": "^7.12.11", + "@babel/plugin-transform-react-jsx": "^7.12.12", + "@babel/preset-env": "^7.12.11", + "@babel/traverse": "^7.12.11", + "@babel/types": "^7.12.11", + "@mdx-js/mdx": "^1.6.22", + "@storybook/csf": "^0.0.1", + "core-js": "^3.8.2", + "fs-extra": "^9.0.1", + "js-string-escape": "^1.0.1", + "lodash": "^4.17.20", + "prettier": "~2.2.1", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/manager-webpack4": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.3.6.tgz", + "integrity": "sha512-qh/jV4b6mFRpRFfhk1JSyO2gKRz8PLPvDt2AD52/bTAtNRzypKoiWqyZNR2CJ9hgNQtDrk2CO3eKPrcdKYGizQ==", + "dev": true, + "requires": { + "@babel/core": "^7.12.10", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/preset-react": "^7.12.10", + "@storybook/addons": "6.3.6", + "@storybook/core-client": "6.3.6", + "@storybook/core-common": "6.3.6", + "@storybook/node-logger": "6.3.6", + "@storybook/theming": "6.3.6", + "@storybook/ui": "6.3.6", + "@types/node": "^14.0.10", + "@types/webpack": "^4.41.26", + "babel-loader": "^8.2.2", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "css-loader": "^3.6.0", + "dotenv-webpack": "^1.8.0", + "express": "^4.17.1", + "file-loader": "^6.2.0", + "file-system-cache": "^1.0.5", + "find-up": "^5.0.0", + "fs-extra": "^9.0.1", + "html-webpack-plugin": "^4.0.0", + "node-fetch": "^2.6.1", + "pnp-webpack-plugin": "1.6.4", + "read-pkg-up": "^7.0.1", + "regenerator-runtime": "^0.13.7", + "resolve-from": "^5.0.0", + "style-loader": "^1.3.0", + "telejson": "^5.3.2", + "terser-webpack-plugin": "^4.2.3", + "ts-dedent": "^2.0.0", + "url-loader": "^4.1.1", + "util-deprecate": "^1.0.2", + "webpack": "4", + "webpack-dev-middleware": "^3.7.3", + "webpack-virtual-modules": "^0.2.2" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + } + } + }, + "@storybook/node-logger": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.3.6.tgz", + "integrity": "sha512-XMDkMN7nVRojjiezrURlkI57+nz3OoH4UBV6qJZICKclxtdKAy0wwOlUSYEUq+axcJ4nvdfzPPoDfGoj37SW7A==", + "dev": true, + "requires": { + "@types/npmlog": "^4.1.2", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "npmlog": "^4.1.2", + "pretty-hrtime": "^1.0.3" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "@storybook/router": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.6.tgz", + "integrity": "sha512-fQ1n7cm7lPFav7I+fStQciSVMlNdU+yLY6Fue252rpV5Q68bMTjwKpjO9P2/Y3CCj4QD3dPqwEkn4s0qUn5tNA==", + "dev": true, + "requires": { + "@reach/router": "^1.3.4", + "@storybook/client-logger": "6.3.6", + "@types/reach__router": "^1.3.7", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==", + "dev": true, + "requires": { + "core-js": "^3.6.5", + "find-up": "^4.1.0" + } + }, + "@storybook/theming": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.6.tgz", + "integrity": "sha512-mPrQrMUREajNEWxzgR8t0YIZsI9avPv25VNA08fANnwVsc887p4OL5eCTL2dFIlD34YDzAwiyRKYoLj2vDW4nw==", + "dev": true, + "requires": { + "@emotion/core": "^10.1.1", + "@emotion/is-prop-valid": "^0.8.6", + "@emotion/styled": "^10.0.27", + "@storybook/client-logger": "6.3.6", + "core-js": "^3.8.2", + "deep-object-diff": "^1.1.0", + "emotion-theming": "^10.0.27", + "global": "^4.4.0", + "memoizerific": "^1.11.3", + "polished": "^4.0.5", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/ui": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.3.6.tgz", + "integrity": "sha512-S9FjISUiAmbBR7d6ubUEcELQdffDfRxerloxkXs5Ou7n8fEPqpgQB01Hw5MLRUwTEpxPzHn+xtIGYritAGxt/Q==", + "dev": true, + "requires": { + "@emotion/core": "^10.1.1", + "@storybook/addons": "6.3.6", + "@storybook/api": "6.3.6", + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/components": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/router": "6.3.6", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.3.6", + "@types/markdown-to-jsx": "^6.11.3", + "copy-to-clipboard": "^3.3.1", + "core-js": "^3.8.2", + "core-js-pure": "^3.8.2", + "downshift": "^6.0.15", + "emotion-theming": "^10.0.27", + "fuse.js": "^3.6.1", + "global": "^4.4.0", + "lodash": "^4.17.20", + "markdown-to-jsx": "^6.11.4", + "memoizerific": "^1.11.3", + "polished": "^4.0.5", + "qs": "^6.10.0", + "react-draggable": "^4.4.3", + "react-helmet-async": "^1.0.7", + "react-sizeme": "^3.0.1", + "regenerator-runtime": "^0.13.7", + "resolve-from": "^5.0.0", + "store2": "^2.12.0" + }, + "dependencies": { + "markdown-to-jsx": { + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", + "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", + "dev": true, + "requires": { + "prop-types": "^15.6.2", + "unquote": "^1.1.0" + } + } + } + }, + "@types/node": { + "version": "14.17.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.9.tgz", + "integrity": "sha512-CMjgRNsks27IDwI785YMY0KLt3co/c0cQ5foxHYv/shC2w8oOnVwz5Ubq1QG5KzrcW+AXk6gzdnxIkDnTvzu3g==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "babel-loader": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", + "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true + }, + "core-js-pure": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.16.0.tgz", + "integrity": "sha512-wzlhZNepF/QA9yvx3ePDgNGudU5KDB8lu/TRPKelYA/QtSnkS/cLl2W+TIdEX1FAFcBr0YpY7tPDlcmXJ7AyiQ==", + "dev": true + }, + "cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "css-loader": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", + "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.0", + "semver": "^6.3.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "detect-port": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", + "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", + "dev": true, + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + }, + "file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "markdown-to-jsx": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.3.tgz", + "integrity": "sha512-jtQ6VyT7rMT5tPV0g2EJakEnXLiPksnvlYtwQsVVZ611JsWGN8bQ1tVSDX4s6JllfEH6wmsYxNjTUAMrPmNA8w==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "dev": true, + "requires": { + "find-up": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.3.0.tgz", + "integrity": "sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.4" + }, + "dependencies": { + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@storybook/addon-essentials": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-6.3.6.tgz", + "integrity": "sha512-FUrpCeINaN4L9L81FswtQFEq2xLwj3W7EyhmqsZcYSr64nscpQyjlPVjs5zhrEanOGIf+4E+mBmWafxbYufXwQ==", + "dev": true, + "requires": { + "@storybook/addon-actions": "6.3.6", + "@storybook/addon-backgrounds": "6.3.6", + "@storybook/addon-controls": "6.3.6", + "@storybook/addon-docs": "6.3.6", + "@storybook/addon-measure": "^2.0.0", + "@storybook/addon-toolbars": "6.3.6", + "@storybook/addon-viewport": "6.3.6", + "@storybook/addons": "6.3.6", + "@storybook/api": "6.3.6", + "@storybook/node-logger": "6.3.6", + "core-js": "^3.8.2", + "regenerator-runtime": "^0.13.7", + "storybook-addon-outline": "^1.4.1", + "ts-dedent": "^2.0.0" + }, + "dependencies": { + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "dev": true, + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "@storybook/addons": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.3.6.tgz", + "integrity": "sha512-tVV0vqaEEN9Md4bgScwfrnZYkN8iKZarpkIOFheLev+PHjSp8lgWMK5SNWDlbBYqfQfzrz9xbs+F07bMjfx9jQ==", + "dev": true, + "requires": { + "@storybook/api": "6.3.6", + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/router": "6.3.6", + "@storybook/theming": "6.3.6", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/api": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.3.6.tgz", + "integrity": "sha512-F5VuR1FrEwD51OO/EDDAZXNfF5XmJedYHJLwwCB4az2ZMrzG45TxGRmiEohrSTO6wAHGkAvjlEoX5jWOCqQ4pw==", + "dev": true, + "requires": { + "@reach/router": "^1.3.4", + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/csf": "0.0.1", + "@storybook/router": "6.3.6", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.3.6", + "@types/reach__router": "^1.3.7", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^5.3.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/channels": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.6.tgz", + "integrity": "sha512-gCIQVr+dS/tg3AyCxIvkOXMVAs08BCIHXsaa2+XzmacnJBSP+CEHtI6IZ8WEv7tzZuXOiKLVg+wugeIh4j2I4g==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-logger": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.6.tgz", + "integrity": "sha512-qpXQ52ylxPm7l3+WAteV42NmqWA+L1FaJhMOvm2gwl3PxRd2cNXn2BwEhw++eA6qmJH/7mfOKXG+K+QQwOTpRA==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "global": "^4.4.0" + } + }, + "@storybook/core-events": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.6.tgz", + "integrity": "sha512-Ut1dz96bJ939oSn5t1ckPXd3WcFejK96Sb3+R/z23vEHUWGBFtygGyw8r/SX/WNDVzGmQU8c+mzJJTZwCBJz8A==", + "dev": true, + "requires": { + "core-js": "^3.8.2" + } + }, + "@storybook/node-logger": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.3.6.tgz", + "integrity": "sha512-XMDkMN7nVRojjiezrURlkI57+nz3OoH4UBV6qJZICKclxtdKAy0wwOlUSYEUq+axcJ4nvdfzPPoDfGoj37SW7A==", + "dev": true, + "requires": { + "@types/npmlog": "^4.1.2", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "npmlog": "^4.1.2", + "pretty-hrtime": "^1.0.3" + } + }, + "@storybook/router": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.6.tgz", + "integrity": "sha512-fQ1n7cm7lPFav7I+fStQciSVMlNdU+yLY6Fue252rpV5Q68bMTjwKpjO9P2/Y3CCj4QD3dPqwEkn4s0qUn5tNA==", + "dev": true, + "requires": { + "@reach/router": "^1.3.4", + "@storybook/client-logger": "6.3.6", + "@types/reach__router": "^1.3.7", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==", + "dev": true, + "requires": { + "core-js": "^3.6.5", + "find-up": "^4.1.0" + } + }, + "@storybook/theming": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.6.tgz", + "integrity": "sha512-mPrQrMUREajNEWxzgR8t0YIZsI9avPv25VNA08fANnwVsc887p4OL5eCTL2dFIlD34YDzAwiyRKYoLj2vDW4nw==", + "dev": true, + "requires": { + "@emotion/core": "^10.1.1", + "@emotion/is-prop-valid": "^0.8.6", + "@emotion/styled": "^10.0.27", + "@storybook/client-logger": "6.3.6", + "core-js": "^3.8.2", + "deep-object-diff": "^1.1.0", + "emotion-theming": "^10.0.27", + "global": "^4.4.0", + "memoizerific": "^1.11.3", + "polished": "^4.0.5", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@storybook/addon-measure": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-2.0.0.tgz", + "integrity": "sha512-ZhdT++cX+L9LwjhGYggvYUUVQH/MGn2rwbrAwCMzA/f2QTFvkjxzX8nDgMxIhaLCDC+gHIxfJG2wrWN0jkBr3g==", + "dev": true + }, + "@storybook/addon-toolbars": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-6.3.6.tgz", + "integrity": "sha512-VpwkMtvT/4KNjqdO2SCkFw4koMgYN2k8hckbTGRzuUYYTHBvl9yK4q0A7RELEnkm/tsmDI1TjenV/MBifp2Aiw==", + "dev": true, + "requires": { + "@storybook/addons": "6.3.6", + "@storybook/api": "6.3.6", + "@storybook/client-api": "6.3.6", + "@storybook/components": "6.3.6", + "@storybook/theming": "6.3.6", + "core-js": "^3.8.2", + "regenerator-runtime": "^0.13.7" + }, + "dependencies": { + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "dev": true, + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "@storybook/addons": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.3.6.tgz", + "integrity": "sha512-tVV0vqaEEN9Md4bgScwfrnZYkN8iKZarpkIOFheLev+PHjSp8lgWMK5SNWDlbBYqfQfzrz9xbs+F07bMjfx9jQ==", + "dev": true, + "requires": { + "@storybook/api": "6.3.6", + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/router": "6.3.6", + "@storybook/theming": "6.3.6", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/api": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.3.6.tgz", + "integrity": "sha512-F5VuR1FrEwD51OO/EDDAZXNfF5XmJedYHJLwwCB4az2ZMrzG45TxGRmiEohrSTO6wAHGkAvjlEoX5jWOCqQ4pw==", + "dev": true, + "requires": { + "@reach/router": "^1.3.4", + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/csf": "0.0.1", + "@storybook/router": "6.3.6", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.3.6", + "@types/reach__router": "^1.3.7", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^5.3.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/channel-postmessage": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.3.6.tgz", + "integrity": "sha512-GK7hXnaa+1pxEeMpREDzAZ3+2+k1KN1lbrZf+V7Kc1JZv1/Ji/vxk8AgxwiuzPAMx5J0yh/FduPscIPZ87Pibw==", + "dev": true, + "requires": { + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "core-js": "^3.8.2", + "global": "^4.4.0", + "qs": "^6.10.0", + "telejson": "^5.3.2" + } + }, + "@storybook/channels": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.6.tgz", + "integrity": "sha512-gCIQVr+dS/tg3AyCxIvkOXMVAs08BCIHXsaa2+XzmacnJBSP+CEHtI6IZ8WEv7tzZuXOiKLVg+wugeIh4j2I4g==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-api": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.3.6.tgz", + "integrity": "sha512-Q/bWuH691L6k7xkiKtBmZo8C+ijgmQ+vc2Fz8pzIRZuMV8ROL74qhrS4BMKV4LhiYm4f8todtWfaQPBjawZMIA==", + "dev": true, + "requires": { + "@storybook/addons": "6.3.6", + "@storybook/channel-postmessage": "6.3.6", + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/csf": "0.0.1", + "@types/qs": "^6.9.5", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "stable": "^0.1.8", + "store2": "^2.12.0", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-logger": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.6.tgz", + "integrity": "sha512-qpXQ52ylxPm7l3+WAteV42NmqWA+L1FaJhMOvm2gwl3PxRd2cNXn2BwEhw++eA6qmJH/7mfOKXG+K+QQwOTpRA==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "global": "^4.4.0" + } + }, + "@storybook/components": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.6.tgz", + "integrity": "sha512-aZkmtAY8b+LFXG6dVp6cTS6zGJuxkHRHcesRSWRQPxtgitaz1G58clRHxbKPRokfjPHNgYA3snogyeqxSA7YNQ==", + "dev": true, + "requires": { + "@popperjs/core": "^2.6.0", + "@storybook/client-logger": "6.3.6", + "@storybook/csf": "0.0.1", + "@storybook/theming": "6.3.6", + "@types/color-convert": "^2.0.0", + "@types/overlayscrollbars": "^1.12.0", + "@types/react-syntax-highlighter": "11.0.5", + "color-convert": "^2.0.1", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "markdown-to-jsx": "^7.1.3", + "memoizerific": "^1.11.3", + "overlayscrollbars": "^1.13.1", + "polished": "^4.0.5", + "prop-types": "^15.7.2", + "react-colorful": "^5.1.2", + "react-popper-tooltip": "^3.1.1", + "react-syntax-highlighter": "^13.5.3", + "react-textarea-autosize": "^8.3.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/core-events": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.6.tgz", + "integrity": "sha512-Ut1dz96bJ939oSn5t1ckPXd3WcFejK96Sb3+R/z23vEHUWGBFtygGyw8r/SX/WNDVzGmQU8c+mzJJTZwCBJz8A==", + "dev": true, + "requires": { + "core-js": "^3.8.2" + } + }, + "@storybook/router": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.6.tgz", + "integrity": "sha512-fQ1n7cm7lPFav7I+fStQciSVMlNdU+yLY6Fue252rpV5Q68bMTjwKpjO9P2/Y3CCj4QD3dPqwEkn4s0qUn5tNA==", + "dev": true, + "requires": { + "@reach/router": "^1.3.4", + "@storybook/client-logger": "6.3.6", + "@types/reach__router": "^1.3.7", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==", + "dev": true, + "requires": { + "core-js": "^3.6.5", + "find-up": "^4.1.0" + } + }, + "@storybook/theming": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.6.tgz", + "integrity": "sha512-mPrQrMUREajNEWxzgR8t0YIZsI9avPv25VNA08fANnwVsc887p4OL5eCTL2dFIlD34YDzAwiyRKYoLj2vDW4nw==", + "dev": true, + "requires": { + "@emotion/core": "^10.1.1", + "@emotion/is-prop-valid": "^0.8.6", + "@emotion/styled": "^10.0.27", + "@storybook/client-logger": "6.3.6", + "core-js": "^3.8.2", + "deep-object-diff": "^1.1.0", + "emotion-theming": "^10.0.27", + "global": "^4.4.0", + "memoizerific": "^1.11.3", + "polished": "^4.0.5", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "markdown-to-jsx": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.3.tgz", + "integrity": "sha512-jtQ6VyT7rMT5tPV0g2EJakEnXLiPksnvlYtwQsVVZ611JsWGN8bQ1tVSDX4s6JllfEH6wmsYxNjTUAMrPmNA8w==", + "dev": true + }, + "qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@storybook/addon-viewport": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-6.3.6.tgz", + "integrity": "sha512-Z5eztFFGd6vd+38sDurfTkIr9lY6EYWtMJzr5efedRZGg2IZLXZxQCoyjKEB29VB/IIjHEYHhHSh4SFsHT/m6g==", + "dev": true, + "requires": { + "@storybook/addons": "6.3.6", + "@storybook/api": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/components": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/theming": "6.3.6", + "core-js": "^3.8.2", + "global": "^4.4.0", + "memoizerific": "^1.11.3", + "prop-types": "^15.7.2", + "regenerator-runtime": "^0.13.7" + }, + "dependencies": { + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "dev": true, + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "@storybook/addons": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.3.6.tgz", + "integrity": "sha512-tVV0vqaEEN9Md4bgScwfrnZYkN8iKZarpkIOFheLev+PHjSp8lgWMK5SNWDlbBYqfQfzrz9xbs+F07bMjfx9jQ==", + "dev": true, + "requires": { + "@storybook/api": "6.3.6", + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/router": "6.3.6", + "@storybook/theming": "6.3.6", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/api": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.3.6.tgz", + "integrity": "sha512-F5VuR1FrEwD51OO/EDDAZXNfF5XmJedYHJLwwCB4az2ZMrzG45TxGRmiEohrSTO6wAHGkAvjlEoX5jWOCqQ4pw==", + "dev": true, + "requires": { + "@reach/router": "^1.3.4", + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/csf": "0.0.1", + "@storybook/router": "6.3.6", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.3.6", + "@types/reach__router": "^1.3.7", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^5.3.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/channels": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.6.tgz", + "integrity": "sha512-gCIQVr+dS/tg3AyCxIvkOXMVAs08BCIHXsaa2+XzmacnJBSP+CEHtI6IZ8WEv7tzZuXOiKLVg+wugeIh4j2I4g==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-logger": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.6.tgz", + "integrity": "sha512-qpXQ52ylxPm7l3+WAteV42NmqWA+L1FaJhMOvm2gwl3PxRd2cNXn2BwEhw++eA6qmJH/7mfOKXG+K+QQwOTpRA==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "global": "^4.4.0" + } + }, + "@storybook/components": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.6.tgz", + "integrity": "sha512-aZkmtAY8b+LFXG6dVp6cTS6zGJuxkHRHcesRSWRQPxtgitaz1G58clRHxbKPRokfjPHNgYA3snogyeqxSA7YNQ==", + "dev": true, + "requires": { + "@popperjs/core": "^2.6.0", + "@storybook/client-logger": "6.3.6", + "@storybook/csf": "0.0.1", + "@storybook/theming": "6.3.6", + "@types/color-convert": "^2.0.0", + "@types/overlayscrollbars": "^1.12.0", + "@types/react-syntax-highlighter": "11.0.5", + "color-convert": "^2.0.1", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "markdown-to-jsx": "^7.1.3", + "memoizerific": "^1.11.3", + "overlayscrollbars": "^1.13.1", + "polished": "^4.0.5", + "prop-types": "^15.7.2", + "react-colorful": "^5.1.2", + "react-popper-tooltip": "^3.1.1", + "react-syntax-highlighter": "^13.5.3", + "react-textarea-autosize": "^8.3.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/core-events": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.6.tgz", + "integrity": "sha512-Ut1dz96bJ939oSn5t1ckPXd3WcFejK96Sb3+R/z23vEHUWGBFtygGyw8r/SX/WNDVzGmQU8c+mzJJTZwCBJz8A==", + "dev": true, + "requires": { + "core-js": "^3.8.2" + } + }, + "@storybook/router": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.6.tgz", + "integrity": "sha512-fQ1n7cm7lPFav7I+fStQciSVMlNdU+yLY6Fue252rpV5Q68bMTjwKpjO9P2/Y3CCj4QD3dPqwEkn4s0qUn5tNA==", + "dev": true, + "requires": { + "@reach/router": "^1.3.4", + "@storybook/client-logger": "6.3.6", + "@types/reach__router": "^1.3.7", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==", + "dev": true, + "requires": { + "core-js": "^3.6.5", + "find-up": "^4.1.0" + } + }, + "@storybook/theming": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.6.tgz", + "integrity": "sha512-mPrQrMUREajNEWxzgR8t0YIZsI9avPv25VNA08fANnwVsc887p4OL5eCTL2dFIlD34YDzAwiyRKYoLj2vDW4nw==", + "dev": true, + "requires": { + "@emotion/core": "^10.1.1", + "@emotion/is-prop-valid": "^0.8.6", + "@emotion/styled": "^10.0.27", + "@storybook/client-logger": "6.3.6", + "core-js": "^3.8.2", + "deep-object-diff": "^1.1.0", + "emotion-theming": "^10.0.27", + "global": "^4.4.0", + "memoizerific": "^1.11.3", + "polished": "^4.0.5", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" } - } - } - }, - "@rollup/plugin-replace": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.3.4.tgz", - "integrity": "sha512-waBhMzyAtjCL1GwZes2jaE9MjuQ/DQF2BatH3fRivUF3z0JBFrU0U6iBNC/4WR+2rLKhaAhPWDNPYp4mI6RqdQ==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "magic-string": "^0.25.7" - } - }, - "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "dependencies": { - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "markdown-to-jsx": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.3.tgz", + "integrity": "sha512-jtQ6VyT7rMT5tPV0g2EJakEnXLiPksnvlYtwQsVVZ611JsWGN8bQ1tVSDX4s6JllfEH6wmsYxNjTUAMrPmNA8w==", + "dev": true + }, + "qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true } } }, - "@sinonjs/commons": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.2.tgz", - "integrity": "sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", - "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, "@storybook/addons": { "version": "6.3.2", "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.3.2.tgz", @@ -6814,6 +10520,39 @@ } } }, + "@storybook/postinstall": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-6.3.6.tgz", + "integrity": "sha512-90Izr8/GwLiXvdF2A3v1PCpWoxUBgqA0TrWGuiWXfJnfFRVlVrX9A/ClGUPSh80L3oE01E6raaOG4wW4JTRKfw==", + "dev": true, + "requires": { + "core-js": "^3.8.2" + } + }, + "@storybook/preset-create-react-app": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@storybook/preset-create-react-app/-/preset-create-react-app-3.2.0.tgz", + "integrity": "sha512-lLoWCGr5cV+JNDRKYHC2gD+P2eyBqdN8qhmBa+PxDgPSNKfgUf9Wnoh+C7WTG5q2DEeR9SvUpQpZomX9DDQa4Q==", + "requires": { + "@pmmmwh/react-refresh-webpack-plugin": "^0.4.3", + "@types/babel__core": "^7.1.7", + "@types/webpack": "^4.41.13", + "babel-plugin-react-docgen": "^4.1.0", + "pnp-webpack-plugin": "^1.6.4", + "react-docgen-typescript-plugin": "^1.0.0", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "@storybook/react": { "version": "6.3.2", "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.3.2.tgz", @@ -6853,86 +10592,285 @@ "find-up": "^4.1.0" } }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + } + } + }, + "@storybook/react-docgen-typescript-plugin": { + "version": "1.0.2-canary.253f8c1.0", + "resolved": "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2-canary.253f8c1.0.tgz", + "integrity": "sha512-mmoRG/rNzAiTbh+vGP8d57dfcR2aP+5/Ll03KKFyfy5FqWFm/Gh7u27ikx1I3LmVMI8n6jh5SdWMkMKon7/tDw==", + "requires": { + "debug": "^4.1.1", + "endent": "^2.0.1", + "find-cache-dir": "^3.3.1", + "flat-cache": "^3.0.4", + "micromatch": "^4.0.2", + "react-docgen-typescript": "^2.0.0", + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, + "@storybook/router": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.2.tgz", + "integrity": "sha512-2oe2w1h4ucKhVub2NjKqwvJ6E6b57rA0fr8EOElPXdQXDi2fD3hFjUIXL4OdWG+GMVEqfkoje0eRCDRdjbu+yg==", + "requires": { + "@reach/router": "^1.3.4", + "@storybook/client-logger": "6.3.2", + "@types/reach__router": "^1.3.7", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "ts-dedent": "^2.0.0" + }, + "dependencies": { + "qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "@storybook/source-loader": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-6.3.6.tgz", + "integrity": "sha512-om3iS3a+D287FzBrbXB/IXB6Z5Ql2yc4dFKTy6FPe5v4N3U0p5puWOKUYWWbTX1JbcpRj0IXXo7952G68tcC1g==", + "dev": true, + "requires": { + "@storybook/addons": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/csf": "0.0.1", + "core-js": "^3.8.2", + "estraverse": "^5.2.0", + "global": "^4.4.0", + "loader-utils": "^2.0.0", + "lodash": "^4.17.20", + "prettier": "~2.2.1", + "regenerator-runtime": "^0.13.7" + }, + "dependencies": { + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "dev": true, + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "@storybook/addons": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.3.6.tgz", + "integrity": "sha512-tVV0vqaEEN9Md4bgScwfrnZYkN8iKZarpkIOFheLev+PHjSp8lgWMK5SNWDlbBYqfQfzrz9xbs+F07bMjfx9jQ==", + "dev": true, + "requires": { + "@storybook/api": "6.3.6", + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/router": "6.3.6", + "@storybook/theming": "6.3.6", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/api": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.3.6.tgz", + "integrity": "sha512-F5VuR1FrEwD51OO/EDDAZXNfF5XmJedYHJLwwCB4az2ZMrzG45TxGRmiEohrSTO6wAHGkAvjlEoX5jWOCqQ4pw==", + "dev": true, + "requires": { + "@reach/router": "^1.3.4", + "@storybook/channels": "6.3.6", + "@storybook/client-logger": "6.3.6", + "@storybook/core-events": "6.3.6", + "@storybook/csf": "0.0.1", + "@storybook/router": "6.3.6", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.3.6", + "@types/reach__router": "^1.3.7", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^5.3.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/channels": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.6.tgz", + "integrity": "sha512-gCIQVr+dS/tg3AyCxIvkOXMVAs08BCIHXsaa2+XzmacnJBSP+CEHtI6IZ8WEv7tzZuXOiKLVg+wugeIh4j2I4g==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-logger": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.6.tgz", + "integrity": "sha512-qpXQ52ylxPm7l3+WAteV42NmqWA+L1FaJhMOvm2gwl3PxRd2cNXn2BwEhw++eA6qmJH/7mfOKXG+K+QQwOTpRA==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "global": "^4.4.0" + } + }, + "@storybook/core-events": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.6.tgz", + "integrity": "sha512-Ut1dz96bJ939oSn5t1ckPXd3WcFejK96Sb3+R/z23vEHUWGBFtygGyw8r/SX/WNDVzGmQU8c+mzJJTZwCBJz8A==", + "dev": true, + "requires": { + "core-js": "^3.8.2" + } + }, + "@storybook/router": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.6.tgz", + "integrity": "sha512-fQ1n7cm7lPFav7I+fStQciSVMlNdU+yLY6Fue252rpV5Q68bMTjwKpjO9P2/Y3CCj4QD3dPqwEkn4s0qUn5tNA==", + "dev": true, + "requires": { + "@reach/router": "^1.3.4", + "@storybook/client-logger": "6.3.6", + "@types/reach__router": "^1.3.7", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==", + "dev": true, + "requires": { + "core-js": "^3.6.5", + "find-up": "^4.1.0" + } + }, + "@storybook/theming": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.6.tgz", + "integrity": "sha512-mPrQrMUREajNEWxzgR8t0YIZsI9avPv25VNA08fANnwVsc887p4OL5eCTL2dFIlD34YDzAwiyRKYoLj2vDW4nw==", + "dev": true, + "requires": { + "@emotion/core": "^10.1.1", + "@emotion/is-prop-valid": "^0.8.6", + "@emotion/styled": "^10.0.27", + "@storybook/client-logger": "6.3.6", + "core-js": "^3.8.2", + "deep-object-diff": "^1.1.0", + "emotion-theming": "^10.0.27", + "global": "^4.4.0", + "memoizerific": "^1.11.3", + "polished": "^4.0.5", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" + } + }, + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" - } + "minimist": "^1.2.5" } }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" } }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - } - } - }, - "@storybook/react-docgen-typescript-plugin": { - "version": "1.0.2-canary.253f8c1.0", - "resolved": "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2-canary.253f8c1.0.tgz", - "integrity": "sha512-mmoRG/rNzAiTbh+vGP8d57dfcR2aP+5/Ll03KKFyfy5FqWFm/Gh7u27ikx1I3LmVMI8n6jh5SdWMkMKon7/tDw==", - "requires": { - "debug": "^4.1.1", - "endent": "^2.0.1", - "find-cache-dir": "^3.3.1", - "flat-cache": "^3.0.4", - "micromatch": "^4.0.2", - "react-docgen-typescript": "^2.0.0", - "tslib": "^2.0.0" - }, - "dependencies": { - "tslib": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", - "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" - } - } - }, - "@storybook/router": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.2.tgz", - "integrity": "sha512-2oe2w1h4ucKhVub2NjKqwvJ6E6b57rA0fr8EOElPXdQXDi2fD3hFjUIXL4OdWG+GMVEqfkoje0eRCDRdjbu+yg==", - "requires": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.2", - "@types/reach__router": "^1.3.7", - "core-js": "^3.8.2", - "fast-deep-equal": "^3.1.3", - "global": "^4.4.0", - "lodash": "^4.17.20", - "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "ts-dedent": "^2.0.0" - }, - "dependencies": { "qs": { "version": "6.10.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "dev": true, "requires": { "side-channel": "^1.0.4" } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true } } }, @@ -7758,7 +11696,6 @@ "version": "7.1.12", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.12.tgz", "integrity": "sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ==", - "dev": true, "requires": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0", @@ -7771,7 +11708,6 @@ "version": "7.6.2", "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", - "dev": true, "requires": { "@babel/types": "^7.0.0" } @@ -7780,7 +11716,6 @@ "version": "7.4.0", "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", - "dev": true, "requires": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -7790,7 +11725,6 @@ "version": "7.11.0", "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.0.tgz", "integrity": "sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg==", - "dev": true, "requires": { "@babel/types": "^7.3.0" } @@ -7983,6 +11917,11 @@ "@types/lodash": "*" } }, + "@types/long": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" + }, "@types/markdown-to-jsx": { "version": "6.11.3", "resolved": "https://registry.npmjs.org/@types/markdown-to-jsx/-/markdown-to-jsx-6.11.3.tgz", @@ -10031,6 +13970,11 @@ "tryer": "^1.0.1" } }, + "big-integer": { + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" + }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -10208,6 +14152,28 @@ "fill-range": "^7.0.1" } }, + "broadcast-channel": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/broadcast-channel/-/broadcast-channel-3.7.0.tgz", + "integrity": "sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==", + "requires": { + "@babel/runtime": "^7.7.2", + "detect-node": "^2.1.0", + "js-sha3": "0.8.0", + "microseconds": "0.2.0", + "nano-time": "1.0.0", + "oblivious-set": "1.0.0", + "rimraf": "3.0.2", + "unload": "2.2.0" + }, + "dependencies": { + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + } + } + }, "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", @@ -12319,8 +16285,7 @@ "detect-node": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", - "dev": true + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==" }, "detect-port-alt": { "version": "1.1.6", @@ -12448,6 +16413,11 @@ } } }, + "dom-storage": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz", + "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==" + }, "dom-walk": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", @@ -14423,6 +18393,28 @@ "semver-regex": "^2.0.0" } }, + "firebase": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-8.8.1.tgz", + "integrity": "sha512-dzqQn3wwHhsStsD2gDs3XfSJ/SIqv5IA9Ht+MySnvrIsljk0V8bI/+EMPsh0h2VlYPSk51bmyNQZ4LvuSKNvlA==", + "requires": { + "@firebase/analytics": "0.6.16", + "@firebase/app": "0.6.29", + "@firebase/app-check": "0.2.1", + "@firebase/app-types": "0.6.3", + "@firebase/auth": "0.16.8", + "@firebase/database": "0.10.9", + "@firebase/firestore": "2.3.10", + "@firebase/functions": "0.6.14", + "@firebase/installations": "0.4.31", + "@firebase/messaging": "0.7.15", + "@firebase/performance": "0.4.17", + "@firebase/polyfill": "0.3.36", + "@firebase/remote-config": "0.1.42", + "@firebase/storage": "0.6.1", + "@firebase/util": "1.2.0" + } + }, "flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -14971,6 +18963,23 @@ "assert-plus": "^1.0.0" } }, + "github-slugger": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.3.0.tgz", + "integrity": "sha512-gwJScWVNhFYSRDvURk/8yhcFBee6aFjye2a7Lhb2bUyRulpIoek9p0I9Kt7PT67d/nUlZbFu8L9RLiA0woQN8Q==", + "dev": true, + "requires": { + "emoji-regex": ">=6.0.0 <=6.1.1" + }, + "dependencies": { + "emoji-regex": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.1.tgz", + "integrity": "sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4=", + "dev": true + } + } + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -15512,6 +19521,12 @@ } } }, + "html-tags": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", + "dev": true + }, "html-void-elements": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", @@ -15830,6 +19845,11 @@ "postcss": "^7.0.14" } }, + "idb": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz", + "integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==" + }, "identity-obj-proxy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", @@ -16201,6 +20221,16 @@ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==" }, + "is-dom": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-dom/-/is-dom-1.1.0.tgz", + "integrity": "sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ==", + "dev": true, + "requires": { + "is-object": "^1.0.1", + "is-window": "^1.0.2" + } + }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -16272,6 +20302,12 @@ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, + "is-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", + "dev": true + }, "is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -16386,6 +20422,12 @@ "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==" }, + "is-window": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz", + "integrity": "sha1-LIlspT25feRdPDMTOmXYyfVjSA0=", + "dev": true + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -19348,6 +23390,11 @@ "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==" }, + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + }, "js-string-escape": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", @@ -19788,6 +23835,11 @@ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "dev": true }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -19961,6 +24013,11 @@ "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", "dev": true }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -20065,6 +24122,25 @@ "unquote": "^1.1.0" } }, + "match-sorter": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.0.tgz", + "integrity": "sha512-efYOf/wUpNb8FgNY+cOD2EIJI1S5I7YPKsw0LBp7wqPh5pmMS6i/wr3ZWwfwrAw1NvqTA2KUReVRWDX84lUcOQ==", + "requires": { + "@babel/runtime": "^7.12.5", + "remove-accents": "0.4.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.8.tgz", + "integrity": "sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -20106,6 +24182,12 @@ "unist-util-visit": "^2.0.0" } }, + "mdast-util-to-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", + "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", + "dev": true + }, "mdn-data": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", @@ -20210,6 +24292,11 @@ "picomatch": "^2.0.5" } }, + "microseconds": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/microseconds/-/microseconds-0.2.0.tgz", + "integrity": "sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==" + }, "miller-rabin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", @@ -20501,6 +24588,14 @@ } } }, + "nano-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nano-time/-/nano-time-1.0.0.tgz", + "integrity": "sha1-sFVPaa2J4i0JB/ehKwmTpdlhN+8=", + "requires": { + "big-integer": "^1.6.16" + } + }, "nanoclone": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz", @@ -20940,6 +25035,11 @@ "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.5.tgz", "integrity": "sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==" }, + "oblivious-set": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz", + "integrity": "sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==" + }, "obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -22746,6 +26846,11 @@ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" }, + "promise-polyfill": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz", + "integrity": "sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==" + }, "promise.allsettled": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.4.tgz", @@ -22887,6 +26992,33 @@ "xtend": "^4.0.0" } }, + "protobufjs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz", + "integrity": "sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "16.4.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.4.12.tgz", + "integrity": "sha512-zxrTNFl9Z8boMJXs6ieqZP0wAhvkdzmHSxTlJabM16cf5G9xBc1uPRH5Bbv2omEDDiM8MzTfqTJXBf0Ba4xFWA==" + } + } + }, "proxy-addr": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", @@ -23273,6 +27405,47 @@ "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.0.0.tgz", "integrity": "sha512-lPf+KJKAo6a9klKyK4y8WwgaX+6t5/HkVjHOpJDMbmaXfXcV7zP0QgWtnEOc3ccEUXKvlHMGUMIS9f6Zgo1BSw==" }, + "react-docgen-typescript-plugin": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.0.tgz", + "integrity": "sha512-Akc7EtryOA4d2yOX27B5ii+hyf/k15ymb01uB+VnRgtTAdfeDCmNPvyLbRJ6pRNYOuFlEBe1YfCH73bTPtpYVQ==", + "requires": { + "debug": "^4.1.1", + "endent": "^2.0.1", + "find-cache-dir": "^3.3.1", + "flat-cache": "^3.0.4", + "micromatch": "^4.0.2", + "react-docgen-typescript": "^1.22.0", + "tslib": "^2.0.0", + "webpack-sources": "^2.2.0" + }, + "dependencies": { + "react-docgen-typescript": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-1.22.0.tgz", + "integrity": "sha512-MPLbF8vzRwAG3GcjdL+OHQlhgtWsLTXs+7uJiHfEeT3Ur7IsZaNYqRTLQ9sj2nB6M6jylcPCeCmH7qbszJmecg==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, + "webpack-sources": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", + "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", + "requires": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + } + } + } + }, "react-dom": { "version": "17.0.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.1.tgz", @@ -23313,6 +27486,24 @@ "prop-types": "^15.7.2" } }, + "react-element-to-jsx-string": { + "version": "14.3.2", + "resolved": "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-14.3.2.tgz", + "integrity": "sha512-WZbvG72cjLXAxV7VOuSzuHEaI3RHj10DZu8EcKQpkKcAj7+qAkG5XUeSdX5FXrA0vPrlx0QsnAzZEBJwzV0e+w==", + "dev": true, + "requires": { + "@base2/pretty-print-object": "1.0.0", + "is-plain-object": "3.0.1" + }, + "dependencies": { + "is-plain-object": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz", + "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==", + "dev": true + } + } + }, "react-error-boundary": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.3.tgz", @@ -23396,6 +27587,17 @@ "prop-types": "^15.5.8" } }, + "react-inspector": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-5.1.1.tgz", + "integrity": "sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0", + "is-dom": "^1.0.0", + "prop-types": "^15.0.0" + } + }, "react-intl": { "version": "3.12.1", "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-3.12.1.tgz", @@ -23503,6 +27705,16 @@ "tslib": "^1.10.0" } }, + "react-query": { + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.19.1.tgz", + "integrity": "sha512-tMBVKlmWevPHYWgI8ZBEgsTulJXSuXsxDbxqANODRnPI+3hd5GRVcc7nNIYSUx3aaULt08rN3EhTMHyTcFUNJw==", + "requires": { + "@babel/runtime": "^7.5.5", + "broadcast-channel": "^3.4.1", + "match-sorter": "^6.0.2" + } + }, "react-refresh": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz", @@ -24117,6 +28329,27 @@ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" }, + "remark-external-links": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/remark-external-links/-/remark-external-links-8.0.0.tgz", + "integrity": "sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA==", + "dev": true, + "requires": { + "extend": "^3.0.0", + "is-absolute-url": "^3.0.0", + "mdast-util-definitions": "^4.0.0", + "space-separated-tokens": "^1.0.0", + "unist-util-visit": "^2.0.0" + }, + "dependencies": { + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + } + } + }, "remark-footnotes": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz", @@ -24340,6 +28573,17 @@ "xtend": "^4.0.1" } }, + "remark-slug": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/remark-slug/-/remark-slug-6.1.0.tgz", + "integrity": "sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ==", + "dev": true, + "requires": { + "github-slugger": "^1.0.0", + "mdast-util-to-string": "^1.0.0", + "unist-util-visit": "^2.0.0" + } + }, "remark-squeeze-paragraphs": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz", @@ -24348,6 +28592,11 @@ "mdast-squeeze-paragraphs": "^4.0.0" } }, + "remove-accents": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz", + "integrity": "sha1-CkPTqq4egNuRngeuJUsoXZ4ce7U=" + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -26083,6 +30332,19 @@ "resolved": "https://registry.npmjs.org/store2/-/store2-2.12.0.tgz", "integrity": "sha512-7t+/wpKLanLzSnQPX8WAcuLCCeuSHoWdQuh9SB3xD0kNOM38DNf+0Oa+wmvxmYueRzkmh6IcdKFtvTa+ecgPDw==" }, + "storybook-addon-outline": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/storybook-addon-outline/-/storybook-addon-outline-1.4.1.tgz", + "integrity": "sha512-Qvv9X86CoONbi+kYY78zQcTGmCgFaewYnOVR6WL7aOFJoW7TrLiIc/O4hH5X9PsEPZFqjfXEPUPENWVUQim6yw==", + "dev": true, + "requires": { + "@storybook/addons": "^6.3.0", + "@storybook/api": "^6.3.0", + "@storybook/components": "^6.3.0", + "@storybook/core-events": "^6.3.0", + "ts-dedent": "^2.1.1" + } + }, "storybook-addon-styled-component-theme": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/storybook-addon-styled-component-theme/-/storybook-addon-styled-component-theme-2.0.0.tgz", @@ -27447,6 +31709,15 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" }, + "unload": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unload/-/unload-2.2.0.tgz", + "integrity": "sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==", + "requires": { + "@babel/runtime": "^7.6.2", + "detect-node": "^2.0.4" + } + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -27685,6 +31956,12 @@ "dev": true, "optional": true }, + "uuid-browser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid-browser/-/uuid-browser-3.1.0.tgz", + "integrity": "sha1-DwWkCu90+eWVHiDvv0SxGHHlZBA=", + "dev": true + }, "v8-compile-cache": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", @@ -29032,7 +33309,6 @@ "version": "0.6.5", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", - "dev": true, "requires": { "websocket-extensions": ">=0.1.1" } @@ -29040,8 +33316,7 @@ "websocket-extensions": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" }, "whatwg-encoding": { "version": "1.0.5", @@ -29438,6 +33713,11 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, + "xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/airbyte-webapp/package.json b/airbyte-webapp/package.json index 54da1c9f27d3..568b192d66f3 100644 --- a/airbyte-webapp/package.json +++ b/airbyte-webapp/package.json @@ -21,8 +21,10 @@ "@papercups-io/chat-widget": "^1.1.5", "@papercups-io/storytime": "^1.0.6", "@rest-hooks/legacy": "^2.0.5", + "@storybook/preset-create-react-app": "^3.2.0", "@storybook/react": "^6.3.2", "dayjs": "^1.8.35", + "firebase": "^8.8.1", "flat": "^5.0.2", "formik": "2.1.5", "lodash.get": "^4.4.2", @@ -36,6 +38,7 @@ "react-intl": "^3.12.0", "react-lazylog": "^4.5.3", "react-pose": "^4.0.10", + "react-query": "^3.19.1", "react-router-dom": "^5.1.2", "react-select": "^4.3.1", "react-table": "^7.5.0", @@ -49,6 +52,7 @@ }, "devDependencies": { "@rest-hooks/test": "^6.2.0", + "@storybook/addon-essentials": "^6.3.6", "@testing-library/jest-dom": "^5.11.4", "@testing-library/react": "^11.1.0", "@testing-library/react-hooks": "^7.0.1", diff --git a/airbyte-webapp/public/cloud-hello.png b/airbyte-webapp/public/cloud-hello.png new file mode 100644 index 0000000000000000000000000000000000000000..aac2870da8a76d9fb9be78c15be3c4367067fe3d GIT binary patch literal 52697 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 EAHU|+3IG5A literal 0 HcmV?d00001 diff --git a/airbyte-webapp/public/cloud-main-logo.svg b/airbyte-webapp/public/cloud-main-logo.svg new file mode 100644 index 000000000000..8987b1b4d027 --- /dev/null +++ b/airbyte-webapp/public/cloud-main-logo.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/airbyte-webapp/src/App.tsx b/airbyte-webapp/src/App.tsx index 3a2ae08b4425..0af537c9cb5c 100644 --- a/airbyte-webapp/src/App.tsx +++ b/airbyte-webapp/src/App.tsx @@ -12,6 +12,13 @@ import LoadingPage from "./components/LoadingPage"; import ApiErrorBoundary from "./components/ApiErrorBoundary"; import NotificationService from "components/hooks/services/Notification"; import { AnalyticsInitializer } from "views/common/AnalyticsInitializer"; +import { useCurrentWorkspace } from "components/hooks/services/useWorkspace"; + +function useCustomerIdProvider() { + const workspace = useCurrentWorkspace(); + + return workspace.customerId; +} const App: React.FC = () => { return ( @@ -23,7 +30,9 @@ const App: React.FC = () => { }> - + diff --git a/airbyte-webapp/src/components/ContentCard/ContentCard.tsx b/airbyte-webapp/src/components/ContentCard/ContentCard.tsx index 8a935c459058..65968ee86706 100644 --- a/airbyte-webapp/src/components/ContentCard/ContentCard.tsx +++ b/airbyte-webapp/src/components/ContentCard/ContentCard.tsx @@ -1,59 +1,26 @@ import React from "react"; import styled from "styled-components"; -import { H5 } from "components"; +import { H5, Card } from "components"; type IProps = { title?: string | React.ReactNode; - description?: string | React.ReactNode; - attentionMessage?: string | React.ReactNode; className?: string; onClick?: () => void; }; -const Card = styled.div` - background: ${({ theme }) => theme.whiteColor}; - border-radius: 8px; - box-shadow: 0 1px 2px ${({ theme }) => theme.shadowColor}; - border: 1px solid ${({ theme }) => theme.greyColor20}; -`; - const Title = styled(H5)` padding: 25px 25px 22px; - border-bottom: 1px solid ${({ theme }) => theme.greyColor20}; + //border-bottom: 1px solid ${({ theme }) => theme.greyColor20}; color: ${({ theme }) => theme.darkPrimaryColor}; box-shadow: 0 1px 2px ${({ theme }) => theme.shadowColor}; font-weight: 600; letter-spacing: 0.008em; `; -const Attention = styled.span` - font-weight: normal; - color: ${({ theme }) => theme.dangerColor}; -`; - -const Description = styled.div` - font-weight: normal; - color: ${({ theme }) => theme.greyColor40}; - font-size: 15px; - line-height: 18px; - margin: 5px 0 -10px; -`; - const ContentCard: React.FC = (props) => ( - {props.title ? ( - - {props.title} - {props.attentionMessage && ( - <> - {" "} - - <Attention>{props.attentionMessage}</Attention> - </> - )} - {props.description && <Description>{props.description}</Description>} - - ) : null} + {props.title ? {props.title} : null} {props.children} ); diff --git a/airbyte-webapp/src/components/ContentCard/index.stories.tsx b/airbyte-webapp/src/components/ContentCard/index.stories.tsx new file mode 100644 index 000000000000..627bc506f8c5 --- /dev/null +++ b/airbyte-webapp/src/components/ContentCard/index.stories.tsx @@ -0,0 +1,18 @@ +import { ComponentStory, ComponentMeta } from "@storybook/react"; + +import ContentCard from "./ContentCard"; + +export default { + title: "Example/ContentCard", + component: ContentCard, +} as ComponentMeta; + +const Template: ComponentStory = (args) => ( + +); + +export const Primary = Template.bind({}); +Primary.args = { + children: "Text", + title: "Title", +}; diff --git a/airbyte-webapp/src/components/LabeledToggle/LabeledToggle.tsx b/airbyte-webapp/src/components/LabeledToggle/LabeledToggle.tsx index 37608b155621..8004b5ea36c1 100644 --- a/airbyte-webapp/src/components/LabeledToggle/LabeledToggle.tsx +++ b/airbyte-webapp/src/components/LabeledToggle/LabeledToggle.tsx @@ -1,11 +1,12 @@ import React from "react"; import styled from "styled-components"; -import { Toggle } from "components/base"; +import { CheckBox, Toggle } from "components/base"; type IProps = { message?: React.ReactNode; label?: React.ReactNode; + checkbox?: boolean; } & React.InputHTMLAttributes; const ToggleContainer = styled.div` @@ -35,7 +36,12 @@ const AdditionMessage = styled.span` const LabeledToggle: React.FC = (props) => ( - + {props.checkbox ? ( + + ) : ( + + )} +

+ + + + + + login(values).catch((err) => { + if (err instanceof FieldError) { + setFieldError(err.field, err.message); + } else { + setStatus(err.message); + } + }) + } + validateOnBlur + validateOnChange={false} + > + {({ isSubmitting }) => ( +
+ + + {({ field, meta }: FieldProps) => ( + } + placeholder={formatMessage({ + id: "login.yourEmail.placeholder", + })} + type="text" + error={!!meta.error && meta.touched} + message={ + meta.touched && + meta.error && + formatMessage({ id: meta.error }) + } + /> + )} + + + + + {({ field, meta }: FieldProps) => ( + } + placeholder={formatMessage({ + id: "login.password.placeholder", + })} + type="password" + error={!!meta.error && meta.touched} + message={ + meta.touched && + meta.error && + formatMessage({ id: meta.error }) + } + /> + )} + + + + <> + + + + + + + + +
+ )} +
+
+ ); +}; + +export default LoginPage; diff --git a/airbyte-webapp/src/packages/cloud/views/auth/LoginPage/index.tsx b/airbyte-webapp/src/packages/cloud/views/auth/LoginPage/index.tsx new file mode 100644 index 000000000000..3d7a720ccafc --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/auth/LoginPage/index.tsx @@ -0,0 +1,3 @@ +import LoginPage from "./LoginPage"; + +export { LoginPage }; diff --git a/airbyte-webapp/src/packages/cloud/views/auth/ResetPasswordPage/ResetPasswordPage.tsx b/airbyte-webapp/src/packages/cloud/views/auth/ResetPasswordPage/ResetPasswordPage.tsx new file mode 100644 index 000000000000..03e9883a8433 --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/auth/ResetPasswordPage/ResetPasswordPage.tsx @@ -0,0 +1,72 @@ +import React from "react"; +import { Field, FieldProps, Formik } from "formik"; +import * as yup from "yup"; +import { FormattedMessage, useIntl } from "react-intl"; + +import { BottomBlock, FieldItem, Form } from "../components/FormComponents"; +import { Button, LabeledInput, Link } from "components"; +import { FormTitle } from "../components/FormTitle"; +import { Routes } from "../../../routes"; + +const ResetPasswordPageValidationSchema = yup.object().shape({ + email: yup.string().email("form.email.error").required("form.empty.error"), +}); + +const ResetPasswordPage: React.FC = () => { + const formatMessage = useIntl().formatMessage; + + return ( +
+ + + + + console.log("ok")} + validateOnBlur={true} + validateOnChange={false} + > + {() => ( +
+ + + {({ field, meta }: FieldProps) => ( + } + placeholder={formatMessage({ + id: "login.yourEmail.placeholder", + })} + type="text" + error={!!meta.error && meta.touched} + message={ + meta.touched && + meta.error && + formatMessage({ id: meta.error }) + } + /> + )} + + + + <> + + + + + + +
+ )} +
+
+ ); +}; + +export default ResetPasswordPage; diff --git a/airbyte-webapp/src/packages/cloud/views/auth/ResetPasswordPage/index.tsx b/airbyte-webapp/src/packages/cloud/views/auth/ResetPasswordPage/index.tsx new file mode 100644 index 000000000000..ab398d3d365b --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/auth/ResetPasswordPage/index.tsx @@ -0,0 +1,3 @@ +import ResetPasswordPage from "./ResetPasswordPage"; + +export { ResetPasswordPage }; diff --git a/airbyte-webapp/src/packages/cloud/views/auth/SignupPage/SignupPage.tsx b/airbyte-webapp/src/packages/cloud/views/auth/SignupPage/SignupPage.tsx new file mode 100644 index 000000000000..846e0e93867d --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/auth/SignupPage/SignupPage.tsx @@ -0,0 +1,196 @@ +import React from "react"; +import * as yup from "yup"; +import { FormattedMessage, useIntl } from "react-intl"; +import { Field, FieldProps, Formik } from "formik"; +import styled from "styled-components"; + +import { + BottomBlock, + FieldItem, + Form, + RowFieldItem, +} from "../components/FormComponents"; +import { Button, H5, LabeledInput } from "components"; +import { FormTitle } from "../components/FormTitle"; +import CheckBoxControl from "../components/CheckBoxControl"; +import { useAuthService } from "packages/cloud/services/auth/AuthService"; +import { FieldError } from "packages/cloud/lib/errors/FieldError"; + +const MarginBlock = styled.div` + margin-bottom: 15px; +`; + +const SignupPageValidationSchema = yup.object().shape({ + email: yup.string().email("form.email.error").required("form.empty.error"), + password: yup.string().required("form.empty.error"), + name: yup.string().required("form.empty.error"), + company: yup.string().required("form.empty.error"), + security: yup.boolean().required("form.empty.error"), +}); + +const SignupPage: React.FC = () => { + const formatMessage = useIntl().formatMessage; + + const { signUp } = useAuthService(); + + return ( +
+ + + +
+ +
+ + + signUp(values).catch((err) => { + if (err instanceof FieldError) { + setFieldError(err.field, err.message); + } else { + setStatus(err.message); + } + }) + } + validateOnBlur={true} + validateOnChange={false} + > + {() => ( +
+ + + {({ field, meta }: FieldProps) => ( + } + placeholder={formatMessage({ + id: "login.fullName.placeholder", + })} + type="text" + error={!!meta.error && meta.touched} + message={ + meta.touched && + meta.error && + formatMessage({ id: meta.error }) + } + /> + )} + + + {({ field, meta }: FieldProps) => ( + } + placeholder={formatMessage({ + id: "login.companyName.placeholder", + })} + type="text" + error={!!meta.error && meta.touched} + message={ + meta.touched && + meta.error && + formatMessage({ id: meta.error }) + } + /> + )} + + + + + {({ field, meta }: FieldProps) => ( + } + placeholder={formatMessage({ + id: "login.yourEmail.placeholder", + })} + type="text" + error={!!meta.error && meta.touched} + message={ + meta.touched && + meta.error && + formatMessage({ id: meta.error }) + } + /> + )} + + + + + {({ field, meta }: FieldProps) => ( + } + placeholder={formatMessage({ + id: "login.password.placeholder", + })} + type="password" + error={!!meta.error && meta.touched} + message={ + meta.touched && + meta.error && + formatMessage({ id: meta.error }) + } + /> + )} + + + + + {({ field, meta }: FieldProps) => ( + + } + message={ + meta.touched && + meta.error && + formatMessage({ id: meta.error }) + } + /> + + )} + + + {({ field, meta }: FieldProps) => ( + } + message={ + meta.touched && + meta.error && + formatMessage({ id: meta.error }) + } + /> + )} + + + + <> +
+ + + + + )} + +
+ ); +}; + +export default SignupPage; diff --git a/airbyte-webapp/src/packages/cloud/views/auth/SignupPage/index.tsx b/airbyte-webapp/src/packages/cloud/views/auth/SignupPage/index.tsx new file mode 100644 index 000000000000..25aef74940c0 --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/auth/SignupPage/index.tsx @@ -0,0 +1,3 @@ +import SignupPage from "./SignupPage"; + +export { SignupPage }; diff --git a/airbyte-webapp/src/packages/cloud/views/auth/components/CheckBoxControl.tsx b/airbyte-webapp/src/packages/cloud/views/auth/components/CheckBoxControl.tsx new file mode 100644 index 000000000000..8f55cc31e64b --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/auth/components/CheckBoxControl.tsx @@ -0,0 +1,48 @@ +import React from "react"; +import styled from "styled-components"; + +import { CheckBox } from "components/base"; + +type IProps = { + message?: React.ReactNode; + label?: React.ReactNode; + checkbox?: boolean; +} & React.InputHTMLAttributes; + +const ToggleContainer = styled.div` + display: flex; + flex-direction: row; + align-items: center; +`; + +const Label = styled.label<{ disabled?: boolean }>` + padding-left: 7px; + font-size: 11px; + line-height: 13px; + color: ${({ theme }) => theme.textColor}; + cursor: pointer; +`; + +const BigCheckBox = styled(CheckBox)` + height: 25px; + width: 25px; + background: ${({ theme, checked }) => + checked ? theme.primaryColor : theme.whiteColor}; + border: ${({ theme, checked }) => + checked ? theme.primaryColor : theme.textColor} + 2px solid; + color: ${({ theme }) => theme.whiteColor}; + font-size: 18px; + line-height: 18px; +`; + +const CheckBoxControl: React.FC = (props) => ( + + + + +); + +export default CheckBoxControl; diff --git a/airbyte-webapp/src/packages/cloud/views/auth/components/FormComponents.tsx b/airbyte-webapp/src/packages/cloud/views/auth/components/FormComponents.tsx new file mode 100644 index 000000000000..df35880d7f52 --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/auth/components/FormComponents.tsx @@ -0,0 +1,35 @@ +import { Form as FormikForm } from "formik"; +import styled from "styled-components"; + +const Form = styled(FormikForm)` + margin-top: 42px; +`; + +const FieldItem = styled.div` + margin-bottom: 21px; +`; + +const RowFieldItem = styled(FieldItem)` + display: flex; + flex-direction: row; + + & > div { + flex: 1 0 0; + margin-right: 14px; + + &:last-child { + margin-right: 0; + } + } +`; + +const BottomBlock = styled.div` + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + margin-top: 38px; + font-size: 11px; +`; + +export { Form, FieldItem, BottomBlock, RowFieldItem }; diff --git a/airbyte-webapp/src/packages/cloud/views/auth/components/FormContent.tsx b/airbyte-webapp/src/packages/cloud/views/auth/components/FormContent.tsx new file mode 100644 index 000000000000..3e676e363468 --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/auth/components/FormContent.tsx @@ -0,0 +1,38 @@ +import React from "react"; +import styled from "styled-components"; + +import Header from "./Header"; + +const MainBlock = styled.div` + width: 100%; + height: calc(100% - 100px); + display: flex; + align-items: center; + justify-content: center; +`; + +const FormContainer = styled.div` + max-width: 409px; + width: 100%; +`; + +const Logo = styled.img` + margin-bottom: 37px; + display: block; +`; + +const FormContent: React.FC<{ toLogin?: boolean }> = (props) => { + return ( + <> +
+ + + + {props.children} + + + + ); +}; + +export default FormContent; diff --git a/airbyte-webapp/src/packages/cloud/views/auth/components/FormTitle.tsx b/airbyte-webapp/src/packages/cloud/views/auth/components/FormTitle.tsx new file mode 100644 index 000000000000..492af08fa4b0 --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/auth/components/FormTitle.tsx @@ -0,0 +1,6 @@ +import styled from "styled-components"; +import { H1 } from "components"; + +export const FormTitle = styled(H1)` + color: ${({ theme }) => theme.redColor}; +`; diff --git a/airbyte-webapp/src/packages/cloud/views/auth/components/Header.tsx b/airbyte-webapp/src/packages/cloud/views/auth/components/Header.tsx new file mode 100644 index 000000000000..2631a808fa89 --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/auth/components/Header.tsx @@ -0,0 +1,74 @@ +import React from "react"; +import styled from "styled-components"; +import { Link } from "react-router-dom"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { faArrowLeft } from "@fortawesome/free-solid-svg-icons"; + +import { Button } from "components"; +import { Routes } from "../../../routes"; +import { FormattedMessage } from "react-intl"; + +const Links = styled.div` + width: 100%; + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; +`; + +const BackLink = styled.div` + font-style: normal; + font-weight: bold; + font-size: 14px; + line-height: 17px; + color: ${({ theme }) => theme.primaryColor}; + cursor: pointer; + + &:hover { + opacity: 0.8; + } +`; + +const FormLink = styled.div` + font-size: 11px; + line-height: 13px; + color: ${({ theme }) => theme.darkGreyColor}; +`; + +const TextBlock = styled.div` + padding: 0 9px; + display: inline-block; +`; + +type HeaderProps = { + toLogin?: boolean; +}; + +const Header: React.FC = ({ toLogin }) => { + return ( + + + + Back + + + + {toLogin ? ( + + ) : ( + + )} + + + + + ); +}; + +export default Header; diff --git a/airbyte-webapp/src/packages/cloud/views/auth/components/News.tsx b/airbyte-webapp/src/packages/cloud/views/auth/components/News.tsx new file mode 100644 index 000000000000..f6b9820c60ed --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/auth/components/News.tsx @@ -0,0 +1,70 @@ +import React from "react"; +import styled from "styled-components"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { faGithub } from "@fortawesome/free-brands-svg-icons"; +import { FormattedMessage } from "react-intl"; + +import config from "config"; +import { news } from "packages/cloud/data/news"; + +import { H2, H4, H5 } from "components"; +import NewsItem from "./NewsItem"; + +const Icon = styled.img` + height: 214px; + margin: 0 auto 21px; + display: block; +`; + +const GitBlock = styled.div` + display: flex; + flex-direction: row; + align-items: center; + margin-top: 17px; +`; + +const GitIcon = styled(FontAwesomeIcon)` + margin-right: 10px; + font-size: 36px; +`; + +const GitLink = styled.a` + text-decoration: none; + color: ${({ theme }) => theme.textColor}; +`; + +const NewsItemStyled = styled(NewsItem)` + margin-bottom: 12px; +`; + +const News: React.FC = () => { + return ( + <> +
+ + {news.map((n, i) => ( + + ))} +
+ +

+ +

+ + {/*@ts-ignore github icon fails here*/} + +
+

+ +

+
+ +
+
+
+
+ + ); +}; + +export default News; diff --git a/airbyte-webapp/src/packages/cloud/views/auth/components/NewsItem.tsx b/airbyte-webapp/src/packages/cloud/views/auth/components/NewsItem.tsx new file mode 100644 index 000000000000..15d3312654dd --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/auth/components/NewsItem.tsx @@ -0,0 +1,48 @@ +import React from "react"; +import styled from "styled-components"; +import dayjs from "dayjs"; +import { Card } from "components"; + +const NewsCard = styled(Card)` + padding: 23px 23px 20px 15px; + font-weight: 500; + font-size: 18px; + line-height: 22px; +`; + +const BottomBlock = styled.div` + display: flex; + flex-direction: row; + justify-content: space-between; + margin-top: 7px; +`; + +const Date = styled.div` + color: ${({ theme }) => theme.greyColor40}; + font-style: normal; + font-weight: 500; + font-size: 14px; + line-height: 17px; + align-self: center; +`; + +const NewsItem: React.FC<{ + className?: string; + text: string; + date: dayjs.Dayjs; + icon: string; +}> = (props) => { + return ( + + {props.text} + + {props.date.format("MM/DD/YYYY")} +
+ Logo +
+
+
+ ); +}; + +export default NewsItem; diff --git a/airbyte-webapp/src/packages/cloud/views/auth/index.tsx b/airbyte-webapp/src/packages/cloud/views/auth/index.tsx new file mode 100644 index 000000000000..02113077f2c5 --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/auth/index.tsx @@ -0,0 +1,3 @@ +import Auth from "./Auth"; + +export { Auth }; diff --git a/airbyte-webapp/src/packages/cloud/views/users/AccountSettingsView/AccountSettingsView.tsx b/airbyte-webapp/src/packages/cloud/views/users/AccountSettingsView/AccountSettingsView.tsx new file mode 100644 index 000000000000..9843caadd824 --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/users/AccountSettingsView/AccountSettingsView.tsx @@ -0,0 +1,114 @@ +import React from "react"; +import { FormattedMessage, useIntl } from "react-intl"; +import { Formik, Form, Field, FieldProps } from "formik"; +import styled from "styled-components"; + +import { SettingsCard } from "pages/SettingsPage/pages/SettingsComponents"; +import { LoadingButton, LabeledInput } from "components"; +import { useAuthService } from "packages/cloud/services/auth/AuthService"; + +const Header = styled.div` + display: flex; + justify-content: space-between; +`; + +const AccountSettingsView: React.FC = () => { + const formatMessage = useIntl().formatMessage; + const { logout } = useAuthService(); + + return ( + <> + }> + { + throw new Error("Not implemented"); + }} + > + {() => + ( +
+ + {({ field, meta }: FieldProps) => ( + + } + placeholder={formatMessage({ + id: + "settings.accountSettings.form.firstName.placeholder", + })} + type="text" + error={!!meta.error && meta.touched} + message={ + meta.touched && + meta.error && + formatMessage({ id: meta.error }) + } + /> + )} + + + {({ field, meta }: FieldProps) => ( + + } + placeholder={formatMessage({ + id: + "settings.accountSettings.form.lastName.placeholder", + })} + type="text" + error={!!meta.error && meta.touched} + message={ + meta.touched && + meta.error && + formatMessage({ id: meta.error }) + } + /> + )} + + + {({ field, meta }: FieldProps) => ( + + } + placeholder={formatMessage({ + id: "settings.accountSettings.form.email.placeholder", + })} + type="text" + error={!!meta.error && meta.touched} + message={ + meta.touched && + meta.error && + formatMessage({ id: meta.error }) + } + /> + )} + +
+ ) && false + } +
+
+ + + logout()}> + + +
+ } + /> + + ); +}; + +export { AccountSettingsView }; diff --git a/airbyte-webapp/src/packages/cloud/views/users/UsersSettingsView/UsersSettingsView.tsx b/airbyte-webapp/src/packages/cloud/views/users/UsersSettingsView/UsersSettingsView.tsx new file mode 100644 index 000000000000..7ed646b038c0 --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/users/UsersSettingsView/UsersSettingsView.tsx @@ -0,0 +1,79 @@ +import React, { useMemo } from "react"; +import styled from "styled-components"; +import { CellProps } from "react-table"; +import { FormattedMessage } from "react-intl"; +import { useQuery } from "react-query"; + +import { Button, H5 } from "components"; +import Table from "components/Table"; +import { UserService } from "packages/cloud/lib/domain/users"; +import { useDefaultRequestMiddlewares } from "packages/cloud/services/useDefaultRequestMiddlewares"; +import { api } from "packages/cloud/config/api"; +import { useCurrentWorkspace } from "components/hooks/services/useWorkspace"; + +const Header = styled.div` + display: flex; + justify-content: space-between; + margin-bottom: 10px; +`; + +function useGetUserService() { + const requestAuthMiddleware = useDefaultRequestMiddlewares(); + + return useMemo(() => new UserService(requestAuthMiddleware, api.cloud), [ + requestAuthMiddleware, + ]); +} + +export const UsersSettingsView: React.FC = () => { + const userService = useGetUserService(); + const { workspaceId } = useCurrentWorkspace(); + const { data } = useQuery( + ["users"], + () => userService.listByWorkspaceId(workspaceId), + { suspense: true } + ); + + const columns = React.useMemo( + () => [ + { + Header: , + headerHighlighted: true, + accessor: "name", + Cell: ({ cell }: CellProps) => cell.value, + }, + { + Header: , + headerHighlighted: true, + accessor: "email", + Cell: ({ cell }: CellProps) => cell.value, + }, + { + Header: , + headerHighlighted: true, + accessor: "userId", + Cell: (_: CellProps) => "admin", + }, + { + Header: , + headerHighlighted: true, + accessor: "status", + Cell: ({ cell }: CellProps) => + [ + , + cell.value === "invited" && , + ].filter(Boolean), + }, + ], + [] + ); + return ( + <> +
+
Current users
+ +
+ + + ); +}; diff --git a/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspaceSettingsView/WorkspaceSettingsView.tsx b/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspaceSettingsView/WorkspaceSettingsView.tsx new file mode 100644 index 000000000000..6309b06a7e1f --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspaceSettingsView/WorkspaceSettingsView.tsx @@ -0,0 +1,86 @@ +import React from "react"; +import { FormattedMessage, useIntl } from "react-intl"; +import styled from "styled-components"; +import { Form, Formik, Field, FieldProps } from "formik"; + +import { + Content, + SettingsCard, +} from "pages/SettingsPage/pages/SettingsComponents"; +import { Button, LabeledInput, LoadingButton } from "components"; +import { useWorkspaceService } from "packages/cloud/services/workspaces/WorkspacesService"; +import { useCurrentWorkspace } from "components/hooks/services/useWorkspace"; + +const Header = styled.div` + display: flex; + justify-content: space-between; +`; + +export const WorkspaceSettingsView: React.FC = () => { + const formatMessage = useIntl().formatMessage; + + const { selectWorkspace, removeWorkspace } = useWorkspaceService(); + const { name, workspaceId } = useCurrentWorkspace(); + return ( + <> + + + + + } + > + + formikHelpers.setFieldError("name", "Not implemented") + } + > + {() => ( +
+ + + {({ field, meta }: FieldProps) => ( + + } + placeholder={formatMessage({ + id: "settings.generalSettings.form.name.placeholder", + })} + type="text" + error={!!meta.error && meta.touched} + message={ + meta.touched && + meta.error && + formatMessage({ id: meta.error }) + } + /> + )} + + + + )} +
+
+ + + removeWorkspace.mutate(workspaceId)} + > + + + + } + /> + + ); +}; diff --git a/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspaceSettingsView/index.tsx b/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspaceSettingsView/index.tsx new file mode 100644 index 000000000000..a03452adbc3e --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspaceSettingsView/index.tsx @@ -0,0 +1 @@ +export * from "./WorkspaceSettingsView"; diff --git a/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/WorkspacesPage.tsx b/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/WorkspacesPage.tsx new file mode 100644 index 000000000000..0755e18877fa --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/WorkspacesPage.tsx @@ -0,0 +1,41 @@ +import React from "react"; +import styled from "styled-components"; +import { FormattedMessage } from "react-intl"; + +import { H1, H3 } from "components"; +import WorkspacesList from "./components/WorkspacesList"; + +const MainContent = styled.div` + width: 100%; + max-width: 680px; + height: 100%; + padding: 26px; + margin: 0 auto; + text-align: center; +`; + +const Logo = styled.img` + margin-bottom: 58px; +`; + +const Subtitle = styled(H3)` + margin: 17px 0 33px; + line-height: 32px; +`; + +const WorkspacesPage: React.FC = () => { + return ( + + +

+ +

+ + + + +
+ ); +}; + +export default WorkspacesPage; diff --git a/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/components/CreateWorkspaceForm.tsx b/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/components/CreateWorkspaceForm.tsx new file mode 100644 index 000000000000..7ca0c71c8ff1 --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/components/CreateWorkspaceForm.tsx @@ -0,0 +1,72 @@ +import React from "react"; +import { FormattedMessage } from "react-intl"; +import styled from "styled-components"; +import { Field, FieldProps, Formik, Form } from "formik"; +import * as yup from "yup"; + +import { LoadingButton, Input } from "components"; + +type CreateWorkspaceFormProps = { + onSubmit: (values: { name: string }) => Promise; +}; + +const CreateWorkspaceFormValidationSchema = yup.object().shape({ + name: yup.string().required("form.empty.error"), +}); + +const CreationForm = styled(Form)` + display: flex; + justify-content: space-between; + align-items: center; +`; + +const ClearInput = styled(Input)` + flex: 1 0 0; + margin-right: 10px; + + &, + &:hover, + &:focus { + background: ${({ theme }) => theme.whiteColor}; + border: none; + border-radius: 0; + border-bottom: ${({ error, theme }) => + error ? `${theme.dangerColor} 1px solid` : "none"}; + padding: 0 0 2px; + } +`; + +const CreateWorkspaceForm: React.FC = ({ + onSubmit, +}) => { + return ( + + {({ isSubmitting }) => ( + + + {({ field, meta }: FieldProps) => ( + + )} + + + + + + )} + + ); +}; + +export default CreateWorkspaceForm; diff --git a/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/components/WorkspaceItem.tsx b/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/components/WorkspaceItem.tsx new file mode 100644 index 000000000000..ab712fe25a46 --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/components/WorkspaceItem.tsx @@ -0,0 +1,32 @@ +import React from "react"; +import styled from "styled-components"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { faChevronRight } from "@fortawesome/free-solid-svg-icons"; + +import { H5, ContentCard } from "components"; + +const Item = styled(ContentCard)` + padding: 20px 28px 20px 20px; + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 10px; + cursor: pointer; +`; + +const Arrow = styled(FontAwesomeIcon)` + color: ${({ theme }) => theme.primaryColor}; +`; + +const WorkspaceItem: React.FC<{ onClick: (id: string) => void; id: string }> = ( + props +) => { + return ( + props.onClick(props.id)}> +
{props.children}
+ +
+ ); +}; + +export default WorkspaceItem; diff --git a/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/components/WorkspacesControl.tsx b/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/components/WorkspacesControl.tsx new file mode 100644 index 000000000000..358b4c17702d --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/components/WorkspacesControl.tsx @@ -0,0 +1,37 @@ +import React from "react"; +import styled from "styled-components"; +import { FormattedMessage } from "react-intl"; +import { useToggle } from "react-use"; + +import { Button, ContentCard } from "components"; +import CreateWorkspaceForm from "./CreateWorkspaceForm"; + +const CreateButton = styled(Button)` + margin-top: 25px; +`; +const FormContent = styled(ContentCard)` + padding: 15px 20px 16px 20px; +`; + +const WorkspacesControl: React.FC<{ + onSubmit: (name: string) => Promise; +}> = (props) => { + const [isEditMode, toggleMode] = useToggle(false); + + const onSubmit = async (values: { name: string }) => { + await props.onSubmit(values.name); + toggleMode(); + }; + + return isEditMode ? ( + + + + ) : ( + + + + ); +}; + +export default WorkspacesControl; diff --git a/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/components/WorkspacesList.tsx b/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/components/WorkspacesList.tsx new file mode 100644 index 000000000000..252b2041cf3b --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/components/WorkspacesList.tsx @@ -0,0 +1,39 @@ +import React from "react"; +import styled from "styled-components"; + +import WorkspaceItem from "./WorkspaceItem"; +import WorkspacesControl from "./WorkspacesControl"; +import { + useListWorkspaces, + useWorkspaceService, +} from "packages/cloud/services/workspaces/WorkspacesService"; + +const Content = styled.div` + width: 100%; + max-width: 550px; + margin: 0 auto; +`; + +const WorkspacesList: React.FC = () => { + const { data: workspaces } = useListWorkspaces(); + const { selectWorkspace, createWorkspace } = useWorkspaceService(); + + return ( + + {workspaces?.length + ? workspaces.map((workspace) => ( + + {workspace.name} + + )) + : null} + + + ); +}; + +export default WorkspacesList; diff --git a/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/index.tsx b/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/index.tsx new file mode 100644 index 000000000000..78fe36a1baf4 --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/workspaces/WorkspacesPage/index.tsx @@ -0,0 +1,3 @@ +import WorkspacesPage from "./WorkspacesPage"; + +export default WorkspacesPage; diff --git a/airbyte-webapp/src/packages/cloud/views/workspaces/index.tsx b/airbyte-webapp/src/packages/cloud/views/workspaces/index.tsx new file mode 100644 index 000000000000..70594dad3abf --- /dev/null +++ b/airbyte-webapp/src/packages/cloud/views/workspaces/index.tsx @@ -0,0 +1,3 @@ +import WorkspacesPage from "./WorkspacesPage"; + +export { WorkspacesPage }; diff --git a/airbyte-webapp/src/pages/SettingsPage/SettingsPage.tsx b/airbyte-webapp/src/pages/SettingsPage/SettingsPage.tsx index e3a2587bf96b..cd204d1fb006 100644 --- a/airbyte-webapp/src/pages/SettingsPage/SettingsPage.tsx +++ b/airbyte-webapp/src/pages/SettingsPage/SettingsPage.tsx @@ -16,6 +16,7 @@ import ConfigurationsPage from "./pages/ConfigurationsPage"; import MetricsPage from "./pages/MetricsPage"; import AccountPage from "./pages/AccountPage"; import { DestinationsPage, SourcesPage } from "./pages/ConnectorsPage"; +import { CategoryItem } from "components/SideMenu/SideMenu"; const Content = styled.div` margin: 0 33px 0 27px; @@ -28,40 +29,59 @@ const MainView = styled.div` margin-left: 47px; `; -const SettingsPage: React.FC = () => { +export type PageConfig = { + menuConfig: CategoryItem[]; +}; + +type SettingsPageProps = { + pageConfig?: PageConfig; +}; + +const SettingsPage: React.FC = ({ pageConfig }) => { const { push, pathname } = useRouter(); const { countNewSourceVersion, countNewDestinationVersion } = useConnector(); - const menuItems = [ - { - id: `${Routes.Settings}${Routes.Account}`, - name: , - }, - { - id: `${Routes.Settings}${Routes.Source}`, - name: , - indicatorCount: countNewSourceVersion, - }, - { - id: `${Routes.Settings}${Routes.Destination}`, - name: , - indicatorCount: countNewDestinationVersion, - }, - { - id: `${Routes.Settings}${Routes.Configuration}`, - name: , - }, - { - id: `${Routes.Settings}${Routes.Notifications}`, - name: , - }, + const menuItems: CategoryItem[] = pageConfig?.menuConfig || [ { - id: `${Routes.Settings}${Routes.Metrics}`, - name: , + routes: [ + { + path: `${Routes.Settings}${Routes.Account}`, + name: , + component: AccountPage, + }, + { + path: `${Routes.Settings}${Routes.Source}`, + name: , + indicatorCount: countNewSourceVersion, + component: SourcesPage, + }, + { + path: `${Routes.Settings}${Routes.Destination}`, + name: , + indicatorCount: countNewDestinationVersion, + component: DestinationsPage, + }, + { + path: `${Routes.Settings}${Routes.Configuration}`, + name: , + component: ConfigurationsPage, + }, + { + path: `${Routes.Settings}${Routes.Notifications}`, + name: , + component: NotificationPage, + }, + { + path: `${Routes.Settings}${Routes.Metrics}`, + name: , + component: MetricsPage, + }, + ], }, ]; const onSelectMenuItem = (newPath: string) => push(newPath); + const firstRoute = menuItems?.[0].routes?.[0]?.path; return ( { }> - - - - - - - - - - - - - - - - - - + {menuItems.flatMap((menuItem) => + menuItem.routes.map((route) => ( + + )) + )} - + diff --git a/airbyte-webapp/src/pages/SettingsPage/pages/AccountPage/AccountPage.tsx b/airbyte-webapp/src/pages/SettingsPage/pages/AccountPage/AccountPage.tsx index 583de4c38109..64fa55ce5729 100644 --- a/airbyte-webapp/src/pages/SettingsPage/pages/AccountPage/AccountPage.tsx +++ b/airbyte-webapp/src/pages/SettingsPage/pages/AccountPage/AccountPage.tsx @@ -1,26 +1,10 @@ import React from "react"; import { FormattedMessage } from "react-intl"; -import styled from "styled-components"; - -import { ContentCard } from "components"; import useWorkspace from "components/hooks/services/useWorkspace"; import useWorkspaceEditor from "pages/SettingsPage/components/useWorkspaceEditor"; import HeadTitle from "components/HeadTitle"; import AccountForm from "./components/AccountForm"; - -const SettingsCard = styled(ContentCard)` - max-width: 638px; - width: 100%; - margin-top: 12px; - - &:first-child { - margin-top: 0; - } -`; - -const Content = styled.div` - padding: 27px 26px 15px; -`; +import { Content, SettingsCard } from "../SettingsComponents"; const AccountPage: React.FC = () => { const { workspace } = useWorkspace(); diff --git a/airbyte-webapp/src/pages/SettingsPage/pages/ConfigurationsPage/ConfigurationsPage.tsx b/airbyte-webapp/src/pages/SettingsPage/pages/ConfigurationsPage/ConfigurationsPage.tsx index 51975e1cf07e..019c2486642d 100644 --- a/airbyte-webapp/src/pages/SettingsPage/pages/ConfigurationsPage/ConfigurationsPage.tsx +++ b/airbyte-webapp/src/pages/SettingsPage/pages/ConfigurationsPage/ConfigurationsPage.tsx @@ -3,14 +3,13 @@ import { FormattedMessage } from "react-intl"; import styled from "styled-components"; import { useAsyncFn } from "react-use"; -import { Button, LoadingButton } from "components"; -import ContentCard from "components/ContentCard"; import config from "config"; -import Link from "components/Link"; -import DeploymentService from "core/resources/DeploymentService"; + +import { Button, LoadingButton, Link, ContentCard } from "components"; +import HeadTitle from "components/HeadTitle"; +import { deploymentService } from "core/resources/DeploymentService"; import ImportConfigurationModal from "./components/ImportConfigurationModal"; import LogsContent from "./components/LogsContent"; -import HeadTitle from "components/HeadTitle"; const Content = styled.div` max-width: 813px; @@ -62,7 +61,7 @@ const ConfigurationsPage: React.FC = () => { throw new Error("No file"); } try { - await DeploymentService.importDeployment(file); + await deploymentService.importDeployment(file); window.location.reload(); resolve(true); @@ -77,7 +76,7 @@ const ConfigurationsPage: React.FC = () => { }); const [{ loading: loadingExport }, onExport] = useAsyncFn(async () => { - const file = await DeploymentService.exportDeployment(); + const file = await deploymentService.exportDeployment(); window.location.assign(file); }, []); diff --git a/airbyte-webapp/src/pages/SettingsPage/pages/ConnectorsPage/SourcesPage.tsx b/airbyte-webapp/src/pages/SettingsPage/pages/ConnectorsPage/SourcesPage.tsx index 3aa6fcd9dc2f..58afd493fa3d 100644 --- a/airbyte-webapp/src/pages/SettingsPage/pages/ConnectorsPage/SourcesPage.tsx +++ b/airbyte-webapp/src/pages/SettingsPage/pages/ConnectorsPage/SourcesPage.tsx @@ -13,6 +13,8 @@ import useWorkspace from "components/hooks/services/useWorkspace"; const SourcesPage: React.FC = () => { const [isUpdateSuccess, setIsUpdateSucces] = useState(false); + const [feedbackList, setFeedbackList] = useState>({}); + const { workspace } = useWorkspace(); const formatMessage = useIntl().formatMessage; const { sources } = useResource(SourceResource.listShape(), { @@ -31,7 +33,6 @@ const SourcesPage: React.FC = () => { const { hasNewSourceVersion, updateAllSourceVersions } = useConnector(); - const [feedbackList, setFeedbackList] = useState>({}); const onUpdateVersion = useCallback( async ({ id, version }: { id: string; version: string }) => { try { diff --git a/airbyte-webapp/src/pages/SettingsPage/pages/MetricsPage/MetricsPage.tsx b/airbyte-webapp/src/pages/SettingsPage/pages/MetricsPage/MetricsPage.tsx index 83a35d35dc23..afe4c1be2ba4 100644 --- a/airbyte-webapp/src/pages/SettingsPage/pages/MetricsPage/MetricsPage.tsx +++ b/airbyte-webapp/src/pages/SettingsPage/pages/MetricsPage/MetricsPage.tsx @@ -1,26 +1,11 @@ import React from "react"; import { FormattedMessage } from "react-intl"; -import styled from "styled-components"; - -import { ContentCard } from "components"; import useWorkspace from "components/hooks/services/useWorkspace"; import HeadTitle from "components/HeadTitle"; import MetricsForm from "./components/MetricsForm"; import useWorkspaceEditor from "../../components/useWorkspaceEditor"; -const SettingsCard = styled(ContentCard)` - max-width: 638px; - width: 100%; - margin-top: 12px; - - &:first-child { - margin-top: 0; - } -`; - -const Content = styled.div` - padding: 27px 26px 15px; -`; +import { Content, SettingsCard } from "../SettingsComponents"; const MetricsPage: React.FC = () => { const { workspace } = useWorkspace(); diff --git a/airbyte-webapp/src/pages/SettingsPage/pages/NotificationPage/NotificationPage.tsx b/airbyte-webapp/src/pages/SettingsPage/pages/NotificationPage/NotificationPage.tsx index 729b1cc72020..3288551df1b6 100644 --- a/airbyte-webapp/src/pages/SettingsPage/pages/NotificationPage/NotificationPage.tsx +++ b/airbyte-webapp/src/pages/SettingsPage/pages/NotificationPage/NotificationPage.tsx @@ -1,27 +1,12 @@ import React, { useState } from "react"; import { FormattedMessage } from "react-intl"; -import styled from "styled-components"; - -import { ContentCard } from "components"; import NotificationsForm from "./components/NotificationsForm"; import useWorkspace from "components/hooks/services/useWorkspace"; import WebHookForm from "./components/WebHookForm"; import HeadTitle from "components/HeadTitle"; -import useWorkspaceEditor from "../../components/useWorkspaceEditor"; - -const SettingsCard = styled(ContentCard)` - max-width: 638px; - width: 100%; - margin-top: 12px; - - &:first-child { - margin-top: 0; - } -`; +import useWorkspaceEditor from "pages/SettingsPage/components/useWorkspaceEditor"; -const Content = styled.div` - padding: 27px 26px 15px; -`; +import { Content, SettingsCard } from "../SettingsComponents"; const NotificationPage: React.FC = () => { const { workspace, updateWebhook, testWebhook } = useWorkspace(); diff --git a/airbyte-webapp/src/pages/SettingsPage/pages/SettingsComponents.tsx b/airbyte-webapp/src/pages/SettingsPage/pages/SettingsComponents.tsx new file mode 100644 index 000000000000..b8626c48c451 --- /dev/null +++ b/airbyte-webapp/src/pages/SettingsPage/pages/SettingsComponents.tsx @@ -0,0 +1,14 @@ +import styled from "styled-components"; +import { ContentCard } from "components/ContentCard"; + +export const SettingsCard = styled(ContentCard)` + width: 100%; + + &:not(:first-child) { + margin-top: 10px; + } +`; + +export const Content = styled.div` + padding: 27px 26px 15px; +`; diff --git a/airbyte-webapp/src/pages/routes.tsx b/airbyte-webapp/src/pages/routes.tsx index c59cc606a9b6..e7610370e53c 100644 --- a/airbyte-webapp/src/pages/routes.tsx +++ b/airbyte-webapp/src/pages/routes.tsx @@ -1,4 +1,4 @@ -import React, { Suspense, useEffect, useMemo } from "react"; +import React, { Suspense, useMemo } from "react"; import { BrowserRouter as Router, Redirect, @@ -19,11 +19,11 @@ import LoadingPage from "components/LoadingPage"; import MainView from "components/MainView"; import SupportChat from "components/SupportChat"; -import useRouter from "components/hooks/useRouterHook"; -import useWorkspace from "components/hooks/services/useWorkspace"; +import { useWorkspace } from "components/hooks/services/useWorkspace"; import { useNotificationService } from "components/hooks/services/Notification/NotificationService"; import { useApiHealthPoll } from "components/hooks/services/Health"; -import { useAnalytics } from "components/hooks/useAnalytics"; +import { WithPageAnalytics } from "./withPageAnalytics"; +import { HealthService } from "core/health/HealthService"; export enum Routes { Preferences = "/preferences", @@ -44,125 +44,50 @@ export enum Routes { Root = "/", } -const getPageName = (pathname: string) => { - const itemSourcePageRegex = new RegExp(`${Routes.Source}/.*`); - const itemDestinationPageRegex = new RegExp(`${Routes.Destination}/.*`); - const itemSourceToDestinationPageRegex = new RegExp( - `(${Routes.Source}|${Routes.Destination})${Routes.Connection}/.*` - ); - - if (pathname === Routes.Destination) { - return "Destinations Page"; - } - if (pathname === Routes.Root) { - return "Sources Page"; - } - if (pathname === `${Routes.Source}${Routes.SourceNew}`) { - return "Create Source Page"; - } - if (pathname === `${Routes.Destination}${Routes.DestinationNew}`) { - return "Create Destination Page"; - } - if ( - pathname === `${Routes.Source}${Routes.ConnectionNew}` || - pathname === `${Routes.Destination}${Routes.ConnectionNew}` - ) { - return "Create Connection Page"; - } - if (pathname.match(itemSourceToDestinationPageRegex)) { - return "Source to Destination Page"; - } - if (pathname.match(itemDestinationPageRegex)) { - return "Destination Item Page"; - } - if (pathname.match(itemSourcePageRegex)) { - return "Source Item Page"; - } - if (pathname === `${Routes.Settings}${Routes.Source}`) { - return "Settings Sources Connectors Page"; - } - if (pathname === `${Routes.Settings}${Routes.Destination}`) { - return "Settings Destinations Connectors Page"; - } - if (pathname === `${Routes.Settings}${Routes.Configuration}`) { - return "Settings Configuration Page"; - } - if (pathname === `${Routes.Settings}${Routes.Notifications}`) { - return "Settings Notifications Page"; - } - if (pathname === `${Routes.Settings}${Routes.Metrics}`) { - return "Settings Metrics Page"; - } - if (pathname === Routes.Connections) { - return "Connections Page"; - } - - return ""; -}; - -const MainViewRoutes = () => { - const { pathname } = useRouter(); - const analyticsService = useAnalytics(); - useEffect(() => { - const pageName = getPageName(pathname); - if (pageName) { - analyticsService.page(pageName); - } - }, [analyticsService, pathname]); - - return ( - - }> - - - - - - - - - - - - - - - - - - - - - ); -}; - -const PreferencesRoutes = () => { - return ( - - - - - - - ); -}; - -const OnboardingsRoutes = () => { - return ( - - - - - - - ); -}; - -export const Routing: React.FC = () => { - useApiHealthPoll(config.healthCheckInterval); - - const { workspace } = useWorkspace(); - +const MainViewRoutes = () => ( + + }> + + + + + + + + + + + + + + + + + + + + +); + +const PreferencesRoutes = () => ( + + + + + + +); + +const OnboardingsRoutes = () => ( + + + + + + +); + +function useDemo() { const { formatMessage } = useIntl(); const demoNotification = useMemo( @@ -176,6 +101,15 @@ export const Routing: React.FC = () => { ); useNotificationService(config.isDemo ? demoNotification : undefined); +} + +const healthService = new HealthService(); + +export const Routing: React.FC = () => { + useApiHealthPoll(config.healthCheckInterval, healthService); + useDemo(); + + const { workspace } = useWorkspace(); return ( @@ -185,7 +119,10 @@ export const Routing: React.FC = () => { ) : workspace.displaySetupWizard ? ( ) : ( - + <> + + + )} { + const itemSourcePageRegex = new RegExp(`${Routes.Source}/.*`); + const itemDestinationPageRegex = new RegExp(`${Routes.Destination}/.*`); + const itemSourceToDestinationPageRegex = new RegExp( + `(${Routes.Source}|${Routes.Destination})${Routes.Connection}/.*` + ); + + if (pathname === Routes.Destination) { + return "Destinations Page"; + } + if (pathname === Routes.Root) { + return "Sources Page"; + } + if (pathname === `${Routes.Source}${Routes.SourceNew}`) { + return "Create Source Page"; + } + if (pathname === `${Routes.Destination}${Routes.DestinationNew}`) { + return "Create Destination Page"; + } + if ( + pathname === `${Routes.Source}${Routes.ConnectionNew}` || + pathname === `${Routes.Destination}${Routes.ConnectionNew}` + ) { + return "Create Connection Page"; + } + if (pathname.match(itemSourceToDestinationPageRegex)) { + return "Source to Destination Page"; + } + if (pathname.match(itemDestinationPageRegex)) { + return "Destination Item Page"; + } + if (pathname.match(itemSourcePageRegex)) { + return "Source Item Page"; + } + if (pathname === `${Routes.Settings}${Routes.Source}`) { + return "Settings Sources Connectors Page"; + } + if (pathname === `${Routes.Settings}${Routes.Destination}`) { + return "Settings Destinations Connectors Page"; + } + if (pathname === `${Routes.Settings}${Routes.Configuration}`) { + return "Settings Configuration Page"; + } + if (pathname === `${Routes.Settings}${Routes.Notifications}`) { + return "Settings Notifications Page"; + } + if (pathname === `${Routes.Settings}${Routes.Metrics}`) { + return "Settings Metrics Page"; + } + if (pathname === Routes.Connections) { + return "Connections Page"; + } + + return ""; +}; + +export const WithPageAnalytics: React.FC = () => { + const { pathname } = useRouter(); + const analyticsService = useAnalytics(); + useEffect(() => { + const pageName = getPageName(pathname); + if (pageName) { + analyticsService.page(pageName); + } + }, [analyticsService, pathname]); + + return null; +}; diff --git a/airbyte-webapp/src/theme.ts b/airbyte-webapp/src/theme.ts index 1306b60a0a1b..9128a66b50ab 100644 --- a/airbyte-webapp/src/theme.ts +++ b/airbyte-webapp/src/theme.ts @@ -20,6 +20,7 @@ export const theme = { successColor20: "rgba(69, 230, 152, .2)", backgroundColor: "#F8F8FF", shadowColor: "rgba(0, 0, 0, 0.25)", + cardShadowColor: "rgba(26, 25, 77, 0.12)", textColor: "#1A1A21", textColor90: "rgba(26,26,33, .9)", @@ -34,6 +35,9 @@ export const theme = { greyColor0: "#F7F7FA", whiteColor: "#FFFFFF", + beigeColor: "#FEF9F4", + darkGreyColor: "#8B8BA0", + redColor: "#FF6A4D", whiteColor5: "rgba(255, 255, 255, .5)", regularFont: "Inter, Arial, sans-serif", diff --git a/airbyte-webapp/src/views/Connector/ServiceForm/ServiceForm.test.tsx b/airbyte-webapp/src/views/Connector/ServiceForm/ServiceForm.test.tsx index 5d67c1a34cf2..90d87095d297 100644 --- a/airbyte-webapp/src/views/Connector/ServiceForm/ServiceForm.test.tsx +++ b/airbyte-webapp/src/views/Connector/ServiceForm/ServiceForm.test.tsx @@ -1,13 +1,13 @@ import React from "react"; import userEvent from "@testing-library/user-event"; -import { screen, findByText, waitFor } from "@testing-library/react"; -import { JSONSchema7 } from "json-schema"; +import { findByText, screen, waitFor } from "@testing-library/react"; import ServiceForm from "views/Connector/ServiceForm"; import { render } from "utils/testutils"; import { ServiceFormValues } from "./types"; +import { AirbyteJSONSchema } from "core/jsonSchema"; -const schema: JSONSchema7 = { +const schema: AirbyteJSONSchema = { type: "object", properties: { host: { @@ -25,8 +25,7 @@ const schema: JSONSchema7 = { airbyte_secret: true, type: "string", description: "Password associated with the username.", - // eslint-disable-next-line @typescript-eslint/no-explicit-any - } as any, // Because airbyte_secret is not part of json_schema + }, credentials: { type: "object", oneOf: [ @@ -53,8 +52,7 @@ const schema: JSONSchema7 = { type: "string", multiline: true, title: "Message", - // eslint-disable-next-line @typescript-eslint/no-explicit-any - } as any, // Because multiline is not part of json_schema + }, priceList: { type: "array", items: { diff --git a/airbyte-webapp/src/views/Connector/ServiceForm/ServiceForm.tsx b/airbyte-webapp/src/views/Connector/ServiceForm/ServiceForm.tsx index 4513b10b7ead..f922b1d00e45 100644 --- a/airbyte-webapp/src/views/Connector/ServiceForm/ServiceForm.tsx +++ b/airbyte-webapp/src/views/Connector/ServiceForm/ServiceForm.tsx @@ -21,6 +21,7 @@ import { isSourceDefinition } from "core/domain/connector/source"; type ServiceFormProps = { formType: "source" | "destination"; + availableServices: (SourceDefinition | DestinationDefinition)[]; onSubmit: (values: ServiceFormValues) => void; onRetest?: (values: ServiceFormValues) => void; specifications?: JSONSchema7; @@ -33,7 +34,6 @@ type ServiceFormProps = { additionBottomControls?: React.ReactNode; errorMessage?: React.ReactNode; successMessage?: React.ReactNode; - availableServices: (SourceDefinition | DestinationDefinition)[]; onServiceSelect?: (id: string) => void; }; diff --git a/airbyte-webapp/src/views/Connector/ServiceForm/index.stories.tsx b/airbyte-webapp/src/views/Connector/ServiceForm/index.stories.tsx new file mode 100644 index 000000000000..a1b78115183b --- /dev/null +++ b/airbyte-webapp/src/views/Connector/ServiceForm/index.stories.tsx @@ -0,0 +1,21 @@ +import { ComponentStory, ComponentMeta } from "@storybook/react"; + +import ServiceForm from "./ServiceForm"; + +export default { + title: "Views/ServiceForm", + component: ServiceForm, +} as ComponentMeta; + +const Template: ComponentStory = (args) => ( + +); + +export const Source = Template.bind({}); +Source.args = { + formType: "source", + availableServices: [], + specifications: { + type: "object", + }, +}; diff --git a/airbyte-webapp/src/views/common/AnalyticsInitializer.tsx b/airbyte-webapp/src/views/common/AnalyticsInitializer.tsx index 8b3a701f6f25..4db1e408bb2e 100644 --- a/airbyte-webapp/src/views/common/AnalyticsInitializer.tsx +++ b/airbyte-webapp/src/views/common/AnalyticsInitializer.tsx @@ -7,7 +7,6 @@ import AnalyticsServiceProvider, { useAnalytics, } from "components/hooks/useAnalytics"; import useTracker from "components/hooks/useOpenReplay"; -import { useCurrentWorkspace } from "components/hooks/services/useWorkspace"; function WithAnalytics({ customerId, @@ -36,17 +35,15 @@ function WithAnalytics({ return null; } -const AnalyticsInitializer: React.FC<{ children: React.ReactNode }> = ({ - children, -}) => { - const workspace = useCurrentWorkspace(); +const AnalyticsInitializer: React.FC<{ + children: React.ReactNode; + customerIdProvider: () => string; +}> = ({ children, customerIdProvider }) => { + const customerId = customerIdProvider(); return ( - - + + {children} );